




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1基于積分兌換的書城系統設計摘要互聯網技術從產生到現在發展的越來越成熟,如今已經廣泛應用到各個領域中,對人們的生活、工作、學習都產生了潛移默化的影響。在線教育的發展也開始普及,而圖書作為教育資源中不可缺少的一環,也緊跟時代潮流開始網絡化。當前互聯網在圖書中的應用趨勢是越來越多的線上書城產生。本文對現有圖書平臺進行調研,分析其當前發展現狀,并對其已存問題進行闡述。在確定書城搭建的現實意義后,對采用的Springboot、Vue、Shiro、Mysql、Redis等技術特性進行介紹。根據需求提出并設計了一種可通過積分兌換圖書的校園書城系統。采用B/S架構,基于Springboot框架,使用用主流開發語言Java進行開發。校園書城由兩部分構成,分別是前臺系統以及后臺管理系統。前臺主要針對的是用戶,具體的功能模塊有圖書中心、答題中心、筆記中心以及積分中心;后臺主要是為了方便系統的管理針對管理員開發的,具體功能模塊有圖書管理、筆記管理、答題管理、積分管理以及用戶管理。書城采用的是主流的布局組件,搭建出來的界面較為美觀大方,用戶可隨時通過答題獲取的積分兌換所需圖書,既節約了購書成本,又能在答題中豐富自己的知識,提升自我。關鍵詞:Springboot,Vue,積分兌換,書城目錄TOC\o"1-3"\h\u1緒論 1緒論研究背景互聯網技術自產生以來,經過半世紀的不斷發展,如今已全方位覆蓋在人們的生活中,在各領域的廣泛應用早已潛移默化的影響到人們的生活和工作方式。這些影響也使得人們的日常生活、工作以及學習更加方便。在這樣的大環境下,人們獲取信息的方式逐漸從紙質書籍轉變為電子書籍,電子圖書的需求度明顯上升。與傳統的通過閱讀紙質書籍、期刊或者報紙等實體資料獲取信息的方式不同,人們越來越偏愛從數字圖書中快速獲取自己需要的信息。雖然電子圖書目前還無法完全取代紙質圖書,但是加入閱讀電子書行列的用戶越來越多,電子書越來越成為紙質書的重要替代品或補充品。除了技術的發展推動人們對紙質書籍需求轉變成電子書籍需求外,閱讀紙質書籍需要的成本和紙質書籍的不完備情況也加速了這一轉變。學生汲取知識離不開書籍,正因如此書籍是學生提高學問獲取知識的重要環節。圖書的種類及其相關專業領域非常多樣,同一類型的圖書內容著重點也不同。因此,讀者在查閱資料時往往會翻閱不止一本圖書,將需要查閱的圖書資料都購置齊全難度較大且成本較高。但對于讀者來說,他們只想獲得書籍的使用權,并不想承擔“擁有權”需要付出的成本。這個總成本的付出和使用權需求不對等,因而對光大讀者造成困擾。為了降低成本,各方都提出相應的措施,現下最常見的方法是通過共享來降低成本。當前具有共享性質的措施是創建讀者互換書籍平臺和圖書館藏書共享。通過在平臺上申請使用圖書的資格,用戶僅需繳納押金和使用圖書的費用就能得到使用該書籍的權限,這筆錢遠遠低于圖書的原價,這就大大縮減了讀者的閱讀成本。但其也存在如下弊端。首先,讀者能收集圖書資源的渠道有限,對于在高校進行教育和學習的這類群體來說,他們需要的書籍往往是專業性較強又不太常見的,尋找可以提供這樣書籍資料的其他讀者也非常困難,且貢獻方可以提供的圖書也較為有限,資源的需求方和提供方之間的信息是不對等的。其次,如今圖書館的電子書,主要有兩個來源:一是將圖書館現有圖書的電子化,二是購買電子書市的圖書。出于各種各樣的原因,大部分圖書館在購買和出借電子書時會受到諸多條件的限制,高昂的電子書價格對電子書資源的建設形成了阻礙。因此設計開發一個綜合性的基于積分兌換的校園書城,收集讀者們急需的書籍資料,按類別整理,存儲好進行管理,就可以將書籍資源聚少成多,搭建出一個能滿足各類型學生需求的圖書資源平臺進行電子圖書資源共享,來吸引龐雜的學生群體,讓學生通過答題獲取積分,再使用這些積分去兌換需要的書籍。這樣既能讓學生實現了低成本獲取圖書資源,也能讓他們在答題過程中鞏固所學的知識,提升學習成績,一舉兩得。1.2研究現狀1.2.1國外現狀電子書的最初的想法可追溯到上世紀40年代的一部科幻作品,在這部作品中,人們夢想在一臺特殊的電子設備上看書。1971年7月,MikhaelHart啟動了Gutenberg項目,以實現這一想法,由此產生世界上首個數字圖書館。該圖書館征集志愿者將紙質書籍電子化,并將電子書收入圖書資源中心。在首個圖書館產生不久,美國著名的軟件制造公司AdobeSystems,對外發行具有文檔組織、顯示、打印等功能的ArobatReader軟件。隨著技術的不斷成熟,電子閱讀產品也由各大公司相繼發售。2000年8月8日,微軟開始發行微軟Reader電子圖書館軟件,用戶可在電腦上使用該軟件來完成文獻查閱。除此文獻查閱功能以外,該軟件還提供顯示、解釋詞典等功能。1.2.2國內現狀隨著國外電子圖書市場的蓬勃發展,國內電子圖書市場日漸活躍。后來,各大生產電子書及電子書衍生品的廠商紛紛涌現,其中較為出名的有超星、博庫、北大方正等平臺。超星公司作為其中的佼佼者,早年自主研發了一款基于在線數字圖書的閱讀軟件SSReader,用戶可持該軟件瀏覽國家圖書庫,查閱書庫中近9000萬頁的文獻資料。本世紀初,由北京華康和博庫中國聯合發行推出可全球范圍內跨平臺操作的閱讀軟件DynaDocforBookoo,用戶可直接在在線閱讀或下載后離線閱讀,更加人性化的是,讀者還可設計自己的專有字體、界面、背景色、定時滾屏、個人書簽及書架等。值得注意的是平臺對于版權保護意識直接在設計上有所體現,為保障創作者的著作權與出版商的專有出版權,軟件禁止打印或復制操作。與此同時,遼寧出版集團與美國泰通公司聯手合作,也推出了一個可支持離線閱讀的電子圖書館,但相比前者,該圖書館可支持的離線閱讀時間長達40小時,且讀者可隨身攜帶,打破了時間和空間的限制,做到了真正意義上的掌上閱讀。此外,為增強讀者的閱讀體驗,書籍還具有翻頁功能,讀者還可在上面做標記。1.2.3存在的問題盡管電子圖書發展速度較快,但產品的發展到完善仍需過程,在這過程中存著著一些等待解決的問題。價格問題。大部分電子圖書平臺都不是公益性的,當用戶找到所需的圖書之后,需要支付價格才能獲取。而且有的圖書平臺出于保護產權的意識,不允許讀者復制圖書內容,當讀者想做摘抄時不太方便。有的電子圖書平臺需要辦理月卡才可以無限閱讀平臺上的書籍,但大部分讀者僅僅只是因為想閱讀某本書籍辦理月卡,完成該書的閱讀后,充值過的賬號不再使用,最終忘記密碼丟棄了賬號。格式問題。不同廠商出品的電子書格式五花八門,雖然電子軟件已經較為成熟的發展,功能也越來越多,但是大部分現有的閱讀軟件對不同格式電子書的兼容性有待提升,其中多數閱讀平臺只適配公司旗下上線的電子書格式。這就造成用戶查閱資料時不僅要找到匹配圖書,還要安裝各式各樣的閱讀軟件,大量擠占閱讀設備的存儲空間,既浪費時間又浪費精力。內容問題。迄今為止電子書的發展,除了存在格式、價格問題以外,上線書籍類型內容的專業針對性不強也是一個不容忽視問題。為了滿足消費者的需求,大多數市場商家都片面追求流行作品,很少關注大部分冷門專業相關的書籍。這使得對這些書籍有需求的讀者,很難找到急需的工具書,尤其是對高校教師與學生而言。 1.3論文意義及工作本文目的是采用Springboot+Vue框架構建一個基于B/S架構的積分兌換校園書城,旨在提高圖書資源利用率,且讓用戶在獲取積分過程中鞏固已學的專業知識,學習找書兩不誤。在基于積分兌換的校園書城開發過程中,本人主要做了以下工作:(1)對現有電子書分享平臺進行調研,分析其存在的問題。研究已有積分兌換機制,選擇合適框架設計并搭建系統。并對積分兌換校園書城的需求進行評估,研究分析每項業務邏輯流程,明確平臺搭建的最終目標和具體需求。(2)對系統架構詳細設計,采用用例圖對用戶需求進行分析,在此基礎上增加實體E-R圖進一步分析數據庫中的表。在對每一模塊業務邏輯實現說明時加入流程圖進行展示。(3)為了避免“非法用戶”擅自訪問、篡改、泄露系統中的數據,保障數據安全性。采用權限管理的方式對用戶可訪問數據范圍進行限制。權限管理核心主要是認證和授權。通過對用戶身份的合法性、有效性認證成功之后再開放用戶訪問資源的權限。1.4論文的組織結構本論文共分為六部分,分別為:第一章介紹基于積分兌換的校園書城系統的國內外發展現狀以及研究背景,介紹該書城的主要功能和意義,第二章介紹基于積分兌換的校園書城系統在開發過程中用到的關鍵技術。第三章從系統的整體需求、開發框架設計、用戶需求、功能需求、安全需求方面進行分析說明,并展示數據庫設計。第四章是針對上一章說明的系統需求分析結果和設計思路,對系統各功能模塊具體設計與實現。第五章是對已搭建完畢的系統進行各模塊的測試,并在本章節將運行效果展示出來。第六章是基于積分兌換的校園書城系統,總結該書城系統的特點和不足,對有待完善的部分提出展望。2關鍵技術2.1關鍵技術2.1.1Springboot框架Springboot框架自2014年4月推出以來,一直深受廣大開發商的關注。Springboot是一款在Spring框架的基礎上產生的全新框架。Springboot在繼承了Spring框架原有優勢的基礎上還具備簡化開發配置的特性,因此使用Springboot構建應用程序比Spring用時更短、學習曲線更平滑。它可自動嵌入當下最主流的服務器,例如Tmocat、Jetty或者undertow,創建可執行jars和waps。Springboot提供的依賴包,項目在導入這些依賴包之后可以以JavaApplication的形式運行。省去了配置服務器等繁瑣操作。開發人員可在編碼時定義一些新注解來組合已有的注解,應對Spring框架注解過多引發的代碼冗余問題。SpringBoot是Spring框架對“約定優于配置策略”理念的最佳的實踐產物。它采用固定視角簡化Spring依賴關系,提供的預配置技術與框架讓配置出錯的概率降低,使得開發者不必花費更多的時間和精力在配置上,將精力集中在業務邏輯的構建上,進一步提高開發的效率,同時提升產品品質。使用SpringBoot框架,并不需要在更新時手動查找jar包,SpringBoot框架可以開發人員應用程序并更新到正確的版本,自動添加依賴項,匹配好默認的值,根據配置,SpringBoot判斷應用程序類型,自動定義運行應用所需的默認實現。約定優于配置也就是按約定編程,這種策略解決了搭建Web項目時每次都要進行繁瑣配置的問題,減少開發者做決定的次數,簡單不失靈活。如果沒有這種策略,開發者自行進行配置,當不小心配置錯誤后,還要排查問題十分耗費時間,而SpringBoot通過約定實現自動配置,去繁從簡,只需通過綁定內嵌的Tomcat,獲得配置的最大自動化。通過大量自動配置,開發者無需執行太多操作可立即創建出一個獨立的、企業級別的應用。此外Springboot框架提供的一些功能和外部配置可幫助開發者監測、自動檢測應用程序。與此同時沒有附加代碼和XML配置要求,得開發更加的便捷。2.1.2Vue技術Vue作為一款對開發者較為友好的、用途廣泛且性能極高的漸進式Javascript框架,區別于其他大型框架的是它可以自下而上逐層應用。Vue的核心庫聚焦于圖層效果,是所有主流框架中學習曲線最平滑的框架,易于上手,在與第三方庫或已有項目整合時簡單易行。開發人員在創建程序應用時,可根據需求使用Vue框架,便于后期對系統的測試和維護。Vue早期開發的靈感來自angular,但最早的Vue只做視圖層,沒有路由和狀態管理,在開發大小不同的應用時,需要不停切換框架以及思維模式,靈活性不高。在發展過程中,加入了一些輔助工具和構建工具,但始終秉持著漸進式的理念。與angular相比,Vue的執行效率更優于angular,具有語法清晰簡潔,簡單小巧,快速上手的特點。作為一種輕便的,由數據驅動的前端js框架,其與jQuery最大區別在于Vue通過引入虛擬DOM加速了頁面的渲染過程,實現操作數據控制視圖的更新展示。除了引入虛擬DOM以外,Vue還支持JSX和TypeScript,支持流式服務端渲染和跨平臺等功能。Vue兼具響應式編程、組件化、模塊化等特性,該框架的產生初衷是為了盡可能的降低開發人員在程序中實現數據綁定和視圖展示的難度。2.1.3ApacheShiro框架Shiro作為一款功能強大、高靈活性、使用方便且學習成本低的開源Java安全框架,支持系統對用戶的身份驗證、授權,對敏感信息的加密和會話的管理。為滿足開發人員對開發應用程序的安全需求,簡化開發程序。該框架對開發人員提供的API簡單直觀,便于他們理解與快速應用。開發人員可使用Shiro提供的訪問控制,對用戶與角色之間的關系進行管理,以降低系統的維護成本和提高系統的安全性。與Springsecurity比較,Shiro更簡單、更靈活,可以獨立于Spring執行。積分兌換校園書城通過使用Shiro來完成登錄認證和角色權限的隔離管控,實現在權限配置方面對其進行靈活的細粒度管理。2.1.4Mysql數據庫近年來,各大開源數據庫的應用越來越廣泛,因其具有無償提供、易于部署、穩定性好、執行性能高等特性,越來越受開發者所喜愛。Mysql數據庫作為當今最火熱的關系型數據庫管理系統之一,是各大平臺上最常用的標準化數據庫。Mysql數據庫在應用中,對目標數據先進行分割再執行儲存,以此提高系統檢索數據的效率。Mysql數據庫存儲數據時,會將數據拆分存入不同的數據庫表中,減少冗余。而非將其都存入同一個存儲空間里。Mysql數據庫除了能夠靈活地存儲數據外,還可以提高數據庫并行訪問的能力于具有這些優點近年來得到了較大的關注。相較于其他數據庫,Mysql具有更小、更快、總成本更低、使用方便等特征,對其應用的推廣產生巨大影響。2.1.5Redis緩存技術Redis是由Redis之父salvatoreSanfilippo開發的開源存儲系統。與Mysql數據庫有所區別的是,Redis并非是一種關系型數據庫。因其包含的數據類型豐富,每種數據結構都適用于解決特定的問題,許多人又稱其為數據結構服務器。Redis是基于內存的操作,所以在數據的存取速度方面具有天然的優勢。隨著使用Redis的開發人員數量增多,其涉及的數據量也愈發龐大。為了優化服務器資源完善對海量數據的存儲,redis選擇了許多高效的數據結構和算法來加強性能。對于開發人員在構建應用程序中遇到的數據量過多造成數據庫壓力過大的情況,Redis給出的解決措施是,將較為穩定、鮮少修改的數據或經常使用到的數據,可以存到同一存儲位置進行讀寫。這樣既能減輕數據庫負荷,還大幅度提高讀寫效率。Redis的API大多數都比較簡單,用戶只需操作參數就可操作Rdis完成指定操作。2.2本章小結本章主要對系統即將用到的關鍵技術進行簡要介紹,首先介紹了系統搭建所要用到的springboot框架,并將其與其他框架對比,說明該框架具有的先進性以及技術可行性。然后介紹前端用到的主流JavaScript框架vue,對系統的安全框架shiro的功能進行簡單介紹。最后介紹系統所要用到的數據庫。
3系統需求分析3.1系統整體需求分析3.1.1系統設計目的本積分兌換校園書城系統主要實現以下幾個目標:(1)用戶答題獲取積分,后臺自動積累用戶通過答題獲得的積分,無需人工進行積分記錄,全程由后臺自動記錄完成。(2)為了明確職責,便于系統的管理和維護,也防止系統內部信息被人隨意篡改、人為破壞,系統采用權限管理的方式對內部的數據進行隔離,擁有某一權限的用戶才能看到和操作該權限對應的數據。(3)在權限管理的基礎上,為進一步增強用戶對系統的信任和提高系統的健壯性,本系統采取對用戶敏感信息加密后再加鹽的措施來提高數據的安全性。3.1.2系統設計原則積分兌換校園書城面向的主要對象是學生群體,要考慮該書城是否能正常運行,做好維護,滿足學生們的需要,所以積分兌換校園書城的設計原則如下:易用性:用戶操作界面應盡可能流暢美觀,明確各模塊職能分工,盡量避免用戶在操作過程中遇到問題,提升用戶體驗感。安全性:將密碼以明文形式直接存入數據庫用戶信息表中,會使系統安全系數大打折扣。若應用被有心之人脫庫會導致密碼全網流傳,對整個系統的維護和正常運行產生惡劣影響。且大部分用戶在注冊賬號的時候習慣使用慣用的密碼,一旦密碼泄露,用戶在其他平臺的賬號容易被他人盜取,極易造成經濟損失等問題,帶來諸多麻煩,影響用戶使用體驗。若無可靠措施提高系統安全性能,則用戶對系統的信任度不高,很難吸引用戶使用。因此,本系統需要對用戶部分信息進行不可逆加密再儲存入庫。加密操作主要用于敏感的信息的驗證,此類敏感信息明文僅交由用戶自行保管。實用性:積分兌換校園書城搭建的目的就是解決學生群體的書籍資源獲取問題,本就立足于實際,因此實用性對于積分兌換校園書城來說是必不可少的,在各模塊的具體操作與業務邏輯結構設計方面應盡量結合系統的可實用性。(4)先進性:前端使用了多樣化的控件,頁面風格也比較統一??刂茖雍湍J綄硬捎玫氖荢pringBoot框架,方便擴展和提高開發效率。(5)靈活性:針對不同用戶的需求,本系統在提供默認角色的基礎上支持自定義增加角色分配權限,不同類型授權時權限項不同,用以控制一些特別的操作,來實現權限的靈活隔離。3.1.3系統可行性分析在搭建本積分管理兌換系統之前,對現有電子書分享平臺進行調研。調研結果表明:網上已有書城系統類型五花八門,提供的書籍資源范圍較廣,但針對學生群體設計的書城系統較少。通過以下幾個方面的分析,對構建本系統的可行性進行分析說明。(1)經濟可行性:學生群體手中可支配的金錢數額有限,將所有需要的教材書籍都購買下來很不現實。如何減輕學生的學習成本是一個很有必要解決的問題。本系統提供了一個積分兌換的書城平臺,用戶只需經過答題,湊齊所要兌換書籍的積分,即可解鎖書籍資源。學生可事先在本平臺查詢所需資源,如本平臺已經提供可直接使用積分兌換,縮減大部分花在圖書上的開支。(2)高效可行性:當學生需要查閱專業書籍時,在本平臺搜索框直接輸入關鍵詞搜索,查詢效率比紙質書高效得多。用戶在急需資料時,點擊圖書兌換,成功之后立刻獲取圖書資源,無需等待。(3)技術可行性:本系統采用的是B/S的架構,主要語言為Java,框架采用典型的Springboot+Vue框架。Springboot+Vue的開發框架模式隨著越來越多的開發人員使用,成熟度也越來越高,使用該框架可提高系統的穩定性,也方便后期維護。前端的布局裝飾使用到elementUI插件,elementUI自帶的控件極大方便了前端的開發,且頁面十分流暢美觀。前端網頁的設計與開發使用的是主流語言HTML、CSS以及JavaScript。數據的存儲則采用Mysql數據庫,在安全性方面還加入了Shiro框架來進行身份認證,身份鑒定和后臺密碼的加解密等。3.2用戶需求分析3.2.1游客需求分析游客指的是未經注冊的用戶,該類用戶在訪問本系統時,只能瀏覽書籍展示頁,在搜索框輸入關鍵詞搜尋指定圖書。但無權訪問筆記、答題模塊,也無權兌換圖書。該功能主要用以吸引新的用戶加入注冊,游客用戶需求如圖3-1所示。圖3-1游客用戶用例圖3.2.2普通用戶需求分析普通用戶是完成注冊并成功認證,登錄進入系統的用戶,其用戶需求如圖3-2所示。圖3-2普通用戶用例圖該類用戶可訪問書籍展示頁、筆記展示頁、答題頁以及積分兌換信息頁。用戶在完成答題之后可憑答題獲取的積分兌換指定圖書,隨時在筆記模塊添加讀書筆記。3.2.3管理員需求分析管理員是影響整個系統可維護性的關鍵角色,管理員又分系統管理員、內容管理員。系統管理員除了可以執行對書籍模塊、筆記模塊和答題模塊的管理以外,還可以進入用戶管理以及權限管理后臺,對用戶信息和角色信息執行添加、刪除、更新操作,是整個系統權限最高的角色,其需求如圖3-3所示。圖3-3系統管理員用例圖內容管理員只擁有書籍管理、筆記管理和答題管理的權限,負責日常對筆記板塊內容的檢查以及題目的管理,其需求如圖3-4所示。圖3-4內容管理員用例圖3.3各模塊需求分析3.2.1登錄注冊界面登錄與注冊模塊的主要需求如下:(1)用戶登錄驗證:在用戶登錄驗證時,提交的登錄表單中用戶名必須不為空且只能有一個。如果用戶遺忘密碼,應及時聯系管理員凍結賬號或重置密碼。登錄時系統向后臺提交登錄表單中的賬號和密碼信息,通過認證頁面自動完成動態渲染跳轉至登錄界面。(2)用戶密碼更改:本積分兌換校園書城僅限系統管理員具備對所有用戶信息執行更改操作的權限,包括密碼的重置。(3)系統配置:只有一個賬戶能在一個時間使用該系統3.2.2圖書模塊獲得圖書管理授權的用戶可對書名,作者,類別,封面,出版日期,出版社,簡介等數據進行增加,修改,刪除等操作。圖書展示界面以卡片形式展示書籍,可以直接在展示界面看到書籍的名字,將鼠標放在書籍卡片上可以獲取圖書詳情信息。用戶如需查找某一書籍,則可在搜索框中輸入書名或作者名字可以進行模糊搜索。3.2.3讀者模塊筆記模塊內置文章編輯器,具備筆記管理權限的管理者可對文章進行簡單的排版。文章編輯界面支持的功能包括文字加粗,斜體,修改標題的字體大小,添加下劃線,刪除線,標記,上角標,下角標,居中,居左,居右,段落引用,給列表排序,添加鏈接,添加圖片,加代碼塊,加表格,返回上一步,刪除,保存,復制等功能。3.2.4用戶管理模塊用戶管理模塊要包括對系統的人員,內容,配置進行設置和更新。獲得用戶管理授權者可對用戶信息管理和角色權限配置。用戶信息包括用戶名,密碼,真實姓名,聯系號碼,E-mail地址。角色管理是對角色信息數據的增加,修改,刪除等操作。在添加新角色的時候,角色的初始權限是沒有的,要在添加成功之后開啟,并編輯。角色信息的修改包括角色名,角色權限描述,功能配置。管理員可自定義某指定角色,將功能配置及其權限授予該角色并添加成功之后,用戶信息管理界面中的用戶可選角色列表將自動刷新出新角色。根據需求可重新定義新角色并分配給用戶該角色。3.2.5答題模塊用戶通過答題獲取相應的積分,不同類型的題分值不同,難度更高的題用戶可以獲得的積分更多,用戶可以通過積攢積分,獲取積分對應的書籍。擁有授權的管理員可在后臺對題目有關數據進行操作。3.2.6積分管理模塊用戶積攢到足夠的積分后可以搜尋想要的書籍,并找到書籍進行兌換,只要積分足夠,用戶即可兌換成功,此時用戶積分會相應的減少,用戶的兌換列表中已兌換會增加新兌換的書籍,用戶可查看已兌換書籍列表。3.4安全需求分析(1)認證限制:用戶可于首次登錄認證時勾選記住密碼選項,避免忘記密碼;在用戶提交登錄表單信息給系統時,系統不透露提交的用戶是否存在以免被人惡意的進行用戶名遍歷猜測密碼盜取信息;用戶在進行注冊時提交的表單各項信息格式必須正確,否則不予通過避免惡意注冊。(2)數據保密:存儲在數據庫表中的密碼應經過加鹽加密,且加密為不可逆加密,明文密碼信息只有用戶知道,避免用戶密碼泄露進而造成其他個人信息被他人知道產生麻煩。(3)訪問控制:需要對系統設計并實現可基于功能級、菜單級以及數據級的訪問控制,即更細化其訪問控制粒度。禁止未經授權用戶越權訪問;避免垂直越權(如游客非法訪問需經認證用戶才可訪問的界面,如圖3-5所示)﹔防范水平越權(又稱權限提升攻擊,如圖3-6所示)。圖3-5垂直越權圖圖3-6水平越權圖3.5本章小結本章首先對系統的整體需求進行闡述,介紹系統的設計目的、原則,以及對本系統的可行性進行詳細說明。在對具體不同角色用戶需求分析的基礎上,又詳細分析了各個模塊的業務邏輯與操作流程,明確不同用戶的權限需求。梳理整個書城系統中每個功能模塊的邏輯流程實現方案,進一步完善總體功能需求。
4系統詳細設計與實現4.1整體設計4.1.1開發框架設計為實現提升系統安全、減少項目配置、降低學習成本、加快開發速度和優化系統性能等目標,本系統的開發采用Springboot+Vue框架的前后端分離技術,在開發過程中整合應用安全組件,以更為簡單便捷的方式完成開發。系統采用簡單的分層架構進行設計,其框架如圖4-1所示。架構層次分為界面層(表現層)、服務層、業務邏輯層、數據訪問層、數據存儲。用戶界面層主要用于顯示和接收的用戶輸入的數據,為用戶提供一種交互操作的界面。服務層也稱應用層,其作用主要是將表現層和業務邏輯層之間進行解耦,此時開發人員若需修改業務層代碼,則無須對表現層代碼進行修改。數據訪問層的主要職責就是對所有數據相關請求進行處理,概括來說就是對數據表的查詢、插入、更新、刪除操作。圖4-1系統技術架構圖系統框架主要具有以下特點:(1)開發效率高:SpringMVC太過細分導致開發效率低,與其相比,SpringBoot則引入了自動配置的概念加快項目搭建速度。雖然SpringBoot常用于快速、敏捷地開發應用程序,但其本身并不具備Spring框架的核心特性與其擴展功能,因此開發時還需在Spring框架的基礎上搭建應用。(2)安全性高:基于Springboot設計登錄器攔截,若系統檢查到用戶沒有登錄,則無法直接跳轉到未經授權頁面。數據庫存入的密碼都經過加鹽加密,數據安全性得以提升。4.1.2整體架構設計根據需求分析,本系統采用前后端分離技術構建該校園書城,為增強系統的可維護性,整體的設計采用模塊化方式進行開發,此開發模式便于對網頁頁面上的信息內容進行組織和管理,減少各模塊的耦合程度,以此增強代碼可復用性。校園書城由前臺系統和后臺管理共同構成。用于前臺的操作功能主要有:登錄注冊、瀏覽書籍信息、參與答題獲取積分、積分查看、筆記瀏覽。游客僅能訪問書籍展示頁,經過注冊且處于登錄狀態的用戶可以訪問前臺所有頁面,其框架如圖4-2所示。圖4-2前臺功能結構圖后臺管理權限僅對管理員開放,包括圖書管理、答題管理、積分管理、筆記管理、用戶管理與角色管理。默認的系統管理員分為內容管理以及系統管理,內容管理僅有對圖書、筆記、答題模塊的管理權限,而系統管理員擁有所有管理權限。系統管理員可根據需要創造出新的角色賦予指定權限,并分配這一角色給用戶,其框架如圖4-3所示。圖4-3后臺功能結構圖4.2各模塊設計與實現4.2.1登錄注冊功能實現(1)登錄注冊模塊設計登錄注冊模塊主要為平臺提供注冊、登陸、退出功能。注冊功能主要是針對平臺新用戶,新用戶在注冊時候需要在系統注冊頁面中提交賬號、郵箱、手機號碼、密碼等個人信息。注冊成為正式用戶后可以擁有查找圖書、答題獲取積分、積分兌換書籍等功能權限。已完成注冊的合法用戶,可以在首次提交登錄認證表單時勾選記住密碼選項,系統后臺核對用戶賬號以及密碼,認證成功方可登錄。當用戶退出系統后,在認證令牌有效期內再次登錄無需重復認證。(2)登錄注冊功能實現本系統使用的是Springboot框架進行開發,創建獨立的maven項目,使用MVC分層開發模式。用戶的登錄和注冊功能主要通過定義LoginController類、UserService類、UserController類來實現。LoginController類定義了login()方法來實現用戶的登錄。而用戶注冊的業務邏輯主要由UserService類實現。在register()方法中,用戶提交的注冊表單包括用戶名、姓名、電話、郵箱地址、密碼。系統將檢測用戶注冊表單中的用戶名是否存在,姓名、電話、郵箱地址、密碼等信息是否為空以及郵箱地址格式是否準確,防止惡意注冊。若檢測失敗系統將拒絕對用戶提交的信息落地處理,則用戶還需再次注冊直到注冊通過才可成為合法用戶對系統進行資源訪問,用戶注冊流程如圖4-4所示。圖4-4用戶注冊流程圖為提升本系統安全性,采用不可逆的Hash算法將用戶提交的任意長度密碼壓縮映射成長度固定的輸出,加密過程中存在信息損失,因此若非法用戶想進行破解難度較大,成本極高。由于如今破解工具層出不窮,為增加用戶對本系統安全的可信度,本系統采用MD5加密算法,一個hash值的輸出不止對應一個輸入,若不加鹽,找到一個與明文密碼hash結果相同的輸入不是一件難事。為了更好的對用戶信息加密,提升找到這種輸入的難度,本系統添加salt的方法。與此同時,進行hash多次迭代,提高破解難度,密碼加密存儲過程如圖4-5所示??紤]到系統的效率與通用性,在Shiro方法里的salt使用的是byte[]。圖4-5密碼加密存儲過程圖在login()方法中,系統獲取到用戶輸入的賬號與密碼后,服務器進行驗證,驗證通過后,根據用戶輸入的用戶名在數據庫中找到對應的密碼和密碼對應的加鹽結果,由于本系統采用了不可逆的算法對數據進行加密,因此還需將用戶名與找到的鹽進行字符串拼接,使用MD5對拼接后的字符串進行加密,將加密結果與數據庫中的密碼對比,密碼比對過程如圖4-6所示。若相同,驗證通過。若用戶在登錄時選擇記住密碼,系統接收到請求后將獲取到的用戶信息存于生成的session對象中,用戶訪問其他頁面時,客戶端發送帶上sessionId的對象,服務器通過判斷是否存在用戶變量獲取用戶登錄狀態,避免用戶反復執行登錄操作。圖4-6密碼比對過程圖(3)登錄攔截器設計基于Springboot框架設計攔截器功能,當用戶提交訪問URL請求時,檢測服務器端是否處于登錄狀態,若是登錄狀態則不攔截。如果用戶處于游客狀態,則Springboot框架控制層的攔截器將該請求攔截,然后通過攔截器對用戶提交的請求進行登錄驗證,驗證成功則動態渲染完成跳轉,失敗則拒絕用戶訪問請求。(4)登錄攔截器實現由于僅靠前端實現攔截容易被繞過,因此還須由后端驗證用戶登錄狀態。在引入Shiro作為安全框架之后,用戶提交登錄表單時,前端發送一個帶有sessionId的請求給后端驗證。由于cookie信息在跨域中是默認不允許傳輸的,因此Shiro無法獲取sessionId,無法完成認證過程,session認證過程如圖4-7所示。為了解決跨域問題,要在配置類中進行修改允許cookie跨域。為了使前端能帶上cookie,需要在請求頭中帶上{crossDomain:true,xhrFields:{withCredentials:true}}設置。再次訪問時前端發送的請求中就會帶上sessionId,Shiro通過sessionId就可獲取登錄狀態并根據不同結果完成頁面渲染。圖4-7session認證流程圖4.2.2圖書模塊(1)圖書展示界面設計在前臺的圖書管理界面中,主要包括圖書展示區域、分類導航欄、搜索欄、頁面切換。(2)圖書模塊核心功能實現1)頁面初始化:使用Vue中的mounted函數,在該函數中寫入加載圖書首頁的方法,利用axios發送get請求,在后端接收到該請求后向前端返回成功的代碼,接收到成功代碼后把data替換成后端返回的數據并渲染頁面,完成初始化。2)分頁顯示:用戶點擊分類導航欄,前端向后端發送get請求,后端接收到請求后執行查詢代碼,并向前端返回數據,前端修改data中的數據以完成頁面渲染。3)搜索欄查詢:本書城中可實現查詢的地方主要有以下三個:打開頁面,默認查詢出所有圖書并進行顯示。點擊左側分類欄,圖書根據類別分別展示在所屬類別欄中。在搜索欄中輸入作者或者書名,可以模糊查詢出相關書籍。在BookService中添加查詢接口,BookDao中設置查詢圖書的關鍵詞屬性,分別對應書名與作者,用戶在搜索時搜索該關鍵信息,系統都會進行匹配給出結果。4)圖書的增加、修改、刪除管理員在管理界面點擊增加、修改、刪除按鈕,系統會向后端發出post請求對數據庫執行對應操作,通過ajax調取后臺接口,利用雙向綁定更新顯示,數據交互如圖4-8所示。圖4-8Ajax交互圖4.2.3筆記模塊為了方便用戶交流,本系統提供給讀者一個發表讀后感的筆記模塊,用戶可在該筆記板塊發表自己的想法。為提高開發效率,降低開發成本,本系統采用開源mavonEditor插件來解析markdown編輯完成預覽。在前臺筆記管理界面中,主要是三個部分,分別是文章展示、文章管理、編輯器。文章的管理劃分為列表和文章詳情兩個部分。根據Vue.js的組件化思想,將文章列表、文章詳情以及文章分頁分別列為獨立組件,各個組件可以隨意組合重復使用。用戶在文章列表中點擊標題進入文章詳情。獲得內容管理權限的用戶可發布文章或修改文章。在文章的發布和修改界面的設計上,兩者都采用相同視圖組件,組件包含標題,標簽以及編輯框。其中編輯框支持Markdown排版語法,用戶在本系統提供的筆記排版界面完成排版后,可實時預覽編輯效果,隨時對排版內容修改和查看。文章列表主要展示文章的標題、摘要、封面等信息,提供文章詳情頁面入口。核心部分主要是前端界面的設計與分頁功能實現。文章詳情這個頁面用于展示文章的具體內容,也就是渲染從數據庫中取出的html。文章管理后臺的管理頁面,提供查看、發布、修改文章的入口以及刪除功能,需要內容管理權限。本系統在開源編輯器的基礎上,添加了標題、摘要及封面設置功能。其設計的界面視圖說明如下:工具欄:工具欄列表包含幾種常用的Markdown語法,包括但不局限于字體加粗,斜體,插入鏈接等。工具欄上有各個功能的圖標,當用戶不清楚該圖標作用時,可移動光標在圖標上,此時圖標上會浮現對該功能的文字描述,方便用戶快速熟悉Markdown語法的使用并大大減輕了工作量,進一步提高編輯效率。編輯框和預覽框:編輯框主要為用戶提供Markdown語法編輯的輸入框,用戶可以手動輸入或者點擊工具欄輸入。預覽框會實時顯示左側編輯框內編輯的內容和排版的樣式,方便用戶掌握自己的編輯排版情況。4.2.4答題模塊用戶點擊答題界面時,系統先判斷用戶登錄狀態,若用戶處于游客狀態,將自動跳轉至登錄界面。用戶進入答題模塊點擊答題展示列表中的題目,選擇考察某一學科的題目開始作答,題型分為選擇題與判斷題,用戶作答完畢系統將直接判斷答案并給出得分,得分將直接轉換成積分計入用戶總積分內。傳統的題庫在出題時如果要人工將試題組合在一起要做大量的工作。為了減輕題目錄入的工作強度,本系統采用隨機出題的方式來進行出題。只需根據輸入的分值大小屬性,就可以完成將題源與題目隨機組合從而產生一套完整的答卷存入題庫中。這樣既減少了出題的工作量,又可節省資源,方便題庫的隨時更新,系統出題過程如圖4-9所示。圖4-9系統出題流程圖內容管理員與系統管理員可在答題管理后臺對題目進行添加、刪除、編輯操作,題庫管理如圖4-10所示。圖4-10題庫管理流程圖在管理員進行對題目相關數據操作之前,先驗證用戶是否具備對該類數據訪問和更改的權限,通過驗證可進行管理操作。在對題目進行管理時,可選則對已有題庫中的某一題目執行編輯或刪除操作,操作完畢,系統自動更新數據庫中題目。若管理員需增加題目,則應填寫題目對應的分值與答案,在操作無誤的情況下,即可成功更新系統中的題庫。4.2.5圖書兌換模塊 用戶進入圖書兌換界面搜索需要兌換的圖書,系統將發送報文調取數據庫用戶的積分數量,判斷當前積分是否足以兌換指定圖書,若用戶當前積分總數大于兌換該書所需圖書,則彈出提示框,詢問用戶是否確認兌換圖書,當用戶提交兌換圖書確認表單之后,扣除當前消耗積分。若用戶當前積分不足,則跳轉至答題平臺,圖書兌換過程如圖4-11所示。用戶可在已兌換列表找到獲取的圖書,下載該圖書電子版資源。圖4-11兌換圖書流程圖4.2.6權限控制模塊使用RABC設計權限管理模塊,RABC模型如圖4-12所示。通過添加和刪除角色,設置詳細的角色管理權限以及該角色可訪問的界面實現權限管控。例如,用戶A需要管理整個系統的權限,則添加系統管理員角色,賦予系統管理員角色對后臺所有模塊的管理權限,再將系統管理員賦予用戶A,用戶A即可擁有管理整個系統的資格。圖4-12RABC模型圖角色分配本系統中對角色與用戶的關系設定是多對多,一個用戶可同時擁有多個角色,一個角色可被分配給不止一個用戶,因此在角色管理菜單中采用多選框組件。為找到當前匹配的用戶與角色,需將系統內的角色信息查詢出來,然后在用戶信息表內選中相應角色。權限分配權限分配的設計思路與角色分配相同,找到角色對應的權限,將系統中的權限信息查詢出來,再在角色信息表中選中對應的權限給角色。4.3數據庫設計與實現此節主要介紹系統所采用的數據庫,并詳細描述數據庫中表結構的設計。數據庫的設計對系統本身的運行十分重要,用戶與系統的數據均在數據庫基礎之上完成交互。數據庫的查詢速度直接影響到軟件的運行速度和系統的響應時間。與此同時,數據庫的設計與系統后期的可擴展性息息相關。一個良好的數據庫設計對軟件的運行和用戶的操作體驗都具有非常重要的作用,既可優化軟件性能,又能提升客戶體驗。4.3.1數據庫E-R圖為確認需求信息的正確性和完整性,下面將使用數據庫的E-R模型圖設計本書城數據庫概念結構,系統E-R圖如圖4-13所示。圖4-13系統E-R圖下面對本書城的主要實體屬性進行說明:(1)用戶實體的屬性包括用戶名,用戶密碼,聯系方式,郵箱等信息,主鍵為用戶id,其實體圖如圖4-14所示。圖4-14用戶實體圖(2)管理員實體屬性包括用戶名、用戶密碼、聯系方式、郵箱等信息,主鍵為用戶id,其實體圖如圖4-15所示。圖4-15管理員實體圖(3)圖書實體屬性包括封面、標題、作者、出版日期、出版社、摘要和分類等,主鍵為圖書id,其實體圖如圖4-16所示。圖4-16圖書實體圖(4)筆記實體屬性包括筆記id、標題、文章鏈接、原文、文章摘要、文章標題和發文日期,主鍵為筆記id,其實體圖如圖4-17所示。圖4-17筆記實體圖(5)題庫實體屬性包括id、用戶id、問題、答案、分值,主鍵為題目id,其實體圖如圖4-18所示。圖4-18題目實體圖4.3.2數據庫表的設計根據E-R圖,對數據庫表進行詳細設計,系統主要數據庫表如下:(1)用戶信息表(user):定義了用戶的基本信息,以id為主鍵,具體字段的設如表4-1所示。表4-1用戶信息表字段名類型說明備注idint(11)用戶idPRIusernamechar(255)用戶名NotNULLpasswordvarchar(255)密碼saltvarchar(255)加鹽結果Namevarchar(255)真實姓名phonevarchar(255)聯系電話emailvarchar(255)郵箱enabletinyint(1)權限pointint(11)積分(2)菜單管理表(admin_menu):定義了菜單管理相關的基本信息,以id為主鍵,具體字段的設計如表4-2所示。表4-2菜單管理表字段名類型說明備注idint(11)用戶idPRIpathvarchar(64)路徑namevarchar(64)角色名稱name_rolevarchar(64)角色名Icon_clsvarchar(64)圖片鏈接componentvarchar(64)內容parent_idvarchar(64)父id(3)角色管理表(admin_role):定義了角色管理相關的基本信息,以id為主鍵,具體字段的設計如表4-3所示。表4-3角色管理表字段名類型說明備注idint(11)用戶idPRInamechar(100)角色名稱NotNULLdescvarchar(100)角色描述urlvarchar(100)跳轉鏈接(4)權限管理表(admin_permission):定義了權限管理相關的基本信息,以id為主鍵,具體字段的設計如表4-4所示。表4-4權限管理表字段名類型說明備注idint(11)用戶idPRIridint(11)用戶名NotNULLmidint(11)密碼(5)角色管理菜單表(admin_role_menu):定義了角色管理菜單的基本信息,以id為主鍵,具體字段的設計如表4-5所示。表4-5角色管理菜單表字段名類型說明備注idint(20)菜單idPRIridint(20)用戶idpidint(20)權限id(6)用戶角色管理表(admin_role_menu):定義了用戶的基本信息,以id為主鍵,具體字段的設計如表4-6所示。表4-6用戶角色管理表字段名類型說明備注idint(11)idPRIuidint(11)用戶idridint(11)角色id(7)圖書信息表(book):定義了圖書的基本信息,以id為主鍵,具體字段的設計如表4-7所示。表4-7圖書信息表字段名類型說明備注idint(11)書籍idPRIcovervarchar(255)封面NotNULLtitlevarchar(255)書名authorvarchar(255)作者datevarchar(20)出版日期pressvarchar(255)出版社absvarchar(255)摘要cidint(255)目錄idextract_pointint(11)兌換積分(8)圖書分類表(category):定義了圖書類型相關的基本信息,以id為主鍵,具體字段設計如表4-8所示。表4-8圖書分類表字段名類型說明備注idint(11)類型idPRInamechar(255)類型名稱NotNULL(9)筆記信息表(note):定義了筆記相關的基本信息,以id作為主鍵,具體字段設計如表4-9所示。表4-9筆記信息表字段名類型說明備注idint(11)用戶idPRInote_titlechar(255)筆記標題NotNULLnote_content_htmlvarchar(255)筆記鏈接note_content_mdvarchar(255)筆記排版note_abstractvarchar(255)摘要note_covervarchar(255)封面note_datevarchar(255)發表日期(10)積分信息表(intergral):定義了積分相關的基本信息,以id作為主鍵,具體字段設計如表4-10所示。表4-10積分信息表字段名類型說明備注idint(11)idPRIbook_idchar(255)書籍idNotNULLuser_idint(11)用戶idNotNULLtotal_pointint(11)總積分remain_pointint(11)剩余積分datevarchar(255)領取時間(11)答題信息表(quest):定義了題庫中的基本信息,以quest_id為主鍵,字段設計如表4-11所示。表4-11答題信息表字段名類型說明備注quest_idint(11)idPRIpaper_idchar(255)試卷idNotNULLusernamechar(255)用戶名NotNULLsingle_ques_scoreint(11)單題分數single_ques_sumint(11)單題總分user_single_answtext用戶答案judge_ques_scoreint(11)題目得分判斷judge_ques_sumint(11)試卷得分判斷user_judge_answint(11)用戶答案判斷muti_ques_sumint(11)試卷得分判斷muti_ques_scoreint(11)試卷總分判斷4.4安全性設計4.4.1登錄認證引入Shiro框架完善登錄認證機制,使用Shiro中的會話驗證調度器來實現會話管理,過程如圖4-19所示。圖4-19shiro認證過程圖對會話的有效期進行驗證,判斷是否在有效期內,若已失效則停止會話。為了維持系統性能,大多數時候對會話有效期的驗證一般都是在獲取會話時才進行,但在web環境中,系統無法自動獲取會話的有效期
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/ 540.6-2014重點單位消防安全管理要求第6部分:養老機構
- CBWQA/T 0003-2013螺旋雜質分離器
- CAB 1030-2014汽車(熱壓)腳墊、后備箱墊
- 2025年貿易合同 煙草定購合同
- 船舶智能制造技術與設備考核試卷
- 遙感技術在城市土地利用變化監測中的應用考核試卷
- 船舶修理合同履行與爭議解決考核試卷
- 特種物品物流運輸賠償補充協議
- 橋梁工程承臺基礎施工進度調整合同
- 演員參與綜藝節目合同補充條款
- 養老護理員職業技能競賽1.為帶鼻飼管老年人進行飲食照料技術考核評分表
- 集團公司技術中心職責
- 2024行政處罰法:行政處罰的聽證程序
- 《世界文化遺產長城》課件
- GB/T 2982-2024工業車輛充氣輪胎規格、尺寸、氣壓與負荷
- 妊娠合并高血壓疾病護理查房
- 走進泰國-課件
- 一站到底課件
- 西安中建一局裝修合同模板
- 《PLC應用技術(西門子S7-1200)第二版》全套教學課件
- 《毫米、分米的認識》課件
評論
0/150
提交評論