Vue+SpringBoot打造圖書借閱系統

在這里插入圖片描述


目錄

  • 一、摘要
    • 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 留言,看到后會第一時間回復,相關意見會酌情考慮,但沒有一定被采納的承諾或保證。

下載本系統代碼或使用本系統的用戶,必須同意以下內容,否則請勿下載!

  1. 出于自愿而使用/開發本軟件,了解使用本軟件的風險,且同意自己承擔使用本軟件的風險。
  2. 利用本軟件構建的網站的任何信息內容以及導致的任何版權糾紛和法律爭議及后果和博主無關,博主對此不承擔任何責任。
  3. 在任何情況下,對于因使用或無法使用本軟件而導致的任何難以合理預估的損失(包括但不僅限于商業利潤損失、業務中斷與業務信息丟失),博主概不承擔任何責任。
  4. 必須了解使用本軟件的風險,博主不承諾提供一對一的技術支持、使用擔保,也不承擔任何因本軟件而產生的難以預料的問題的相關責任。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718369.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718369.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

clickhouse 隨心所欲的聚合模型-AggregatingMergeTree

clickhouse 強大的 MergeTree 系列引擎令人信服&#xff0c;其 ReplacingMergeTree、SummingMergeTree 在數據唯一性和匯總場景中表現非凡。但你是否還有保留最小(大)、平均等預聚合需求&#xff0c;甚至在一個模型中既有唯一性語意也有匯總、最小、最大、平均值語意該如何處理…

Spring-靜態代理VS動態代理/實現代理ProxyFactory

文章目錄 靜態代理VS動態代理Spring實現代理ProxyFactory 工作中遇到問題整理動態代理異常com.sun.proxy.$Proxy0 cannot be cast to 靜態代理VS動態代理 靜態代理VS動態代理 參考URL: https://blog.csdn.net/qq_25881443/article/details/103245938 【java項目實戰】代理模式…

【C語言】剖析qsort函數的實現原理

主頁&#xff1a;17_Kevin-CSDN博客 專欄&#xff1a;《C語言》 本文將從回調函數&#xff0c;qsort函數的應用&#xff0c;qsort函數的實現原理三個方面進行講解&#xff0c;請自行跳轉至相對位置進行閱讀~ 目錄 回調函數 qsort函數的應用 qsort函數實現原理 回調函數 什…

mysql主從庫Slave_SQL_Running: No問題經驗分享

最近在創建mysql主從庫的時候&#xff0c;遇到一個問題。執行 mysql> SHOW SLAVE STATUS\G結果顯示 Slave_IO_Running: Yes Slave_SQL_Running: No 很是苦惱&#xff0c;查詢了很久沒有解決 執行 mysql> SELECT * FROM performance_schema.replication_applier_status_…

獨立游戲《星塵異變》UE5 C++程序開發日志1——項目與代碼管理

寫在前面&#xff1a;本日志系列將會向大家介紹在《星塵異變》這款模擬經營游戲&#xff0c;在開發時用到的與C相關的泛用代碼與算法&#xff0c;主要記錄UE5C與原生C的用法區別&#xff0c;以及遇到的問題和解決辦法&#xff0c;因為這是我本人從ACM退役以后第一個從頭開始的項…

代碼隨想錄算法訓練營第五十天 | 買股票2

目錄 買賣股票的最佳時機III買賣股票的最佳時機IV LeetCode 123.買賣股票的最佳時機III LeetCode 123.買賣股票的最佳時機IV 買賣股票的最佳時機III 給定一個數組&#xff0c;它的第 i 個元素是一支給定的股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。…

牛客周賽 Round 35(A,B,C,D,E,F,G)

這場簡單&#xff0c;甚至賽時90分鐘不到就AK了。比賽鏈接&#xff0c;隊友題解友鏈 剛入住學校監獄&#xff0c;很不適應&#xff0c;最近難受的要死&#xff0c;加上最近幾場CF打的都不順利&#xff0c;san值要爆掉了&#xff0c;只能慢慢補題了。 這場C是個滑動窗口&#…

冒泡排序 和 qsort排序

目錄 冒泡排序 冒泡排序部分 輸出函數部分 主函數部分 總代碼 控制臺輸出顯示 總代碼解釋 冒泡排序優化 冒泡排序 主函數 總代碼 代碼優化解釋 qsort 排序 qsort 的介紹 使用qsort排序整型數據 使用qsort排序結構數據 冒泡排序 首先&#xff0c;我先介紹我的冒泡…

模糊搜索小案例

C#窗體實現數據錄入與模糊搜索小案例 記錄一下 主要代碼 private void button1_Click(object sender, EventArgs e){string name textBox1.Text;string hometown textBox4.Text;string school textBox6.Text;string sex textBox5.Text;string lat textBox3.Text;string …

