【基于JSP的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)9000字(論文)】_第1頁(yè)
【基于JSP的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)9000字(論文)】_第2頁(yè)
【基于JSP的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)9000字(論文)】_第3頁(yè)
【基于JSP的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)9000字(論文)】_第4頁(yè)
【基于JSP的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)9000字(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)———基于JSP的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)目錄TOC\o"1-3"\h\u189141緒論 3195741.1開(kāi)發(fā)背景與意義 356351.2研究現(xiàn)狀 312651.3論文內(nèi)容及結(jié)構(gòu) 3222952系統(tǒng)開(kāi)發(fā)技術(shù)和工具介紹 4160642.1開(kāi)發(fā)工具簡(jiǎn)介 4319122.2開(kāi)發(fā)技術(shù)介紹 4303952.2.1Java簡(jiǎn)介 4301622.2.2JSP簡(jiǎn)介 4221552.2.3SSM簡(jiǎn)介 5267743系統(tǒng)分析 6274563.1系統(tǒng)可行性分析 6308633.2系統(tǒng)需求分析 745283.3系統(tǒng)需求分析 7164693.4系統(tǒng)非功能性需求分析 9201594系統(tǒng)設(shè)計(jì) 9315224.1系統(tǒng)架構(gòu)設(shè)計(jì) 9151084.2系統(tǒng)總體設(shè)計(jì) 921604.3數(shù)據(jù)庫(kù)設(shè)計(jì) 993114.3.1概念模型設(shè)計(jì) 104244.3.2數(shù)據(jù)庫(kù)表設(shè)計(jì) 12239365系統(tǒng)實(shí)現(xiàn) 1566765.1用戶注冊(cè) 15129135.2用戶登錄 169575.3菜品展示 17293435.4菜品搜索 18102015.5菜品詳情展示 20173985.6生成訂單 20143195.7用戶留言 22204885.9用戶管理 2412485.10分類管理 2590575.12訂單管理 27131715.13留言管理 2862536系統(tǒng)測(cè)試 30251186.1系統(tǒng)測(cè)試 30129586.2系統(tǒng)維護(hù) 30128236.3測(cè)試目的 30132356.4測(cè)試實(shí)例 30301996.5測(cè)試結(jié)果 3117490參考文獻(xiàn) 321緒論本章主要對(duì)網(wǎng)上訂餐系統(tǒng)進(jìn)行詳細(xì)的描述,較為完整地介紹了該系統(tǒng)的開(kāi)發(fā)背景,意義以及研究現(xiàn)狀。1.1開(kāi)發(fā)背景與意義近年來(lái),隨著人們?nèi)粘9ぷ鳌⑸钅_步的加快,越來(lái)越多的人們都會(huì)選擇網(wǎng)上訂餐,因此網(wǎng)上訂餐已經(jīng)越來(lái)越受人們的歡迎。通過(guò)網(wǎng)上訂餐的方式,人們不僅可以通過(guò)電腦、手機(jī)等選擇自己喜歡的食物,而且可以節(jié)約大量的時(shí)間,極大地方便的人們的日常生活。就目前而言,像“美團(tuán)”、“餓了么”等這些網(wǎng)上訂餐的平臺(tái),已經(jīng)得到了很多人的青睞。因此,本次畢業(yè)設(shè)計(jì)決定開(kāi)發(fā)這款“網(wǎng)上訂餐系統(tǒng)”,該系統(tǒng)的開(kāi)發(fā)順應(yīng)時(shí)代發(fā)展的潮流,能夠滿足人們?nèi)粘5男枨蟆?.2研究現(xiàn)狀黃信洋(2019)指出伴隨著我們現(xiàn)代高科技的快速發(fā)展,計(jì)算機(jī)的應(yīng)用在當(dāng)代的生活中日益廣泛,已經(jīng)逐漸深入人們的生活,網(wǎng)絡(luò)技術(shù)與各個(gè)服務(wù)行業(yè)的連接日漸加強(qiáng),各種方便的軟件逐個(gè)被開(kāi)發(fā)應(yīng)用到現(xiàn)實(shí)生活中,在這樣的大前提下,各個(gè)服務(wù)行業(yè)的前景也被無(wú)限放大[1]。楊彤蕾,李建(2018)指出隨著計(jì)算機(jī)和網(wǎng)絡(luò)的日趨發(fā)展,網(wǎng)上店鋪如雨后春筍般出現(xiàn),就連沃爾瑪,金拱門這一類老品牌的商家都開(kāi)拓了自己的網(wǎng)上購(gòu)物渠道,有調(diào)查表明:無(wú)論是中國(guó)還是西方國(guó)家,越來(lái)越的用戶已經(jīng)習(xí)慣于網(wǎng)絡(luò)購(gòu)物,人們的消費(fèi)平臺(tái)逐漸開(kāi)始向虛擬世界轉(zhuǎn)移,而網(wǎng)上訂餐是其中重要的一環(huán),發(fā)展網(wǎng)絡(luò)訂餐平臺(tái)已經(jīng)成為了新的時(shí)代的新的需求[2]。ZimmerMeghanC.,BeairdJacob,SteevesElizabethT.Anderson(2020)指出電子商務(wù)的網(wǎng)上實(shí)踐是從銷售開(kāi)始的,“網(wǎng)上訂餐系統(tǒng)”打破了傳統(tǒng)的食品銷售形式,將和網(wǎng)絡(luò)結(jié)合成一種典型的電子商務(wù)網(wǎng)站運(yùn)作,能夠直接繞過(guò)中間商,建立與客戶的直接關(guān)系,“網(wǎng)上訂餐系統(tǒng)”可以為用戶提供商品的詳細(xì)信息,用戶可以在線購(gòu)買商品、創(chuàng)建訂單,可以瀏覽商品的詳細(xì)信息、添加備注等[5]。1.3論文內(nèi)容及結(jié)構(gòu)本論文一共由七章組成,以下是對(duì)論文中每個(gè)章節(jié)的概述:(1)緒論本章節(jié)主要從開(kāi)發(fā)網(wǎng)上訂餐系統(tǒng)的背景、意義、以及系統(tǒng)的發(fā)展?fàn)顩r進(jìn)行分析,詳細(xì)描述了系統(tǒng)的在哪些方面能得到的應(yīng)用。(2)系統(tǒng)開(kāi)發(fā)環(huán)境介紹本章節(jié)主要介紹了設(shè)計(jì)該系統(tǒng)時(shí)使用的開(kāi)發(fā)工具、技術(shù)詳情、以及數(shù)據(jù)庫(kù)概念和特點(diǎn)。(3)系統(tǒng)分析進(jìn)行系統(tǒng)分析,先從需求分析開(kāi)始,進(jìn)而進(jìn)行可行性分析、角色劃分、角色功能分析等。(4)系統(tǒng)設(shè)計(jì)這一章節(jié)是對(duì)要開(kāi)發(fā)的網(wǎng)上訂餐系統(tǒng)進(jìn)行設(shè)計(jì),包括了系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)庫(kù)的設(shè)計(jì),并用圖片和表格的形式進(jìn)行展現(xiàn)出來(lái)。(5)系統(tǒng)的實(shí)現(xiàn)開(kāi)發(fā)出的系統(tǒng)的主要界面進(jìn)行展示。(6)系統(tǒng)測(cè)試這一章節(jié)是對(duì)程序進(jìn)行最后的測(cè)試,通過(guò)測(cè)試發(fā)現(xiàn)問(wèn)題,進(jìn)而完善系統(tǒng)。通過(guò)輸入不同組的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試的功能模塊測(cè)試。(7)結(jié)束語(yǔ)本章節(jié)主要是對(duì)本次系統(tǒng)設(shè)計(jì)進(jìn)行總結(jié),以及對(duì)未來(lái)發(fā)展方向的展望。2系統(tǒng)開(kāi)發(fā)技術(shù)和工具介紹本次畢業(yè)設(shè)計(jì)基于B/S模式,主要運(yùn)用Java編程語(yǔ)言、HTML語(yǔ)言、SSM框架、JS、JSP等技術(shù),采用MySQL做為數(shù)據(jù)庫(kù)、Tomcat做為服務(wù)器和Eclipse開(kāi)發(fā)工具實(shí)現(xiàn),詳細(xì)介紹如下。2.1開(kāi)發(fā)工具簡(jiǎn)介該系統(tǒng)是用Eclipse進(jìn)行開(kāi)發(fā)的,Eclipse是一個(gè)基于Java的、開(kāi)放源碼的、可擴(kuò)展的應(yīng)用開(kāi)發(fā)平臺(tái),它為編程人員提供了一流的Java集成開(kāi)發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)。在Eclipse的官方網(wǎng)站中提供了一個(gè)JavaEE版的EclipseIDE。應(yīng)用EclipseIDEforJavaEE,既可以創(chuàng)建Java項(xiàng)目,也可以創(chuàng)建動(dòng)態(tài)Web項(xiàng)目[7]。Tomcat是一個(gè)輕微型服務(wù)器,主要用于Web項(xiàng)目的開(kāi)發(fā),是開(kāi)發(fā)和調(diào)試JSP程序的首選[9]。它是開(kāi)發(fā)JSP程序的首選,同時(shí)也是調(diào)試JSP程序的首選。Tomcat服務(wù)器實(shí)際上是Apache服務(wù)器的擴(kuò)展,但它在運(yùn)行時(shí)獨(dú)立運(yùn)行[8]。Tomcat是世界上廣泛使用并支持JSP和Servlet的Web服務(wù)器,因此,在本次畢業(yè)設(shè)計(jì)中,我選擇了使用Tomcat作為服務(wù)器。2.2開(kāi)發(fā)技術(shù)介紹2.2.1Java簡(jiǎn)介Java是一款目前流行性很強(qiáng)的開(kāi)發(fā)語(yǔ)言,無(wú)論在手機(jī)方面還是互聯(lián)網(wǎng)方面,Java都應(yīng)用廣泛。這一款語(yǔ)言和C++很像,但Java摒棄了C++中很少使用的一些特征,繼續(xù)保持C++語(yǔ)言受人們喜歡的一些優(yōu)點(diǎn):快速、安全。在使用Java進(jìn)行開(kāi)發(fā)程序時(shí),Java面向?qū)ο蟮奶攸c(diǎn),可以讓開(kāi)發(fā)人員簡(jiǎn)單的使用,省去一些沒(méi)有必要的操作,這樣一來(lái)就可以節(jié)約時(shí)間,讓開(kāi)發(fā)人員可以用更多的時(shí)間精力來(lái)進(jìn)行程序的研究[11]。2.2.2JSP簡(jiǎn)介JSP的擴(kuò)展全稱是JavaServerPages,是多個(gè)公司合作得以建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。它是對(duì)Servlet的擴(kuò)展,主要是為了簡(jiǎn)化開(kāi)發(fā)Web程序的過(guò)程而產(chǎn)生的[12]。JSP頁(yè)面由html的代碼語(yǔ)句和嵌套在頁(yè)面中的Java語(yǔ)句構(gòu)成。它降低了對(duì)瀏覽器端的要求,因?yàn)榉?wù)器端承擔(dān)了對(duì)程序的所有操作,而瀏覽器端只是呈現(xiàn)對(duì)系統(tǒng)操作后頁(yè)面運(yùn)行的效果。JSP這一技術(shù)的引入,主要原因是為了彌補(bǔ)servlet不方便展示信息的缺點(diǎn),但它在本質(zhì)上來(lái)說(shuō),也還是一個(gè)servlet。利用JSP能夠使得開(kāi)發(fā)出的程序具有動(dòng)態(tài)、高性能的特點(diǎn)。在運(yùn)行JSP項(xiàng)目時(shí),需要安裝服務(wù)器tomcat,它是JSP常用的一個(gè)引擎,免費(fèi)而且開(kāi)源,所以利用JSP開(kāi)發(fā)的程序費(fèi)用方面不用考慮。除了這一點(diǎn),JSP還有很多優(yōu)勢(shì),這也是為什么選用JSP來(lái)開(kāi)發(fā)本本系統(tǒng)的原因。(1)ASP有專用語(yǔ)言的限制,而JSP沒(méi)有,可用Java編寫,同時(shí)還有很強(qiáng)的可移植性能。(2)JSP還能對(duì)很多網(wǎng)頁(yè)格式進(jìn)行支持。(3)在JSP程序開(kāi)發(fā)中使用了Java,所以說(shuō),也有了Java的所有好處,包括編寫一次就能處處都使用、安全性能高等。2.2.3SSM簡(jiǎn)介SSM框架指的是Spring框架、MyBatis框架、SpringMVC框架,它們?nèi)齻€(gè)都是開(kāi)源框架,所以它也是一個(gè)開(kāi)源框架。這三個(gè)中的Spring是輕量級(jí)的,主要有控制反轉(zhuǎn)(IOC)和面向切面(AOP)兩大技術(shù)點(diǎn),而SpringMVC為Spring的一個(gè)后續(xù)產(chǎn)品,它將控制器、模型對(duì)象、分派器和處理程序?qū)ο蟮慕巧蛛x開(kāi)來(lái)從而使它們定制起來(lái)更容易[13]。第三個(gè)框架MyBatis是支持SQL查詢的持久層的框架,并支持存儲(chǔ)過(guò)程、高級(jí)映射等。Spring是一個(gè)輕量式、低侵入式的框架。大部分Java程序都因?yàn)镾pring而得到便捷,不僅僅在開(kāi)發(fā)服務(wù)器上,還有簡(jiǎn)單性、可測(cè)試性和松耦合這些地方,都是獲益良多的[14]。SpringMVC模塊響應(yīng)圖如圖2-1所示。圖2-1SpringMVC模塊響應(yīng)圖Mybatis的三層功能架構(gòu):(1)基礎(chǔ)支持層:通過(guò)負(fù)責(zé)數(shù)據(jù)庫(kù)連接、配置加載、緩存處理和事務(wù)管理這些部分來(lái)為上層提供支持。(2)數(shù)據(jù)處理層:通過(guò)負(fù)責(zé)生成SQL語(yǔ)句并對(duì)其進(jìn)行解析、執(zhí)行、處理結(jié)果映射等。(3)API接口層:給開(kāi)發(fā)人員提供了大量API接口,從而與其他層協(xié)作對(duì)數(shù)據(jù)庫(kù)進(jìn)行一系列操作。下面是三層功能架構(gòu)圖,如圖2-2所示。圖2-2MyBatis三層功能架構(gòu)圖Mybatis的框架應(yīng)用架構(gòu):(1)加載配置:編寫配置文件mybatis-config.xml,包括:數(shù)據(jù)庫(kù)連接、ORM映射、事務(wù)處理和緩存方式。(2)SQL解析:通過(guò)SqlSessionFactory建立SqlSession會(huì)話實(shí)例。(3)結(jié)果映射:將執(zhí)行結(jié)果按照配置好的映射到結(jié)果集并返回。3系統(tǒng)分析這一章主要是對(duì)系統(tǒng)的的功能做了可行性分析和需求分析。分析了該在線訂餐實(shí)現(xiàn)的功能以及完成這個(gè)項(xiàng)目后想要達(dá)到什么樣的效果。3.1系統(tǒng)可行性分析系統(tǒng)的可行性分析是系統(tǒng)分析過(guò)程中的一個(gè)步驟。它是系統(tǒng)開(kāi)發(fā)之前的一個(gè)環(huán)節(jié)。這個(gè)鏈接不是為了實(shí)現(xiàn)系統(tǒng),而是通過(guò)簡(jiǎn)單的分析過(guò)程進(jìn)行可行和深入的調(diào)查。從任務(wù)開(kāi)始,系統(tǒng)的設(shè)計(jì)是可行的,并且還可以將設(shè)計(jì)的系統(tǒng)直接放置在穩(wěn)定的服務(wù)器上。以下會(huì)從以下三個(gè)方面來(lái)入手。技術(shù)可行性在Java+MySQL的基礎(chǔ)上,對(duì)本科學(xué)習(xí)階段學(xué)習(xí)到的技術(shù)進(jìn)行了深入研究,一些框架知識(shí)將更簡(jiǎn)單,更易學(xué)。因此,從MVC框架技術(shù)應(yīng)用學(xué)習(xí)框架也有利于SPRING技術(shù)的操作和使用[10]。另外,經(jīng)過(guò)我們的分析和考慮,通過(guò)一定的研究和分析可以解決上述難點(diǎn)和問(wèn)題。經(jīng)濟(jì)可行性該系統(tǒng)效益可觀。該系統(tǒng)估計(jì)項(xiàng)目的編寫、運(yùn)營(yíng)和維護(hù)成本,估計(jì)未來(lái)收益以及成本是否高于收入。最后,認(rèn)為該系統(tǒng)在經(jīng)濟(jì)上是可行的。法律可行性分析在任何情況下都不能越過(guò)法律的界限,本系統(tǒng)的開(kāi)發(fā)在法律方面符合法律要求,分析系統(tǒng)是否涉及侵權(quán)、合同、責(zé)任向抵觸的問(wèn)題,避免出現(xiàn)。拓展可行原則系統(tǒng)在開(kāi)發(fā)中要考慮后期的維護(hù),對(duì)于拓展性方面,代碼是否可以進(jìn)行拓展和文本復(fù)用,隨著人們需求的不斷提高,系統(tǒng)也要結(jié)合實(shí)際進(jìn)行不斷升級(jí),保證系統(tǒng)拓展后可以正常使用,數(shù)據(jù)可以存儲(chǔ)大量信息。操作者如果需要添加、修改和刪除功能,如果系統(tǒng)拓展差的話,系統(tǒng)可能會(huì)奔潰,導(dǎo)致不必要的麻煩的產(chǎn)生,所有我們?cè)陂_(kāi)發(fā)前期就應(yīng)該想到系統(tǒng)的拓展性能,必須能夠達(dá)到要求[11]。3.2系統(tǒng)需求分析網(wǎng)上訂餐系統(tǒng)市場(chǎng)的潛力巨大,改變傳統(tǒng)管理方式勢(shì)在必行,推出可行的系統(tǒng)也很緊迫。用戶需要實(shí)現(xiàn)的具體功能如下:用戶注冊(cè):游客可以在注冊(cè)頁(yè)面注冊(cè)賬號(hào)。用戶登錄:輸入已經(jīng)擁有的賬號(hào)進(jìn)入。菜品展示:用戶可在首頁(yè)看到菜品的展示。搜索:用戶可以在首頁(yè)進(jìn)行搜索自己心儀的商品。菜品詳情展示:用戶點(diǎn)擊商品可以進(jìn)入菜品的詳情頁(yè),查看菜品的具體信息。生成訂單:用戶點(diǎn)擊購(gòu)買之后,系統(tǒng)自動(dòng)生成訂單并展現(xiàn)在用戶的頁(yè)面中。發(fā)布留言:用戶可以對(duì)管理員進(jìn)行留言,有助于管理員更好的管理網(wǎng)站。管理員需要實(shí)現(xiàn)的具體功能如下:(1)管理員登錄:管理員可以在登陸頁(yè)面進(jìn)入網(wǎng)站后臺(tái)管理系統(tǒng)。(2)用戶管理:管理員可以在此模塊對(duì)用戶的信息進(jìn)行查詢、修改、刪除等操作。(3)分類管理:管理員可以對(duì)菜品進(jìn)行分類管理,并直接出現(xiàn)在用戶的首頁(yè)中。(4)商品管理:管理員可以對(duì)商品進(jìn)行分詳細(xì)的管理,可編輯商品的詳情,也可增加商品和刪除商品,管理員進(jìn)行的操作直接出現(xiàn)在用戶的首頁(yè)中。(5)訂單管理:管理員可以在此模塊對(duì)用戶產(chǎn)生的訂單進(jìn)行查看編輯等具體的操作管理(6)留言管理:管理員進(jìn)入后臺(tái)管理系統(tǒng)后,可以對(duì)用戶的留言進(jìn)行查看和相關(guān)操作。3.3系統(tǒng)需求分析根據(jù)對(duì)系統(tǒng)的功能分析,我們通過(guò)用例圖對(duì)系統(tǒng)進(jìn)行描述。用戶用例圖圖如圖3-1所示。圖3-1用戶用例圖管理員用例圖如圖3-2所示。圖3-2管理員用例圖3.4系統(tǒng)非功能性需求分析系統(tǒng)非功能分析是對(duì)除了功能結(jié)構(gòu)以外的信息進(jìn)行分析,一個(gè)系統(tǒng)設(shè)計(jì)很多方面,我們需要保證所有信息都完善、確保穩(wěn)定,能夠正常運(yùn)行。1、數(shù)據(jù)完整。我們要保證數(shù)據(jù)的完整,保證數(shù)據(jù)沒(méi)有亂碼出現(xiàn),數(shù)據(jù)庫(kù)中所有信息都可以進(jìn)行前端展示。2、頁(yè)面美觀簡(jiǎn)潔。對(duì)頁(yè)面的設(shè)計(jì)關(guān)系用戶的體驗(yàn),我們要保證頁(yè)面設(shè)計(jì)簡(jiǎn)單易操作,用戶可以很快的熟悉系統(tǒng),進(jìn)行購(gòu)買。3、邏輯性。系統(tǒng)邏輯不能出現(xiàn)錯(cuò)誤,第一步到第二部再到第三部,必須符合正常邏輯思維。4系統(tǒng)設(shè)計(jì)當(dāng)系統(tǒng)分析完成之后,所需要做的就是對(duì)系統(tǒng)的詳細(xì)設(shè)計(jì)。本章節(jié)的目的就是從邏輯和物理層面考慮搭建出可以實(shí)現(xiàn)的系統(tǒng)框架,方便后期的實(shí)現(xiàn)。4.1系統(tǒng)架構(gòu)設(shè)計(jì)我們采用了B/S,采用B/S模式不僅可以避免用戶必須安裝專業(yè)軟件才能開(kāi)發(fā)系統(tǒng)或者訪問(wèn)系統(tǒng)的局限性,而且更加便利。4.2系統(tǒng)總體設(shè)計(jì)系統(tǒng)總體功能結(jié)構(gòu)圖如圖4-1所示。圖4-1系統(tǒng)功能結(jié)構(gòu)圖4.3數(shù)據(jù)庫(kù)設(shè)計(jì)簡(jiǎn)而言之,數(shù)據(jù)庫(kù)設(shè)計(jì)就是根據(jù)業(yè)務(wù)系統(tǒng)和您選擇的DBMS的需求設(shè)計(jì)最佳的數(shù)據(jù)存儲(chǔ)模型。4.3.1概念模型設(shè)計(jì)數(shù)據(jù)庫(kù)在程序的設(shè)計(jì)中扮演了重要的角色,它將系統(tǒng)涉及的數(shù)據(jù)全部容納其中,在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),為了能夠明確思路,一般都是先構(gòu)建實(shí)體E-R圖,在構(gòu)建實(shí)體E-R圖時(shí)采取先確定好實(shí)體,再規(guī)劃實(shí)體屬性的方法。實(shí)體:實(shí)體就是指可以摸到的存在的具有區(qū)分其他事物的特性或?qū)傩圆⑴c其他實(shí)體有聯(lián)系的實(shí)體。屬性可以理解為實(shí)體的特征,以下為本購(gòu)物網(wǎng)站的相關(guān)實(shí)體介紹。(1)管理員實(shí)體包括ID、用戶名、密碼,管理員實(shí)體E-R圖如圖4-2所示。圖4-2管理員實(shí)體圖(2)商品分類實(shí)體包括ID、商品分類名,商品分類實(shí)體E-R圖如圖4-3所示。圖4-3商品分實(shí)體圖(3)訂單實(shí)體包括ID、金額、地址、電話號(hào)碼、訂單時(shí)間,訂單實(shí)體E-R圖如圖4-4所示。圖4-4訂單實(shí)體圖(4)商品實(shí)體包括ID、商品名、優(yōu)惠價(jià)格、商店標(biāo)價(jià)、商品圖路徑、詳情、上架時(shí)間,商品實(shí)體E-R圖如圖4-5所示。圖4-5商品實(shí)體圖(5)用戶實(shí)體包括ID、用戶昵稱、密碼、姓名、郵箱、電話、地址,用戶實(shí)體E-R圖如圖4-6所示。圖4-6用戶實(shí)體圖4.3.2數(shù)據(jù)庫(kù)表設(shè)計(jì)以下為系統(tǒng)中使用的數(shù)據(jù)庫(kù)表信息。(1)管理員表:用來(lái)存放管理員的基本信息,包括管理員ID、用戶名、密碼等信息。客戶表如表4-1所示。表4-1管理員表列名數(shù)據(jù)類型長(zhǎng)度備注uidint11IDusernamevarchar255用戶名passwordint255密碼(2)商品分類表:用于存放商品分類的基本信息,包括ID、商品分類名等基本信息。商品分類表如表4-2所示。表4-2商品分類表序號(hào)列名數(shù)據(jù)類型長(zhǎng)度備注1idint11ID2c-namevarchar255商品分類名(3)訂單表:用于存放訂單的基本信息,包括ID、金額、地址、電話號(hào)碼、訂單時(shí)間等基本信息。訂單表如表4-3所示。表4-3訂單表序號(hào)列名數(shù)據(jù)類型長(zhǎng)度備注1oidint11ID2moneyvarchar255金額3receiveinfovarchar255地址4phoNumvarchar255電話5Order_timevarchar255時(shí)間(4)商品表:用于存放商品的基本信息,包括商品ID、商品名、優(yōu)惠價(jià)格、商店標(biāo)價(jià)、商品圖路徑、商品詳情、上架時(shí)間等相關(guān)信息。商品表如表4-4所示。表4-4商品表序號(hào)列名數(shù)據(jù)類型長(zhǎng)度備注1pidint11ID2pnamevarchar255商品名3Market_pricevarchar255優(yōu)惠價(jià)格4Shop_pricevarchar255商店標(biāo)價(jià)5imagevarchar255商品圖路徑6pdescevarchar255商品詳情7pdatevarchar255上架時(shí)間(5)用戶表:用于用戶的基本信息,包括ID、用戶昵稱、密碼、姓名、郵箱、電話、地址等相關(guān)信息。課程表如表4-5所示。表4-5用戶表序號(hào)列名數(shù)據(jù)類型長(zhǎng)度備注1uidint11ID2usernamevarchar255用戶昵稱3passwordvarchar255密碼4namevarchar255用戶姓名5emailvarchar255郵箱6phoneint255電話7addrvarchar255地址

