java8 + servlet + jsp + MySQL8.0.17 + c3p0 + DBUtils + Xadmin 實現圖書館管理系統
Spring Boot版本:https://github.com/ifwlzs/library_springboot
sql存放在src/main/resources/目錄下
tomcat部署的應用程序上下文為/

本idea項目的編碼為utf8,請自行更改相關配置
Idea配置:File–>Settings–>File Encodings–>Project Encoding
Windows下默認的是GBK,tomcat配置界面:添加虛擬機啟動參數:-Dfile.encoding=UTF-8
控制台亂碼修改idea中的vm參數添加一條配置信息:-Dfile.encoding=UTF-8
tomcat全設置為utf8
系統要實現如下的基本管理功能:
(1)用戶分為兩類:管理員,一般用戶。
(2)提供用戶註冊和用戶登錄驗證功能;其中一個登錄用戶的信息有:登錄用戶名,登錄密碼。
(3)管理員可以實現對註冊用戶的管理(查詢、刪除、密碼修改)、用戶的借書申請的確定和還書操作,並實現對圖書的創建、查詢、修改和刪除等有關的操作
(4)一般用戶,只能查詢圖書,並進行借書操作(提出借書申請),每個用戶最多藉閱8本,即當目前借書已經是8本,則不能再藉書了,只有還書後,才可以再藉閱。
不能用框架
對所有人公開:1-4
reader,admin:5-7
僅reader: 8-9
僅admin: 10-28
| 序號 | 路徑 | 說明 | 所在頁面1 | 所在頁面2 | 所在頁面3 | 可訪問 |
|---|---|---|---|---|---|---|
| 1 | /toIndexServlet | 自動登錄,未登錄跳轉首頁 | /index.jsp | 所有人 | ||
| 2 | /RegisterReaderServlet | 跳轉註冊 | /register.jsp | 所有人 | ||
| 3 | /LoginServlet | 登入 | /login.jsp | 所有人 | ||
| 4 | /toErrorServlet | 跳轉錯誤頁 | * | 所有人 | ||
| 5 | /UpdateReaderServlet | 用戶信息修改實現,管理員編輯用戶信息 | /reader/edit.jsp | /admin/editReader.jsp | admin,reader | |
| 6 | /toEditReaderServlet | 跳轉用戶修改頁,管理員編輯用戶 | /reader/edit | /admin/readerList.jsp | admin,reader | |
| 7 | /LogoutServlet | 退出登錄 | /reader/index.jsp | /admin/index.jsp | admin,reader | |
| 8 | /reader/toBookshelfServlet | 跳轉用戶顯示書籍,用戶查找某本書的詳情 | /reader/index.jsp | /reader/borrowList.jsp | reader | |
| 9 | /reader/toReaderBorrowServlet | 跳轉用戶借書記錄 | /reader/index.jsp | reader | ||
| 10 | /admin/toAddReaderServlet | 管理員添加用戶 | /admin/readerList.jsp | admin | ||
| 11 | /admin/toBorrowListServlet | 管理員查詢借閱信息 | /admin/readerList.jsp | /admin/index.jsp | /admin/bookList.jsp | admin |
| 12 | /admin/DeleteReaderServlet | 刪除用戶 | /admin/readerList.jsp | admin | ||
| 13 | /admin/toEditAdminServlet | 跳轉管理員編輯頁面,管理員個人信息修改 | /admin/index.jsp | /admin/adminList.jsp | admin | |
| 14 | /admin/toAdminListServlet | 去展示管理員列表 | /admin/index.jsp | admin | ||
| 15 | /admin/toReaderListServlet | 去展示用戶列表,展示借閱者信息 | /admin/index.jsp | /admin/borrowList.jsp | admin | |
| 16 | /admin/toBookListServlet | 去展示書籍列表 | /admin/index.jsp | /admin/borrowList.jsp | admin | |
| 17 | /admin/UpdateBookServlet | 管理員編輯書籍信息 | /admin/editBook.jsp | admin | ||
| 18 | /admin/UpdateAdminServlet | 管理員編輯管理員信息 | /admin/editAdmin.jsp | admin | ||
| 19 | /admin/toAddBorrowServlet | 管理員去添加借閱信息 | /admin/borrowList.jsp | admin | ||
| 20 | /admin/toReturnBookServlet | 跳轉還書申請 | /admin/borrowList.jsp | admin | ||
| 21 | /admin/toAddBookServlet | 管理員去添加書籍 | /admin/bookList.jsp | admin | ||
| 22 | /admin/toEditBookServlet | 管理員去編輯書籍 | /admin/bookList.jsp | admin | ||
| 23 | /admin/DeleteBookServlet | 刪除書籍 | /admin/bookList.jsp | admin | ||
| 24 | /admin/toAddAdminServlet | 跳轉添加管理員頁面 | /admin/adminList.jsp | admin | ||
| 25 | /admin/DeleteAdminServlet | 刪除管理員信息 | /admin/adminList.jsp | admin | ||
| 26 | /admin/AddBorrowServlet | 管理員借書 | /admin/addBorrow.jsp | admin | ||
| 27 | /admin/AddBookServlet | 管理員加書 | /admin/addBook.jsp | admin | ||
| 28 | /admin/RegisterAdminServlet | 管理員註冊管理員 | /admin/addAdmin.jsp | admin |
系統大致模塊如下:
錯誤頁面跳轉模塊:當用戶訪問不存在的頁面,會跳到本系統默認的404頁面,當執行錯誤操作導致服務器500錯誤時,也會跳到本系統配套的500頁面。
權限管理:利用攔截器實現,達到用戶無法越權訪問頁面及發送請求的目的
登錄驗證模塊:與數據庫中所存在的用戶進行匹配,如果不存在,則返回錯誤信息。登錄成功後會跳到對應的首頁
管理員模塊:個人的信息修改;讀者的增刪改查;書籍的增刪改查;管理員的增刪改查以及書籍借閱和書籍歸還操作。
讀者模塊:個人的信息修改,圖書館庫存查詢,個人借閱記錄查詢。
ER模型如圖所示:
數據庫設計如圖所示:
登錄包括註冊和登錄部分。當用戶未輸入時,只能點擊前往註冊,點擊登錄會彈窗提示“未輸入必填項以及未完成滑塊認證”。

