springboot电子阅览室app毕业设计源码016514
目 ?錄
摘要
1 緒論
1.1 研究背景
1.2研究目的和意義
1.3論文結構與章節安排
2?電子閱覽室app分析
2.1 可行性分析
2.2 系統流程分析
2.2.1數據增加流程
2.2.2數據修改流程
2.2.3數據刪除流程
2.3 系統功能分析
2.3.1 功能性分析
2.3.2 非功能性分析
2.4 系統用例分析
2.5本章小結
3 電子閱覽室app總體設計
3.1 系統架構設計
3.2 系統功能模塊設計
3.2.1整體功能模塊設計
3.2.2用戶模塊設計
3.2.3 留言管理模塊設計
3.2.4圖書信息管理模塊設計
3.2.5座位預約管理模塊設計
3.3 數據庫設計
3.3.1 數據庫概念結構設計
3.3.2 數據庫邏輯結構設計
3.4本章小結
4?電子閱覽室app詳細設計與實現
4.1用戶功能模塊
4.1.1 前臺首頁界面
4.1.2 用戶登錄界面
4.1.3 搜索圖書界面
4.1.4圖書資訊界面
4.1.5?圖書信息詳情界面
4.3管理員功能模塊
4.3.1 系統用戶管理界面
4.3.2 站點公共內容管理界面
4.3.3 商城管理界面
4.3.4 模塊管理界面
5系統測試
5.1系統測試的目的
5.2 系統測試用例
5.3 系統測試結果
結論
參考文獻
致??謝
摘要
隨著信息技術的不斷發展和普及,當今社會已經進入網絡時代,高校教學管理網絡化已成為一種趨勢高校電子閱覽室作為提供新信息技術的前沿陣地,必然要實現網絡化、電子化。針對現階段高校電子閱覽室管理中的難點,研究設計了電子閱覽室介紹了系統的架構和主要功能,闡述了閱覽室的方法,說明了部分關鍵功能模塊的使用和技術。本文主要通過對系統的前臺系統和后臺管理系統進行了功能性需求分析,對系統的安全性和可擴展性進行了非功能性需求分析。在詳細的需求分析的基礎上,根據系統的功能設計確定了數據庫結構,實現完整的代碼編寫。電子閱覽室app系統使用Java語言以及mysql數據庫,完成了系統的主要模塊的頁面設計和功能實現。本文展示了首頁頁面的實現效果圖,并通過代碼和頁面介紹了系統用戶管理、圖書信息、圖書分類、閱讀場地、圖書閱讀、座位預約功能的實現過程。
關鍵詞:springboot技術;MYSQL;電子閱覽室app
Abstract
With the continuous development and popularization of information technology, today's society has entered the network era. The networking of teaching management in Colleges and universities has become a trend. As the forefront of providing new information technology, the electronic reading room in Colleges and universities must realize networking and electronization. Aiming at the difficulties in the management of electronic reading room in Colleges and universities at the present stage, this paper studies and designs the electronic reading room, introduces the architecture and main functions of the system, expounds the methods of reading room, and explains the use and technology of some key function modules. This paper mainly analyzes the functional requirements of the foreground system and background management system, and analyzes the non functional requirements of the security and scalability of the system. Based on the detailed demand analysis, the database structure is determined according to the functional design of the system to realize the complete coding. The electronic reading room app system uses Java language and MySQL database to complete the page design and function realization of the main modules of the system. This paper shows the implementation effect of the home page, and introduces the implementation process of user management, book information, book classification, reading space, book reading and seat reservation through the code and page.
Keywords:?Springboot technology; MYSQL; Electronic reading room app
1 緒論
1.1 研究背景
長期以來,在傳統的管理模式下,高校的閱覽室通常都是以個人的、零散的、隨機參與,使用率較低、設備利用率差。而且開放時間也受場地和時間的限制大打折扣,傳統的閱覽室不但大大增加了閱覽室教師工作量,而且不便于查詢。預約網絡化是信息共享技術發展的新方向和標準,一個好的電子閱覽室不僅表現其業務功能的發展,也表現在閱覽室的管理功能方面,就過去的紙質人工的管理方式而言,預約座位系統顯得尤為重要。針對目前電子閱覽室手工管理效率低下,缺乏安全性、可控性等缺點,利用現有的校園網絡資源,設計開發電子閱覽室app,師生及教學管理人員可以在網絡上瀏覽閱覽室資源,并進行相應操作。采用科學、高效的教學管理方式,使學校的教學資源得到充分的利用。在預約系統中對后臺的管理也很方便,管理員只需要在網絡上對系統實施統一管理。預約系統利用網絡方便快捷的信息傳輸、資源共享的優勢和后臺數據庫的支持,大大減輕了電子閱覽室管理部門的工作量,也極大地方便了廣大師生。
1.2研究目的和意義
為互聯網的發展和計算機應用的普及,計算機與網絡在高校中已經得到普及性的推廣,高校都建立了自己的校園網絡,電子圖書館已經逐步擺脫手工操作進入自動化管理。傳統服務模式己逐漸轉向網絡化、信息化的服務模式。網上預約系統的建立,可使大量學生參與使用閱覽室,減少管理人員的工作量,降低管理的難度,解決師資不足、設備不足、場地不足等問題,最大化地給學生提供創新空間。網上預約系統對分配和使用閱覽室資源、加強閱覽室的管理、保證閱覽室開放運行等方面具有重要作用。
1.3論文結構與章節安排
論文將分層次經行編排,除去論文摘要致謝文獻參考部分,正文部分還會對網站需求做出分析,以及闡述大體的設計和實現的功能,最后羅列部分調測記錄,論文主要架構如下:
第一章:引言。第一章主要介紹了課題研究的背景,系統開發的現狀和本文的研究內容與主要工作。
第二章:系統需求分析。第二章主要從系統的用戶、功能等方面進行需求分析。
第三章:系統設計。第三章主要對系統框架、系統功能模塊、數據庫進行功能設計。
第四章:系統實現。第四章主要介紹了系統框架搭建、系統界面的實現。
第五章:系統測試。第五章主要對系統的部分界面進行測試并對主要功能進行測試
第六章:總結。
2?電子閱覽室app分析
系統分析是開發一個項目的先決條件,通過系統分析可以很好的了解系統的主體用戶的基本需求情況,同時這也是項目的開發的原因。進而對系統開發進行可行性分析,通常包括技術可行性、經濟可行性等,可行性分析同時也是從項目整體角度進行的分析。然后就是對項目的具體需求進行分析,分析的手段一般都是通過用戶的用例圖來實現。下面是詳細的介紹。
2.1 可行性分析
(1)經濟可行性:
經濟可行性在此僅代表網站的運維成本,開發成本不在此考慮。
目前該模式下的電子閱覽室app的數量日益增多,網上預約變得平民化普及化用戶人數呈上升趨勢,當用戶人數龐大了,運維成本可以由廣告費進行填補,包括開發成本。
所以經濟可行性沒有問題。
(2)操作可行性:
此次項目設計參考了幾個該模式下網站的開發案例,對他們的操作界面分析,將眾多案例結合在一起,突出以人為本簡化操作,所以具有基本計算機知識的人都會操作本項目。
因此操作可行性也沒有問題。
(3)技術可行性:
技術可行性指的是對于搭建框架的可行性,以及有更優秀的技術出現時系統的技術更新換代的納新性如何,開發時間成本費用比如何。
現有的springboot技術能夠迎合所有電子商務系統的搭建。開發這個電子閱覽室app的時候我采用了springboot+MYSQL用以運行整體程序。
綜上所述技術可行性也沒有問題。
(4)法律可行性:
從開發者角度來看,springboot和MYSQL是網上開源且免費的,在知識產權方面不會產生任何法律糾紛。
從用戶使用角度來看,只要不再系統上販賣違禁品,對系統做出條約協議,杜絕非法支付即可。
綜上所述法律可行性也沒有問題。
2.2系統流程分析
業務流程是用一些特定的符合和線條來進行演示用戶在使用系統時的過程,在進行系統分析的時候,業務流程可以幫助開發人員更好的理解業務,發現錯誤,完善系統。
2.2.1 數據增加流程
用戶成功登入系統后就能夠實現增加數據的操作,增加數據的編號是特定的,系統生成,用戶不能隨意填寫,除了編號以外,其他增加信息用戶自己填寫,填寫后的信息經過系統驗證,驗證合法通過就顯示增加數據成功了,相反的話,就沒有增加成功,圖2-1顯示的就是在增加數據時的流程。
?
圖2-1 ?數據增加流程圖
2.2.2 數據修改流程
數據修改時的流程和上面介紹的數據增加時的流程差不多,如圖2-2所示。
?
圖2-2 ?數據修改流程圖
2.2.3 數據刪除流程
如果系統里面存在一些沒有用的數據的話,相關的管理人員還可以對這些數據進行刪除,圖2-3就是數據刪除時的流程圖。
?
圖2-3 ?數據刪除流程圖
2.3?系統功能分析
2.3.1 功能性分析
按照電子閱覽室app的角色,我劃分為了普通系統用戶管理模塊和管理員管理模塊這兩大部分。
普通系統用戶管理模塊:
(1)用戶注冊登錄:用戶注冊為會員并登錄電子閱覽室app;用戶對個人信息的增刪改查,比如個人資料,密碼修改。
(2)用戶查看圖書:用戶進行圖書信息的閱覽,通過發現喜歡的圖書后可以購買+評論+收藏。
(3)圖書資訊:用戶進行資訊的閱覽,查看管理者發布的圖書資訊信息。
(4)圖書論壇:用戶在圖書論壇這一菜單下對用戶提交的查看、同時也可以發布、評論。
管理員管理模塊:
(1)系統用戶管理:管理員可以對電子閱覽室app中的管理員,前臺注冊的普通用戶進行增刪改查。
(2)公共內容管理:管理員可以對電子閱覽室app前臺展示的圖書論壇以及圖書資訊所屬的分類進行管控。
(3)模塊管理:在“模塊管理”這一菜單下,可以對管理員用戶操作的圖書信息、圖書分類、閱讀場地、圖書閱讀、座位預約以及在前臺用戶提交的圖書資訊、圖書論壇進行管控。
(4)站點公共內容管理:管理員可以對電子閱覽室app中首頁顯示的輪播圖以及系統中的一些公告發布到系統當中,讓用戶及時的查看到系統信息,進行合理安排。
2.3.2 非功能性分析
電子閱覽室app的非功能性需求比如電子閱覽室app的安全性怎么樣,可靠性怎么樣,性能怎么樣,可拓展性怎么樣等。具體可以表示在如下3-1表格中:
表3-1電子閱覽室app非功能需求表
| 安全性 | 主要指電子閱覽室app數據庫的安裝,數據庫的使用和密碼的設定必須合乎規范。 |
| 可靠性 | 可靠性是指電子閱覽室app能夠安裝用戶的指示進行操作,經過測試,可靠性90%以上。 |
| 性能 | 性能是影響電子閱覽室app占據市場的必要條件,所以性能最好要佳才好。 |
| 可擴展性 | 比如數據庫預留多個屬性,比如接口的使用等確保了系統的非功能性需求。 |
| 易用性 | 用戶只要跟著電子閱覽室app的頁面展示內容進行操作,就可以了。 |
| 可維護性 | 電子閱覽室app開發的可維護性是非常重要的,經過測試,可維護性沒有問題 |
2.4?系統用例分析
通過2.3功能的分析,得出了本電子閱覽室app的用例圖:
用戶角色用例如圖2-3所示。
?
圖2-3?電子閱覽室app用戶角色用例圖
web后臺管理上的管理員是維護整個電子閱覽室app中所有數據信息的。管理員角色用例如圖2-4所示。
?
圖2-4?電子閱覽室app管理員角色用例圖
2.5本章小結
本章主要通過對電子閱覽室app的可行性分析、流程分析、功能需求分析、系統用例分析,確定整個電子閱覽室app要實現的功能。同時也為電子閱覽室app的代碼實現和測試提供了標準。
3 電子閱覽室app總體設計
本章主要討論的內容包括電子閱覽室app的功能模塊設計、數據庫系統設計。
3.1 系統架構設計
本電子閱覽室app從架構上分為三層:表現層(UI)、業務邏輯層(BLL)以及數據層(DL)。
圖3-1電子閱覽室app架構設計圖
?
表現層(UI):又稱UI層,主要完成本電子閱覽室app的UI交互功能,一個良好的UI可以打打提高用戶的用戶體驗,增強用戶使用本電子閱覽室app時的舒適度。UI的界面設計也要適應不同版本的電子閱覽室app以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用戶進行交互操作時必須要得到與之相符的交互結果,這就要求表現層要與業務邏輯層進行良好的對接。
業務邏輯層(BLL):主要完成本電子閱覽室app的數據處理功能。用戶從表現層傳輸過來的數據經過業務邏輯層進行處理交付給數據層,系統從數據層讀取的數據經過業務邏輯層進行處理交付給表現層。
數據層(DL):由于本電子閱覽室app的數據是放在服務端的mysql數據庫中,因此本屬于服務層的部分可以直接整合在業務邏輯層中,所以數據層中只有數據庫,其主要完成本電子閱覽室app的數據存儲和管理功能。
3.2?系統功能模塊設計
3.2.1整體功能模塊設計
在上一章節中主要對系統的功能性需求和非功能性需求進行分析,并且根據需求分析了本電子閱覽室app中的用例。那么接下來就要開始對本電子閱覽室app的架構、主要功能和數據庫開始進行設計。電子閱覽室app根據前面章節的需求分析得出,其總體設計模塊圖如圖3-2所示。
?
圖3-2?電子閱覽室app功能模塊圖
3.2.2用戶模塊設計
后臺管理者能夠實現對前臺注冊的用戶增刪改查操作,用戶模塊結構圖如下圖:
?
圖3-3會員用戶模塊結構圖
3.2.3?留言管理模塊設計
電子閱覽室app是一個交流性質的公開平臺,會員用戶可以在平臺上交流,增加用戶之間的互動性。但是同時也為了更好的規范留言的內容,給予管理員刪除不合適的言論的功能,所以需要專門設計一個留言管理模塊,具體的結構圖如下:
?
圖3-4評論模塊結構圖
3.2.4圖書信息管理模塊設計
電子閱覽室app是中需要存儲不少圖書信息,其模塊功能結構,具體的結構圖如下:
?
圖3-5圖書信息模塊結構圖
3.2.5座位預約管理模塊設計
電子閱覽室app最重要的一個功能就是預約買,其模塊功能結構,具體的結構圖如下:
?
圖3-5座位預約模塊結構圖
3.3 數據庫設計
數據庫設計一般包括需求分析、概念模型設計、數據庫表建立三大過程,其中需求分析前面章節已經闡述,概念模型設計有概念模型和邏輯結構設計兩部分。
3.3.1 數據庫概念結構設計
下面是整個電子閱覽室app中主要的數據庫表總E-R實體關系圖。
圖3-6?電子閱覽室app總E-R關系圖
?
下面根據電子閱覽室app的數據庫總E-R關系圖可以得出電子閱覽室app需要很多E-R圖,在此羅列出來一些主要的數據庫E-R模型圖。
?
圖3-7圖書閱讀信息E-R關系圖
?
圖3-8?普通用戶信息E-R關系圖
?
圖3-9?座位預約信息E-R關系圖
?
圖3-10?閱讀場地信息E-R關系圖
?
圖3-11?圖書信息E-R關系圖
3.3.2 數據庫邏輯結構設計
通過上一小節中電子閱覽室app中總E-R關系圖上得出一共需要創建很多個數據表。在此我主要羅列幾個主要的數據庫表結構設計。
seat_reservation表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| seat_reservation_id | int | 11 | 是 | 是 | 座位預約ID |
| site_name | varchar | 64 | 否 | 否 | 場地名稱 |
| reservation_user | int | 11 | 否 | 否 | 預約用戶 |
| time_of_appointment | time | 0 | 否 | 否 | 預約時間 |
| number_of_appointments | varchar | 64 | 否 | 否 | 預約人數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| seat | varchar | 64 | 是 | 否 | 座位號 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| reading_venue表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| reading_venue_id | int | 11 | 是 | 是 | 閱讀場地ID |
| site_name | varchar | 64 | 否 | 否 | 場地名稱 |
| site_picture | varchar | 255 | 否 | 否 | 場地圖片 |
| capacity | varchar | 64 | 否 | 否 | 容納人數 |
| development_time_ | datetime | 0 | 否 | 否 | 開發時間 |
| closing_time | datetime | 0 | 否 | 否 | 收工時間 |
| hits | int | 11 | 是 | 否 | 點擊數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| ordinary_users表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| ordinary_users_id | int | 11 | 是 | 是 | 普通用戶ID |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| user_gender | varchar | 64 | 否 | 否 | 用戶性別 |
| user_number | varchar | 64 | 是 | 否 | 用戶編號 |
| user_identity | varchar | 64 | 否 | 否 | 用戶身份 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| book_reading表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| book_reading_id | int | 11 | 是 | 是 | 圖書閱讀ID |
| book_name | varchar | 64 | 否 | 否 | 圖書名稱 |
| book_type | varchar | 64 | 否 | 否 | 圖書類型 |
| book_introduction | varchar | 64 | 否 | 否 | 圖書簡介 |
| read_user | int | 11 | 否 | 否 | 閱讀用戶 |
| reading_duration | varchar | 64 | 否 | 否 | 閱讀時長 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| book_information表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| book_information_id | int | 11 | 是 | 是 | 圖書信息ID |
| book_name | varchar | 64 | 否 | 否 | 圖書名稱 |
| book_cover_ | varchar | 255 | 否 | 否 | 圖書封面 |
| book_type | varchar | 64 | 否 | 否 | 圖書類型 |
| book_copyright | varchar | 64 | 否 | 否 | 圖書版權 |
| publication_date | date | 0 | 否 | 否 | 出版日期 |
| book_introduction | varchar | 64 | 否 | 否 | 圖書簡介 |
| book_author | varchar | 64 | 否 | 否 | 圖書作者 |
| hits | int | 11 | 是 | 否 | 點擊數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| book_classification表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| book_classification_id | int | 11 | 是 | 是 | 圖書分類ID |
| book_type | varchar | 64 | 否 | 否 | 圖書類型 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| Type表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| type_id | smallint | 5 | 是 | 是 | 分類ID |
| display | smallint | 4 | 是 | 否 | 顯示順序 |
| name | varchar | 16 | 是 | 否 | 分類名稱 |
| father_id | smallint | 5 | 是 | 否 | 上級分類ID |
| description | varchar | 255 | 否 | 否 | 描述 |
| icon | text | 0 | 否 | 否 | 分類圖標 |
| url | varchar | 255 | 否 | 否 | 外鏈地址 |
| create_time | timestamp | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
3.4本章小結
整個電子閱覽室app的需求分析主要對系統總體架構以及功能模塊的設計,通過建立E-R模型和數據庫邏輯系統設計完成了數據庫系統設計。
4?電子閱覽室app詳細設計與實現
電子閱覽室app的詳細設計與實現主要是根據前面的電子閱覽室app的需求分析和電子閱覽室app的總體設計來設計頁面并實現業務邏輯。主要從電子閱覽室app界面實現、業務邏輯實現這兩部分進行介紹。
4.1用戶功能模塊
4.1.1 前臺首頁界面
當進入電子閱覽室app的時候,首先映入眼簾的是系統的導航欄,下面是輪播圖以及系統內容,其主界面展示如下圖4-1所示。
?
圖4-1?前臺首頁界面圖
4.1.2?用戶登錄界面
電子閱覽室app中的前臺上注冊后的會員是可以通過自己的賬戶名和密碼進行登錄的,當會員輸入完整的自己的賬戶名和密碼信息并點擊“登錄”按鈕后,將會首先驗證輸入的有沒有空數據,再次驗證輸入的賬戶名+密碼和數據庫中當前保存的用戶信息是否一致,只有在一致后將會登錄成功并自動跳轉到電子閱覽室app的首頁中;否則將會提示相應錯誤信息,用戶登錄界面如下圖4-2所示。
?
圖4-2用戶登錄界面圖
登錄系統主要代碼如下。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}else{
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????//判斷是否有這個用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
????????????String res = String.valueOf(service.runCountSql(sql).getSingleResult());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態,不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數據庫
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號或密碼不正確");
????????}
}
4.1.3搜索圖書界面
在電子閱覽室app首頁上的搜索框中輸入自己想要快速檢索的圖書的關鍵詞并點擊“搜索”按鈕后將會輸入的關鍵詞進行和數據庫中保存的圖書信息進行模糊匹配,并將檢索到最匹配的圖書信息顯示出來。搜索圖書界面如下圖4-3所示。
?
圖4-3搜索圖書界面圖
4.1.4?圖書資訊界面
當訪客點擊電子閱覽室app中導航欄上的“圖書資訊”后將會進入到該“圖書資訊”列表的界面,然后選擇想要看的圖書資訊,點擊進入到詳細界面,在詳細界面可以收藏+評論等操作,圖書資訊界面如下圖4-4所示。
?
圖4-4我的收藏界面圖
4.1.5圖書信息詳情界面
當訪客點擊了任意圖書后將會進入該款圖書的詳情界面,可以了解到該圖書的圖書名稱、圖書封面、圖書類型、圖書版權、出版日期、圖書簡介、圖書作者等,同時可以對該圖書進行收藏+點贊+評論,圖書詳情展示頁面如圖4-5所示。
?
圖4-5圖書詳情界面圖
圖書詳情關鍵代碼如下所示。
@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
????@Transactional
????public void delete(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");
????????sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));
????????log.info("[{}] - 刪除操作:{}",table,sql);
????????Query query1 = runCountSql(sql.toString());
????????query1.executeUpdate();
????}
4.2管理員功能模塊
4.2.1 系統用戶管理界面
電子閱覽室app中的管理人員是可以對前臺注冊的普通用戶進行管理的,也可以對管理員進行管控。界面如下圖4-6所示。
?
圖4-6系統用戶管理界面圖
系統用戶管理關鍵代碼如下所示。
??@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
}
????public void insert(Map<String,Object> body){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
4.2.2站點公共內容管理界面
電子閱覽室app中的管理人員在“站點公共內容管理”這一菜單中是可以對前臺顯示的輪播圖以及公告欄進行管控。界面如下圖4-7所示。
?
圖4-7站點公共內容管理界面圖
站點公共內容管理關鍵代碼如下所示。
@PostMapping("/set")
@Transactional
????public Map<String, Object> set(HttpServletRequest request) throws IOException {
????????service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
????????return success(1);
}
????public Map<String,String> readConfig(HttpServletRequest request){
????????Map<String,String> map = new HashMap<>();
????????map.put(FindConfig.PAGE,request.getParameter(FindConfig.PAGE));
????????map.put(FindConfig.SIZE,request.getParameter(FindConfig.SIZE));
????????map.put(FindConfig.LIKE,request.getParameter(FindConfig.LIKE));
????????map.put(FindConfig.ORDER_BY,request.getParameter(FindConfig.ORDER_BY));
????????map.put(FindConfig.FIELD,request.getParameter(FindConfig.FIELD));
????????map.put(FindConfig.GROUP_BY,request.getParameter(FindConfig.GROUP_BY));
????????map.put(FindConfig.MAX_,request.getParameter(FindConfig.MAX_));
????????map.put(FindConfig.MIN_,request.getParameter(FindConfig.MIN_));
????????return map;
}
????public Map<String,String> readQuery(HttpServletRequest request){
????????String queryString = request.getQueryString();
????????if (queryString != null && !"".equals(queryString)) {
????????????String[] querys = queryString.split("&");
????????????Map<String, String> map = new HashMap<>();
????????????for (String query : querys) {
????????????????String[] q = query.split("=");
????????????????map.put(q[0], q[1]);
????????????}
????????????map.remove(FindConfig.PAGE);
????????????map.remove(FindConfig.SIZE);
????????????map.remove(FindConfig.LIKE);
????????????map.remove(FindConfig.ORDER_BY);
????????????map.remove(FindConfig.FIELD);
????????????map.remove(FindConfig.GROUP_BY);
????????????map.remove(FindConfig.MAX_);
????????????map.remove(FindConfig.MIN_);
????????????return map;
????????}else {
????????????return new HashMap<>();
????????}
}
????@Transactional
????public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
????????StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");
????????????}else {
????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));
????????log.info("[{}] - 更新操作:{}",table,sql);
????????Query query1 = runCountSql(sql.toString());
????????query1.executeUpdate();
}
????public String toWhereSql(Map<String,String> query, Boolean like) {
????????if (query.size() > 0) {
????????????try {
????????????????StringBuilder sql = new StringBuilder(" WHERE ");
????????????????for (Map.Entry<String, String> entry : query.entrySet()) {
????????????????????if (entry.getKey().contains(FindConfig.MIN_)) {
????????????????????????String min = humpToLine(entry.getKey()).replace("_min", "");
????????????????????????sql.append("`"+min+"`").append(" >= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
????????????????????????continue;
????????????????????}
????????????????????if (entry.getKey().contains(FindConfig.MAX_)) {
????????????????????????String max = humpToLine(entry.getKey()).replace("_max", "");
????????????????????????sql.append("`"+max+"`").append(" <= '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("' and ");
????????????????????????continue;
????????????????????}
????????????????????if (like == true) {
????????????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(" LIKE '%").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("%'").append(" and ");
????????????????????} else {
????????????????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(" = '").append(URLDecoder.decode(entry.getValue(), "UTF-8")).append("'").append(" and ");
????????????????????}
????????????????}
????????????????sql.delete(sql.length() - 4, sql.length());
????????????????sql.append(" ");
????????????????return sql.toString();
????????????} catch (UnsupportedEncodingException e) {
????????????????log.info("拼接sql 失敗:{}", e.getMessage());
????????????}
????????}
????????return "";
????}
4.2.3 公共內容管理界面
電子閱覽室app中的管理人員是可以對電子閱覽室app內的管理員發布的圖書資訊、圖書論壇、新聞分類列表、論壇分類列表進行維護和管理的,支持增刪改查操作。界面如下圖4-8所示。
?
圖4-8公共內容管理界面圖
公共內容管理關鍵代碼如下所示。
@RequestMapping("/get_list")
????public Map<String, Object> getList(HttpServletRequest request) {
????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
????????return success(map);
}
4.2.4模塊管理界面
電子閱覽室app中的管理人員在“模塊管理”這一菜單下是可以對電子閱覽室app內的圖書信息、圖書分類、閱讀場地、圖書閱讀、座位預約進行管控的,其管理界面如下圖4-9所示。
?
圖4-9模塊管理界面圖
模塊管理關鍵代碼如下所示。
?@RequestMapping(value = {"/sum_group", "/sum"})
????public Map<String, Object> sum(HttpServletRequest request) {
????????Query count = service.sum(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
5系統測試
5.1系統測試的目的
系統開發到了最后一個階段那就是系統測試,系統測試對軟件的開發其實是非常有必要的。因為沒什么系統一經開發出來就可能會盡善盡美,再厲害的系統開發工程師也會在系統開發的時候出現紕漏,系統測試能夠較好的改正一些bug,為后期系統的維護性提供很好的支持。通過系統測試,開發人員也可以建立自己對系統的信心,為后期的系統版本的跟新提供支持。
5.2?系統測試用例
系統測試包括:用戶登錄功能測試、圖書展示功能測試、圖書添加、圖書搜索、密碼修改功能測試,如表5-1、5-2、5-3、5-4、5-5所示:
用戶登錄功能測試:
表5-1?用戶登錄功能測試表
| 用例名稱 | 用戶登錄系統 |
| 目的 | 測試用戶通過正確的用戶名和密碼可否登錄功能 |
| 前提 | 未登錄的情況下 |
| 測試流程 | 1) 進入登錄頁面 2) 輸入正確的用戶名和密碼 |
| 預期結果 | 用戶名和密碼正確的時候,跳轉到登錄成功界面,反之則顯示錯誤信息,提示重新輸入 |
| 實際結果 | 實際結果與預期結果一致 |
圖書查看功能測試:
表5-2?圖書查看功能測試表
| 用例名稱 | 圖書查看 |
| 目的 | 測試圖書查看功能 |
| 前提 | 用戶登錄 |
| 測試流程 | 點擊圖書列表 |
| 預期結果 | 可以查看到所有圖書信息 |
| 實際結果 | 實際結果與預期結果一致 |
管理員添加圖書界面測試:
表5-3?管理員添加圖書界面測試表
| 用例名稱 | 圖書發布測試用例 |
| 目的 | 測試圖書發布功能 |
| 前提 | 賣家用戶正常登錄情況下 |
| 測試流程 | 1)賣家點擊圖書信息管理就,然后點擊添加后并填寫信息。 2)點擊進行提交。 |
| 預期結果 | 提交以后,頁面首頁會顯示新的圖書信息? |
| 實際結果 | 實際結果與預期結果一致 |
圖書搜索功能測試:
表5-4圖書搜索功能測試表
| 用例名稱 | 圖書搜索測試 |
| 目的 | 測試圖書搜索功能 |
| 前提 | 無 |
| 測試流程 | 1)在搜索框填入搜索關鍵字。 2)點擊搜索按鈕。 |
| 預期結果 | 頁面顯示包含有搜索關鍵字的圖書 |
| 實際結果 | 實際結果與預期結果一致 |
密碼修改功能測試:
表5-5 密碼修改功能測試表
| 用例名稱 | 密碼修改測試用例 |
| 目的 | 測試管理員密碼修改功能 |
| 前提 | 管理員用戶正常登錄情況下 |
| 測試流程 | 1)管理員密碼修改并完成填寫。 2)點擊進行提交。 |
| 預期結果 | 使用新的密碼可以登錄 |
| 實際結果 | 實際結果與預期結果一致 |
5.3?系統測試結果
通過編寫電子閱覽室app的測試用例,已經檢測完畢用戶登錄模塊、圖書查看模塊、圖書添加模塊、圖書搜索模塊、密碼修改功能測試,通過這5大模塊為電子閱覽室app的后期推廣運營提供了強力的技術支撐。
結論
至此,電子閱覽室app已經結束,在開發前做了許多的準備,在本系統的設計和開發過程中閱覽和學習了許多文獻資料,從中我也收獲了很多寶貴的方法和設計思路,對系統的開發也起到了很重要的作用,系統的開發技術選用的都是自己比較熟悉的,比如Web、springboot技術、MYSQL,這些技術都是在以前的學習中學到了,其中許多的設計思路和方法都是在以前不斷地學習中摸索出來的經驗,其實對于我們來說工作量還是比較大的,但是正是由于之前的積累與準備,才能順利的完成這個項目,由此看來,積累經驗跟做好準備是十分重要的事情。
當然在該系統的設計與實現的過程中也離不開老師以及同學們的幫助,正是因為他們的指導與幫助,我才能夠成功的在預期內完成了這個系統。同時在這個過程當中我也收獲了很多東西,此系統也有需要改進的地方,但是由于專業知識的淺薄,并不能做到十分完美,希望以后有機會可以讓其真正的投入到使用之中。
參考文獻
[1]王燕.高校圖書館電子閱覽室“無人管理”模式探討[J].內蒙古科技與經濟,2022(01):152-153.
[2]熊柏祥.基于Springboot和Vue框架的考試資源服務平臺的設計與實現[J].信息與電腦(理論版),2022,34(01):97-99+103.
[3]樊超,李力,王婷婷,于婷婷.醫院圖書館電子閱覽室信息服務探索[J].蘭臺世界,2021(S2):78-79.
[4]曹明昊. 基于SpringBoot和Vue框架的邯鄲市現代農業園區信息管理系統的研發[D].河北工程大學,2021.DOI:10.27104/d.cnki.ghbjy.2021.000671.
[5]楊淑琴.電子閱覽室服務新模式——網上名師工作室與學生自主學習空間[J].內蒙古科技與經濟,2021(21):143-145.
[6]高志平. 基于SpringBoot框架與ITIL方法的運維管理系統的設計與實現[D].華東師范大學,2021.DOI:10.27149/d.cnki.ghdsu.2021.001482.
[7]陳幽思,梁玉偉,郭訪. 一種法院用多功能電子閱覽室[P]. 上海市:CN214474700U,2021-10-22.
[8]祁建強,胡金蘭. 一種電子閱覽室的人數計算裝置[P]. 江蘇省:CN214376654U,2021-10-08.
[9]向福川,方玉,劉浪,唐振云,練瑤.基于SpringBoot+Vue框架的協同育才系統設計與開發[J].現代信息科技,2021,5(14):5-7+12.DOI:10.19850/j.cnki.2096-4706.2021.14.002.
[10]蔣晟,陳科.基于SpringBoot的學生宿舍管理系統的設計與實現[J].現代信息科技,2021,5(12):6-9.DOI:10.19850/j.cnki.2096-4706.2021.12.002.
[11]康楷.高中圖書館電子閱覽室功能及管理淺探[J].文化產業,2021(16):98-99.
[12]劉欣,李亮亮,牛聰. 基于Vue和SpringBoot框架的流域監管平臺的研究和應用[C]//.第十一屆防汛抗旱信息化論壇論文集.,2021:118-122.DOI:10.26914/c.cnkihy.2021.024864.
[13], 潤州區關心下一代委員會 校外輔導站和電子閱覽室陣地建設. 蔣勇 主編,潤州年鑒,方志出版社,2020,94,年鑒.DOI:10.41414/y.cnki.yrznj.2021.000321.
[14]Qu Xiaona. Application of Java Technology in Dynamic Web Database Technology[J]. Journal of Physics: Conference Series,2021,1744(4).
[15]張玉祥, (四)教學科研服務能力建設 3 電子閱覽室建設. 武繼彪,高樹中 主編,山東中醫藥大學年鑒,2020,340,年鑒.DOI:10.43462/y.cnki.yzyyd.2021.000318.
[16]Lei Yu,Cheng Li,Lei Wei,Hu WenYa. Marine biological monitoring and managing system based on Java technology[J]. MIPPR 2019: REMOTE SENSING IMAGE PROCESSING, GEOGRAPHIC INFORMATION SYSTEMS, AND OTHER APPLICATIONS,2020,11432.
[17]張倩穎. 合肥地區高校圖書館電子閱覽室發展調查與分析[D].安徽大學,2018.
[18]溫學鵬. 寧夏師范學院電子閱覽室管理系統的設計與實現[D].電子科技大學,2017.
[19]張新麗. 系統監控軟件在圖書館電子閱覽室管理中的應用[C]//.“決策論壇——創新思維與領導決策學術研討會”論文集(上).,2017:207.
致 ?謝
逝者如斯夫,不舍晝夜。轉眼間,大學生會員活便已經接近尾聲,人面對著離別與結束,總是充滿著不舍與茫然,我亦如此,仍記得那年秋天,我迫不及待的提前一天到了學校,面對學校巍峨的大門,我心里充滿了期待:這里,就是我新生活的起點嗎?那天,陽光明媚,學校的歡迎儀式很熱烈,我面對著一個個對著我微笑的同學,仿佛一縷縷陽光透過胸口照進了我心里,同時,在那天我認識可愛的室友,我們攜手共同度過了這難忘的兩年。如今,我望著這篇論文的致謝,不禁又要問自己:現在,我們就要說再見了嗎?
感慨莫名,不知所言。遙想當初剛來學校的時候,心里總是想著工科學校會過于板正,會缺乏一些柔情,當時心里甚至有一點點排斥,但是隨著我對學校的慢慢認識與了解,我才認識到了她的美麗,她的柔情,并且慢慢的喜歡上了這個校園,但是時間太快了,快到我還沒有好好體會她的美麗便要離開了,但是她帶給我的回憶,永遠不會離開我,也許真正離開那天我的眼里會滿含淚水,我不是因為難過,我只是想將她的樣子映在我的淚水里,刻在我的心里。最后,感謝我的老師們,是你們教授了我們知識與做人的道理;感謝我的室友們,是你們陪伴了我如此之久;感謝每位關心與支持我的人。
少年,追風趕月莫停留,平荒盡處是春山。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 免費領取本源代碼,請關注點贊+私信
總結
以上是生活随笔為你收集整理的springboot电子阅览室app毕业设计源码016514的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Fltk】Fltk1.3.3+VS20
- 下一篇: OC语言入门