目錄
- 一、摘要
- 1.1 項目介紹
- 1.2 項目錄屏
- 二、功能模塊
- 2.1 登陸注冊模塊
- 2.2 圖書管理模塊
- 2.3 圖書評論模塊
- 2.4 圖書預定模塊
- 2.5 圖書資訊模塊
- 三、系統設計
- 3.1 系統結構設計
- 3.1.1登陸注冊模塊的結構設計
- 3.1.2圖書管理模塊的結構設計
- 3.1.3圖書評論模塊的結構設計
- 3.1.4圖書預定模塊的結構設計
- 3.1.5圖書資訊模塊的結構設計
- 3.2 E-R設計
- 3.3 數據庫設計
- 四、系統展示
- 五、核心代碼
- 5.1 查詢圖書數據
- 5.2 新增圖書評論
- 5.3 新建圖書訂單
- 5.4 查詢我的圖書訂單
- 5.5 圖書訂單付款
- 六、免責說明
一、摘要
1.1 項目介紹
基于JAVA+Vue+SpringBoot+MySQL的圖書借閱系統,包含了圖書檔案模塊、圖書預定模塊、圖書評論模塊、圖書新聞模塊,還包含系統自帶的用戶管理、部門管理、角色管理、菜單管理、日志管理、數據字典管理、文件管理、圖表展示等基礎模塊,圖書借閱系統基于角色的訪問控制,給管理員、學生使用,可將權限精確到按鈕級別,您可以自定義角色并分配權限,系統適合設計精確的權限約束需求。
1.2 項目錄屏
二、功能模塊
圖書館借閱管理系統采用了前后端分離的架構,前端和后端通過API進行連接,后端采用MVC三層架構,本章將詳細講解圖書館借閱管理系統的架構設計,使我們的圖書館借閱管理系統更具可伸縮性和直觀性,圖書館借閱管理系統的具體的劃分結構示意圖如下圖所示。
2.1 登陸注冊模塊
登陸注冊模塊包括了基礎的用戶登陸和用戶注冊功能,用戶通過這個模塊進行認證,從而進入到圖書館圖書借閱管理系統。
2.2 圖書管理模塊
圖書管理模塊是將所有圖書數據規則化保存至圖書館圖書借閱管理系統,圖書館人員可以根據需要進行錄入圖書、取消錄入圖書、更新圖書信息、將圖書導出到Excel的操作。
2.3 圖書評論模塊
當用戶消費完成后可以進行評論,可以給與圖書好評,告訴別人這是一本好書,其他顧客可以看到關于單個圖書的評論信息;用戶也可以給出差評,告訴別人這本書的質量不符合自己的要求,讓其他用戶不要借閱。
2.4 圖書預定模塊
圖書預定模塊用戶保存顧客的圖書下單信息,即預約訂單數據。當顧客對某個圖書進行預約后,系統應當自動生成預訂單,顧客可以進入到圖書預定模塊,對訂單進行支付,也可以查詢自己的歷史下單數據。
2.5 圖書資訊模塊
圖書管理員可以根據自己的需求,發布關于圖書的新聞信息,新聞資訊應當可以包括圖片、文字,管理員發布后,用戶可以看到這些內容。
三、系統設計
3.1 系統結構設計
3.1.1登陸注冊模塊的結構設計
登陸注冊模塊包括了基礎的用戶登陸和用戶注冊功能,用戶通過這個模塊進行認證,從而進入到圖書館圖書借閱管理系統。
3.1.2圖書管理模塊的結構設計
圖書管理模塊是將所有圖書數據規則化保存至圖書館圖書借閱管理系統,圖書館人員可以根據需要進行錄入圖書、取消錄入圖書、更新圖書信息、將圖書導出到Excel的操作。
3.1.3圖書評論模塊的結構設計
當用戶消費完成后,可以對圖書的環境和服務進行評論,以方便其他顧客對圖書有一個初步的了解,顧客可以對圖書的某個圖書進行評論,其他顧客可以看到關于單個圖書的評論信息。
3.1.4圖書預定模塊的結構設計
圖書預定模塊用戶保存顧客的圖書下單信息,即預約訂單數據。當顧客對某個圖書進行預約后,系統應當自動生成預訂單,顧客可以進入到圖書預定模塊,對訂單進行支付,也可以查詢自己的歷史下單數據。
3.1.5圖書資訊模塊的結構設計
圖書管理員可以根據自己的需求,發布關于圖書的新聞信息,新聞資訊應當可以包括圖片、文字,管理員發布后,用戶可以看到這些內容。
3.2 E-R設計
圖書管理模塊是圖書的基礎信息進行記錄并管理,其中圖書類型的信息包括了圖書的類型編號、類型名稱、圖書價格、圖書總數、圖書剩余數、圖書描述、備注等,其中類型編號是系統圖書的確定性因素。
圖書檔案的數據存儲包括圖書的樓棟號、樓層號、圖書號、圖書ID、圖書狀態、圖書類型ID、圖書類型、房價、備注等信息。
圖書訂單檔案的數據存儲包括訂單號、下單人ID、下單人名稱、下單人手機號、訂單ID、訂單價格、預定圖書數、下單時間、訂單狀態、備注等信息。
系統的整體E-R圖如圖所示。
3.3 數據庫設計
學生在使用圖書館圖書借閱管理系統的過程中,需要有一個登陸用戶的存在,告訴系統當前登陸的用戶是誰,以便于傳遞參數時可以減少性能消耗,以下是圖書借閱系統的數據庫設計表。
四、系統展示
五、核心代碼
5.1 查詢圖書數據
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢圖書數據")
public Result<IPage<Dormitory>> getByPage(@ModelAttribute Dormitory dormitory, @ModelAttribute PageVo page){QueryWrapper<Dormitory> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dormitory.getTitle())) {qw.like("title",dormitory.getTitle());}if(!ZwzNullUtils.isNull(dormitory.getType())) {qw.eq("type",dormitory.getType());}if(!ZwzNullUtils.isNull(dormitory.getBreakfast())) {qw.eq("breakfast",dormitory.getBreakfast());}IPage<Dormitory> data = iDormitoryService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Dormitory>>().setData(data);
}
5.2 新增圖書評論
@RequestMapping(value = "/addMyDiscuss", method = RequestMethod.POST)
@ApiOperation(value = "新增圖書評論")
public Result<Object> addMyDiscuss(@RequestParam String id, @RequestParam String reply, @RequestParam String text){Dormitory dormitory = iDormitoryService.getById(id);if(dormitory == null) {return ResultUtil.error("圖書不存在");}User currUser = securityUtil.getCurrUser();DormitoryDiscuss discuss = new DormitoryDiscuss();discuss.setUserId(currUser.getId());discuss.setUserName(currUser.getNickname());discuss.setReply(reply);discuss.setDormitoryId(dormitory.getId());discuss.setDiscussTime(DateUtil.now());discuss.setContent(text);iDormitoryDiscussService.saveOrUpdate(discuss);return ResultUtil.success("OK");
}
5.3 新建圖書訂單
@RequestMapping(value = "/addMyOrder", method = RequestMethod.POST)
@ApiOperation(value = "新建圖書訂單")
public Result<Object> addMyOrder(@RequestParam String id, @RequestParam String date){Dormitory dormitory = iDormitoryService.getById(id);if(dormitory == null) {return ResultUtil.error("圖書不存在");}QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();qw.eq("dormitory_id",id);qw.eq("order_date",date);long count = iDormitoryOrderService.count(qw);if(count > 0) {return ResultUtil.error("圖書當日已被預定");}User currUser = securityUtil.getCurrUser();DormitoryOrder order = new DormitoryOrder();order.setUserId(currUser.getId());order.setUserName(currUser.getNickname());order.setOrderTime(DateUtil.now());order.setPayFlag("否");order.setDormitoryId(dormitory.getId());order.setPrice(dormitory.getPrice());order.setRemark("");order.setDormitoryName(dormitory.getTitle());order.setOrderDate(date);iDormitoryOrderService.saveOrUpdate(order);return ResultUtil.success();
}
5.4 查詢我的圖書訂單
@RequestMapping(value = "/getMyPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢我的圖書訂單")
public Result<IPage<DormitoryOrder>> getMyPage(@ModelAttribute DormitoryOrder order,@ModelAttribute PageVo page){User currUser = securityUtil.getCurrUser();QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();qw.eq("user_id",currUser.getId());if(!ZwzNullUtils.isNull(order.getDormitoryId())) {qw.eq("dormitory_id",order.getDormitoryId());}if(!ZwzNullUtils.isNull(order.getUserName())) {qw.eq("user_name",order.getUserName());}IPage<DormitoryOrder> data = iDormitoryOrderService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<DormitoryOrder>>().setData(data);
}
5.5 圖書訂單付款
@RequestMapping(value = "/payOrder", method = RequestMethod.POST)
@ApiOperation(value = "圖書訂單付款")
public Result<Object> payOrder(@RequestParam String id){DormitoryOrder order = iDormitoryOrderService.getById(id);if(!order.getPayFlag().equals("是")) {order.setPayFlag("是");iDormitoryOrderService.saveOrUpdate(order);return ResultUtil.success();}return ResultUtil.error("已付款,請勿重復支付");
}
六、免責說明
- 本項目僅供個人學習使用,商用授權請聯系博主,否則后果自負。
- 博主擁有本軟件構建后的應用系統全部內容所有權及獨立的知識產權,擁有最終解釋權。
- 如有問題,歡迎在倉庫 Issue 留言,看到后會第一時間回復,相關意見會酌情考慮,但沒有一定被采納的承諾或保證。
下載本系統代碼或使用本系統的用戶,必須同意以下內容,否則請勿下載!
- 出于自愿而使用/開發本軟件,了解使用本軟件的風險,且同意自己承擔使用本軟件的風險。
- 利用本軟件構建的網站的任何信息內容以及導致的任何版權糾紛和法律爭議及后果和博主無關,博主對此不承擔任何責任。
- 在任何情況下,對于因使用或無法使用本軟件而導致的任何難以合理預估的損失(包括但不僅限于商業利潤損失、業務中斷與業務信息丟失),博主概不承擔任何責任。
- 必須了解使用本軟件的風險,博主不承諾提供一對一的技術支持、使用擔保,也不承擔任何因本軟件而產生的難以預料的問題的相關責任。