【基于JSP的在線訂餐系統(tǒng)設(shè)計與實現(xiàn)9400字(論文)】_第1頁
【基于JSP的在線訂餐系統(tǒng)設(shè)計與實現(xiàn)9400字(論文)】_第2頁
【基于JSP的在線訂餐系統(tǒng)設(shè)計與實現(xiàn)9400字(論文)】_第3頁
【基于JSP的在線訂餐系統(tǒng)設(shè)計與實現(xiàn)9400字(論文)】_第4頁
【基于JSP的在線訂餐系統(tǒng)設(shè)計與實現(xiàn)9400字(論文)】_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

@RequestMapping("/index") publicStringindex(Modelmodel,HttpServletRequestrequest)throwsException{ //查詢一級分類 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); //滾動圖片專用,最多顯示3個商品 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)搜索框中可以直接對菜品進(jìn)行準(zhǔn)確搜索,可以有效的減少用戶的選品時間,其界面圖如圖5-4所示。圖5-4搜索界面搜索功能關(guān)鍵代碼:@RequestMapping("/searchProduct") publicStringsearchProduct(@RequestParamStringcondition,Modelmodel,HttpServletRequestrequest)throwsException{ //查詢一級分類 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); //滾動圖片專用,最多顯示3個商品 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"searchProdu5.5菜品詳情展示用戶點擊商品可以進(jìn)入菜品的詳情頁,查看菜品的具體信息,其界面展示如圖5-5所示。圖5-5菜品展示界面菜品展示關(guān)鍵代碼:@RequestMapping("/productFindByPid") publicStringproductFindByPid(@RequestParamintpid,Modelmodel)throwsException{ Productproduct=prodcutSductFindByPid(pid); model.addAttribute("product",product); return"product"; }5.6生成訂單在這個頁面上,我們可以實現(xiàn)以下功能:用戶點擊購買之后,系統(tǒng)自動生成訂單并展現(xiàn)在用戶的頁面中。其效果圖如圖5-6所示。圖5-6訂單生成界面訂單生成關(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","對不起您還沒有登錄"); return"msg"; }// 0表示沒有付款、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用戶留言用戶可以登錄,并提出自己的意見反饋,有助于管理員更好的管理網(wǎng)站,其展示如圖5-7所示。圖5-7留言界面留言模塊關(guān)鍵代碼:@RequestMapping("/saveMessage") publicStringsaveMessage(@RequestParamStringmessageinfo,HttpServletRequestrequest,Modelmodel)throwsException{ MessageMessage=newMessage(); UserloginUser=(User)request.getSession().getAttribute("loginUser"); if(loginUser==null){ model.addAttribute("message","對不起您還沒有登錄"); 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管理員登陸管理員輸入正確賬號密碼進(jìn)入系統(tǒng),如果錯誤則會對錯誤信息進(jìn)行提示,管理員登錄如下圖5-9所示。圖5-8管理員登陸界面管理員登錄關(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)中,對信息進(jìn)行增刪改查操作,如圖5-9所示。圖5-9用戶管理界面用戶管理主要代碼如下:@RequestMapping("/admin/admin_findAll") publicStringadmin_findAll(Modelmodel,HttpServletRequestrequest)throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對不起您還沒有登錄"); 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","對不起您還沒有登錄"); 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)之后,可以看到分類管理模塊,管理員可以對菜品進(jìn)行分類管理,并直接出現(xiàn)在用戶的首頁中。具體如圖5-10.圖5-10分類管理界面分類管理關(guān)鍵代碼:@RequestMapping("/admin/adminCategory_findAll") publicStringadminCategory_findAll(Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對不起您還沒有登錄"); 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ǒng)之后,在商品管理模塊,管理員可以對商品進(jìn)行分詳細(xì)的管理,可編輯商品的詳情,也可增加商品和刪除商品,管理員進(jìn)行的操作直接出現(xiàn)在用戶的首頁中。具體如圖5-11圖5-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","對不起您還沒有登錄"); 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","對不起您還沒有登錄"); return"admin/index"; } //查詢出所有的二級分類 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)中的訂單管理模塊,管理員可以對訂單進(jìn)行相關(guān)操作,具體如圖5-12.圖5-12訂單管理界面訂單管理核心代碼:/**訂單管理模塊**/ @RequestMapping("/admin/adminOrder_findAllByPage") publicStringadminOrder_findAllByPage(@RequestParamintpage,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對不起您還沒有登錄"); 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","對不起您還沒有登錄"); 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","對不起您還沒有登錄"); return"admin/index"; } OrdersorderItems=orderService.findOrderByOid(oid); model.addAttribute("orderItems",orderItems); return"admin/order/list"; }5.13留言管理在系統(tǒng)中的留言模塊,管理員可以對用戶的反饋進(jìn)行查看回復(fù)操作。具體如圖5-13.圖5-13留言管理界面留言核心代碼如下://后臺留言管理 @RequestMapping("/admin/adminMessage_findAllByPage") publicStringadminMessage_findAllByPage(@RequestParamintpage,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對不起您還沒有登錄"); 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","對不起您還沒有登錄"); return"admin/index"; } m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論