5系統(tǒng)實(shí)現(xiàn)為了將本系統(tǒng)的實(shí)現(xiàn)更詳細(xì)的進(jìn)行介紹,本章節(jié)對(duì)各個(gè)功能模塊進(jìn)行詳細(xì)的展示和介紹。該網(wǎng)上訂餐系統(tǒng)各模塊的具體功能實(shí)現(xiàn)如下。5.1用戶注冊(cè)游客可以在此頁(yè)面進(jìn)行賬號(hào)注冊(cè),便于系統(tǒng)管理員更好的管理系統(tǒng),游客注冊(cè)之后具有標(biāo)識(shí)性,用戶注冊(cè)頁(yè)面如圖5-1所示。圖5-1用戶注冊(cè)圖用戶注冊(cè)核心代碼:@RequestMapping("/userRegist") publicStringuserRegist(Modelmodel,HttpServletRequestrequest, @ValidatedUseruser,BindingResultbindingResult, @RequestParamStringcheckImg)throwsException{ if(bindingResult.hasErrors()){ List<ObjectError>errors=bindingResult.getAllErrors(); List<String>list=newArrayList<>(); for(ObjectErrorobjectError:errors){ Stringstr=newString(objectError.getDefaultMessage() .getBytes("ISO-8859-1"),"gbk"); list.add(str); } model.addAttribute("errors",list); return"regist"; } //查看驗(yàn)證碼 StringsessionCode=(String)request.getSession().getAttribute( "checkcode");// System.out.println("adadadad"+sessionCode); if(!sessionCode.equalsIgnoreCase(checkImg)){// model.addAttribute("message","驗(yàn)證碼錯(cuò)誤請(qǐng)重新注冊(cè)"); thrownewzdyException("驗(yàn)證碼錯(cuò)誤請(qǐng)重新注冊(cè)"); } //開(kāi)始寫入數(shù)據(jù)庫(kù) userService.saveUser(user); //model.addAttribute("message","注冊(cè)成功請(qǐng)去郵箱激活"); model.addAttribute("message","注冊(cè)成功請(qǐng)登錄"); return"ms

5.2用戶登錄如圖5-2所示。圖5-2用戶登錄界面用戶登錄關(guān)鍵代碼://用戶登錄 @RequestMapping("/userLogin") publicStringuserLogin(HttpServletRequestrequest, @RequestParamStringcheckImg,Useruser,Modelmodel) throwszdyException,Exception{ StringsessionCode=(String)request.getSession().getAttribute( "checkcode"); if(!sessionCode.equalsIgnoreCase(checkImg)){ //model.addAttribute("message","驗(yàn)證碼輸入錯(cuò)誤請(qǐng)重新注冊(cè)"); //thrownewzdyException("驗(yàn)證碼輸入錯(cuò)誤請(qǐng)重新注冊(cè)"); request.getSession().setAttribute("message","驗(yàn)證碼輸入錯(cuò)誤請(qǐng)重新注冊(cè)"); return"redirect:login.action"; } UserloginUser=userService.loginFindByUnameAndPwd(user.getUsername(), user.getPassword()); if(loginUser==null){ //model.addAttribute("message","密碼輸入錯(cuò)誤請(qǐng)重新登陸"); request.getSession().setAttribute("message","密碼輸入錯(cuò)誤請(qǐng)重新登陸"); //thrownewzdyException("密碼輸入錯(cuò)誤請(qǐng)重新登陸"); return"redirect:login.action"; } request.getSession().setAttribute("loginUser",loginUser); request.getSession().removeAttribute("message"); return"redirect:index.action";

}5.3菜品展示用戶登錄成功后,可以在網(wǎng)站首頁(yè)看到各種各樣的菜品,其具體功能如圖5-3所示。圖5-3菜品展示頁(yè)面菜品展示關(guān)鍵代碼:

@RequestMapping("/index") publicStringindex(Modelmodel,HttpServletRequestrequest)throwsException{ //查詢一級(jí)分類 List<Category>cList=categoryService.findCategory(); request.getSession().getServletContext().setAttribute("cList",cList);// model.addAttribute("cList",cList); //查詢熱門商品 List<Product>hList=productService.findHotProduct(); model.addAttribute("hList",hList); //查詢最新商品 List<Product>nList=productService.findNewProduct(); model.addAttribute("nList",nList); //滾動(dòng)圖片專用,最多顯示3個(gè)商品 List<Product>sList; if(hList.size()>3) { sList=newArrayList<Product>(); sList.add(hList.get(0)); sList.add(hList.get(1)); sList.add(hList.get(2)); model.addAttribute("sList",sList); } else { model.addAttribute("sList",hList); } return"index"; }5.4菜品搜索用戶在系統(tǒng)搜索框中可以直接對(duì)菜品進(jìn)行準(zhǔn)確搜索,可以有效的減少用戶的選品時(shí)間,其界面圖如圖5-4和5-5所示。5-4搜索界面搜索功能關(guān)鍵代碼:@RequestMapping("/searchProduct") publicStringsearchProduct(@RequestParamStringcondition,Modelmodel,HttpServletRequestrequest)throwsException{ //查詢一級(jí)分類 List<Category>cList=categoryService.findCategory(); request.getSession().getServletContext().setAttribute("cList",cList); //查詢商品 List<Product>hList=productService.findHotProduct(); model.addAttribute("hList",hList); //搜索商品 List<Product>srList=productService.searchProduct(condition); model.addAttribute("srList",srList); //滾動(dòng)圖片專用,最多顯示3個(gè)商品 List<Product>sList; if(hList.size()>3) { sList=newArrayList<Product>(); sList.add(hList.get(0)); sList.add(hList.get(1)); sList.add(hList.get(2)); model.addAttribute("sList",sList); } else { model.addAttribute("sList",hList); } return"searchProdu

5.5菜品詳情展示用戶點(diǎn)擊商品可以進(jìn)入菜品的詳情頁(yè),查看菜品的具體信息,其界面展示如圖5-6所示。5-6菜品展示界面菜品展示關(guān)鍵代碼:@RequestMapping("/productFindByPid") publicStringproductFindByPid(@RequestParamintpid,Modelmodel)throwsException{ Productproduct=prodcutSductFindByPid(pid); model.addAttribute("product",product); return"product"; }5.6生成訂單在這個(gè)頁(yè)面上,我們可以實(shí)現(xiàn)以下功能:用戶點(diǎn)擊購(gòu)買之后,系統(tǒng)自動(dòng)生成訂單并展現(xiàn)在用戶的頁(yè)面中。其效果圖如圖5-7所示。5-7訂單生成界面訂單生成關(guān)鍵代碼:@RequestMapping("/toOrder") publicStringtoOrder(HttpServletRequestrequest,Modelmodel)throwsException{ Ordersorders=newOrders(); Cartcart=(Cart)request.getSession().getAttribute("cart"); UserloginUser=(User)request.getSession().getAttribute("loginUser"); if(loginUser==null){ model.addAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"msg"; }// 0表示沒(méi)有付款、1表示已付款即將發(fā)貨2表示確認(rèn)收貨3表示交易成功 orders.setState(0); //orders.setOrderTime(newDate());java.text.SimpleDateFormatsdf=newjava.text.SimpleDateFormat("yyyy-MM-dd");Stringtoday=sdf.format(newDate());orders.setOrderTime(sdf.parse(today)); orders.setUid(loginUser.getUid()); orders.setMoney(cart.getTotale()); orderService.toOrder(orders); Map<Integer,CartItem>cartItems=cart.getCartItem(); for(Entry<Integer,CartItem>entry:cartItems.entrySet()){ CartItemcartItem=entry.getValue(); Orderitemorderitem=newOrderitem(); orderitem.setProduct(cartItem.getProduct()); orderitem.setCount(cartItem.getCount()); orderitem.setPid(cartItem.getProduct().getPid()); orderitem.setSubtotal(cartItem.getSubtotle()); orderitem.setOid(orders.getOid()); orders.getOiList().add(orderitem); orderService.toOrderItem(orderitem); } cart.clearCart(); request.getSession().setAttribute("orders",orders); return"order"; }

}5.7用戶留言用戶可以登錄,并提出自己的意見(jiàn)反饋,有助于管理員更好的管理網(wǎng)站,其展示如圖5-8所示。5-8留言界面留言模塊關(guān)鍵代碼:@RequestMapping("/saveMessage") publicStringsaveMessage(@RequestParamStringmessageinfo,HttpServletRequestrequest,Modelmodel)throwsException{ MessageMessage=newMessage(); UserloginUser=(User)request.getSession().getAttribute("loginUser"); if(loginUser==null){ model.addAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"msg"; } java.text.SimpleDateFormatsdf=newjava.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Message.setMessage(messageinfo); Message.setUid(loginUser.getUid()); Message.setMessagedate(sdf.format(newDate())); messageService.insertMessage(Message); request.getSession().setAttribute("Message",Message); return"redirect:/messageList.action?page=1"; }}5.8管理員登陸管理員輸入正確賬號(hào)密碼進(jìn)入系統(tǒng),如果錯(cuò)誤則會(huì)對(duì)錯(cuò)誤信息進(jìn)行提示,管理員登錄如下圖5-9所示。5-9管理員登陸界面管理員登錄關(guān)鍵代碼://admin/adminUser_login.action//adminUser_login管理員登錄 @RequestMapping("/admin/adminUser_login") publicStringadminUser_login(HttpServletRequestrequest,Modelmodel,@RequestParamStringusername,@RequestParamStringpassword)throwsException{ AdminuseradminuserLogin=userService.adminUser_login(username,password); System.out.println(username); System.out.println(password); if(adminuserLogin==null){ model.addAttribute("message","改用戶未被授予管理員身份!"); return"admin/index"; } request.getSession().setAttribute("adminuserLogin",adminuserLogin);// model.addAttribute("adminuserLogin",adminuserLogin); return"admin/home"; }5.9用戶管理管理員可以在系統(tǒng)中,對(duì)信息進(jìn)行增刪改查操作,如圖5-10所示。5-10用戶管理界面用戶管理主要代碼如下:@RequestMapping("/admin/admin_findAll") publicStringadmin_findAll(Modelmodel,HttpServletRequestrequest)throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } List<User>userList=userService.admin_findAll(); model.addAttribute("userList",userList); return"admin/user/list"; } @RequestMapping("/admin/adminCategory_findAll") publicStringadminCategory_findAll(Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } List<Category>categoryList=categoryService.adminbFindCategory(); /*for(Categorycategory:categoryList){ System.out.println(category.getCname()); }*/ model.addAttribute("categoryList",categoryList); return"admin/category/list"; }5.10分類管理管理員登陸系統(tǒng)之后,可以看到分類管理模塊,管理員可以對(duì)菜品進(jìn)行分類管理,并直接出現(xiàn)在用戶的首頁(yè)中。具體如圖5-11.5-11分類管理界面分類管理關(guān)鍵代碼:@RequestMapping("/admin/adminCategory_findAll") publicStringadminCategory_findAll(Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } List<Category>categoryList=categoryService.adminbFindCategory(); /*for(Categorycategory:categoryList){ System.out.println(category.getCname()); }*/ model.addAttribute("categoryList",categoryList); return"admin/category/list"; }5.11商品管理 管理員進(jìn)入后臺(tái)管理系統(tǒng)之后,在商品管理模塊,管理員可以對(duì)商品進(jìn)行分詳細(xì)的管理,可編輯商品的詳情,也可增加商品和刪除商品,管理員進(jìn)行的操作直接出現(xiàn)在用戶的首頁(yè)中。具體如圖5-125-11商品管理界面商品管理核心代碼://admin的商品管理 @RequestMapping("/admin/adminProduct_findAllByPage") publicStringadminProduct_findAllByPage(@RequestParamintpage,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } PageBean<Product>allProPageBean=productService.findAllProduct(page); model.addAttribute("allProPageBean",allProPageBean); return"admin/product/list"; } @RequestMapping("/admin/adminProduct_addPage") publicStringadminProduct_addPage(Modelmodel,HttpServletRequestrequest)throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } //查詢出所有的二級(jí)分類 List<Categorysecond>cslist=categorySecondService.findAll(); /*for(Categorysecondcategorysecond:cslist){ System.out.println(categorysecond.getCsname()); }*/ model.addAttribute("cslist",cslist); return"admin/product/add"; }5.12訂單管理在系統(tǒng)中的訂單管理模塊,管理員可以對(duì)訂單進(jìn)行相關(guān)操作,具體如圖5-13.5-13訂單管理界面訂單管理核心代碼:/**訂單管理模塊**/ @RequestMapping("/admin/adminOrder_findAllByPage") publicStringadminOrder_findAllByPage(@RequestParamintpage,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } PageBean<Orders>allProPageBean=orderService.findAllOrderByStateAndPage(page); model.addAttribute("pageBean",allProPageBean); return"admin/order/list"; } //adminOrder_findByState @RequestMapping("/admin/adminOrder_findByState") publicStringadminOrder_findByState(@RequestParamintpage,@RequestParamintstate,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } PageBean<Orders>allProPageBean=orderService.findAllOrderByStateAndPage(state,page); model.addAttribute("pageBean",allProPageBean); return"admin/order/list"; } //訂單詳情 //adminOrder_findOrderItem @RequestMapping("/admin/adminOrder_findOrderItem") publicStringadminOrder_findOrderItem(@RequestParamintoid,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } OrdersorderItems=orderService.findOrderByOid(oid); model.addAttribute("orderItems",orderItems); return"admin/order/list"; }5.13留言管理在系統(tǒng)中的留言模塊,管理員可以對(duì)用戶的反饋進(jìn)行查看回復(fù)操作。具體如圖5-14.5-14留言管理界面留言核心代碼如下://后臺(tái)留言管理 @RequestMapping("/admin/adminMessage_findAllByPage") publicStringadminMessage_findAllByPage(@RequestParamintpage,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } PageBean<Message>pageBean=messageService.findAllMessageByPage(page); model.addAttribute("pageBean",pageBean); return"admin/message/list"; } @RequestMapping("/admin/adminMessage_delete") publicStringadminOrder_updateState(@RequestParamintmessageid,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對(duì)不起您還沒(méi)有登錄"); return"admin/index"; } messageService.deleteMessage(messageid); r

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論