點擊前往註冊。可以看到註冊頁面。再註冊界面中,加入了空值、用戶ID、郵箱、電話等關鍵值的判斷。保證用戶輸入的字符,符合註冊要求後在向後端發送註冊請求。
登錄後,系統會根據用戶ID自動判別用戶類別,如果是r開頭的,為讀者登錄,如果是m開頭的則為管理員。若登錄出錯會返回錯誤信息
讀者模塊分為三小塊。右邊為導航欄,包括兩個功能,分別是查詢館藏書籍和查詢自己的借閱記錄。右邊為刷新,登出和編輯個人信息功能。
該頁面做了密碼驗證功能,如果密碼輸入錯誤將無法修改。
該頁面會顯示書籍的基本信息。也可以根據書名進行模糊查詢。但是進行特別處理。不滿足借閱條件的將無法顯示“去借閱”按鈕。
如果當前用戶借書量達到8本了,將會提示“每個用戶最多可藉閱8本書籍,請盡快前往圖書館歸還!”
查詢中,可以根據全部記錄和未歸還記錄作為條件進行查詢。
表格中也可以根據書籍ID查詢書籍詳情。
點擊“歸還”按鈕會提示圖書館開放時間。
管理員後台功能頗多。除了個人信息更改,還包括用戶管理,書籍管理,借閱管理三大模塊。
用戶管理分為管理員和讀者模塊。管理員包括增刪改和模糊查詢操作。
讀者管理包括增刪改模糊查詢外還包括查詢未歸還記錄和查詢全部記錄,下面展示查詢未歸還記錄
書籍管理大致包括書籍的增刪改,以及查詢某本書的借閱記錄和未歸還記錄
編輯界面中,對庫存總量進行了安全安全判斷,使得庫存永遠大於等於借出數量。並且說定了借出數量,讓還書操作在藉閱管理中進行。
借閱記錄中可以進行借閱者,書籍詳情,未歸還書籍的查詢;書籍歸還操作以及添加借閱信息。歸還操作中,滿足書籍庫存大於等於借出量以及借出量不為0的條件下,即可歸還成功。
添加借閱信息時。如果選中的讀者以達到最大借書量,提示借書不成功。
安全方面中,主要對不同角色的訪問進行限制。
未登錄用戶只可訪問登錄和註冊頁面,如果訪問其他角色的頁面將會重定向到登錄首頁。
管理員不可訪問reader目錄下的方法和頁面。訪問後會自動重定向到管理員的首頁。
讀者不可訪問admin目錄下的方法和頁面。訪問後會自動重定向到讀者的首頁。
當輸入不存在的頁面,以及當服務器發生錯誤時,頁面會跳轉對應的錯誤頁面。
本次設計中,雖然完成了基本功能,但是對比成熟的系統以及個人的借書經歷而言,還是缺了點人性化的設計,例如書籍管理中應該還有二級列表。該列表中同書名的每一本書都應該進行編號。書籍管理中應該加入書籍所在書架,層數等字段。借書操作中,應該是要藉助外設進行書籍ID和用戶ID的錄入。外加時間原因,本項目中未加入分頁和批量刪除操作。
servlet中存在大量的跳轉JSP頁面方法。由於有些涉及到查詢和特判的操作。未能抽成統一的抽象方法。
未用上SpringBoot+SSM+MVC+VUE方案,使得項目文件看起來相對雜亂