




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄基于SSM的眾籌平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)摘要隨著經(jīng)濟(jì)的不斷發(fā)展,創(chuàng)業(yè)人群也隨之增加,然而由于創(chuàng)業(yè)初期人力、物力和資源等的緊缺,導(dǎo)致許多沒有足夠資金的創(chuàng)業(yè)者最終以失敗告終,為了能夠讓更多的人完成創(chuàng)業(yè)目標(biāo),同時(shí)能夠提供更多就業(yè)機(jī)會(huì)和就業(yè)崗位,因此,本設(shè)計(jì)基于SSM框架開發(fā)了一個(gè)眾籌平臺(tái)系統(tǒng)。本設(shè)計(jì)以SSM框架為軟件開發(fā)框架,選用Java作為開發(fā)語言,軟件開發(fā)工具采用IntelliJIDEA,后臺(tái)數(shù)據(jù)存儲(chǔ)分別使用關(guān)系型數(shù)據(jù)庫(kù)MySQL和鍵值型非關(guān)系型數(shù)據(jù)庫(kù)Redis,前端頁(yè)面的數(shù)據(jù)和樣式展示運(yùn)用HTML、CSS、JavaScript、JQuery等技術(shù)完成。本眾籌平臺(tái)系統(tǒng)功能完善,主要分為前臺(tái)和后臺(tái)兩個(gè)部分,由用戶注冊(cè)、用戶登錄、項(xiàng)目發(fā)布、項(xiàng)目展示和項(xiàng)目支持等功能構(gòu)成前臺(tái)模塊,而后臺(tái)模塊主要由管理員登錄、信息維護(hù)、角色維護(hù)、菜單維護(hù)和權(quán)限控制等功能構(gòu)成。關(guān)鍵詞:眾籌平臺(tái);SSM;Java;MySQL;Redis;JavaScript目錄26601緒論 1116331.1選題背景 12891.2國(guó)內(nèi)外研究現(xiàn)狀及應(yīng)用前景 1309031.3論文研究?jī)?nèi)容及結(jié)構(gòu)安排 2323721.3.1論文研究?jī)?nèi)容 267741.3.2論文結(jié)構(gòu)安排 299082技術(shù)簡(jiǎn)介 4269712.1SSM框架 447822.2MVC模式 432162.3MySQL數(shù)據(jù)庫(kù) 582632.4Web前端開發(fā)技術(shù) 5307822.5Redis緩存數(shù)據(jù)庫(kù) 6126622.6Ajax異步交互 649052.7章末小結(jié) 651023眾籌平臺(tái)的分析與設(shè)計(jì) 7302553.1系統(tǒng)需求分析 7243633.2系統(tǒng)總體設(shè)計(jì) 7319163.2.1系統(tǒng)功能設(shè)計(jì) 7173383.2.2系統(tǒng)運(yùn)行流程設(shè)計(jì) 8217783.3數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì) 9240523.3.1概念結(jié)構(gòu)設(shè)計(jì) 9315463.3.2邏輯結(jié)構(gòu)設(shè)計(jì) 10285643.4章末小結(jié) 1246594眾籌平臺(tái)的開發(fā)與實(shí)現(xiàn) 13160614.1眾籌平臺(tái)開發(fā)環(huán)境 134154.2眾籌平臺(tái)前臺(tái)功能實(shí)現(xiàn) 1336924.2.1用戶注冊(cè)功能的實(shí)現(xiàn) 1368744.2.2用戶登錄功能的實(shí)現(xiàn) 148924.2.3發(fā)布項(xiàng)目功能的實(shí)現(xiàn) 14277804.2.4展示項(xiàng)目功能的實(shí)現(xiàn) 1788524.2.5支持項(xiàng)目功能的實(shí)現(xiàn) 19243524.3眾籌平臺(tái)后臺(tái)功能實(shí)現(xiàn) 20140094.3.1管理員登錄功能的實(shí)現(xiàn) 21194294.3.2管理員信息維護(hù)功能的實(shí)現(xiàn) 21116224.3.3角色維護(hù)功能的實(shí)現(xiàn) 2317924.3.4菜單維護(hù)功能的實(shí)現(xiàn) 2472454.3.5權(quán)限控制功能的實(shí)現(xiàn) 25247744.4章末小結(jié) 2615815眾籌平臺(tái)的運(yùn)行測(cè)試 27321775.1測(cè)試環(huán)境搭建 27244265.2眾籌平臺(tái)前臺(tái)運(yùn)行測(cè)試 2789945.2.1用戶注冊(cè)運(yùn)行測(cè)試 2762115.2.2用戶登錄運(yùn)行測(cè)試 28182275.2.3用戶發(fā)布項(xiàng)目運(yùn)行測(cè)試 28250515.2.4用戶查看項(xiàng)目運(yùn)行測(cè)試 29256375.2.5用戶支持項(xiàng)目運(yùn)行測(cè)試 30195745.3眾籌平臺(tái)后臺(tái)運(yùn)行測(cè)試 30215455.3.1管理員登錄運(yùn)行測(cè)試 3042375.3.2管理員信息維護(hù)運(yùn)行測(cè)試 31247315.3.3角色維護(hù)運(yùn)行測(cè)試 3186245.3.4菜單維護(hù)運(yùn)行測(cè)試 32184065.3.5權(quán)限控制運(yùn)行測(cè)試 32249115.3章末小結(jié) 32224396總結(jié)與展望 33145526.1總結(jié) 33258026.2展望 3331160參考文獻(xiàn) 351緒論1.1選題背景隨著社會(huì)經(jīng)濟(jì)的不斷發(fā)展和創(chuàng)新、創(chuàng)業(yè)的提倡,創(chuàng)業(yè)人群不斷的增多,但廣大的創(chuàng)業(yè)人群多為大學(xué)畢業(yè)生,雖有新穎的想法和創(chuàng)新項(xiàng)目,但創(chuàng)業(yè)需要大量的啟動(dòng)資金以及人力資源,這些原因使得許多創(chuàng)業(yè)者的創(chuàng)意和項(xiàng)目落空不得實(shí)現(xiàn)。同樣社會(huì)和經(jīng)濟(jì)不斷發(fā)展,一部分人已積累了較多財(cái)富,但已沒有勞動(dòng)能力和新穎的創(chuàng)意,主要以投資他人項(xiàng)目為主獲取更長(zhǎng)期的回報(bào),但消息閉塞、調(diào)研情況與實(shí)際情況不符等,導(dǎo)致投資者虧損嚴(yán)重或找不到心怡的項(xiàng)目及合作伙伴。眾籌平臺(tái)的運(yùn)營(yíng)和開發(fā)主要目的就是為了幫助籌資者和融資人搭建“方便,及時(shí),快捷”的共享平臺(tái)。對(duì)于創(chuàng)業(yè)者來說,除了自己籌集的資金以外,也更加期待自己可以通過相對(duì)公開的眾籌服務(wù)平臺(tái)進(jìn)行籌人、募智,同時(shí)還希望自己有機(jī)會(huì)能夠從中汲取到與其他創(chuàng)業(yè)者一起交流成功失敗經(jīng)驗(yàn)、與投資方進(jìn)行有效地溝通提出項(xiàng)目整改的方案和建議等。做好了融資方與發(fā)起方“籌錢”溝通的的渠道和平臺(tái),對(duì)于項(xiàng)目的進(jìn)行查核與辨別,既是對(duì)項(xiàng)目的挑選,同時(shí),也給創(chuàng)業(yè)者指出了前行的方向;對(duì)于創(chuàng)業(yè)者來說,“籌錢”是一方面,“募智”也是相當(dāng)重要的。選擇眾籌集資和投資者挑選項(xiàng)目的過程中,拋開經(jīng)濟(jì)因素以外,在眾籌平臺(tái)上的各類優(yōu)質(zhì)資源,如網(wǎng)絡(luò)媒體宣傳、經(jīng)銷商的供貨、銷售資源、各家投資機(jī)構(gòu)的加盟等等,都是是否選擇眾籌平臺(tái)的重要的決定因素。[1]隨著網(wǎng)絡(luò)時(shí)代的迅速發(fā)展,軟件開發(fā)相應(yīng)的技術(shù)也不斷的進(jìn)步,SSM框架被認(rèn)為是當(dāng)前國(guó)際市場(chǎng)上應(yīng)用范圍比較廣泛,且最為主流的軟件系統(tǒng)輕量級(jí)開源框架,主要應(yīng)用于各類大型企業(yè)級(jí)軟件系統(tǒng)開發(fā)的設(shè)計(jì)和構(gòu)建,SSM框架由Spring、SpringMVC和MyBatis框架整合而成,整個(gè)系統(tǒng)被劃分為四層,分別是:表現(xiàn)層、controller層、service層和dao層。SSM框架在配置方面越來越輕量級(jí),同時(shí)也將注解功能在開發(fā)中發(fā)揮到了極致,并且更加靈活的實(shí)現(xiàn)了ORM,同時(shí)操作簡(jiǎn)單也便于SQL優(yōu)化。應(yīng)用眾籌的模式,對(duì)即將發(fā)布的商品或技術(shù)首先進(jìn)行推廣宣傳,獲得未來客戶的支持。通過這種方式降低企業(yè)的風(fēng)險(xiǎn),推動(dòng)創(chuàng)業(yè)型和技術(shù)型公司的穩(wěn)步發(fā)展,為籌資者和投資者相互了解及支持提供幫助,本課題針對(duì)創(chuàng)業(yè)中籌資人和投資人各自需求問題,設(shè)計(jì)并實(shí)現(xiàn)了基于SSM的眾籌平臺(tái)系統(tǒng)。1.2國(guó)內(nèi)外研究現(xiàn)狀及應(yīng)用前景美國(guó)的眾籌項(xiàng)目kickstarter正是由一個(gè)網(wǎng)絡(luò)眾籌項(xiàng)目發(fā)展而來,它通過自己搭建的網(wǎng)絡(luò)眾籌服務(wù)平臺(tái)來直接面向普通大眾進(jìn)行集資,讓所有能力強(qiáng)、思維活躍的年輕人,可以直接通過這種眾籌方式從普通人那里獲得自己所需要的資源和人力,為他們每一個(gè)項(xiàng)目的順利實(shí)現(xiàn)和任務(wù)完成提供了條件。在國(guó)內(nèi),類似于國(guó)外這一類的產(chǎn)品也很少見,例如:追夢(mèng)網(wǎng)、眾籌網(wǎng)、點(diǎn)名時(shí)間等等。眾籌的模式大致分為以下四類:股權(quán)、債權(quán)、回報(bào)和捐贈(zèng)[2]。但由于國(guó)內(nèi)外的經(jīng)濟(jì)模式有很大的差異,所以國(guó)內(nèi)的創(chuàng)意眾籌網(wǎng)站仍然存在一些問題:網(wǎng)絡(luò)平臺(tái)成規(guī)模的少,平臺(tái)上常駐用戶少、資金短缺、實(shí)際發(fā)布創(chuàng)新項(xiàng)目少。反而,股權(quán)模式的眾籌在中國(guó)很受追捧。我國(guó)自引進(jìn)眾籌模式以來,通過不斷地發(fā)展成長(zhǎng),與我國(guó)的實(shí)際經(jīng)濟(jì)法律相結(jié)合,不同的領(lǐng)域中得到了運(yùn)用。許多企業(yè)也開始借助不同的眾籌模式來進(jìn)行融資,但線上眾籌多以捐贈(zèng)模式為主,軟件的功能主要是項(xiàng)目發(fā)布,用戶支付等功能,其余多種眾籌模式都為線下集資,線上眾籌模式較為單一,不能滿足集資者的多種需求,且網(wǎng)絡(luò)眾籌安全性較低,人們認(rèn)可度不高。眾籌強(qiáng)大的市場(chǎng)前景使其擁有良好的未來,且刺激金融發(fā)展,引導(dǎo)民間經(jīng)濟(jì)走向正規(guī)化,同時(shí)還創(chuàng)造了許多就業(yè)崗位,促進(jìn)技術(shù)革新。眾籌在國(guó)內(nèi)已然初具規(guī)模,但還是存在一定的風(fēng)險(xiǎn)和缺點(diǎn),作為網(wǎng)絡(luò)經(jīng)濟(jì)的發(fā)展的手段,在未來的發(fā)展中其一定會(huì)不斷地完善,形成獨(dú)特的中國(guó)眾籌模式,促進(jìn)中國(guó)經(jīng)濟(jì)的快速穩(wěn)定增長(zhǎng)。1.3論文研究?jī)?nèi)容及結(jié)構(gòu)安排1.3.1論文研究?jī)?nèi)容本文從現(xiàn)如今大多數(shù)創(chuàng)業(yè)者起步時(shí)面臨的困境出發(fā),詳細(xì)闡述了一個(gè)基于SSM框架開發(fā)的眾籌平臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)全過程,平臺(tái)相關(guān)數(shù)據(jù)的存儲(chǔ)使用MySQL數(shù)據(jù)庫(kù)和Redis數(shù)據(jù)庫(kù)。眾籌平臺(tái)的開發(fā)主要基于SSM、MySQL、Redis、HTML、Ajax等技術(shù)實(shí)現(xiàn)了用戶的注冊(cè)、登錄和項(xiàng)目的發(fā)布、展示支持功能以及管理員的登錄、信息維護(hù)、角色維護(hù)、菜單維護(hù)和權(quán)限控制功能。1.3.2論文結(jié)構(gòu)安排本文擬使用SSM框架設(shè)計(jì)并完成一個(gè)網(wǎng)絡(luò)眾籌平臺(tái),通過對(duì)類似系統(tǒng)的對(duì)比分析,得出本文的設(shè)計(jì)需求,將論文的結(jié)構(gòu)做如下安排:第一部分,緒論,簡(jiǎn)要介紹本文的選題背景和國(guó)內(nèi)外現(xiàn)狀研究以及應(yīng)用前景,詳細(xì)了解國(guó)內(nèi)外現(xiàn)有的眾籌產(chǎn)品,分析其缺點(diǎn)和優(yōu)勢(shì)得出本文研究的主要內(nèi)容和論文結(jié)構(gòu)的基本安排。第二部分,技術(shù)簡(jiǎn)介,是眾籌平臺(tái)系統(tǒng)使用技術(shù)的理論支持,分別介紹了SSM框架、MVC模式、MySQL數(shù)據(jù)庫(kù)、Web前端開發(fā)技術(shù)、Redis數(shù)據(jù)庫(kù)、Ajax等主要技術(shù)。第三部分,眾籌平臺(tái)的分析與設(shè)計(jì),對(duì)眾籌平臺(tái)系統(tǒng)進(jìn)行了應(yīng)用需求分析和系統(tǒng)總體設(shè)計(jì),得出系統(tǒng)的具體功能模塊和運(yùn)行流程,然后通過將系統(tǒng)E-R圖轉(zhuǎn)換為關(guān)系型表結(jié)構(gòu),完成對(duì)系統(tǒng)數(shù)據(jù)庫(kù)的具體設(shè)計(jì)。第四部分,眾籌平臺(tái)的開發(fā)與其功能實(shí)現(xiàn),通過從功能實(shí)現(xiàn)流程、使用技術(shù)和關(guān)鍵代碼三個(gè)方面介紹了眾籌平臺(tái)開發(fā)和功能實(shí)現(xiàn)的詳細(xì)過程。第五部分,眾籌系統(tǒng)的運(yùn)行效果,眾籌系統(tǒng)各項(xiàng)功能的實(shí)現(xiàn),通過具體的測(cè)試檢驗(yàn)其功能的完善程度,并對(duì)各個(gè)功能運(yùn)行效果進(jìn)行展示。第六部分,總結(jié)與展望,總結(jié)和分析論文中存在的問題和不足,對(duì)未來的改進(jìn)提出意見和建議。
2技術(shù)簡(jiǎn)介2.1SSM框架SSM框架,是Spring+SpringMVC+MyBatis框架整合的簡(jiǎn)稱,是標(biāo)準(zhǔn)的MVC模式。在SSM框架中,Spring通過IOC容器的裝載bean機(jī)制實(shí)現(xiàn)業(yè)務(wù)對(duì)象的管理,使用AOP來管理事務(wù);SpringMVC通過DispatcherServlet接收客戶端請(qǐng)求并根據(jù)注解或配置文件信息找到相應(yīng)的Controller,然后通過調(diào)用業(yè)務(wù)邏輯返回到視圖界面,從而完成對(duì)客戶端的請(qǐng)求處理和視圖的管理;MyBatis實(shí)際是通過對(duì)JDBC進(jìn)行封裝,從而保護(hù)了JDBCAPI訪問底層的細(xì)節(jié),進(jìn)而完成了數(shù)據(jù)庫(kù)的持久化操作。[3]Spring是一個(gè)應(yīng)用于Java企業(yè)級(jí)應(yīng)用開發(fā)的開源框架,它主要是用來簡(jiǎn)化應(yīng)用的開發(fā),IOC(控制反轉(zhuǎn))和AOP(面向切面編程)是Spring主要的核心;Spring中的IOC容器可以很好的幫助我們管理對(duì)象與對(duì)象之間的依賴關(guān)系,這樣就使得對(duì)象與對(duì)象之間的耦合度降低,方便代碼的維護(hù);Spring中的IOC容器還負(fù)責(zé)生成和管理AOP代理,同時(shí)IOC也負(fù)責(zé)管理AOP的依賴關(guān)系,使用AOP可以管理事務(wù)、日志和權(quán)限等。[4]SpringMVC是Spring框架中的的一個(gè)模塊,屬于Spring家族的一份子,并且它還是是一個(gè)基于MVC模式的輕量級(jí)Web框架;SpringMVC負(fù)責(zé)請(qǐng)求和視圖的管理,它通過前端控制器接收客戶端請(qǐng)求從而響應(yīng)結(jié)果,而且還大幅度的減少了其他組件之間的耦合性,從而實(shí)現(xiàn)了對(duì)請(qǐng)求的管理;通過視圖解析器對(duì)視圖進(jìn)行解析,再進(jìn)一步對(duì)邏輯圖名進(jìn)行解析得到真正的視圖返回給客戶端,進(jìn)而實(shí)現(xiàn)視圖管理。[5]MyBatis框架也被成為ORM(Object/RelationalMapping)框架。MyBatis框架的內(nèi)部實(shí)際上是封裝了JDBC,所以使用者只需要編寫SQL語句即可,并不需要對(duì)加載驅(qū)動(dòng)、創(chuàng)建連接等過程進(jìn)行處理;MyBatis框架通過使用xml或者注解的形式,把需要執(zhí)行的statement進(jìn)行配置,并通過將statement中SQL的動(dòng)態(tài)參數(shù)與Java對(duì)象映射起來,然后生成實(shí)際要執(zhí)行的SQL語句,進(jìn)而MyBatis框架執(zhí)行實(shí)際SQL語句,并將最終的結(jié)果映射成Java對(duì)象返回。MyBatis框架的SQL語句依賴于數(shù)據(jù)庫(kù),所以導(dǎo)致數(shù)據(jù)庫(kù)一致性差,不能隨意更換數(shù)據(jù)庫(kù)。[6]2.2MVC模式MVC是一種耦合性低、重用性高、部署快、可維護(hù)性高的軟件架構(gòu)模式,它將軟件系統(tǒng)分為Model層、View層和Controller層三部分,其中Model層用于封裝與業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及實(shí)現(xiàn)功能的具體方法;View層負(fù)責(zé)數(shù)據(jù)在頁(yè)面上的顯示;Controller層起到不同層之間的組織作用,用于程序流程的控制。2.3MySQL數(shù)據(jù)庫(kù)顧名思義數(shù)據(jù)庫(kù)就是用來存儲(chǔ)數(shù)據(jù)的一個(gè)倉(cāng)庫(kù),其本質(zhì)就相當(dāng)于一個(gè)文件系統(tǒng)。數(shù)據(jù)庫(kù)主要分為:關(guān)系型數(shù)據(jù)庫(kù)(SQL)和非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL),而MySQL數(shù)據(jù)庫(kù)則屬于中型的關(guān)系型數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)是通過利用關(guān)系模型將復(fù)雜的數(shù)據(jù)轉(zhuǎn)換成了二維表來完成對(duì)數(shù)據(jù)的存儲(chǔ)功能;進(jìn)而解決了關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)管理和持久化存儲(chǔ)問題。[7]SQL語句是針對(duì)關(guān)系型數(shù)據(jù)庫(kù)的一種標(biāo)準(zhǔn)化特殊的編程語言,用來實(shí)現(xiàn)用戶對(duì)數(shù)據(jù)庫(kù)的查詢和程序數(shù)據(jù)庫(kù)設(shè)計(jì)。SQL語言的主要功能包括以下5個(gè)部分:(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,事務(wù)處理語言主要用于協(xié)助數(shù)據(jù)操作語言進(jìn)行事務(wù)操作。2.4Web前端開發(fā)技術(shù)HTML被稱為超文本標(biāo)記語言,是一種用來描述網(wǎng)頁(yè)的語言。它其實(shí)是一套標(biāo)記標(biāo)簽,通過標(biāo)記和標(biāo)簽對(duì)網(wǎng)頁(yè)進(jìn)行描述;HTML標(biāo)簽是由一對(duì)尖括號(hào)(<>)和標(biāo)簽名組成的,標(biāo)簽則分為“起始標(biāo)簽”和“結(jié)束標(biāo)簽”。CSS(CascadingStyleSheets)層疊樣式表,層疊是指多個(gè)樣式可以同時(shí)生效在同一個(gè)HTML元素上;CSS通過內(nèi)聯(lián)樣式、內(nèi)部樣式和外部樣式三種方式與HTML相結(jié)合,CSS主要通過選擇器找到HTML上的元素,選擇器主要分為基礎(chǔ)選擇器和擴(kuò)展選擇器,基礎(chǔ)選擇又分為:元素選擇器、類選擇器和id選擇器;CSS通過選擇器篩選具有相似特征的元素。JavaScript是一種弱類型的腳本語言,同時(shí)也是一種輕量級(jí)的編程語言。它是可以直接插入HTML頁(yè)面的編程代碼,插入到HTML頁(yè)面之后,可由瀏覽器執(zhí)行,JavaScript可以改變HTML頁(yè)面的元素、屬性,也可以更改頁(yè)面中所有的CSS樣式,同時(shí)也可以在頁(yè)面添加各種事件。JQuery是JavaScript一個(gè)的庫(kù),它封裝了原生的JavaScript函數(shù)、CSS、DOM和Ajax等功能,它可以達(dá)到使用少量代碼完成復(fù)雜困難功能的目的;它具有訪問和操作DOM、控制頁(yè)面外觀、簡(jiǎn)化JS代碼、處理事件更容易、動(dòng)畫效果使用方便、Ajax技術(shù)更完善、可以自行擴(kuò)展功能插件等特點(diǎn),從提高使用效率。[8]2.5Redis緩存數(shù)據(jù)庫(kù)Redis又被稱為遠(yuǎn)程數(shù)據(jù)服務(wù),是一款用C語言開發(fā)的開源高速緩存數(shù)據(jù)庫(kù)。Redis數(shù)據(jù)庫(kù)為非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL),非關(guān)系型數(shù)據(jù)庫(kù)是一種非關(guān)系型的數(shù)據(jù)存儲(chǔ)方式,它主要解決了高并發(fā)和低效率的問題。Redis的主要特點(diǎn)包括以下幾個(gè)方面:(1)執(zhí)行速度快,每秒大約可執(zhí)行110000條設(shè)置操作或81000條讀取操作;(2)支持多種數(shù)據(jù)類型,如:字符串、哈希、列表、集合和有序集合等五種數(shù)據(jù)類型;(3)原子性操作,為了確保兩個(gè)用戶同時(shí)訪問Redis服務(wù)器時(shí)能夠獲得更新后的最新值,所以Redis操作都是原子性的。2.6Ajax異步交互Ajax(AsynchronousJavascriptAndXML),它等于異步的JavaScript和XML,通過使用Ajax技術(shù)可以創(chuàng)建一個(gè)快速動(dòng)態(tài)網(wǎng)頁(yè),Ajax不是新的編程語言,而是根據(jù)現(xiàn)有標(biāo)準(zhǔn)使用的一種新方法,Ajax可以在不重新加載整個(gè)頁(yè)面的情況下與服務(wù)器交換數(shù)據(jù),并修改部分網(wǎng)頁(yè)的信息。Ajax的同步與異步:Ajax異步通常是面向字符的數(shù)據(jù)傳輸,它的單位一般是字符,而Ajax同步的傳輸一般是面向比特的傳輸,它的單位一般情況是bit。Ajax的優(yōu)點(diǎn):(1)可以不重啟服務(wù)器或在不刷新的情況下跟服務(wù)器進(jìn)行數(shù)據(jù)的交互;(2)Ajax在使用異步方式的情況下與服務(wù)器交互,用戶的操作不會(huì)被打斷,并且響應(yīng)能力更加迅速;(3)Ajax技術(shù)的應(yīng)用在很大的程度上可以減少服務(wù)器上冗余請(qǐng)求的負(fù)擔(dān);(4)Ajax是根據(jù)現(xiàn)有標(biāo)準(zhǔn)化新的使用方法,并且被廣泛支持的技術(shù),所以不需要其他插件和程序的支持。[9]2.7章末小結(jié)眾籌平臺(tái)系統(tǒng)主要分為兩個(gè)模塊:前臺(tái)模塊和后臺(tái)模塊。本章簡(jiǎn)要介紹了設(shè)計(jì)中所使用的關(guān)鍵技術(shù),包括SSM框架,MVC模式,MySQL數(shù)據(jù)庫(kù),Web前端開發(fā)技術(shù)如HTML、CSS、JavaScript和JQuery,以及Redis鍵值型非關(guān)系型數(shù)據(jù)庫(kù)和Ajax。通過對(duì)技術(shù)的介紹為系統(tǒng)的實(shí)現(xiàn)打下了牢固的理論基礎(chǔ)。
3眾籌平臺(tái)的分析與設(shè)計(jì)3.1系統(tǒng)需求分析該眾籌平臺(tái)系統(tǒng)以SSM作為開發(fā)框架,開發(fā)工具使用IntelliJIDEA,網(wǎng)站的數(shù)據(jù)庫(kù)采用了關(guān)系數(shù)據(jù)庫(kù)MySQL和鍵值型非關(guān)系數(shù)據(jù)Redis。系統(tǒng)基于SSM框架進(jìn)行開發(fā),利用SSM框架將頁(yè)面渲染、邏輯代碼、數(shù)據(jù)操作中繁瑣的過程進(jìn)行了簡(jiǎn)化,提高了開發(fā)效率。[10]該眾籌平臺(tái)系統(tǒng)主要分為前臺(tái)模塊和后臺(tái)模塊,前臺(tái)對(duì)應(yīng)平臺(tái)普通注冊(cè)用戶,后臺(tái)模塊對(duì)應(yīng)工作人員或者管理人員,前臺(tái)功能模塊主要實(shí)現(xiàn)了用戶注冊(cè)、登錄、項(xiàng)目發(fā)布、項(xiàng)目展示和項(xiàng)目支持等功能;后臺(tái)功能模塊主要實(shí)現(xiàn)了工作人員對(duì)眾籌平臺(tái)系統(tǒng)數(shù)據(jù)的管理,其中包括登錄、信息維護(hù)、角色維護(hù)、菜單維護(hù)和權(quán)限管理等功能。根據(jù)上述功能需求分析可以初步確定系統(tǒng)的UML用例圖如圖3-1所示。圖31系統(tǒng)UML用例圖3.2系統(tǒng)總體設(shè)計(jì)3.2.1系統(tǒng)功能設(shè)計(jì)(1)前臺(tái)功能模塊前臺(tái)功能模塊包五個(gè)個(gè)功能實(shí)現(xiàn):用戶注冊(cè)、用戶登錄、項(xiàng)目發(fā)布、項(xiàng)目展示和項(xiàng)目支持。(2)后臺(tái)功能模塊后臺(tái)功能模塊包含五個(gè)功能實(shí)現(xiàn):管理員登錄、信息維護(hù)、角色維護(hù)、菜單維護(hù)和權(quán)限控制。該眾籌平臺(tái)的系統(tǒng)功能模塊圖如圖3-2所示。圖32系統(tǒng)功能模塊圖3.2.2系統(tǒng)運(yùn)行流程設(shè)計(jì)本眾籌平臺(tái)系統(tǒng)由項(xiàng)目展示頁(yè)做為主頁(yè),打開即可瀏覽感興趣的項(xiàng)目,支持項(xiàng)目時(shí)必須登錄個(gè)人賬號(hào),登錄時(shí)需要判斷是否用戶身份,用戶身份如果為管理員則進(jìn)入管理員登錄界面,賬號(hào)和密碼輸入成功后進(jìn)入管理員系統(tǒng)主界面,管理員可以進(jìn)行相應(yīng)的操作(角色維護(hù)、菜單維護(hù)、權(quán)限控制),用戶如果沒有賬號(hào)可以在登錄界面點(diǎn)擊注冊(cè),在注冊(cè)界面進(jìn)行注冊(cè),已經(jīng)擁有賬號(hào)的用戶可以直接進(jìn)行登錄。在注冊(cè)界面中用戶需輸入賬號(hào)、密碼、郵箱、手機(jī)號(hào)和驗(yàn)證碼,注冊(cè)成功,則進(jìn)入登錄界面。在登錄界面中,輸入賬號(hào)和密碼,登錄成功后進(jìn)入主界面。在主界面中,用戶可以進(jìn)行相應(yīng)的項(xiàng)目操作(項(xiàng)目發(fā)布、項(xiàng)目展示、項(xiàng)目支持),使用結(jié)束后退出登錄關(guān)閉系統(tǒng)。該眾籌平臺(tái)系統(tǒng)的系統(tǒng)運(yùn)行流程圖,如圖3-3所示。圖33系統(tǒng)運(yùn)行流程圖3.3數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)3.3.1概念結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)的原理就是將系統(tǒng)需求分析中設(shè)計(jì)的功能抽象為數(shù)據(jù)結(jié)構(gòu)和具體的實(shí)體類,方便更快、更好的完成系統(tǒng)的需求功能。(1)根據(jù)系統(tǒng)分析,初步確定三個(gè)實(shí)體類和各自的屬性。用戶:{用戶id,登錄賬號(hào),密碼,真實(shí)姓名,電子郵箱}項(xiàng)目產(chǎn)品:{項(xiàng)目id,項(xiàng)目名稱,項(xiàng)目描述,籌集金額,籌集時(shí)間,發(fā)起時(shí)間,支持人數(shù),已籌金額}管理員:{管理員id,賬號(hào),密碼,姓名,郵箱,創(chuàng)建時(shí)間}確定實(shí)體之間的關(guān)系,系統(tǒng)總E-R圖,如圖3-4所示。圖34系統(tǒng)總E-R圖3.3.2邏輯結(jié)構(gòu)設(shè)計(jì)針對(duì)上文的系統(tǒng)總E-R圖轉(zhuǎn)換為關(guān)系模型:用戶表、產(chǎn)品項(xiàng)目表、管理員表、支持回報(bào)表,其表結(jié)構(gòu)如下所示。用戶表結(jié)構(gòu)關(guān)系模型,如表3-1所示。表3-1用戶表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否用戶idloign_acctvarchar(30)否否登錄賬號(hào)user_pswdchar(30)否否登錄密碼realnamevarchar(30)否是真實(shí)姓名emailvarchar(30)否是電子郵箱產(chǎn)品項(xiàng)目表結(jié)構(gòu)關(guān)系模型,如表3-2所示。表3-2產(chǎn)品項(xiàng)目表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否項(xiàng)目iduser_idvarchar(30)否是項(xiàng)目名稱project_idvarchar(30)否是項(xiàng)目描述moneybigint否是籌集金額dayint否是籌集天數(shù)deploydatevarchar(10)否是發(fā)起時(shí)間supportmoneybigint否是已籌金額supporterint否是支持人數(shù)管理員表結(jié)構(gòu)關(guān)系模型,如表3-3所示。表3-3管理員表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否管理員idlogin_acctvarchar(25)否否賬號(hào)passwordvarchar(25)否否密碼usernamevarchar(25)否是姓名emailvarchar(25)否是郵箱create_timevarchar(25)否是創(chuàng)建時(shí)間支持回報(bào)表結(jié)構(gòu)關(guān)系模型,如表3-4所示。表3-4支持回報(bào)表字段數(shù)據(jù)類型主鍵是否為空注釋idint是否回報(bào)iduser_idint否是用戶idproject_idint否是項(xiàng)目idreturn_typeint否是返回類型supportmoneyint否是支持金額return_contentvarchar(255)否是回報(bào)內(nèi)容3.4章末小結(jié)本章對(duì)眾籌平臺(tái)進(jìn)行了系統(tǒng)需求分析、系統(tǒng)總體設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì),系統(tǒng)需求分析使用系統(tǒng)UML圖初步確定了系統(tǒng)的功能需求,系統(tǒng)總體設(shè)計(jì)利用系統(tǒng)功能模塊圖和系統(tǒng)流程圖完成了系統(tǒng)的功能和流程設(shè)計(jì),數(shù)據(jù)庫(kù)的設(shè)計(jì)采用系統(tǒng)E-R圖和關(guān)系模型表完成數(shù)據(jù)的概念結(jié)構(gòu)和邏輯結(jié)構(gòu)設(shè)計(jì)。
4眾籌平臺(tái)的開發(fā)與實(shí)現(xiàn)4.1眾籌平臺(tái)開發(fā)環(huán)境后端開發(fā):使用Maven作為構(gòu)建管理和依賴管理工具。使用SpringMVC作為Web層框架,普通請(qǐng)求:返回響應(yīng)體通常為一個(gè)頁(yè)面;Ajax請(qǐng)求:返回響應(yīng)體通常為一個(gè)JSON數(shù)據(jù)。使用MyBatis作為持久化層框架,利用MyBatis的PageHelper插件實(shí)現(xiàn)數(shù)據(jù)的分頁(yè)顯示。使用Spring提供的容器管理項(xiàng)目中的組件。[11]前端開發(fā):CSS和JQuery作為前端樣式框架;借助SpringMVC提供的異常映射機(jī)制實(shí)現(xiàn)項(xiàng)目中錯(cuò)誤消息的統(tǒng)一管理,并且基于注解和XML通過對(duì)請(qǐng)求消息頭信息的判斷在給出異常處理結(jié)果時(shí)實(shí)現(xiàn)了普通請(qǐng)求和Ajax請(qǐng)求的兼容。[12]4.2眾籌平臺(tái)前臺(tái)功能實(shí)現(xiàn)本系統(tǒng)前臺(tái)功能主要面向普通用戶,為用戶提供友好的界面展示以及簡(jiǎn)單易懂的操作流程,前臺(tái)功能模塊除了實(shí)現(xiàn)基本的用戶注冊(cè)和登錄功能之外也實(shí)現(xiàn)了用戶在平臺(tái)主界面中項(xiàng)目的發(fā)布、查看及支持等功能。4.2.1用戶注冊(cè)功能的實(shí)現(xiàn)當(dāng)用戶登錄沒有賬號(hào)時(shí)進(jìn)行注冊(cè),注冊(cè)頁(yè)面主要實(shí)現(xiàn)流程和功能如下:(1)按要求輸入界面相應(yīng)的字段信息。(2)點(diǎn)擊注冊(cè)后,會(huì)提示用戶注冊(cè)成功或失敗。(3)當(dāng)提示用戶注冊(cè)成功后,頁(yè)面跳轉(zhuǎn)至登錄界面,與此同時(shí)系統(tǒng)會(huì)將用戶信息保存后臺(tái)數(shù)據(jù)庫(kù)中。注冊(cè)頁(yè)面實(shí)現(xiàn)流程,如圖4-1所示。圖41用戶注冊(cè)流程圖4.2.2用戶登錄功能的實(shí)現(xiàn)用戶系統(tǒng)后可以游客身份進(jìn)行項(xiàng)目瀏覽,當(dāng)發(fā)布項(xiàng)目和支持項(xiàng)目時(shí)必須進(jìn)行登錄,登錄界面可以實(shí)現(xiàn)如下功能:(1)用戶名和密碼的輸入和校驗(yàn)。(2)查詢賬號(hào)是否存在,不存在則進(jìn)行錯(cuò)誤提示并提醒用戶注冊(cè)。(3)用戶名、密碼與數(shù)據(jù)庫(kù)信息的校驗(yàn),不正確則進(jìn)行錯(cuò)誤提示,繼續(xù)登錄。(4)當(dāng)用戶名和密碼都正確時(shí),提示登錄成功,進(jìn)入個(gè)人信息界面。登錄頁(yè)面實(shí)現(xiàn)流程,如圖4-2所示。圖42用戶登錄流程圖4.2.3發(fā)布項(xiàng)目功能的實(shí)現(xiàn)用戶登錄成功后,可以在用戶的個(gè)人界面可以點(diǎn)擊“我的眾籌”,然后在我的眾籌界面中點(diǎn)擊“發(fā)起眾籌”,將自己的項(xiàng)目發(fā)布到眾籌平臺(tái)上,進(jìn)行募集資金。實(shí)現(xiàn)過程是:利用Ajax請(qǐng)求將前端頁(yè)面的數(shù)據(jù)返回給后端進(jìn)行處理先保存相應(yīng)的對(duì)象中,然后分別存儲(chǔ)進(jìn)相對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中。實(shí)現(xiàn)用戶發(fā)布項(xiàng)目功能的流程,如圖4-3所示。圖43用戶項(xiàng)目發(fā)布流程圖實(shí)現(xiàn)用戶發(fā)布項(xiàng)目功能的關(guān)鍵代碼如下:@Transactional(readOnly=false,propagation=Propagation.REQUIRES_NEW,rollbackFor=Exception.class)publicvoidsaveProject(ProjectVOprojectVO,IntegermemberId){//1.保存項(xiàng)目對(duì)象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.保存項(xiàng)目、分類的關(guān)聯(lián)關(guān)系信息List<Integer>typeIdList=projectVO.getTypeIdList();projectPOMapper.insertTypeRelationship(typeIdList,projectId);//3.保存項(xiàng)目、標(biāo)簽的關(guān)聯(lián)關(guān)系信息List<Integer>tagIdList=projectVO.getTagIdList();projectPOMapper.insertTagRelationship(tagIdList,projectId);//4.保存項(xiàng)目中詳情圖片路徑信息List<String>detailPicturePathList=projectVO.getDetailPicturePathList();projectItemPicPOMapper.insertPathList(projectId,detailPicturePathList);//5.保存項(xiàng)目發(fā)起人信息MemberLaunchInfoVOmemberLaunchInfoVO=projectVO.getMemberLaunchInfoVO();System.out.println(memberLaunchInfoVO);MemberLaunchInfoPOmemberLaunchInfoPO=newMemberLaunchInfoPO();BeanUtils.copyProperties(memberLaunchInfoVO,memberLaunchInfoPO);memberLaunchInfoPO.setMemberid(memberId);memberLaunchInfoPOMapper.insert(memberLaunchInfoPO);//6.保存項(xiàng)目匯報(bào)信息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.保存項(xiàng)目確認(rèn)信息MemberConfirmInfoVOmemberConfirmInfoVO=projectVO.getMemberConfirmInfoVO();MemberConfirmInfoPOmemberConfirmInfoPO=newMemberConfirmInfoPO();BeanUtils.copyProperties(memberConfirmInfoVO,memberConfirmInfoPO);memberConfirmInfoPO.setMemberid(memberId);memberConfirmInfoPOMapper.insert(memberConfirmInfoPO);}4.2.4展示項(xiàng)目功能的實(shí)現(xiàn)用戶登錄成功后,點(diǎn)擊返回主界面,在主界面中選擇相應(yīng)的項(xiàng)目產(chǎn)品進(jìn)行查看,顯示項(xiàng)目詳細(xì)信息,實(shí)現(xiàn)過程是:通過前端頁(yè)面返回相應(yīng)的項(xiàng)目id,再通過產(chǎn)品id進(jìn)行查找返回項(xiàng)目數(shù)據(jù)。實(shí)現(xiàn)用戶展示項(xiàng)目功能的流程,如圖4-4所示。圖44用戶項(xiàng)目展示流程圖實(shí)現(xiàn)用戶展示項(xiàng)目功能的關(guān)鍵代碼如下:publicProjectgetProject(IntegerId){//1.查詢得到Project對(duì)象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àng)目功能的實(shí)現(xiàn)用戶在主界面,點(diǎn)擊感興趣的項(xiàng)目在項(xiàng)目詳情頁(yè)面中點(diǎn)擊“立即支持”并選擇相應(yīng)的支持金額或直接在下方選擇對(duì)應(yīng)支持金額點(diǎn)擊支持進(jìn)行支付,在支付前需要填寫個(gè)人信息、郵寄地址等回報(bào)信息;實(shí)現(xiàn)過程是:從session域中讀取之前緩存的ProjectVO對(duì)象,判斷ProjectVO是否為null即用戶是否登錄,然后將回報(bào)信息處理后存入該用戶的數(shù)據(jù)庫(kù)回報(bào)表中。實(shí)現(xiàn)用戶支持項(xiàng)目功能的關(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àng)目功能的實(shí)現(xiàn)流程,如圖4-5所示。圖45用戶項(xiàng)目支持流程圖4.3眾籌平臺(tái)后臺(tái)功能實(shí)現(xiàn)本系統(tǒng)后臺(tái)功能主要面向系統(tǒng)管理員,便于工作人員對(duì)平臺(tái)數(shù)據(jù)進(jìn)行修改和維護(hù),后臺(tái)功能模塊主要實(shí)現(xiàn)了系統(tǒng)管理員登錄、信息維護(hù)功能和管理員在平臺(tái)主界面中對(duì)角色和菜單的維護(hù)功能以及權(quán)限控制功能。4.3.1管理員登錄功能的實(shí)現(xiàn)管理員為內(nèi)部工作人員,賬號(hào)密碼由內(nèi)部相關(guān)人員分配給相應(yīng)的人賬號(hào),進(jìn)行登錄進(jìn)入管理員后臺(tái)界面。登錄界面實(shí)現(xiàn)了以下幾個(gè)工能:(1)用戶名和密碼的輸入和校驗(yàn)。(2)查詢賬號(hào)是否存在,不存在則進(jìn)行錯(cuò)誤提示并提醒用戶注冊(cè)。(3)用戶名、密碼與數(shù)據(jù)庫(kù)信息的校驗(yàn),不正確則進(jìn)行錯(cuò)誤提示,繼續(xù)登錄。(4)當(dāng)用戶名和密碼都正確時(shí),提示登錄成功,進(jìn)入管理界面。管理員登錄界面的實(shí)現(xiàn)流程,如圖4-6所示。圖46管理員登錄流程圖4.3.2管理員信息維護(hù)功能的實(shí)現(xiàn)管理員登錄成功之后,在菜單欄中點(diǎn)擊“權(quán)限管理”,在權(quán)限管理中點(diǎn)擊“用戶維護(hù)”,右側(cè)會(huì)出現(xiàn)管理員列表,在列表中選擇相應(yīng)要修改的人員信息點(diǎn)擊數(shù)據(jù)欄后對(duì)應(yīng)的修改圖標(biāo)跳轉(zhuǎn)至信息修改界面,對(duì)管理員的登錄賬號(hào)、用戶名稱以及郵箱地址進(jìn)行修改;實(shí)現(xiàn)過程是:由前端返回修改過后的管理員對(duì)象,然后利用MyBatis框架修改數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)。管理員信息維護(hù)功能的實(shí)現(xiàn)流程,如圖4-7所示。圖47管理員信息維護(hù)流程圖實(shí)現(xiàn)管理員信息維護(hù)功能的關(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角色維護(hù)功能的實(shí)現(xiàn)管理員登錄成功后,在后臺(tái)主界面菜單欄中點(diǎn)擊“權(quán)限管理”,在權(quán)限管理中點(diǎn)擊“角色維護(hù)”,右側(cè)會(huì)出現(xiàn)角色列表,在列表中可進(jìn)行角色的增刪改查,選擇相應(yīng)要修改的角色點(diǎn)擊角色對(duì)應(yīng)的修改圖標(biāo)跳轉(zhuǎn)至信息修改界面,對(duì)角色的權(quán)限進(jìn)行修改;實(shí)現(xiàn)過程是:由前端發(fā)送Ajax請(qǐng)求,根據(jù)發(fā)送的數(shù)據(jù)進(jìn)行保存為新的角色對(duì)象,然后利用MyBatis框架修改數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)。角色維護(hù)功能的實(shí)現(xiàn)流程,如圖4-8所示。圖48管理員角色維護(hù)流程圖實(shí)現(xiàn)角色維護(hù)功能的關(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菜單維護(hù)功能的實(shí)現(xiàn)管理員登錄成功后,在后臺(tái)主界面菜單欄中點(diǎn)擊“權(quán)限管理”,在權(quán)限管理中點(diǎn)擊“菜單維護(hù)”,右側(cè)會(huì)出現(xiàn)權(quán)限菜單列表,在列表中可對(duì)相應(yīng)菜單進(jìn)行修改,選擇相應(yīng)要修改的菜單名稱點(diǎn)擊菜單后對(duì)應(yīng)的修改圖標(biāo)跳轉(zhuǎn)至信息修改界面,對(duì)菜單的信息進(jìn)行修改;實(shí)現(xiàn)過程是:由前端發(fā)送Ajax請(qǐng)求,根據(jù)發(fā)送的數(shù)據(jù)進(jìn)行保存為新的菜單對(duì)象,然后利用MyBatis框架修改數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)。菜單維護(hù)功能的實(shí)現(xiàn)流程,如圖4-9所示。圖49管理員菜單維護(hù)流程圖實(shí)現(xiàn)菜單維護(hù)功能的關(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)限控制功能的實(shí)現(xiàn)在用戶維護(hù)界面中,右側(cè)為管理員列表,在操作欄中點(diǎn)擊角色維護(hù)圖標(biāo),進(jìn)入角色維護(hù)界面,可根據(jù)界面中顯示對(duì)管理員的角色進(jìn)行調(diào)整,通過對(duì)管理員角色調(diào)整實(shí)現(xiàn)權(quán)限的控制;實(shí)現(xiàn)過程是:通過對(duì)管理員對(duì)象的查詢?cè)诮巧S護(hù)界面中顯示已擁有角色和未擁有角色,通過前端的調(diào)整完成后點(diǎn)擊“保存”,將已擁有欄中的角色保存到管理員對(duì)象中。權(quán)限控制功能的實(shí)現(xiàn)流程,如圖4-10所示。圖410管理員權(quán)限控制流程圖實(shí)現(xiàn)權(quán)限控制功能的關(guān)鍵代碼如下:@RequestMapping("/assign/do/role/assign.html")publicStringsaveAdminRoleRelationship(@RequestParam("adminId")IntegeradminId,@RequestParam("pageNum")IntegerpageNum,@RequestParam("keyword")Stringkeyword,//允許用戶在頁(yè)面上取消所有分配角色再提交表單,所以可以不提供roleIdList請(qǐng)求參數(shù)//設(shè)置required=false表示這個(gè)參數(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)的設(shè)計(jì)與分析,將系統(tǒng)分為前臺(tái)功能模塊和后臺(tái)功能模塊,本章首先簡(jiǎn)要介紹了系統(tǒng)的開發(fā)環(huán)境,其次詳細(xì)介紹了前臺(tái)和后臺(tái)各個(gè)功能具體的實(shí)現(xiàn)流程,并展示了功能實(shí)現(xiàn)的關(guān)鍵代碼。5眾籌平臺(tái)的運(yùn)行測(cè)試5.1測(cè)試環(huán)境搭建測(cè)試環(huán)境硬件使用Windows系統(tǒng),PC機(jī)內(nèi)存8G及以上,硬盤內(nèi)存50G及以上,軟件環(huán)境使用開發(fā)工具IntelliJIDEA,MySQL5.6.24數(shù)據(jù)庫(kù),Navicat客戶端JDK8開發(fā)工具包,Tomcat8服務(wù)器,Chrome瀏覽器。5.2眾籌平臺(tái)前臺(tái)運(yùn)行測(cè)試5.2.1用戶注冊(cè)運(yùn)行測(cè)試表5-1用戶注冊(cè)功能測(cè)試用例測(cè)試用例編號(hào)用例描述操作過程預(yù)期結(jié)果Register-0正確注冊(cè)輸入正確格式且未注冊(cè)的賬號(hào)信息提示注冊(cè)成功,跳轉(zhuǎn)至登錄界面Register-1字段格式錯(cuò)誤分別輸入錯(cuò)誤格式的賬號(hào)、密碼、郵箱號(hào)和手機(jī)號(hào)點(diǎn)擊注冊(cè)分別提示賬號(hào)、密碼、郵箱和手機(jī)號(hào)格式錯(cuò)誤Register-2字段信息為空將賬號(hào)、密碼、郵箱或手機(jī)號(hào)其中一項(xiàng)置為空,點(diǎn)擊注冊(cè)提示賬號(hào)、密碼、郵箱或手機(jī)號(hào)不能為空Register-3驗(yàn)證碼錯(cuò)誤輸入錯(cuò)誤的驗(yàn)證碼提示驗(yàn)證輸入錯(cuò)誤系統(tǒng)前臺(tái)用戶注冊(cè)功能的測(cè)試結(jié)果,如圖5-1所示。圖51用戶注冊(cè)5.2.2用戶登錄運(yùn)行測(cè)試表5-2用戶登錄功能測(cè)試用例測(cè)試用例編號(hào)用例描述操作過程預(yù)期結(jié)果Login-1登錄成功測(cè)試輸入正確的賬號(hào)和密碼提示登錄成功,跳轉(zhuǎn)至用戶主界面Login-2賬號(hào)輸入錯(cuò)誤輸入錯(cuò)誤或未注冊(cè)的賬號(hào)提示賬號(hào)未注冊(cè)或賬號(hào)輸入錯(cuò)誤,請(qǐng)重新登錄Login-3密碼輸入錯(cuò)誤輸入錯(cuò)誤或格式不正確的密碼提示密碼錯(cuò)誤系統(tǒng)前臺(tái)用戶登錄界面運(yùn)行測(cè)試結(jié)果,如圖5-2所示。圖52用戶登錄界面5.2.3用戶發(fā)布項(xiàng)目運(yùn)行測(cè)試表5-3用戶項(xiàng)目發(fā)布功能測(cè)試用例測(cè)試用例編號(hào)用例描述操作過程預(yù)期結(jié)果Publish-0正確發(fā)布輸入正確格式的字段信息,圖片成功上傳提示發(fā)布成功,點(diǎn)擊返回首頁(yè)查看Publish-1字段格式錯(cuò)誤輸入錯(cuò)誤的字段信息提示相應(yīng)字段輸入錯(cuò)誤Publish-2字段信息為空將某一個(gè)或多個(gè)字段置為空或不填寫提示相應(yīng)字段不能為空Publish-3圖片上傳錯(cuò)誤上傳錯(cuò)誤格式或數(shù)量的圖片提示圖片上傳錯(cuò)誤錯(cuò)誤系統(tǒng)前臺(tái)用戶發(fā)布項(xiàng)目功能的運(yùn)行測(cè)試結(jié)果,如圖5-3所示。圖53用戶發(fā)布項(xiàng)目5.2.4用戶查看項(xiàng)目運(yùn)行測(cè)試系統(tǒng)前臺(tái)用戶查看項(xiàng)目功能的運(yùn)行測(cè)試結(jié)果,如圖5-4所示。圖54系統(tǒng)用戶查看項(xiàng)目5.2.5用戶支持項(xiàng)目運(yùn)行測(cè)試表5-4用戶項(xiàng)目支持功能測(cè)試用例測(cè)試用例編號(hào)用例描述操作過程預(yù)期結(jié)果Publish-0正確項(xiàng)目支持輸入設(shè)置范圍內(nèi)的回報(bào)數(shù)量直接跳轉(zhuǎn)至支付界面Publish-1回報(bào)數(shù)量錯(cuò)誤輸入大于設(shè)置的回報(bào)數(shù)量提示回報(bào)數(shù)量大于商家設(shè)置回報(bào)數(shù)量系統(tǒng)前臺(tái)用戶支持項(xiàng)目功能的運(yùn)行測(cè)試結(jié)果,如圖5-5所示。圖55系統(tǒng)用戶支持項(xiàng)目5.3眾籌平臺(tái)后臺(tái)運(yùn)行測(cè)試5.3.1管理員登錄運(yùn)行測(cè)試表5-5管理員登錄功能測(cè)試用例測(cè)試用例編號(hào)用例描
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中金匯通信技術(shù)有限公司甘肅分公司招聘60人筆試參考題庫(kù)附帶答案詳解
- 計(jì)劃你的2024年紡織品檢驗(yàn)員考試試題及答案
- 紡織品質(zhì)量控制方法試題及答案
- 耳鼻喉科英文試題及答案
- 環(huán)保科技示范園建設(shè)項(xiàng)目可行性研究報(bào)告分析
- 解除《租賃合同》協(xié)議書
- 瓷粉施工合同協(xié)議書
- 建筑施工合同合同協(xié)議書
- 禮品供貨合同協(xié)議書范本
- 擬定合同協(xié)議書
- 氣象行業(yè)天氣預(yù)報(bào)技能競(jìng)賽理論試題庫(kù)資料(含答案)
- 水庫(kù)工程土石方開挖施工方案
- 小學(xué)生中醫(yī)藥文化知識(shí)科普傳承中醫(yī)文化弘揚(yáng)國(guó)粹精神課件
- 2024年福建省中考?xì)v史試卷(含標(biāo)準(zhǔn)答案及解析)
- 代持存款合同協(xié)議書
- 繼子女?dāng)嘟^關(guān)系協(xié)議書
- 車輛維修免責(zé)協(xié)議書范本
- 國(guó)開《會(huì)計(jì)學(xué)概論》網(wǎng)核模擬測(cè)試答案
- DB32T3748-2020 35kV及以下客戶端變電所建設(shè)標(biāo)準(zhǔn)
- ASME材料-設(shè)計(jì)許用應(yīng)力
- 采用SF6N2混合氣體絕緣的GIS母線和GIL應(yīng)用導(dǎo)則
評(píng)論
0/150
提交評(píng)論