




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
目錄基于SSM的眾籌平臺設計與實現(xiàn)摘要隨著經(jīng)濟的不斷發(fā)展,創(chuàng)業(yè)人群也隨之增加,然而由于創(chuàng)業(yè)初期人力、物力和資源等的緊缺,導致許多沒有足夠資金的創(chuàng)業(yè)者最終以失敗告終,為了能夠讓更多的人完成創(chuàng)業(yè)目標,同時能夠提供更多就業(yè)機會和就業(yè)崗位,因此,本設計基于SSM框架開發(fā)了一個眾籌平臺系統(tǒng)。本設計以SSM框架為軟件開發(fā)框架,選用Java作為開發(fā)語言,軟件開發(fā)工具采用IntelliJIDEA,后臺數(shù)據(jù)存儲分別使用關(guān)系型數(shù)據(jù)庫MySQL和鍵值型非關(guān)系型數(shù)據(jù)庫Redis,前端頁面的數(shù)據(jù)和樣式展示運用HTML、CSS、JavaScript、JQuery等技術(shù)完成。本眾籌平臺系統(tǒng)功能完善,主要分為前臺和后臺兩個部分,由用戶注冊、用戶登錄、項目發(fā)布、項目展示和項目支持等功能構(gòu)成前臺模塊,而后臺模塊主要由管理員登錄、信息維護、角色維護、菜單維護和權(quán)限控制等功能構(gòu)成。關(guān)鍵詞:眾籌平臺;SSM;Java;MySQL;Redis;JavaScript目錄26601緒論 1116331.1選題背景 12891.2國內(nèi)外研究現(xiàn)狀及應用前景 1309031.3論文研究內(nèi)容及結(jié)構(gòu)安排 2323721.3.1論文研究內(nèi)容 267741.3.2論文結(jié)構(gòu)安排 299082技術(shù)簡介 4269712.1SSM框架 447822.2MVC模式 432162.3MySQL數(shù)據(jù)庫 582632.4Web前端開發(fā)技術(shù) 5307822.5Redis緩存數(shù)據(jù)庫 6126622.6Ajax異步交互 649052.7章末小結(jié) 651023眾籌平臺的分析與設計 7302553.1系統(tǒng)需求分析 7243633.2系統(tǒng)總體設計 7319163.2.1系統(tǒng)功能設計 7173383.2.2系統(tǒng)運行流程設計 8217783.3數(shù)據(jù)庫結(jié)構(gòu)設計 9240523.3.1概念結(jié)構(gòu)設計 9315463.3.2邏輯結(jié)構(gòu)設計 10285643.4章末小結(jié) 1246594眾籌平臺的開發(fā)與實現(xiàn) 13160614.1眾籌平臺開發(fā)環(huán)境 134154.2眾籌平臺前臺功能實現(xiàn) 1336924.2.1用戶注冊功能的實現(xiàn) 1368744.2.2用戶登錄功能的實現(xiàn) 148924.2.3發(fā)布項目功能的實現(xiàn) 14277804.2.4展示項目功能的實現(xiàn) 1788524.2.5支持項目功能的實現(xiàn) 19243524.3眾籌平臺后臺功能實現(xiàn) 20140094.3.1管理員登錄功能的實現(xiàn) 21194294.3.2管理員信息維護功能的實現(xiàn) 21116224.3.3角色維護功能的實現(xiàn) 2317924.3.4菜單維護功能的實現(xiàn) 2472454.3.5權(quán)限控制功能的實現(xiàn) 25247744.4章末小結(jié) 2615815眾籌平臺的運行測試 27321775.1測試環(huán)境搭建 27244265.2眾籌平臺前臺運行測試 2789945.2.1用戶注冊運行測試 2762115.2.2用戶登錄運行測試 28182275.2.3用戶發(fā)布項目運行測試 28250515.2.4用戶查看項目運行測試 29256375.2.5用戶支持項目運行測試 30195745.3眾籌平臺后臺運行測試 30215455.3.1管理員登錄運行測試 3042375.3.2管理員信息維護運行測試 31247315.3.3角色維護運行測試 3186245.3.4菜單維護運行測試 32184065.3.5權(quán)限控制運行測試 32249115.3章末小結(jié) 32224396總結(jié)與展望 33145526.1總結(jié) 33258026.2展望 3331160參考文獻 351緒論1.1選題背景隨著社會經(jīng)濟的不斷發(fā)展和創(chuàng)新、創(chuàng)業(yè)的提倡,創(chuàng)業(yè)人群不斷的增多,但廣大的創(chuàng)業(yè)人群多為大學畢業(yè)生,雖有新穎的想法和創(chuàng)新項目,但創(chuàng)業(yè)需要大量的啟動資金以及人力資源,這些原因使得許多創(chuàng)業(yè)者的創(chuàng)意和項目落空不得實現(xiàn)。同樣社會和經(jīng)濟不斷發(fā)展,一部分人已積累了較多財富,但已沒有勞動能力和新穎的創(chuàng)意,主要以投資他人項目為主獲取更長期的回報,但消息閉塞、調(diào)研情況與實際情況不符等,導致投資者虧損嚴重或找不到心怡的項目及合作伙伴。眾籌平臺的運營和開發(fā)主要目的就是為了幫助籌資者和融資人搭建“方便,及時,快捷”的共享平臺。對于創(chuàng)業(yè)者來說,除了自己籌集的資金以外,也更加期待自己可以通過相對公開的眾籌服務平臺進行籌人、募智,同時還希望自己有機會能夠從中汲取到與其他創(chuàng)業(yè)者一起交流成功失敗經(jīng)驗、與投資方進行有效地溝通提出項目整改的方案和建議等。做好了融資方與發(fā)起方“籌錢”溝通的的渠道和平臺,對于項目的進行查核與辨別,既是對項目的挑選,同時,也給創(chuàng)業(yè)者指出了前行的方向;對于創(chuàng)業(yè)者來說,“籌錢”是一方面,“募智”也是相當重要的。選擇眾籌集資和投資者挑選項目的過程中,拋開經(jīng)濟因素以外,在眾籌平臺上的各類優(yōu)質(zhì)資源,如網(wǎng)絡媒體宣傳、經(jīng)銷商的供貨、銷售資源、各家投資機構(gòu)的加盟等等,都是是否選擇眾籌平臺的重要的決定因素。[1]隨著網(wǎng)絡時代的迅速發(fā)展,軟件開發(fā)相應的技術(shù)也不斷的進步,SSM框架被認為是當前國際市場上應用范圍比較廣泛,且最為主流的軟件系統(tǒng)輕量級開源框架,主要應用于各類大型企業(yè)級軟件系統(tǒng)開發(fā)的設計和構(gòu)建,SSM框架由Spring、SpringMVC和MyBatis框架整合而成,整個系統(tǒng)被劃分為四層,分別是:表現(xiàn)層、controller層、service層和dao層。SSM框架在配置方面越來越輕量級,同時也將注解功能在開發(fā)中發(fā)揮到了極致,并且更加靈活的實現(xiàn)了ORM,同時操作簡單也便于SQL優(yōu)化。應用眾籌的模式,對即將發(fā)布的商品或技術(shù)首先進行推廣宣傳,獲得未來客戶的支持。通過這種方式降低企業(yè)的風險,推動創(chuàng)業(yè)型和技術(shù)型公司的穩(wěn)步發(fā)展,為籌資者和投資者相互了解及支持提供幫助,本課題針對創(chuàng)業(yè)中籌資人和投資人各自需求問題,設計并實現(xiàn)了基于SSM的眾籌平臺系統(tǒng)。1.2國內(nèi)外研究現(xiàn)狀及應用前景美國的眾籌項目kickstarter正是由一個網(wǎng)絡眾籌項目發(fā)展而來,它通過自己搭建的網(wǎng)絡眾籌服務平臺來直接面向普通大眾進行集資,讓所有能力強、思維活躍的年輕人,可以直接通過這種眾籌方式從普通人那里獲得自己所需要的資源和人力,為他們每一個項目的順利實現(xiàn)和任務完成提供了條件。在國內(nèi),類似于國外這一類的產(chǎn)品也很少見,例如:追夢網(wǎng)、眾籌網(wǎng)、點名時間等等。眾籌的模式大致分為以下四類:股權(quán)、債權(quán)、回報和捐贈[2]。但由于國內(nèi)外的經(jīng)濟模式有很大的差異,所以國內(nèi)的創(chuàng)意眾籌網(wǎng)站仍然存在一些問題:網(wǎng)絡平臺成規(guī)模的少,平臺上常駐用戶少、資金短缺、實際發(fā)布創(chuàng)新項目少。反而,股權(quán)模式的眾籌在中國很受追捧。我國自引進眾籌模式以來,通過不斷地發(fā)展成長,與我國的實際經(jīng)濟法律相結(jié)合,不同的領域中得到了運用。許多企業(yè)也開始借助不同的眾籌模式來進行融資,但線上眾籌多以捐贈模式為主,軟件的功能主要是項目發(fā)布,用戶支付等功能,其余多種眾籌模式都為線下集資,線上眾籌模式較為單一,不能滿足集資者的多種需求,且網(wǎng)絡眾籌安全性較低,人們認可度不高。眾籌強大的市場前景使其擁有良好的未來,且刺激金融發(fā)展,引導民間經(jīng)濟走向正規(guī)化,同時還創(chuàng)造了許多就業(yè)崗位,促進技術(shù)革新。眾籌在國內(nèi)已然初具規(guī)模,但還是存在一定的風險和缺點,作為網(wǎng)絡經(jīng)濟的發(fā)展的手段,在未來的發(fā)展中其一定會不斷地完善,形成獨特的中國眾籌模式,促進中國經(jīng)濟的快速穩(wěn)定增長。1.3論文研究內(nèi)容及結(jié)構(gòu)安排1.3.1論文研究內(nèi)容本文從現(xiàn)如今大多數(shù)創(chuàng)業(yè)者起步時面臨的困境出發(fā),詳細闡述了一個基于SSM框架開發(fā)的眾籌平臺系統(tǒng)的設計與實現(xiàn)全過程,平臺相關(guān)數(shù)據(jù)的存儲使用MySQL數(shù)據(jù)庫和Redis數(shù)據(jù)庫。眾籌平臺的開發(fā)主要基于SSM、MySQL、Redis、HTML、Ajax等技術(shù)實現(xiàn)了用戶的注冊、登錄和項目的發(fā)布、展示支持功能以及管理員的登錄、信息維護、角色維護、菜單維護和權(quán)限控制功能。1.3.2論文結(jié)構(gòu)安排本文擬使用SSM框架設計并完成一個網(wǎng)絡眾籌平臺,通過對類似系統(tǒng)的對比分析,得出本文的設計需求,將論文的結(jié)構(gòu)做如下安排:第一部分,緒論,簡要介紹本文的選題背景和國內(nèi)外現(xiàn)狀研究以及應用前景,詳細了解國內(nèi)外現(xiàn)有的眾籌產(chǎn)品,分析其缺點和優(yōu)勢得出本文研究的主要內(nèi)容和論文結(jié)構(gòu)的基本安排。第二部分,技術(shù)簡介,是眾籌平臺系統(tǒng)使用技術(shù)的理論支持,分別介紹了SSM框架、MVC模式、MySQL數(shù)據(jù)庫、Web前端開發(fā)技術(shù)、Redis數(shù)據(jù)庫、Ajax等主要技術(shù)。第三部分,眾籌平臺的分析與設計,對眾籌平臺系統(tǒng)進行了應用需求分析和系統(tǒng)總體設計,得出系統(tǒng)的具體功能模塊和運行流程,然后通過將系統(tǒng)E-R圖轉(zhuǎn)換為關(guān)系型表結(jié)構(gòu),完成對系統(tǒng)數(shù)據(jù)庫的具體設計。第四部分,眾籌平臺的開發(fā)與其功能實現(xiàn),通過從功能實現(xiàn)流程、使用技術(shù)和關(guān)鍵代碼三個方面介紹了眾籌平臺開發(fā)和功能實現(xiàn)的詳細過程。第五部分,眾籌系統(tǒng)的運行效果,眾籌系統(tǒng)各項功能的實現(xiàn),通過具體的測試檢驗其功能的完善程度,并對各個功能運行效果進行展示。第六部分,總結(jié)與展望,總結(jié)和分析論文中存在的問題和不足,對未來的改進提出意見和建議。
2技術(shù)簡介2.1SSM框架SSM框架,是Spring+SpringMVC+MyBatis框架整合的簡稱,是標準的MVC模式。在SSM框架中,Spring通過IOC容器的裝載bean機制實現(xiàn)業(yè)務對象的管理,使用AOP來管理事務;SpringMVC通過DispatcherServlet接收客戶端請求并根據(jù)注解或配置文件信息找到相應的Controller,然后通過調(diào)用業(yè)務邏輯返回到視圖界面,從而完成對客戶端的請求處理和視圖的管理;MyBatis實際是通過對JDBC進行封裝,從而保護了JDBCAPI訪問底層的細節(jié),進而完成了數(shù)據(jù)庫的持久化操作。[3]Spring是一個應用于Java企業(yè)級應用開發(fā)的開源框架,它主要是用來簡化應用的開發(fā),IOC(控制反轉(zhuǎn))和AOP(面向切面編程)是Spring主要的核心;Spring中的IOC容器可以很好的幫助我們管理對象與對象之間的依賴關(guān)系,這樣就使得對象與對象之間的耦合度降低,方便代碼的維護;Spring中的IOC容器還負責生成和管理AOP代理,同時IOC也負責管理AOP的依賴關(guān)系,使用AOP可以管理事務、日志和權(quán)限等。[4]SpringMVC是Spring框架中的的一個模塊,屬于Spring家族的一份子,并且它還是是一個基于MVC模式的輕量級Web框架;SpringMVC負責請求和視圖的管理,它通過前端控制器接收客戶端請求從而響應結(jié)果,而且還大幅度的減少了其他組件之間的耦合性,從而實現(xiàn)了對請求的管理;通過視圖解析器對視圖進行解析,再進一步對邏輯圖名進行解析得到真正的視圖返回給客戶端,進而實現(xiàn)視圖管理。[5]MyBatis框架也被成為ORM(Object/RelationalMapping)框架。MyBatis框架的內(nèi)部實際上是封裝了JDBC,所以使用者只需要編寫SQL語句即可,并不需要對加載驅(qū)動、創(chuàng)建連接等過程進行處理;MyBatis框架通過使用xml或者注解的形式,把需要執(zhí)行的statement進行配置,并通過將statement中SQL的動態(tài)參數(shù)與Java對象映射起來,然后生成實際要執(zhí)行的SQL語句,進而MyBatis框架執(zhí)行實際SQL語句,并將最終的結(jié)果映射成Java對象返回。MyBatis框架的SQL語句依賴于數(shù)據(jù)庫,所以導致數(shù)據(jù)庫一致性差,不能隨意更換數(shù)據(jù)庫。[6]2.2MVC模式MVC是一種耦合性低、重用性高、部署快、可維護性高的軟件架構(gòu)模式,它將軟件系統(tǒng)分為Model層、View層和Controller層三部分,其中Model層用于封裝與業(yè)務邏輯相關(guān)的數(shù)據(jù)以及實現(xiàn)功能的具體方法;View層負責數(shù)據(jù)在頁面上的顯示;Controller層起到不同層之間的組織作用,用于程序流程的控制。2.3MySQL數(shù)據(jù)庫顧名思義數(shù)據(jù)庫就是用來存儲數(shù)據(jù)的一個倉庫,其本質(zhì)就相當于一個文件系統(tǒng)。數(shù)據(jù)庫主要分為:關(guān)系型數(shù)據(jù)庫(SQL)和非關(guān)系型數(shù)據(jù)庫(NoSQL),而MySQL數(shù)據(jù)庫則屬于中型的關(guān)系型數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫是通過利用關(guān)系模型將復雜的數(shù)據(jù)轉(zhuǎn)換成了二維表來完成對數(shù)據(jù)的存儲功能;進而解決了關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)管理和持久化存儲問題。[7]SQL語句是針對關(guān)系型數(shù)據(jù)庫的一種標準化特殊的編程語言,用來實現(xiàn)用戶對數(shù)據(jù)庫的查詢和程序數(shù)據(jù)庫設計。SQL語言的主要功能包括以下5個部分:(1)DQL,數(shù)據(jù)查詢語言主要用于查詢和檢索數(shù)據(jù);(2)DML,數(shù)據(jù)操作語言主要用于數(shù)據(jù)的寫操作(增、刪、改);(3)DDL,數(shù)據(jù)定義語言主要用于創(chuàng)建數(shù)據(jù)結(jié)構(gòu);(4)DCL,數(shù)據(jù)控制語言主要用于用戶的權(quán)限管理;(5)TCL,事務處理語言主要用于協(xié)助數(shù)據(jù)操作語言進行事務操作。2.4Web前端開發(fā)技術(shù)HTML被稱為超文本標記語言,是一種用來描述網(wǎng)頁的語言。它其實是一套標記標簽,通過標記和標簽對網(wǎng)頁進行描述;HTML標簽是由一對尖括號(<>)和標簽名組成的,標簽則分為“起始標簽”和“結(jié)束標簽”。CSS(CascadingStyleSheets)層疊樣式表,層疊是指多個樣式可以同時生效在同一個HTML元素上;CSS通過內(nèi)聯(lián)樣式、內(nèi)部樣式和外部樣式三種方式與HTML相結(jié)合,CSS主要通過選擇器找到HTML上的元素,選擇器主要分為基礎選擇器和擴展選擇器,基礎選擇又分為:元素選擇器、類選擇器和id選擇器;CSS通過選擇器篩選具有相似特征的元素。JavaScript是一種弱類型的腳本語言,同時也是一種輕量級的編程語言。它是可以直接插入HTML頁面的編程代碼,插入到HTML頁面之后,可由瀏覽器執(zhí)行,JavaScript可以改變HTML頁面的元素、屬性,也可以更改頁面中所有的CSS樣式,同時也可以在頁面添加各種事件。JQuery是JavaScript一個的庫,它封裝了原生的JavaScript函數(shù)、CSS、DOM和Ajax等功能,它可以達到使用少量代碼完成復雜困難功能的目的;它具有訪問和操作DOM、控制頁面外觀、簡化JS代碼、處理事件更容易、動畫效果使用方便、Ajax技術(shù)更完善、可以自行擴展功能插件等特點,從提高使用效率。[8]2.5Redis緩存數(shù)據(jù)庫Redis又被稱為遠程數(shù)據(jù)服務,是一款用C語言開發(fā)的開源高速緩存數(shù)據(jù)庫。Redis數(shù)據(jù)庫為非關(guān)系型數(shù)據(jù)庫(NoSQL),非關(guān)系型數(shù)據(jù)庫是一種非關(guān)系型的數(shù)據(jù)存儲方式,它主要解決了高并發(fā)和低效率的問題。Redis的主要特點包括以下幾個方面:(1)執(zhí)行速度快,每秒大約可執(zhí)行110000條設置操作或81000條讀取操作;(2)支持多種數(shù)據(jù)類型,如:字符串、哈希、列表、集合和有序集合等五種數(shù)據(jù)類型;(3)原子性操作,為了確保兩個用戶同時訪問Redis服務器時能夠獲得更新后的最新值,所以Redis操作都是原子性的。2.6Ajax異步交互Ajax(AsynchronousJavascriptAndXML),它等于異步的JavaScript和XML,通過使用Ajax技術(shù)可以創(chuàng)建一個快速動態(tài)網(wǎng)頁,Ajax不是新的編程語言,而是根據(jù)現(xiàn)有標準使用的一種新方法,Ajax可以在不重新加載整個頁面的情況下與服務器交換數(shù)據(jù),并修改部分網(wǎng)頁的信息。Ajax的同步與異步:Ajax異步通常是面向字符的數(shù)據(jù)傳輸,它的單位一般是字符,而Ajax同步的傳輸一般是面向比特的傳輸,它的單位一般情況是bit。Ajax的優(yōu)點:(1)可以不重啟服務器或在不刷新的情況下跟服務器進行數(shù)據(jù)的交互;(2)Ajax在使用異步方式的情況下與服務器交互,用戶的操作不會被打斷,并且響應能力更加迅速;(3)Ajax技術(shù)的應用在很大的程度上可以減少服務器上冗余請求的負擔;(4)Ajax是根據(jù)現(xiàn)有標準化新的使用方法,并且被廣泛支持的技術(shù),所以不需要其他插件和程序的支持。[9]2.7章末小結(jié)眾籌平臺系統(tǒng)主要分為兩個模塊:前臺模塊和后臺模塊。本章簡要介紹了設計中所使用的關(guān)鍵技術(shù),包括SSM框架,MVC模式,MySQL數(shù)據(jù)庫,Web前端開發(fā)技術(shù)如HTML、CSS、JavaScript和JQuery,以及Redis鍵值型非關(guān)系型數(shù)據(jù)庫和Ajax。通過對技術(shù)的介紹為系統(tǒng)的實現(xiàn)打下了牢固的理論基礎。
3眾籌平臺的分析與設計3.1系統(tǒng)需求分析該眾籌平臺系統(tǒng)以SSM作為開發(fā)框架,開發(fā)工具使用IntelliJIDEA,網(wǎng)站的數(shù)據(jù)庫采用了關(guān)系數(shù)據(jù)庫MySQL和鍵值型非關(guān)系數(shù)據(jù)Redis。系統(tǒng)基于SSM框架進行開發(fā),利用SSM框架將頁面渲染、邏輯代碼、數(shù)據(jù)操作中繁瑣的過程進行了簡化,提高了開發(fā)效率。[10]該眾籌平臺系統(tǒng)主要分為前臺模塊和后臺模塊,前臺對應平臺普通注冊用戶,后臺模塊對應工作人員或者管理人員,前臺功能模塊主要實現(xiàn)了用戶注冊、登錄、項目發(fā)布、項目展示和項目支持等功能;后臺功能模塊主要實現(xiàn)了工作人員對眾籌平臺系統(tǒng)數(shù)據(jù)的管理,其中包括登錄、信息維護、角色維護、菜單維護和權(quán)限管理等功能。根據(jù)上述功能需求分析可以初步確定系統(tǒng)的UML用例圖如圖3-1所示。圖31系統(tǒng)UML用例圖3.2系統(tǒng)總體設計3.2.1系統(tǒng)功能設計(1)前臺功能模塊前臺功能模塊包五個個功能實現(xiàn):用戶注冊、用戶登錄、項目發(fā)布、項目展示和項目支持。(2)后臺功能模塊后臺功能模塊包含五個功能實現(xiàn):管理員登錄、信息維護、角色維護、菜單維護和權(quán)限控制。該眾籌平臺的系統(tǒng)功能模塊圖如圖3-2所示。圖32系統(tǒng)功能模塊圖3.2.2系統(tǒng)運行流程設計本眾籌平臺系統(tǒng)由項目展示頁做為主頁,打開即可瀏覽感興趣的項目,支持項目時必須登錄個人賬號,登錄時需要判斷是否用戶身份,用戶身份如果為管理員則進入管理員登錄界面,賬號和密碼輸入成功后進入管理員系統(tǒng)主界面,管理員可以進行相應的操作(角色維護、菜單維護、權(quán)限控制),用戶如果沒有賬號可以在登錄界面點擊注冊,在注冊界面進行注冊,已經(jīng)擁有賬號的用戶可以直接進行登錄。在注冊界面中用戶需輸入賬號、密碼、郵箱、手機號和驗證碼,注冊成功,則進入登錄界面。在登錄界面中,輸入賬號和密碼,登錄成功后進入主界面。在主界面中,用戶可以進行相應的項目操作(項目發(fā)布、項目展示、項目支持),使用結(jié)束后退出登錄關(guān)閉系統(tǒng)。該眾籌平臺系統(tǒng)的系統(tǒng)運行流程圖,如圖3-3所示。圖33系統(tǒng)運行流程圖3.3數(shù)據(jù)庫結(jié)構(gòu)設計3.3.1概念結(jié)構(gòu)設計數(shù)據(jù)庫概念結(jié)構(gòu)設計的原理就是將系統(tǒng)需求分析中設計的功能抽象為數(shù)據(jù)結(jié)構(gòu)和具體的實體類,方便更快、更好的完成系統(tǒng)的需求功能。(1)根據(jù)系統(tǒng)分析,初步確定三個實體類和各自的屬性。用戶:{用戶id,登錄賬號,密碼,真實姓名,電子郵箱}項目產(chǎn)品:{項目id,項目名稱,項目描述,籌集金額,籌集時間,發(fā)起時間,支持人數(shù),已籌金額}管理員:{管理員id,賬號,密碼,姓名,郵箱,創(chuàng)建時間}確定實體之間的關(guān)系,系統(tǒng)總E-R圖,如圖3-4所示。圖34系統(tǒng)總E-R圖3.3.2邏輯結(jié)構(gòu)設計針對上文的系統(tǒng)總E-R圖轉(zhuǎn)換為關(guān)系模型:用戶表、產(chǎn)品項目表、管理員表、支持回報表,其表結(jié)構(gòu)如下所示。用戶表結(jié)構(gòu)關(guān)系模型,如表3-1所示。表3-1用戶表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否用戶idloign_acctvarchar(30)否否登錄賬號user_pswdchar(30)否否登錄密碼realnamevarchar(30)否是真實姓名emailvarchar(30)否是電子郵箱產(chǎn)品項目表結(jié)構(gòu)關(guān)系模型,如表3-2所示。表3-2產(chǎn)品項目表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否項目iduser_idvarchar(30)否是項目名稱project_idvarchar(30)否是項目描述moneybigint否是籌集金額dayint否是籌集天數(shù)deploydatevarchar(10)否是發(fā)起時間supportmoneybigint否是已籌金額supporterint否是支持人數(shù)管理員表結(jié)構(gòu)關(guān)系模型,如表3-3所示。表3-3管理員表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否管理員idlogin_acctvarchar(25)否否賬號passwordvarchar(25)否否密碼usernamevarchar(25)否是姓名emailvarchar(25)否是郵箱create_timevarchar(25)否是創(chuàng)建時間支持回報表結(jié)構(gòu)關(guān)系模型,如表3-4所示。表3-4支持回報表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否回報iduser_idint否是用戶idproject_idint否是項目idreturn_typeint否是返回類型supportmoneyint否是支持金額return_contentvarchar(255)否是回報內(nèi)容3.4章末小結(jié)本章對眾籌平臺進行了系統(tǒng)需求分析、系統(tǒng)總體設計和數(shù)據(jù)庫設計,系統(tǒng)需求分析使用系統(tǒng)UML圖初步確定了系統(tǒng)的功能需求,系統(tǒng)總體設計利用系統(tǒng)功能模塊圖和系統(tǒng)流程圖完成了系統(tǒng)的功能和流程設計,數(shù)據(jù)庫的設計采用系統(tǒng)E-R圖和關(guān)系模型表完成數(shù)據(jù)的概念結(jié)構(gòu)和邏輯結(jié)構(gòu)設計。
4眾籌平臺的開發(fā)與實現(xiàn)4.1眾籌平臺開發(fā)環(huán)境后端開發(fā):使用Maven作為構(gòu)建管理和依賴管理工具。使用SpringMVC作為Web層框架,普通請求:返回響應體通常為一個頁面;Ajax請求:返回響應體通常為一個JSON數(shù)據(jù)。使用MyBatis作為持久化層框架,利用MyBatis的PageHelper插件實現(xiàn)數(shù)據(jù)的分頁顯示。使用Spring提供的容器管理項目中的組件。[11]前端開發(fā):CSS和JQuery作為前端樣式框架;借助SpringMVC提供的異常映射機制實現(xiàn)項目中錯誤消息的統(tǒng)一管理,并且基于注解和XML通過對請求消息頭信息的判斷在給出異常處理結(jié)果時實現(xiàn)了普通請求和Ajax請求的兼容。[12]4.2眾籌平臺前臺功能實現(xiàn)本系統(tǒng)前臺功能主要面向普通用戶,為用戶提供友好的界面展示以及簡單易懂的操作流程,前臺功能模塊除了實現(xiàn)基本的用戶注冊和登錄功能之外也實現(xiàn)了用戶在平臺主界面中項目的發(fā)布、查看及支持等功能。4.2.1用戶注冊功能的實現(xiàn)當用戶登錄沒有賬號時進行注冊,注冊頁面主要實現(xiàn)流程和功能如下:(1)按要求輸入界面相應的字段信息。(2)點擊注冊后,會提示用戶注冊成功或失敗。(3)當提示用戶注冊成功后,頁面跳轉(zhuǎn)至登錄界面,與此同時系統(tǒng)會將用戶信息保存后臺數(shù)據(jù)庫中。注冊頁面實現(xiàn)流程,如圖4-1所示。圖41用戶注冊流程圖4.2.2用戶登錄功能的實現(xiàn)用戶系統(tǒng)后可以游客身份進行項目瀏覽,當發(fā)布項目和支持項目時必須進行登錄,登錄界面可以實現(xiàn)如下功能:(1)用戶名和密碼的輸入和校驗。(2)查詢賬號是否存在,不存在則進行錯誤提示并提醒用戶注冊。(3)用戶名、密碼與數(shù)據(jù)庫信息的校驗,不正確則進行錯誤提示,繼續(xù)登錄。(4)當用戶名和密碼都正確時,提示登錄成功,進入個人信息界面。登錄頁面實現(xiàn)流程,如圖4-2所示。圖42用戶登錄流程圖4.2.3發(fā)布項目功能的實現(xiàn)用戶登錄成功后,可以在用戶的個人界面可以點擊“我的眾籌”,然后在我的眾籌界面中點擊“發(fā)起眾籌”,將自己的項目發(fā)布到眾籌平臺上,進行募集資金。實現(xiàn)過程是:利用Ajax請求將前端頁面的數(shù)據(jù)返回給后端進行處理先保存相應的對象中,然后分別存儲進相對應的數(shù)據(jù)庫表中。實現(xiàn)用戶發(fā)布項目功能的流程,如圖4-3所示。圖43用戶項目發(fā)布流程圖實現(xiàn)用戶發(fā)布項目功能的關(guān)鍵代碼如下:@Transactional(readOnly=false,propagation=Propagation.REQUIRES_NEW,rollbackFor=Exception.class)publicvoidsaveProject(ProjectVOprojectVO,IntegermemberId){//1.保存項目對象ProjectPOprojectPO=newProjectPO();BeanUtils.copyProperties(projectVO,projectPO);projectPO.setMemberid(memberId);Stringcreatedate=newSimpleDateFormat("yyyy-MM-dd").format(newDate());projectPO.setCreatedate(createdate);projectPO.setDeploydate(createdate);projectPO.setStatus(0);ProjectPOExampleexample=newProjectPOExample();ProjectPOExample.Criteriacriteria=example.createCriteria();criteria.andProjectNameEqualTo(projectVO.getProjectName());List<ProjectPO>projectPOList=projectPOMapper.selectByExample(example);if(projectPOList==null||projectPOList.size()==0){return;}IntegerprojectId=projectPOList.get(0).getId();//2.保存項目、分類的關(guān)聯(lián)關(guān)系信息List<Integer>typeIdList=projectVO.getTypeIdList();projectPOMapper.insertTypeRelationship(typeIdList,projectId);//3.保存項目、標簽的關(guān)聯(lián)關(guān)系信息List<Integer>tagIdList=projectVO.getTagIdList();projectPOMapper.insertTagRelationship(tagIdList,projectId);//4.保存項目中詳情圖片路徑信息List<String>detailPicturePathList=projectVO.getDetailPicturePathList();projectItemPicPOMapper.insertPathList(projectId,detailPicturePathList);//5.保存項目發(fā)起人信息MemberLaunchInfoVOmemberLaunchInfoVO=projectVO.getMemberLaunchInfoVO();System.out.println(memberLaunchInfoVO);MemberLaunchInfoPOmemberLaunchInfoPO=newMemberLaunchInfoPO();BeanUtils.copyProperties(memberLaunchInfoVO,memberLaunchInfoPO);memberLaunchInfoPO.setMemberid(memberId);memberLaunchInfoPOMapper.insert(memberLaunchInfoPO);//6.保存項目匯報信息List<ReturnVO>returnVOList=projectVO.getReturnVOList();List<ReturnPO>returnPOList=newArrayList<ReturnPO>();for(ReturnVOreturnVO:returnVOList){ReturnPOreturnPO=newReturnPO();BeanUtils.copyProperties(returnVO,returnPO);returnPOList.add(returnPO);}returnPOMapper.insertReturnPOBatch(returnPOList,projectId);//7.保存項目確認信息MemberConfirmInfoVOmemberConfirmInfoVO=projectVO.getMemberConfirmInfoVO();MemberConfirmInfoPOmemberConfirmInfoPO=newMemberConfirmInfoPO();BeanUtils.copyProperties(memberConfirmInfoVO,memberConfirmInfoPO);memberConfirmInfoPO.setMemberid(memberId);memberConfirmInfoPOMapper.insert(memberConfirmInfoPO);}4.2.4展示項目功能的實現(xiàn)用戶登錄成功后,點擊返回主界面,在主界面中選擇相應的項目產(chǎn)品進行查看,顯示項目詳細信息,實現(xiàn)過程是:通過前端頁面返回相應的項目id,再通過產(chǎn)品id進行查找返回項目數(shù)據(jù)。實現(xiàn)用戶展示項目功能的流程,如圖4-4所示。圖44用戶項目展示流程圖實現(xiàn)用戶展示項目功能的關(guān)鍵代碼如下:publicProjectgetProject(IntegerId){//1.查詢得到Project對象Projectproject=projectMapper.selectProject(Id);//2.根據(jù)stat確定StatTextIntegerstatus=project.getStatus();switch(status){case0:project.setStatText("審核中...");break;case1:project.setStatText("眾籌中...");break;case2:project.setStatText("總籌成功...");break;case3:project.setStatText("已結(jié)束...");break;default:break;}catch(ParseExceptione){}returnProject;}4.2.5支持項目功能的實現(xiàn)用戶在主界面,點擊感興趣的項目在項目詳情頁面中點擊“立即支持”并選擇相應的支持金額或直接在下方選擇對應支持金額點擊支持進行支付,在支付前需要填寫個人信息、郵寄地址等回報信息;實現(xiàn)過程是:從session域中讀取之前緩存的ProjectVO對象,判斷ProjectVO是否為null即用戶是否登錄,然后將回報信息處理后存入該用戶的數(shù)據(jù)庫回報表中。實現(xiàn)用戶支持項目功能的關(guān)鍵代碼如下:@RequestMapping("save/order/remote")publicResultEntity<String>saveOrderRemote(@RequestBodyOrderVOorderVO){try{orderService.saveOrder(orderVO);returnResultEntity.successWithoutData();}catch(Exceptione){e.printStackTrace();returnResultEntity.failed(e.getMessage());}}@RequestMapping("save/address/remote")publicResultEntity<String>saveAddressRemote(@RequestBodyAddressVOaddressVO){try{orderService.saveAddress(addressVO);returnResultEntity.successWithoutData();}catch(Exceptione){e.printStackTrace();returnResultEntity.failed(e.getMessage());}}用戶支持項目功能的實現(xiàn)流程,如圖4-5所示。圖45用戶項目支持流程圖4.3眾籌平臺后臺功能實現(xiàn)本系統(tǒng)后臺功能主要面向系統(tǒng)管理員,便于工作人員對平臺數(shù)據(jù)進行修改和維護,后臺功能模塊主要實現(xiàn)了系統(tǒng)管理員登錄、信息維護功能和管理員在平臺主界面中對角色和菜單的維護功能以及權(quán)限控制功能。4.3.1管理員登錄功能的實現(xiàn)管理員為內(nèi)部工作人員,賬號密碼由內(nèi)部相關(guān)人員分配給相應的人賬號,進行登錄進入管理員后臺界面。登錄界面實現(xiàn)了以下幾個工能:(1)用戶名和密碼的輸入和校驗。(2)查詢賬號是否存在,不存在則進行錯誤提示并提醒用戶注冊。(3)用戶名、密碼與數(shù)據(jù)庫信息的校驗,不正確則進行錯誤提示,繼續(xù)登錄。(4)當用戶名和密碼都正確時,提示登錄成功,進入管理界面。管理員登錄界面的實現(xiàn)流程,如圖4-6所示。圖46管理員登錄流程圖4.3.2管理員信息維護功能的實現(xiàn)管理員登錄成功之后,在菜單欄中點擊“權(quán)限管理”,在權(quán)限管理中點擊“用戶維護”,右側(cè)會出現(xiàn)管理員列表,在列表中選擇相應要修改的人員信息點擊數(shù)據(jù)欄后對應的修改圖標跳轉(zhuǎn)至信息修改界面,對管理員的登錄賬號、用戶名稱以及郵箱地址進行修改;實現(xiàn)過程是:由前端返回修改過后的管理員對象,然后利用MyBatis框架修改數(shù)據(jù)庫中保存的數(shù)據(jù)。管理員信息維護功能的實現(xiàn)流程,如圖4-7所示。圖47管理員信息維護流程圖實現(xiàn)管理員信息維護功能的關(guān)鍵代碼如下:@Overridepublicvoidupdate(Adminadmin){try{adminMapper.updateByPrimaryKeySelective(admin);}catch(Exceptione){e.printStackTrace();("異常全類名="+e.getClass().getName());if(einstanceofDuplicateKeyException){thrownewLoginAcctAlreadyInUserException(CrowdConstant.MESSAGE_LOGIN_ACCT_ALREADY_IN_USE);}}}4.3.3角色維護功能的實現(xiàn)管理員登錄成功后,在后臺主界面菜單欄中點擊“權(quán)限管理”,在權(quán)限管理中點擊“角色維護”,右側(cè)會出現(xiàn)角色列表,在列表中可進行角色的增刪改查,選擇相應要修改的角色點擊角色對應的修改圖標跳轉(zhuǎn)至信息修改界面,對角色的權(quán)限進行修改;實現(xiàn)過程是:由前端發(fā)送Ajax請求,根據(jù)發(fā)送的數(shù)據(jù)進行保存為新的角色對象,然后利用MyBatis框架修改數(shù)據(jù)庫中保存的數(shù)據(jù)。角色維護功能的實現(xiàn)流程,如圖4-8所示。圖48管理員角色維護流程圖實現(xiàn)角色維護功能的關(guān)鍵代碼如下:@RequestMapping("/role/update.json")publicResultEntity<String>updateRole(Rolerole){roleService.updateRole(role);returnResultEntity.successWithoutData();}@RequestMapping("/role/save.json")publicResultEntity<String>saveRole(Rolerole){roleService.saveRole(role);returnResultEntity.successWithoutData();}4.3.4菜單維護功能的實現(xiàn)管理員登錄成功后,在后臺主界面菜單欄中點擊“權(quán)限管理”,在權(quán)限管理中點擊“菜單維護”,右側(cè)會出現(xiàn)權(quán)限菜單列表,在列表中可對相應菜單進行修改,選擇相應要修改的菜單名稱點擊菜單后對應的修改圖標跳轉(zhuǎn)至信息修改界面,對菜單的信息進行修改;實現(xiàn)過程是:由前端發(fā)送Ajax請求,根據(jù)發(fā)送的數(shù)據(jù)進行保存為新的菜單對象,然后利用MyBatis框架修改數(shù)據(jù)庫中保存的數(shù)據(jù)。菜單維護功能的實現(xiàn)流程,如圖4-9所示。圖49管理員菜單維護流程圖實現(xiàn)菜單維護功能的關(guān)鍵代碼如下:@RequestMapping("/menu/remove.json")publicResultEntity<String>removeMenu(@RequestParam("id")Integerid){menuService.removeMenu(id);returnResultEntity.successWithoutData();}@RequestMapping("/menu/update.json")publicResultEntity<String>updateMenu(Menumenu){menuService.updateMenu(menu);returnResultEntity.successWithoutData();}@RequestMapping("/menu/save.json")publicResultEntity<String>saveMenu(Menumenu)throwsInterruptedException{menuService.saveMenu(menu);returnResultEntity.successWithoutData();}4.3.5權(quán)限控制功能的實現(xiàn)在用戶維護界面中,右側(cè)為管理員列表,在操作欄中點擊角色維護圖標,進入角色維護界面,可根據(jù)界面中顯示對管理員的角色進行調(diào)整,通過對管理員角色調(diào)整實現(xiàn)權(quán)限的控制;實現(xiàn)過程是:通過對管理員對象的查詢在角色維護界面中顯示已擁有角色和未擁有角色,通過前端的調(diào)整完成后點擊“保存”,將已擁有欄中的角色保存到管理員對象中。權(quán)限控制功能的實現(xiàn)流程,如圖4-10所示。圖410管理員權(quán)限控制流程圖實現(xiàn)權(quán)限控制功能的關(guān)鍵代碼如下:@RequestMapping("/assign/do/role/assign.html")publicStringsaveAdminRoleRelationship(@RequestParam("adminId")IntegeradminId,@RequestParam("pageNum")IntegerpageNum,@RequestParam("keyword")Stringkeyword,//允許用戶在頁面上取消所有分配角色再提交表單,所以可以不提供roleIdList請求參數(shù)//設置required=false表示這個參數(shù)不是必須的@RequestParam(value="roleIdList",required=false)List<Integer>roleIdList){adminService.saveAdminRoleRelationship(adminId,roleIdList);return"redirect:/admin/get/page.html?pageNum="+pageNum+"&keyword="+keyword;}4.4章末小結(jié)根據(jù)系統(tǒng)的設計與分析,將系統(tǒng)分為前臺功能模塊和后臺功能模塊,本章首先簡要介紹了系統(tǒng)的開發(fā)環(huán)境,其次詳細介紹了前臺和后臺各個功能具體的實現(xiàn)流程,并展示了功能實現(xiàn)的關(guān)鍵代碼。5眾籌平臺的運行測試5.1測試環(huán)境搭建測試環(huán)境硬件使用Windows系統(tǒng),PC機內(nèi)存8G及以上,硬盤內(nèi)存50G及以上,軟件環(huán)境使用開發(fā)工具IntelliJIDEA,MySQL5.6.24數(shù)據(jù)庫,Navicat客戶端JDK8開發(fā)工具包,Tomcat8服務器,Chrome瀏覽器。5.2眾籌平臺前臺運行測試5.2.1用戶注冊運行測試表5-1用戶注冊功能測試用例測試用例編號用例描述操作過程預期結(jié)果Register-0正確注冊輸入正確格式且未注冊的賬號信息提示注冊成功,跳轉(zhuǎn)至登錄界面Register-1字段格式錯誤分別輸入錯誤格式的賬號、密碼、郵箱號和手機號點擊注冊分別提示賬號、密碼、郵箱和手機號格式錯誤Register-2字段信息為空將賬號、密碼、郵箱或手機號其中一項置為空,點擊注冊提示賬號、密碼、郵箱或手機號不能為空Register-3驗證碼錯誤輸入錯誤的驗證碼提示驗證輸入錯誤系統(tǒng)前臺用戶注冊功能的測試結(jié)果,如圖5-1所示。圖51用戶注冊5.2.2用戶登錄運行測試表5-2用戶登錄功能測試用例測試用例編號用例描述操作過程預期結(jié)果Login-1登錄成功測試輸入正確的賬號和密碼提示登錄成功,跳轉(zhuǎn)至用戶主界面Login-2賬號輸入錯誤輸入錯誤或未注冊的賬號提示賬號未注冊或賬號輸入錯誤,請重新登錄Login-3密碼輸入錯誤輸入錯誤或格式不正確的密碼提示密碼錯誤系統(tǒng)前臺用戶登錄界面運行測試結(jié)果,如圖5-2所示。圖52用戶登錄界面5.2.3用戶發(fā)布項目運行測試表5-3用戶項目發(fā)布功能測試用例測試用例編號用例描述操作過程預期結(jié)果Publish-0正確發(fā)布輸入正確格式的字段信息,圖片成功上傳提示發(fā)布成功,點擊返回首頁查看Publish-1字段格式錯誤輸入錯誤的字段信息提示相應字段輸入錯誤Publish-2字段信息為空將某一個或多個字段置為空或不填寫提示相應字段不能為空Publish-3圖片上傳錯誤上傳錯誤格式或數(shù)量的圖片提示圖片上傳錯誤錯誤系統(tǒng)前臺用戶發(fā)布項目功能的運行測試結(jié)果,如圖5-3所示。圖53用戶發(fā)布項目5.2.4用戶查看項目運行測試系統(tǒng)前臺用戶查看項目功能的運行測試結(jié)果,如圖5-4所示。圖54系統(tǒng)用戶查看項目5.2.5用戶支持項目運行測試表5-4用戶項目支持功能測試用例測試用例編號用例描述操作過程預期結(jié)果Publish-0正確項目支持輸入設置范圍內(nèi)的回報數(shù)量直接跳轉(zhuǎn)至支付界面Publish-1回報數(shù)量錯誤輸入大于設置的回報數(shù)量提示回報數(shù)量大于商家設置回報數(shù)量系統(tǒng)前臺用戶支持項目功能的運行測試結(jié)果,如圖5-5所示。圖55系統(tǒng)用戶支持項目5.3眾籌平臺后臺運行測試5.3.1管理員登錄運行測試表5-5管理員登錄功能測試用例測試用例編號用例描
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件設計師考試前景預測與試題答案
- 數(shù)字電路與邏輯設計試題及答案
- 設計理念在軟件設計師考試中的試題及答案
- 軟件設計師考試數(shù)據(jù)結(jié)構(gòu)試題及答案
- 把握2025年軟件設計師考試的試題及答案策略
- 深度研究西方政治制度中的利益表達機制試題及答案
- 軟件設計師考試現(xiàn)狀調(diào)查試題及答案
- 公共政策中的競爭與合作關(guān)系試題及答案
- 教育行業(yè)招生市場數(shù)字化營銷策略與招生團隊建設研究報告
- 項目管理工具應用效果試題及答案
- 肺脹中醫(yī)護理查房-課件
- 急診臨床思維-課件
- 立德修身誠信為本
- 小石獅【經(jīng)典繪本】
- 艾里遜8000系列變速箱培訓:《動力傳遞分析》
- 商務英語寫作實踐智慧樹知到答案章節(jié)測試2023年中北大學
- 社會治安動態(tài)視頻監(jiān)控系統(tǒng)工程建設方案
- 脫硫塔玻璃鱗片膠泥襯里施工組織設計
- XB/T 505-2011汽油車排氣凈化催化劑載體
- GB/T 3672.2-2002橡膠制品的公差第2部分:幾何公差
- GB 8076-2008混凝土外加劑
評論
0/150
提交評論