c#打印BarTend標簽提示:具名數據源沒有cuckoo*具名數據(解決)

c#打印BarTend標簽提示&#xff1a;具名數據源沒有cuckoo*具名數據&#xff08;解決&#xff09; 今天咕咕更新打印模板的時候遇到的問題&#xff0c;就是在模版中配置了字段名&#xff0c;但是啟動c#應用&#xff0c;后端發送json數據打印的時候c#報錯提示&#xff0c;沒有在…

python 小游戲《2048》字符版非圖形界面

參考鏈接&#xff1a; 閑談2048小游戲和數組的旋轉及翻轉和轉置 目錄 2048 一、方陣類 二、隨機插入1或2 三、 合并和遞增 四、 判斷和移動 五、 鍵盤控制 完整源代碼 玩法過程 2048 上回說到2048小游戲中數組的各種旋轉、翻轉的方法&#xff0c;就是為代碼編程作準…

第十六天-爬蟲selenium庫

目錄 1.介紹 2.使用 selenium 1.安裝 2.使用 1.測試打開網頁&#xff0c;抓取雷速體育日職乙信息 2.通過xpath查找 3.輸入文本框內容 send_keys 4.點擊事件 click 5.獲取網頁源碼&#xff1a; 6.獲取cookies 7.seleniumt提供元素定位方式&#xff1a;8種 8.控制瀏覽…

Spring Security OAuth2如何自定義返回的 Token 信息

文章目錄 Spring Security OAuth2如何自定義返回的 Token 信息定制不透明令牌的信息Springsecurity-oauth2之TokenEndPoint參考Spring Security OAuth2如何自定義返回的 Token 信息 Spring Boot+OAuth2,如何自定義返回的 Token 信息? 參考URL: https://www.jianshu.com/p/b7…

【Go】指針的聲明和初始化

package mainimport "fmt"func main() {// 聲明一個整數變量var num int 42// 聲明一個指向整數的指針變量&#xff0c;并將其初始化為指向整數變量的地址var ptr *int &num// 打印整數變量的值和指針變量的值&#xff08;即整數變量的地址&#xff09;fmt.Pri…

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館 時間&#xff1a;2024年9月24日-28日 地點&#xff1a;國家會展中心&#xff08;上海&#xff09; 主辦單位&#xff1a;工業和信息化部、國家發展和改革委員會、科學技術部、商務部、中國科學院、中國工程…

【游記】GDOI2024

GDOI2024游記 老年退役選手。NOIP 218 分&#xff0c;GDOI 純純旅游。 Day -5 周日返校&#xff0c;開始停課。 開始攢 rp。 Day -4 模擬賽&#xff0c;犯困&#xff0c;啥也不會。 下午打球。 Day -3 模擬賽&#xff0c;不困&#xff0c;還是啥也不會。 下午打球。 …

CSS3單獨制作移動端頁面布局方式(流式布局、flex彈性布局)

目錄 1. 流式布局(百分比布局)2. flex彈性布局(強烈推薦)2.1 介紹2.2 Flex容器常見屬性2.2.1 flex-direction2.2.2 justify-content2.2.3 flex-wrap2.2.4 align-items2.2.5 align-content2.2.6 flex-flow 2.3 Flex項目常見屬性2.3.1 flex2.3.2 align-self和order 1. 流式布局(百…

銀河麒麟之Workstation安裝

一、VMware Workstation簡介 VMware Workstation是一款由VMware公司開發的虛擬化軟件&#xff0c;它允許用戶在一臺物理計算機上運行多個操作系統&#xff0c;并在每個操作系統中運行多個虛擬機。VMware Workstation提供了一個可視化的用戶界面&#xff0c;使用戶可以輕松創建、…

程序環境和預處理(2)

文章目錄 3.2.7 命名約定 3.3 #undef3.4 命令行定義3.5 條件編譯3.6 文件包含3.6.1 頭文件被包含的方式3.6.2 嵌套文件包含 4. 其他預處理指令 3.2.7 命名約定 一般來講函數和宏的使用語法很相似&#xff0c;所以語言本身沒法幫我們區分二者&#xff0c;那我們平時的一個習慣是…

linux條件判斷之if-then

if..then是最常見的條件判斷語句&#xff0c;簡而言之&#xff0c;就是當符合某個條件判斷的時候&#xff0c;就予以進行某項工作。 1.if-then格式 if-then格式1&#xff1a; if [ 條件判斷表達式 ];then 當條件判斷表達式成立時&#xff0c;需執行的命令 fi if-then格式2…