軟件工程畢業(yè)設(shè)計 java在線圖書管理系統(tǒng)
1 項目簡介
?? Hi,各位同學(xué)好呀,這里是M學(xué)姐!
??今天向大家分享一個今年(2022)最新完成的畢業(yè)設(shè)計項目作品
基于java web的在線圖書管理系統(tǒng)
難度系數(shù):3分
工作量:3分
創(chuàng)新點:3分
項目源碼:https://space.bilibili.com/1015687726
2 實現(xiàn)效果
廢話不多說,先上實現(xiàn)效果










篇幅有限,本文不做過多展示
3 系統(tǒng)設(shè)計
3.1 功能需求
在線圖書管理系統(tǒng)利用軟件工程思想,將整個系統(tǒng)結(jié)構(gòu)化,分為三大模塊:學(xué)生管理模塊、系統(tǒng)管理員端和公共模塊。該系統(tǒng)的總用例圖如圖

學(xué)生端 ① ?在線查詢:學(xué)生聯(lián)網(wǎng)瀏覽館內(nèi)書籍信息,找到自己需要的書,原則上規(guī)定如果某書目的館藏總量低于5本,將不能供學(xué)生借閱,學(xué)生在借總量超過10本時,也不能繼續(xù)借閱。 ② ?查詢歷史書單:每個學(xué)生可同時借閱多次,每次可借閱多本書籍,查看歷史書單可幫助學(xué)生查詢歷史借閱情況,包含借閱時間,借閱狀態(tài)和每次借閱書目總量。 ③ ?查詢書單明細:學(xué)生可查閱每個借閱書單的詳細書目信息和借閱時間。 ④ ?續(xù)借:如果學(xué)生所借書籍即將到期還未看完時,可以續(xù)借,每續(xù)借一次,書籍的使用期限增加7天。 ⑤ ?添加書目:學(xué)生網(wǎng)上查詢想要借閱的書籍,添加到小小車中,添加一本或多本后,可檢查小小車中所添加的書目信息,確認無誤后,提交預(yù)約書單,成功借閱。 ⑥ ?查看小小車:學(xué)生在瀏覽書目時,可以查看小小車中的書目信息,從而幫助判斷將要添加的書籍,也可在被頁面中刪除已經(jīng)添加進小小車中的部分書籍,對小小車中的書籍信息進行更新。 ⑦ ?清空小小車:學(xué)生如果不滿意添加進小小車中的所有書籍,可以直接清空小小車,刪除車中所有書目信息

管理員端 ① ?添加用戶:點擊添加用戶按鈕后 ,輸入學(xué)生的基本信息,點擊提交,完成新用戶的添加,數(shù)據(jù)庫中的用戶表也將同步更新。 ② ?刪除用戶:點擊刪除用戶按鈕后,輸入學(xué)生帳號,則可刪除用戶,同時數(shù)據(jù)庫中的用戶表也將同步更新。 ③ ?查看用戶借閱狀態(tài):點擊查看用戶借閱狀態(tài)按鈕,則可直接在頁面右側(cè)顯示所有注冊用戶的借閱狀態(tài)。 ④ ?逾期通知:管理員可直接查看學(xué)生的借閱狀態(tài),若學(xué)生的借閱狀態(tài)為超期,則點擊該學(xué)生的明細信息,根據(jù)所留的郵箱或者電話進行逾期通知。 ⑤ ?添加書籍:新書到館時,點擊添加書籍按鈕,并輸入該書籍的相關(guān)信息,如書名,出版社,出版時間等,點擊提交添加新的書目信息到數(shù)據(jù)庫中。 ⑥ ?刪除書籍:當(dāng)館藏書籍陳舊或因其他原因需要下架時,點擊刪除書籍按鈕,并輸入該書目名稱,則可將圖書館中該書目信息進行刪除。 ⑦ ?修改書籍:當(dāng)書目總量發(fā)生改變時,點擊修改書籍按鈕,輸入書籍名稱和最新數(shù)量,點擊提交,即可完成數(shù)據(jù)庫館藏信息的更新。 ⑧ ?圖書歸還:輸入書籍名稱和用戶ID,學(xué)生核對情況后,完成還書。 ? ? ? 管理員端用例圖如圖

3.2 功能設(shè)計

E-R (Entity-Relationship)圖,用于描述實體的屬性以及實體之間的聯(lián)系,可以幫助我們在系統(tǒng)設(shè)計階段描繪出數(shù)據(jù)庫的概念模型。在線圖書管理系統(tǒng)中主要涉及bm_book,bm_user,bm_order,bm_line四個實體,bm_book中用于記錄保存館藏書目信息,bm_user中同時包含管理員和學(xué)生信息,bm_order中保存學(xué)生的借閱書單,bm_line保存書單的詳細條目信息。這四個實體之間的具體關(guān)系如圖

4 關(guān)鍵代碼
篇幅有限,無法放完整代碼,源碼分析在工程內(nèi)
LoginServlet:
//驗證用戶信息,完成分端口登錄
String name = request.getParameter("username");
String password = request.getParameter("password");
User user;
IUserService userService = new Userservice();
user = userService.login(name, password);
if(user!=null){
HttpSession session = request.getSession();
session.setAttribute("user", user);
String type = request.getParameter("selectType");
if(type.equals("student")&&user.getFlag()==0){
?String url = "/BookManagement/student_index.html";
?response.sendRedirect(url);
?}else if(type.equals("teacher")&&user.getFlag()==1){
? String url = "/BookManagement/manager_index.html";
? response.sendRedirect(url);
?}else{
? System.out.println("端口選擇不正確");
? String url = "/BookManagement/error.html";
? response.sendRedirect(url);
?}
}else{
?String url = "/BookManagement/login.html";
?response.sendRedirect(url);
?throw new CustomerException("您的用戶名或者密碼輸入不正確,請核對后重新輸入!");
}
UserServiceImp:
//用戶登錄的邏輯處理
public User login(String name, String password) throws CustomerException {
User user = userMapper.findByName(name);
if(name.equals(user.getName())&&password.equals(user.getPassword())) {
return user;
?}else{
? return null;
?}
}
UserMapper.xml:
<select id="findByName" parameterType="String" resultMap="userMap">
?select * from bm_user
? where username=#{name}
</select>
5 論文概覽

6 最后
項目源碼:https://space.bilibili.com/1015687726