(附源码)springboot电子阅览室app 毕业设计 016514
目 ?錄
摘要 1
1 緒論 1
1.1 研究背景 1
1.2研究目的和意義 1
1.3論文結(jié)構(gòu)與章節(jié)安排 1
2?電子閱覽室app分析 3
2.1 可行性分析 3
2.2 系統(tǒng)流程分析 3
2.2.1數(shù)據(jù)增加流程 3
2.2.2數(shù)據(jù)修改流程 4
2.2.3數(shù)據(jù)刪除流程 4
2.3 系統(tǒng)功能分析 4
2.3.1 功能性分析 4
2.3.2 非功能性分析 5
2.4 系統(tǒng)用例分析 6
2.5本章小結(jié) 7
3 電子閱覽室app總體設(shè)計(jì) 8
3.1 系統(tǒng)架構(gòu)設(shè)計(jì) 8
3.2 系統(tǒng)功能模塊設(shè)計(jì) 8
3.2.1整體功能模塊設(shè)計(jì) 9
3.2.2用戶模塊設(shè)計(jì) 9
3.2.3 留言管理模塊設(shè)計(jì) 10
3.2.4圖書(shū)信息管理模塊設(shè)計(jì) 10
3.2.5座位預(yù)約管理模塊設(shè)計(jì) 10
3.3 數(shù)據(jù)庫(kù)設(shè)計(jì) 10
3.3.1 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì) 10
3.3.2 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì) 14
3.4本章小結(jié) 17
4?電子閱覽室app詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 18
4.1用戶功能模塊 18
4.1.1 前臺(tái)首頁(yè)界面 18
4.1.2 用戶登錄界面 18
4.1.3 搜索圖書(shū)界面 19
4.1.4圖書(shū)資訊界面 20
4.1.5?圖書(shū)信息詳情界面 21
4.3管理員功能模塊 23
4.3.1 系統(tǒng)用戶管理界面 23
4.3.2 站點(diǎn)公共內(nèi)容管理界面 24
4.3.3 商城管理界面 24
4.3.4 模塊管理界面 25
5系統(tǒng)測(cè)試 26
5.1系統(tǒng)測(cè)試的目的 26
5.2 系統(tǒng)測(cè)試用例 26
5.3 系統(tǒng)測(cè)試結(jié)果 27
結(jié)論 28
參考文獻(xiàn) 29
致??謝 30
摘要
隨著信息技術(shù)的不斷發(fā)展和普及,當(dāng)今社會(huì)已經(jīng)進(jìn)入網(wǎng)絡(luò)時(shí)代,高校教學(xué)管理網(wǎng)絡(luò)化已成為一種趨勢(shì)高校電子閱覽室作為提供新信息技術(shù)的前沿陣地,必然要實(shí)現(xiàn)網(wǎng)絡(luò)化、電子化。針對(duì)現(xiàn)階段高校電子閱覽室管理中的難點(diǎn),研究設(shè)計(jì)了電子閱覽室介紹了系統(tǒng)的架構(gòu)和主要功能,闡述了閱覽室的方法,說(shuō)明了部分關(guān)鍵功能模塊的使用和技術(shù)。本文主要通過(guò)對(duì)系統(tǒng)的前臺(tái)系統(tǒng)和后臺(tái)管理系統(tǒng)進(jìn)行了功能性需求分析,對(duì)系統(tǒng)的安全性和可擴(kuò)展性進(jìn)行了非功能性需求分析。在詳細(xì)的需求分析的基礎(chǔ)上,根據(jù)系統(tǒng)的功能設(shè)計(jì)確定了數(shù)據(jù)庫(kù)結(jié)構(gòu),實(shí)現(xiàn)完整的代碼編寫(xiě)。電子閱覽室app系統(tǒng)使用Java語(yǔ)言以及mysql數(shù)據(jù)庫(kù),完成了系統(tǒng)的主要模塊的頁(yè)面設(shè)計(jì)和功能實(shí)現(xiàn)。本文展示了首頁(yè)頁(yè)面的實(shí)現(xiàn)效果圖,并通過(guò)代碼和頁(yè)面介紹了系統(tǒng)用戶管理、圖書(shū)信息、圖書(shū)分類(lèi)、閱讀場(chǎng)地、圖書(shū)閱讀、座位預(yù)約功能的實(shí)現(xiàn)過(guò)程。
關(guān)鍵詞:springboot技術(shù);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 研究背景
長(zhǎng)期以來(lái),在傳統(tǒng)的管理模式下,高校的閱覽室通常都是以個(gè)人的、零散的、隨機(jī)參與,使用率較低、設(shè)備利用率差。而且開(kāi)放時(shí)間也受場(chǎng)地和時(shí)間的限制大打折扣,傳統(tǒng)的閱覽室不但大大增加了閱覽室教師工作量,而且不便于查詢。預(yù)約網(wǎng)絡(luò)化是信息共享技術(shù)發(fā)展的新方向和標(biāo)準(zhǔn),一個(gè)好的電子閱覽室不僅表現(xiàn)其業(yè)務(wù)功能的發(fā)展,也表現(xiàn)在閱覽室的管理功能方面,就過(guò)去的紙質(zhì)人工的管理方式而言,預(yù)約座位系統(tǒng)顯得尤為重要。針對(duì)目前電子閱覽室手工管理效率低下,缺乏安全性、可控性等缺點(diǎn),利用現(xiàn)有的校園網(wǎng)絡(luò)資源,設(shè)計(jì)開(kāi)發(fā)電子閱覽室app,師生及教學(xué)管理人員可以在網(wǎng)絡(luò)上瀏覽閱覽室資源,并進(jìn)行相應(yīng)操作。采用科學(xué)、高效的教學(xué)管理方式,使學(xué)校的教學(xué)資源得到充分的利用。在預(yù)約系統(tǒng)中對(duì)后臺(tái)的管理也很方便,管理員只需要在網(wǎng)絡(luò)上對(duì)系統(tǒng)實(shí)施統(tǒng)一管理。預(yù)約系統(tǒng)利用網(wǎng)絡(luò)方便快捷的信息傳輸、資源共享的優(yōu)勢(shì)和后臺(tái)數(shù)據(jù)庫(kù)的支持,大大減輕了電子閱覽室管理部門(mén)的工作量,也極大地方便了廣大師生。
1.2研究目的和意義
為互聯(lián)網(wǎng)的發(fā)展和計(jì)算機(jī)應(yīng)用的普及,計(jì)算機(jī)與網(wǎng)絡(luò)在高校中已經(jīng)得到普及性的推廣,高校都建立了自己的校園網(wǎng)絡(luò),電子圖書(shū)館已經(jīng)逐步擺脫手工操作進(jìn)入自動(dòng)化管理。傳統(tǒng)服務(wù)模式己逐漸轉(zhuǎn)向網(wǎng)絡(luò)化、信息化的服務(wù)模式。網(wǎng)上預(yù)約系統(tǒng)的建立,可使大量學(xué)生參與使用閱覽室,減少管理人員的工作量,降低管理的難度,解決師資不足、設(shè)備不足、場(chǎng)地不足等問(wèn)題,最大化地給學(xué)生提供創(chuàng)新空間。網(wǎng)上預(yù)約系統(tǒng)對(duì)分配和使用閱覽室資源、加強(qiáng)閱覽室的管理、保證閱覽室開(kāi)放運(yùn)行等方面具有重要作用。
1.3論文結(jié)構(gòu)與章節(jié)安排
論文將分層次經(jīng)行編排,除去論文摘要致謝文獻(xiàn)參考部分,正文部分還會(huì)對(duì)網(wǎng)站需求做出分析,以及闡述大體的設(shè)計(jì)和實(shí)現(xiàn)的功能,最后羅列部分調(diào)測(cè)記錄,論文主要架構(gòu)如下:
第一章:引言。第一章主要介紹了課題研究的背景,系統(tǒng)開(kāi)發(fā)的現(xiàn)狀和本文的研究?jī)?nèi)容與主要工作。
第二章:系統(tǒng)需求分析。第二章主要從系統(tǒng)的用戶、功能等方面進(jìn)行需求分析。
第三章:系統(tǒng)設(shè)計(jì)。第三章主要對(duì)系統(tǒng)框架、系統(tǒng)功能模塊、數(shù)據(jù)庫(kù)進(jìn)行功能設(shè)計(jì)。
第四章:系統(tǒng)實(shí)現(xiàn)。第四章主要介紹了系統(tǒng)框架搭建、系統(tǒng)界面的實(shí)現(xiàn)。
第五章:系統(tǒng)測(cè)試。第五章主要對(duì)系統(tǒng)的部分界面進(jìn)行測(cè)試并對(duì)主要功能進(jìn)行測(cè)試
第六章:總結(jié)。
2?電子閱覽室app分析
系統(tǒng)分析是開(kāi)發(fā)一個(gè)項(xiàng)目的先決條件,通過(guò)系統(tǒng)分析可以很好的了解系統(tǒng)的主體用戶的基本需求情況,同時(shí)這也是項(xiàng)目的開(kāi)發(fā)的原因。進(jìn)而對(duì)系統(tǒng)開(kāi)發(fā)進(jìn)行可行性分析,通常包括技術(shù)可行性、經(jīng)濟(jì)可行性等,可行性分析同時(shí)也是從項(xiàng)目整體角度進(jìn)行的分析。然后就是對(duì)項(xiàng)目的具體需求進(jìn)行分析,分析的手段一般都是通過(guò)用戶的用例圖來(lái)實(shí)現(xiàn)。下面是詳細(xì)的介紹。
2.1 可行性分析
(1)經(jīng)濟(jì)可行性:
經(jīng)濟(jì)可行性在此僅代表網(wǎng)站的運(yùn)維成本,開(kāi)發(fā)成本不在此考慮。
目前該模式下的電子閱覽室app的數(shù)量日益增多,網(wǎng)上預(yù)約變得平民化普及化用戶人數(shù)呈上升趨勢(shì),當(dāng)用戶人數(shù)龐大了,運(yùn)維成本可以由廣告費(fèi)進(jìn)行填補(bǔ),包括開(kāi)發(fā)成本。
所以經(jīng)濟(jì)可行性沒(méi)有問(wèn)題。
(2)操作可行性:
此次項(xiàng)目設(shè)計(jì)參考了幾個(gè)該模式下網(wǎng)站的開(kāi)發(fā)案例,對(duì)他們的操作界面分析,將眾多案例結(jié)合在一起,突出以人為本簡(jiǎn)化操作,所以具有基本計(jì)算機(jī)知識(shí)的人都會(huì)操作本項(xiàng)目。
因此操作可行性也沒(méi)有問(wèn)題。
(3)技術(shù)可行性:
技術(shù)可行性指的是對(duì)于搭建框架的可行性,以及有更優(yōu)秀的技術(shù)出現(xiàn)時(shí)系統(tǒng)的技術(shù)更新?lián)Q代的納新性如何,開(kāi)發(fā)時(shí)間成本費(fèi)用比如何。
現(xiàn)有的springboot技術(shù)能夠迎合所有電子商務(wù)系統(tǒng)的搭建。開(kāi)發(fā)這個(gè)電子閱覽室app的時(shí)候我采用了springboot+MYSQL用以運(yùn)行整體程序。
綜上所述技術(shù)可行性也沒(méi)有問(wèn)題。
(4)法律可行性:
從開(kāi)發(fā)者角度來(lái)看,springboot和MYSQL是網(wǎng)上開(kāi)源且免費(fèi)的,在知識(shí)產(chǎn)權(quán)方面不會(huì)產(chǎn)生任何法律糾紛。
從用戶使用角度來(lái)看,只要不再系統(tǒng)上販賣(mài)違禁品,對(duì)系統(tǒng)做出條約協(xié)議,杜絕非法支付即可。
綜上所述法律可行性也沒(méi)有問(wèn)題。
2.2系統(tǒng)流程分析
業(yè)務(wù)流程是用一些特定的符合和線條來(lái)進(jìn)行演示用戶在使用系統(tǒng)時(shí)的過(guò)程,在進(jìn)行系統(tǒng)分析的時(shí)候,業(yè)務(wù)流程可以幫助開(kāi)發(fā)人員更好的理解業(yè)務(wù),發(fā)現(xiàn)錯(cuò)誤,完善系統(tǒng)。
2.2.1 數(shù)據(jù)增加流程
用戶成功登入系統(tǒng)后就能夠?qū)崿F(xiàn)增加數(shù)據(jù)的操作,增加數(shù)據(jù)的編號(hào)是特定的,系統(tǒng)生成,用戶不能隨意填寫(xiě),除了編號(hào)以外,其他增加信息用戶自己填寫(xiě),填寫(xiě)后的信息經(jīng)過(guò)系統(tǒng)驗(yàn)證,驗(yàn)證合法通過(guò)就顯示增加數(shù)據(jù)成功了,相反的話,就沒(méi)有增加成功,圖2-1顯示的就是在增加數(shù)據(jù)時(shí)的流程。
圖2-1 ?數(shù)據(jù)增加流程圖
2.2.2 數(shù)據(jù)修改流程
數(shù)據(jù)修改時(shí)的流程和上面介紹的數(shù)據(jù)增加時(shí)的流程差不多,如圖2-2所示。
圖2-2 ?數(shù)據(jù)修改流程圖
2.2.3 數(shù)據(jù)刪除流程
如果系統(tǒng)里面存在一些沒(méi)有用的數(shù)據(jù)的話,相關(guān)的管理人員還可以對(duì)這些數(shù)據(jù)進(jìn)行刪除,圖2-3就是數(shù)據(jù)刪除時(shí)的流程圖。
圖2-3 ?數(shù)據(jù)刪除流程圖
2.3?系統(tǒng)功能分析
2.3.1 功能性分析
按照電子閱覽室app的角色,我劃分為了普通系統(tǒng)用戶管理模塊和管理員管理模塊這兩大部分。
普通系統(tǒng)用戶管理模塊:
(1)用戶注冊(cè)登錄:用戶注冊(cè)為會(huì)員并登錄電子閱覽室app;用戶對(duì)個(gè)人信息的增刪改查,比如個(gè)人資料,密碼修改。
(2)用戶查看圖書(shū):用戶進(jìn)行圖書(shū)信息的閱覽,通過(guò)發(fā)現(xiàn)喜歡的圖書(shū)后可以購(gòu)買(mǎi)+評(píng)論+收藏。
(3)圖書(shū)資訊:用戶進(jìn)行資訊的閱覽,查看管理者發(fā)布的圖書(shū)資訊信息。
(4)圖書(shū)論壇:用戶在圖書(shū)論壇這一菜單下對(duì)用戶提交的查看、同時(shí)也可以發(fā)布、評(píng)論。
管理員管理模塊:
(1)系統(tǒng)用戶管理:管理員可以對(duì)電子閱覽室app中的管理員,前臺(tái)注冊(cè)的普通用戶進(jìn)行增刪改查。
(2)公共內(nèi)容管理:管理員可以對(duì)電子閱覽室app前臺(tái)展示的圖書(shū)論壇以及圖書(shū)資訊所屬的分類(lèi)進(jìn)行管控。
(3)模塊管理:在“模塊管理”這一菜單下,可以對(duì)管理員用戶操作的圖書(shū)信息、圖書(shū)分類(lèi)、閱讀場(chǎng)地、圖書(shū)閱讀、座位預(yù)約以及在前臺(tái)用戶提交的圖書(shū)資訊、圖書(shū)論壇進(jìn)行管控。
(4)站點(diǎn)公共內(nèi)容管理:管理員可以對(duì)電子閱覽室app中首頁(yè)顯示的輪播圖以及系統(tǒng)中的一些公告發(fā)布到系統(tǒng)當(dāng)中,讓用戶及時(shí)的查看到系統(tǒng)信息,進(jìn)行合理安排。
2.3.2 非功能性分析
電子閱覽室app的非功能性需求比如電子閱覽室app的安全性怎么樣,可靠性怎么樣,性能怎么樣,可拓展性怎么樣等。具體可以表示在如下3-1表格中:
表3-1電子閱覽室app非功能需求表
| 安全性 | 主要指電子閱覽室app數(shù)據(jù)庫(kù)的安裝,數(shù)據(jù)庫(kù)的使用和密碼的設(shè)定必須合乎規(guī)范。 |
| 可靠性 | 可靠性是指電子閱覽室app能夠安裝用戶的指示進(jìn)行操作,經(jīng)過(guò)測(cè)試,可靠性90%以上。 |
| 性能 | 性能是影響電子閱覽室app占據(jù)市場(chǎng)的必要條件,所以性能最好要佳才好。 |
| 可擴(kuò)展性 | 比如數(shù)據(jù)庫(kù)預(yù)留多個(gè)屬性,比如接口的使用等確保了系統(tǒng)的非功能性需求。 |
| 易用性 | 用戶只要跟著電子閱覽室app的頁(yè)面展示內(nèi)容進(jìn)行操作,就可以了。 |
| 可維護(hù)性 | 電子閱覽室app開(kāi)發(fā)的可維護(hù)性是非常重要的,經(jīng)過(guò)測(cè)試,可維護(hù)性沒(méi)有問(wèn)題 |
2.4?系統(tǒng)用例分析
通過(guò)2.3功能的分析,得出了本電子閱覽室app的用例圖:
用戶角色用例如圖2-3所示。
圖2-3?電子閱覽室app用戶角色用例圖
web后臺(tái)管理上的管理員是維護(hù)整個(gè)電子閱覽室app中所有數(shù)據(jù)信息的。管理員角色用例如圖2-4所示。
圖2-4?電子閱覽室app管理員角色用例圖
2.5本章小結(jié)
本章主要通過(guò)對(duì)電子閱覽室app的可行性分析、流程分析、功能需求分析、系統(tǒng)用例分析,確定整個(gè)電子閱覽室app要實(shí)現(xiàn)的功能。同時(shí)也為電子閱覽室app的代碼實(shí)現(xiàn)和測(cè)試提供了標(biāo)準(zhǔn)。
3 電子閱覽室app總體設(shè)計(jì)
本章主要討論的內(nèi)容包括電子閱覽室app的功能模塊設(shè)計(jì)、數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)。
3.1 系統(tǒng)架構(gòu)設(shè)計(jì)
本電子閱覽室app從架構(gòu)上分為三層:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)以及數(shù)據(jù)層(DL)。
圖3-1電子閱覽室app架構(gòu)設(shè)計(jì)圖
表現(xiàn)層(UI):又稱UI層,主要完成本電子閱覽室app的UI交互功能,一個(gè)良好的UI可以打打提高用戶的用戶體驗(yàn),增強(qiáng)用戶使用本電子閱覽室app時(shí)的舒適度。UI的界面設(shè)計(jì)也要適應(yīng)不同版本的電子閱覽室app以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用戶進(jìn)行交互操作時(shí)必須要得到與之相符的交互結(jié)果,這就要求表現(xiàn)層要與業(yè)務(wù)邏輯層進(jìn)行良好的對(duì)接。
業(yè)務(wù)邏輯層(BLL):主要完成本電子閱覽室app的數(shù)據(jù)處理功能。用戶從表現(xiàn)層傳輸過(guò)來(lái)的數(shù)據(jù)經(jīng)過(guò)業(yè)務(wù)邏輯層進(jìn)行處理交付給數(shù)據(jù)層,系統(tǒng)從數(shù)據(jù)層讀取的數(shù)據(jù)經(jīng)過(guò)業(yè)務(wù)邏輯層進(jìn)行處理交付給表現(xiàn)層。
數(shù)據(jù)層(DL):由于本電子閱覽室app的數(shù)據(jù)是放在服務(wù)端的mysql數(shù)據(jù)庫(kù)中,因此本屬于服務(wù)層的部分可以直接整合在業(yè)務(wù)邏輯層中,所以數(shù)據(jù)層中只有數(shù)據(jù)庫(kù),其主要完成本電子閱覽室app的數(shù)據(jù)存儲(chǔ)和管理功能。
3.2?系統(tǒng)功能模塊設(shè)計(jì)
3.2.1整體功能模塊設(shè)計(jì)
在上一章節(jié)中主要對(duì)系統(tǒng)的功能性需求和非功能性需求進(jìn)行分析,并且根據(jù)需求分析了本電子閱覽室app中的用例。那么接下來(lái)就要開(kāi)始對(duì)本電子閱覽室app的架構(gòu)、主要功能和數(shù)據(jù)庫(kù)開(kāi)始進(jìn)行設(shè)計(jì)。電子閱覽室app根據(jù)前面章節(jié)的需求分析得出,其總體設(shè)計(jì)模塊圖如圖3-2所示。
圖3-2?電子閱覽室app功能模塊圖
3.2.2用戶模塊設(shè)計(jì)
后臺(tái)管理者能夠?qū)崿F(xiàn)對(duì)前臺(tái)注冊(cè)的用戶增刪改查操作,用戶模塊結(jié)構(gòu)圖如下圖:
圖3-3會(huì)員用戶模塊結(jié)構(gòu)圖
3.2.3?留言管理模塊設(shè)計(jì)
電子閱覽室app是一個(gè)交流性質(zhì)的公開(kāi)平臺(tái),會(huì)員用戶可以在平臺(tái)上交流,增加用戶之間的互動(dòng)性。但是同時(shí)也為了更好的規(guī)范留言的內(nèi)容,給予管理員刪除不合適的言論的功能,所以需要專(zhuān)門(mén)設(shè)計(jì)一個(gè)留言管理模塊,具體的結(jié)構(gòu)圖如下:
圖3-4評(píng)論模塊結(jié)構(gòu)圖
3.2.4圖書(shū)信息管理模塊設(shè)計(jì)
電子閱覽室app是中需要存儲(chǔ)不少圖書(shū)信息,其模塊功能結(jié)構(gòu),具體的結(jié)構(gòu)圖如下:
圖3-5圖書(shū)信息模塊結(jié)構(gòu)圖
3.2.5座位預(yù)約管理模塊設(shè)計(jì)
電子閱覽室app最重要的一個(gè)功能就是預(yù)約買(mǎi),其模塊功能結(jié)構(gòu),具體的結(jié)構(gòu)圖如下:
圖3-5座位預(yù)約模塊結(jié)構(gòu)圖
3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)一般包括需求分析、概念模型設(shè)計(jì)、數(shù)據(jù)庫(kù)表建立三大過(guò)程,其中需求分析前面章節(jié)已經(jīng)闡述,概念模型設(shè)計(jì)有概念模型和邏輯結(jié)構(gòu)設(shè)計(jì)兩部分。
3.3.1 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)
下面是整個(gè)電子閱覽室app中主要的數(shù)據(jù)庫(kù)表總E-R實(shí)體關(guān)系圖。
圖3-6?電子閱覽室app總E-R關(guān)系圖
下面根據(jù)電子閱覽室app的數(shù)據(jù)庫(kù)總E-R關(guān)系圖可以得出電子閱覽室app需要很多E-R圖,在此羅列出來(lái)一些主要的數(shù)據(jù)庫(kù)E-R模型圖。
圖3-7圖書(shū)閱讀信息E-R關(guān)系圖
圖3-8?普通用戶信息E-R關(guān)系圖
圖3-9?座位預(yù)約信息E-R關(guān)系圖
圖3-10?閱讀場(chǎng)地信息E-R關(guān)系圖
圖3-11?圖書(shū)信息E-R關(guān)系圖
3.3.2 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)
通過(guò)上一小節(jié)中電子閱覽室app中總E-R關(guān)系圖上得出一共需要?jiǎng)?chuàng)建很多個(gè)數(shù)據(jù)表。在此我主要羅列幾個(gè)主要的數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)。
seat_reservation表:
| 名稱 | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| seat_reservation_id | int | 11 | 是 | 是 | 座位預(yù)約ID |
| site_name | varchar | 64 | 否 | 否 | 場(chǎng)地名稱 |
| reservation_user | int | 11 | 否 | 否 | 預(yù)約用戶 |
| time_of_appointment | time | 0 | 否 | 否 | 預(yù)約時(shí)間 |
| number_of_appointments | varchar | 64 | 否 | 否 | 預(yù)約人數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| seat | varchar | 64 | 是 | 否 | 座位號(hào) |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| reading_venue表: | |||||
| 名稱 | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| reading_venue_id | int | 11 | 是 | 是 | 閱讀場(chǎng)地ID |
| site_name | varchar | 64 | 否 | 否 | 場(chǎng)地名稱 |
| site_picture | varchar | 255 | 否 | 否 | 場(chǎng)地圖片 |
| capacity | varchar | 64 | 否 | 否 | 容納人數(shù) |
| development_time_ | datetime | 0 | 否 | 否 | 開(kāi)發(fā)時(shí)間 |
| closing_time | datetime | 0 | 否 | 否 | 收工時(shí)間 |
| hits | int | 11 | 是 | 否 | 點(diǎn)擊數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| ordinary_users表: | |||||
| 名稱 | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| ordinary_users_id | int | 11 | 是 | 是 | 普通用戶ID |
| user_name | varchar | 64 | 否 | 否 | 用戶姓名 |
| user_gender | varchar | 64 | 否 | 否 | 用戶性別 |
| user_number | varchar | 64 | 是 | 否 | 用戶編號(hào) |
| user_identity | varchar | 64 | 否 | 否 | 用戶身份 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| book_reading表: | |||||
| 名稱 | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| book_reading_id | int | 11 | 是 | 是 | 圖書(shū)閱讀ID |
| book_name | varchar | 64 | 否 | 否 | 圖書(shū)名稱 |
| book_type | varchar | 64 | 否 | 否 | 圖書(shū)類(lèi)型 |
| book_introduction | varchar | 64 | 否 | 否 | 圖書(shū)簡(jiǎn)介 |
| read_user | int | 11 | 否 | 否 | 閱讀用戶 |
| reading_duration | varchar | 64 | 否 | 否 | 閱讀時(shí)長(zhǎng) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| book_information表: | |||||
| 名稱 | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| book_information_id | int | 11 | 是 | 是 | 圖書(shū)信息ID |
| book_name | varchar | 64 | 否 | 否 | 圖書(shū)名稱 |
| book_cover_ | varchar | 255 | 否 | 否 | 圖書(shū)封面 |
| book_type | varchar | 64 | 否 | 否 | 圖書(shū)類(lèi)型 |
| book_copyright | varchar | 64 | 否 | 否 | 圖書(shū)版權(quán) |
| publication_date | date | 0 | 否 | 否 | 出版日期 |
| book_introduction | varchar | 64 | 否 | 否 | 圖書(shū)簡(jiǎn)介 |
| book_author | varchar | 64 | 否 | 否 | 圖書(shū)作者 |
| hits | int | 11 | 是 | 否 | 點(diǎn)擊數(shù) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| book_classification表: | |||||
| 名稱 | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| book_classification_id | int | 11 | 是 | 是 | 圖書(shū)分類(lèi)ID |
| book_type | varchar | 64 | 否 | 否 | 圖書(shū)類(lèi)型 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| Type表: | |||||
| 名稱 | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| type_id | smallint | 5 | 是 | 是 | 分類(lèi)ID |
| display | smallint | 4 | 是 | 否 | 顯示順序 |
| name | varchar | 16 | 是 | 否 | 分類(lèi)名稱 |
| father_id | smallint | 5 | 是 | 否 | 上級(jí)分類(lèi)ID |
| description | varchar | 255 | 否 | 否 | 描述 |
| icon | text | 0 | 否 | 否 | 分類(lèi)圖標(biāo) |
| url | varchar | 255 | 否 | 否 | 外鏈地址 |
| create_time | timestamp | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
3.4本章小結(jié)
整個(gè)電子閱覽室app的需求分析主要對(duì)系統(tǒng)總體架構(gòu)以及功能模塊的設(shè)計(jì),通過(guò)建立E-R模型和數(shù)據(jù)庫(kù)邏輯系統(tǒng)設(shè)計(jì)完成了數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)。
4?電子閱覽室app詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
電子閱覽室app的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)主要是根據(jù)前面的電子閱覽室app的需求分析和電子閱覽室app的總體設(shè)計(jì)來(lái)設(shè)計(jì)頁(yè)面并實(shí)現(xiàn)業(yè)務(wù)邏輯。主要從電子閱覽室app界面實(shí)現(xiàn)、業(yè)務(wù)邏輯實(shí)現(xiàn)這兩部分進(jìn)行介紹。
4.1用戶功能模塊
4.1.1 前臺(tái)首頁(yè)界面
當(dāng)進(jìn)入電子閱覽室app的時(shí)候,首先映入眼簾的是系統(tǒng)的導(dǎo)航欄,下面是輪播圖以及系統(tǒng)內(nèi)容,其主界面展示如下圖4-1所示。
圖4-1?前臺(tái)首頁(yè)界面圖
4.1.2?用戶登錄界面
電子閱覽室app中的前臺(tái)上注冊(cè)后的會(huì)員是可以通過(guò)自己的賬戶名和密碼進(jìn)行登錄的,當(dāng)會(huì)員輸入完整的自己的賬戶名和密碼信息并點(diǎn)擊“登錄”按鈕后,將會(huì)首先驗(yàn)證輸入的有沒(méi)有空數(shù)據(jù),再次驗(yàn)證輸入的賬戶名+密碼和數(shù)據(jù)庫(kù)中當(dāng)前保存的用戶信息是否一致,只有在一致后將會(huì)登錄成功并自動(dòng)跳轉(zhuǎn)到電子閱覽室app的首頁(yè)中;否則將會(huì)提示相應(yīng)錯(cuò)誤信息,用戶登錄界面如下圖4-2所示。
圖4-2用戶登錄界面圖
登錄系統(tǒng)主要代碼如下。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執(zhí)行登錄接口]");
????????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, "賬號(hào)或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????//判斷是否有這個(gè)用戶
????????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);
????????//查詢用戶審核狀態(tài)
????????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("已通過(guò)")){
????????????????return error(30000,"該用戶審核未通過(guò)");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)
????????????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, "賬號(hào)或密碼不正確");
????????}
}
4.1.3搜索圖書(shū)界面
在電子閱覽室app首頁(yè)上的搜索框中輸入自己想要快速檢索的圖書(shū)的關(guān)鍵詞并點(diǎn)擊“搜索”按鈕后將會(huì)輸入的關(guān)鍵詞進(jìn)行和數(shù)據(jù)庫(kù)中保存的圖書(shū)信息進(jìn)行模糊匹配,并將檢索到最匹配的圖書(shū)信息顯示出來(lái)。搜索圖書(shū)界面如下圖4-3所示。
圖4-3搜索圖書(shū)界面圖
4.1.4?圖書(shū)資訊界面
當(dāng)訪客點(diǎn)擊電子閱覽室app中導(dǎo)航欄上的“圖書(shū)資訊”后將會(huì)進(jìn)入到該“圖書(shū)資訊”列表的界面,然后選擇想要看的圖書(shū)資訊,點(diǎn)擊進(jìn)入到詳細(xì)界面,在詳細(xì)界面可以收藏+評(píng)論等操作,圖書(shū)資訊界面如下圖4-4所示。
圖4-4我的收藏界面圖
4.1.5圖書(shū)信息詳情界面
當(dāng)訪客點(diǎn)擊了任意圖書(shū)后將會(huì)進(jìn)入該款圖書(shū)的詳情界面,可以了解到該圖書(shū)的圖書(shū)名稱、圖書(shū)封面、圖書(shū)類(lèi)型、圖書(shū)版權(quán)、出版日期、圖書(shū)簡(jiǎn)介、圖書(shū)作者等,同時(shí)可以對(duì)該圖書(shū)進(jìn)行收藏+點(diǎn)贊+評(píng)論,圖書(shū)詳情展示頁(yè)面如圖4-5所示。
圖4-5圖書(shū)詳情界面圖
圖書(shū)詳情關(guān)鍵代碼如下所示。
@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 系統(tǒng)用戶管理界面
電子閱覽室app中的管理人員是可以對(duì)前臺(tái)注冊(cè)的普通用戶進(jìn)行管理的,也可以對(duì)管理員進(jìn)行管控。界面如下圖4-6所示。
圖4-6系統(tǒng)用戶管理界面圖
系統(tǒng)用戶管理關(guān)鍵代碼如下所示。
??@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站點(diǎn)公共內(nèi)容管理界面
電子閱覽室app中的管理人員在“站點(diǎn)公共內(nèi)容管理”這一菜單中是可以對(duì)前臺(tái)顯示的輪播圖以及公告欄進(jìn)行管控。界面如下圖4-7所示。
圖4-7站點(diǎn)公共內(nèi)容管理界面圖
站點(diǎn)公共內(nèi)容管理關(guān)鍵代碼如下所示。
@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 公共內(nèi)容管理界面
電子閱覽室app中的管理人員是可以對(duì)電子閱覽室app內(nèi)的管理員發(fā)布的圖書(shū)資訊、圖書(shū)論壇、新聞分類(lèi)列表、論壇分類(lèi)列表進(jìn)行維護(hù)和管理的,支持增刪改查操作。界面如下圖4-8所示。
圖4-8公共內(nèi)容管理界面圖
公共內(nèi)容管理關(guān)鍵代碼如下所示。
@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中的管理人員在“模塊管理”這一菜單下是可以對(duì)電子閱覽室app內(nèi)的圖書(shū)信息、圖書(shū)分類(lèi)、閱讀場(chǎng)地、圖書(shū)閱讀、座位預(yù)約進(jìn)行管控的,其管理界面如下圖4-9所示。
圖4-9模塊管理界面圖
模塊管理關(guān)鍵代碼如下所示。
?@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系統(tǒng)測(cè)試
5.1系統(tǒng)測(cè)試的目的
系統(tǒng)開(kāi)發(fā)到了最后一個(gè)階段那就是系統(tǒng)測(cè)試,系統(tǒng)測(cè)試對(duì)軟件的開(kāi)發(fā)其實(shí)是非常有必要的。因?yàn)闆](méi)什么系統(tǒng)一經(jīng)開(kāi)發(fā)出來(lái)就可能會(huì)盡善盡美,再厲害的系統(tǒng)開(kāi)發(fā)工程師也會(huì)在系統(tǒng)開(kāi)發(fā)的時(shí)候出現(xiàn)紕漏,系統(tǒng)測(cè)試能夠較好的改正一些bug,為后期系統(tǒng)的維護(hù)性提供很好的支持。通過(guò)系統(tǒng)測(cè)試,開(kāi)發(fā)人員也可以建立自己對(duì)系統(tǒng)的信心,為后期的系統(tǒng)版本的跟新提供支持。
5.2?系統(tǒng)測(cè)試用例
系統(tǒng)測(cè)試包括:用戶登錄功能測(cè)試、圖書(shū)展示功能測(cè)試、圖書(shū)添加、圖書(shū)搜索、密碼修改功能測(cè)試,如表5-1、5-2、5-3、5-4、5-5所示:
用戶登錄功能測(cè)試:
表5-1?用戶登錄功能測(cè)試表
| 用例名稱 | 用戶登錄系統(tǒng) |
| 目的 | 測(cè)試用戶通過(guò)正確的用戶名和密碼可否登錄功能 |
| 前提 | 未登錄的情況下 |
| 測(cè)試流程 | 1) 進(jìn)入登錄頁(yè)面 2) 輸入正確的用戶名和密碼 |
| 預(yù)期結(jié)果 | 用戶名和密碼正確的時(shí)候,跳轉(zhuǎn)到登錄成功界面,反之則顯示錯(cuò)誤信息,提示重新輸入 |
| 實(shí)際結(jié)果 | 實(shí)際結(jié)果與預(yù)期結(jié)果一致 |
圖書(shū)查看功能測(cè)試:
表5-2?圖書(shū)查看功能測(cè)試表
| 用例名稱 | 圖書(shū)查看 |
| 目的 | 測(cè)試圖書(shū)查看功能 |
| 前提 | 用戶登錄 |
| 測(cè)試流程 | 點(diǎn)擊圖書(shū)列表 |
| 預(yù)期結(jié)果 | 可以查看到所有圖書(shū)信息 |
| 實(shí)際結(jié)果 | 實(shí)際結(jié)果與預(yù)期結(jié)果一致 |
管理員添加圖書(shū)界面測(cè)試:
表5-3?管理員添加圖書(shū)界面測(cè)試表
| 用例名稱 | 圖書(shū)發(fā)布測(cè)試用例 |
| 目的 | 測(cè)試圖書(shū)發(fā)布功能 |
| 前提 | 賣(mài)家用戶正常登錄情況下 |
| 測(cè)試流程 | 1)賣(mài)家點(diǎn)擊圖書(shū)信息管理就,然后點(diǎn)擊添加后并填寫(xiě)信息。 2)點(diǎn)擊進(jìn)行提交。 |
| 預(yù)期結(jié)果 | 提交以后,頁(yè)面首頁(yè)會(huì)顯示新的圖書(shū)信息? |
| 實(shí)際結(jié)果 | 實(shí)際結(jié)果與預(yù)期結(jié)果一致 |
圖書(shū)搜索功能測(cè)試:
表5-4圖書(shū)搜索功能測(cè)試表
| 用例名稱 | 圖書(shū)搜索測(cè)試 |
| 目的 | 測(cè)試圖書(shū)搜索功能 |
| 前提 | 無(wú) |
| 測(cè)試流程 | 1)在搜索框填入搜索關(guān)鍵字。 2)點(diǎn)擊搜索按鈕。 |
| 預(yù)期結(jié)果 | 頁(yè)面顯示包含有搜索關(guān)鍵字的圖書(shū) |
| 實(shí)際結(jié)果 | 實(shí)際結(jié)果與預(yù)期結(jié)果一致 |
密碼修改功能測(cè)試:
表5-5 密碼修改功能測(cè)試表
| 用例名稱 | 密碼修改測(cè)試用例 |
| 目的 | 測(cè)試管理員密碼修改功能 |
| 前提 | 管理員用戶正常登錄情況下 |
| 測(cè)試流程 | 1)管理員密碼修改并完成填寫(xiě)。 2)點(diǎn)擊進(jìn)行提交。 |
| 預(yù)期結(jié)果 | 使用新的密碼可以登錄 |
| 實(shí)際結(jié)果 | 實(shí)際結(jié)果與預(yù)期結(jié)果一致 |
5.3?系統(tǒng)測(cè)試結(jié)果
通過(guò)編寫(xiě)電子閱覽室app的測(cè)試用例,已經(jīng)檢測(cè)完畢用戶登錄模塊、圖書(shū)查看模塊、圖書(shū)添加模塊、圖書(shū)搜索模塊、密碼修改功能測(cè)試,通過(guò)這5大模塊為電子閱覽室app的后期推廣運(yùn)營(yíng)提供了強(qiáng)力的技術(shù)支撐。
結(jié)論
至此,電子閱覽室app已經(jīng)結(jié)束,在開(kāi)發(fā)前做了許多的準(zhǔn)備,在本系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)過(guò)程中閱覽和學(xué)習(xí)了許多文獻(xiàn)資料,從中我也收獲了很多寶貴的方法和設(shè)計(jì)思路,對(duì)系統(tǒng)的開(kāi)發(fā)也起到了很重要的作用,系統(tǒng)的開(kāi)發(fā)技術(shù)選用的都是自己比較熟悉的,比如Web、springboot技術(shù)、MYSQL,這些技術(shù)都是在以前的學(xué)習(xí)中學(xué)到了,其中許多的設(shè)計(jì)思路和方法都是在以前不斷地學(xué)習(xí)中摸索出來(lái)的經(jīng)驗(yàn),其實(shí)對(duì)于我們來(lái)說(shuō)工作量還是比較大的,但是正是由于之前的積累與準(zhǔn)備,才能順利的完成這個(gè)項(xiàng)目,由此看來(lái),積累經(jīng)驗(yàn)跟做好準(zhǔn)備是十分重要的事情。
當(dāng)然在該系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)的過(guò)程中也離不開(kāi)老師以及同學(xué)們的幫助,正是因?yàn)樗麄兊闹笇?dǎo)與幫助,我才能夠成功的在預(yù)期內(nèi)完成了這個(gè)系統(tǒng)。同時(shí)在這個(gè)過(guò)程當(dāng)中我也收獲了很多東西,此系統(tǒng)也有需要改進(jìn)的地方,但是由于專(zhuān)業(yè)知識(shí)的淺薄,并不能做到十分完美,希望以后有機(jī)會(huì)可以讓其真正的投入到使用之中。
參考文獻(xiàn)
[1]王燕.高校圖書(shū)館電子閱覽室“無(wú)人管理”模式探討[J].內(nèi)蒙古科技與經(jīng)濟(jì),2022(01):152-153.
[2]熊柏祥.基于Springboot和Vue框架的考試資源服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息與電腦(理論版),2022,34(01):97-99+103.
[3]樊超,李力,王婷婷,于婷婷.醫(yī)院圖書(shū)館電子閱覽室信息服務(wù)探索[J].蘭臺(tái)世界,2021(S2):78-79.
[4]曹明昊. 基于SpringBoot和Vue框架的邯鄲市現(xiàn)代農(nóng)業(yè)園區(qū)信息管理系統(tǒng)的研發(fā)[D].河北工程大學(xué),2021.DOI:10.27104/d.cnki.ghbjy.2021.000671.
[5]楊淑琴.電子閱覽室服務(wù)新模式——網(wǎng)上名師工作室與學(xué)生自主學(xué)習(xí)空間[J].內(nèi)蒙古科技與經(jīng)濟(jì),2021(21):143-145.
[6]高志平. 基于SpringBoot框架與ITIL方法的運(yùn)維管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].華東師范大學(xué),2021.DOI:10.27149/d.cnki.ghdsu.2021.001482.
[7]陳幽思,梁玉偉,郭訪. 一種法院用多功能電子閱覽室[P]. 上海市:CN214474700U,2021-10-22.
[8]祁建強(qiáng),胡金蘭. 一種電子閱覽室的人數(shù)計(jì)算裝置[P]. 江蘇省:CN214376654U,2021-10-08.
[9]向福川,方玉,劉浪,唐振云,練瑤.基于SpringBoot+Vue框架的協(xié)同育才系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)[J].現(xiàn)代信息科技,2021,5(14):5-7+12.DOI:10.19850/j.cnki.2096-4706.2021.14.002.
[10]蔣晟,陳科.基于SpringBoot的學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代信息科技,2021,5(12):6-9.DOI:10.19850/j.cnki.2096-4706.2021.12.002.
[11]康楷.高中圖書(shū)館電子閱覽室功能及管理淺探[J].文化產(chǎn)業(yè),2021(16):98-99.
[12]劉欣,李亮亮,牛聰. 基于Vue和SpringBoot框架的流域監(jiān)管平臺(tái)的研究和應(yīng)用[C]//.第十一屆防汛抗旱信息化論壇論文集.,2021:118-122.DOI:10.26914/c.cnkihy.2021.024864.
[13], 潤(rùn)州區(qū)關(guān)心下一代委員會(huì) 校外輔導(dǎo)站和電子閱覽室陣地建設(shè). 蔣勇 主編,潤(rùn)州年鑒,方志出版社,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]張玉祥, (四)教學(xué)科研服務(wù)能力建設(shè) 3 電子閱覽室建設(shè). 武繼彪,高樹(shù)中 主編,山東中醫(yī)藥大學(xué)年鑒,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]張倩穎. 合肥地區(qū)高校圖書(shū)館電子閱覽室發(fā)展調(diào)查與分析[D].安徽大學(xué),2018.
[18]溫學(xué)鵬. 寧夏師范學(xué)院電子閱覽室管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].電子科技大學(xué),2017.
[19]張新麗. 系統(tǒng)監(jiān)控軟件在圖書(shū)館電子閱覽室管理中的應(yīng)用[C]//.“決策論壇——?jiǎng)?chuàng)新思維與領(lǐng)導(dǎo)決策學(xué)術(shù)研討會(huì)”論文集(上).,2017:207.
致 ?謝
逝者如斯夫,不舍晝夜。轉(zhuǎn)眼間,大學(xué)生會(huì)員活便已經(jīng)接近尾聲,人面對(duì)著離別與結(jié)束,總是充滿著不舍與茫然,我亦如此,仍記得那年秋天,我迫不及待的提前一天到了學(xué)校,面對(duì)學(xué)校巍峨的大門(mén),我心里充滿了期待:這里,就是我新生活的起點(diǎn)嗎?那天,陽(yáng)光明媚,學(xué)校的歡迎儀式很熱烈,我面對(duì)著一個(gè)個(gè)對(duì)著我微笑的同學(xué),仿佛一縷縷陽(yáng)光透過(guò)胸口照進(jìn)了我心里,同時(shí),在那天我認(rèn)識(shí)可愛(ài)的室友,我們攜手共同度過(guò)了這難忘的兩年。如今,我望著這篇論文的致謝,不禁又要問(wèn)自己:現(xiàn)在,我們就要說(shuō)再見(jiàn)了嗎?
感慨莫名,不知所言。遙想當(dāng)初剛來(lái)學(xué)校的時(shí)候,心里總是想著工科學(xué)校會(huì)過(guò)于板正,會(huì)缺乏一些柔情,當(dāng)時(shí)心里甚至有一點(diǎn)點(diǎn)排斥,但是隨著我對(duì)學(xué)校的慢慢認(rèn)識(shí)與了解,我才認(rèn)識(shí)到了她的美麗,她的柔情,并且慢慢的喜歡上了這個(gè)校園,但是時(shí)間太快了,快到我還沒(méi)有好好體會(huì)她的美麗便要離開(kāi)了,但是她帶給我的回憶,永遠(yuǎn)不會(huì)離開(kāi)我,也許真正離開(kāi)那天我的眼里會(huì)滿含淚水,我不是因?yàn)殡y過(guò),我只是想將她的樣子映在我的淚水里,刻在我的心里。最后,感謝我的老師們,是你們教授了我們知識(shí)與做人的道理;感謝我的室友們,是你們陪伴了我如此之久;感謝每位關(guān)心與支持我的人。
少年,追風(fēng)趕月莫停留,平荒盡處是春山。
免費(fèi)領(lǐng)取本源代碼,請(qǐng)關(guān)注點(diǎn)贊+私信
總結(jié)
以上是生活随笔為你收集整理的(附源码)springboot电子阅览室app 毕业设计 016514的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux tar文件夹打包不包含目录,
- 下一篇: 石油化工行业SCM供应链管理系统开发,优