




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
統(tǒng)的設計與實現(xiàn)———基于JSP的網(wǎng)上訂餐系統(tǒng)的設計與實現(xiàn)目錄TOC\o"1-3"\h\u189141緒論 3195741.1開發(fā)背景與意義 356351.2研究現(xiàn)狀 312651.3論文內(nèi)容及結(jié)構(gòu) 3222952系統(tǒng)開發(fā)技術和工具介紹 4160642.1開發(fā)工具簡介 4319122.2開發(fā)技術介紹 4303952.2.1Java簡介 4301622.2.2JSP簡介 4221552.2.3SSM簡介 5267743系統(tǒng)分析 6274563.1系統(tǒng)可行性分析 6308633.2系統(tǒng)需求分析 745283.3系統(tǒng)需求分析 7164693.4系統(tǒng)非功能性需求分析 9201594系統(tǒng)設計 9315224.1系統(tǒng)架構(gòu)設計 9151084.2系統(tǒng)總體設計 921604.3數(shù)據(jù)庫設計 993114.3.1概念模型設計 104244.3.2數(shù)據(jù)庫表設計 12239365系統(tǒng)實現(xiàn) 1566765.1用戶注冊 15129135.2用戶登錄 169575.3菜品展示 17293435.4菜品搜索 18102015.5菜品詳情展示 20173985.6生成訂單 20143195.7用戶留言 22204885.9用戶管理 2412485.10分類管理 2590575.12訂單管理 27131715.13留言管理 2862536系統(tǒng)測試 30251186.1系統(tǒng)測試 30129586.2系統(tǒng)維護 30128236.3測試目的 30132356.4測試實例 30301996.5測試結(jié)果 3117490參考文獻 321緒論本章主要對網(wǎng)上訂餐系統(tǒng)進行詳細的描述,較為完整地介紹了該系統(tǒng)的開發(fā)背景,意義以及研究現(xiàn)狀。1.1開發(fā)背景與意義近年來,隨著人們?nèi)粘9ぷ?、生活腳步的加快,越來越多的人們都會選擇網(wǎng)上訂餐,因此網(wǎng)上訂餐已經(jīng)越來越受人們的歡迎。通過網(wǎng)上訂餐的方式,人們不僅可以通過電腦、手機等選擇自己喜歡的食物,而且可以節(jié)約大量的時間,極大地方便的人們的日常生活。就目前而言,像“美團”、“餓了么”等這些網(wǎng)上訂餐的平臺,已經(jīng)得到了很多人的青睞。因此,本次畢業(yè)設計決定開發(fā)這款“網(wǎng)上訂餐系統(tǒng)”,該系統(tǒng)的開發(fā)順應時代發(fā)展的潮流,能夠滿足人們?nèi)粘5男枨蟆?.2研究現(xiàn)狀黃信洋(2019)指出伴隨著我們現(xiàn)代高科技的快速發(fā)展,計算機的應用在當代的生活中日益廣泛,已經(jīng)逐漸深入人們的生活,網(wǎng)絡技術與各個服務行業(yè)的連接日漸加強,各種方便的軟件逐個被開發(fā)應用到現(xiàn)實生活中,在這樣的大前提下,各個服務行業(yè)的前景也被無限放大[1]。楊彤蕾,李建(2018)指出隨著計算機和網(wǎng)絡的日趨發(fā)展,網(wǎng)上店鋪如雨后春筍般出現(xiàn),就連沃爾瑪,金拱門這一類老品牌的商家都開拓了自己的網(wǎng)上購物渠道,有調(diào)查表明:無論是中國還是西方國家,越來越的用戶已經(jīng)習慣于網(wǎng)絡購物,人們的消費平臺逐漸開始向虛擬世界轉(zhuǎn)移,而網(wǎng)上訂餐是其中重要的一環(huán),發(fā)展網(wǎng)絡訂餐平臺已經(jīng)成為了新的時代的新的需求[2]。ZimmerMeghanC.,BeairdJacob,SteevesElizabethT.Anderson(2020)指出電子商務的網(wǎng)上實踐是從銷售開始的,“網(wǎng)上訂餐系統(tǒng)”打破了傳統(tǒng)的食品銷售形式,將和網(wǎng)絡結(jié)合成一種典型的電子商務網(wǎng)站運作,能夠直接繞過中間商,建立與客戶的直接關系,“網(wǎng)上訂餐系統(tǒng)”可以為用戶提供商品的詳細信息,用戶可以在線購買商品、創(chuàng)建訂單,可以瀏覽商品的詳細信息、添加備注等[5]。1.3論文內(nèi)容及結(jié)構(gòu)本論文一共由七章組成,以下是對論文中每個章節(jié)的概述:(1)緒論本章節(jié)主要從開發(fā)網(wǎng)上訂餐系統(tǒng)的背景、意義、以及系統(tǒng)的發(fā)展狀況進行分析,詳細描述了系統(tǒng)的在哪些方面能得到的應用。(2)系統(tǒng)開發(fā)環(huán)境介紹本章節(jié)主要介紹了設計該系統(tǒng)時使用的開發(fā)工具、技術詳情、以及數(shù)據(jù)庫概念和特點。(3)系統(tǒng)分析進行系統(tǒng)分析,先從需求分析開始,進而進行可行性分析、角色劃分、角色功能分析等。(4)系統(tǒng)設計這一章節(jié)是對要開發(fā)的網(wǎng)上訂餐系統(tǒng)進行設計,包括了系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)庫的設計,并用圖片和表格的形式進行展現(xiàn)出來。(5)系統(tǒng)的實現(xiàn)開發(fā)出的系統(tǒng)的主要界面進行展示。(6)系統(tǒng)測試這一章節(jié)是對程序進行最后的測試,通過測試發(fā)現(xiàn)問題,進而完善系統(tǒng)。通過輸入不同組的測試數(shù)據(jù)進行測試的功能模塊測試。(7)結(jié)束語本章節(jié)主要是對本次系統(tǒng)設計進行總結(jié),以及對未來發(fā)展方向的展望。2系統(tǒng)開發(fā)技術和工具介紹本次畢業(yè)設計基于B/S模式,主要運用Java編程語言、HTML語言、SSM框架、JS、JSP等技術,采用MySQL做為數(shù)據(jù)庫、Tomcat做為服務器和Eclipse開發(fā)工具實現(xiàn),詳細介紹如下。2.1開發(fā)工具簡介該系統(tǒng)是用Eclipse進行開發(fā)的,Eclipse是一個基于Java的、開放源碼的、可擴展的應用開發(fā)平臺,它為編程人員提供了一流的Java集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)。在Eclipse的官方網(wǎng)站中提供了一個JavaEE版的EclipseIDE。應用EclipseIDEforJavaEE,既可以創(chuàng)建Java項目,也可以創(chuàng)建動態(tài)Web項目[7]。Tomcat是一個輕微型服務器,主要用于Web項目的開發(fā),是開發(fā)和調(diào)試JSP程序的首選[9]。它是開發(fā)JSP程序的首選,同時也是調(diào)試JSP程序的首選。Tomcat服務器實際上是Apache服務器的擴展,但它在運行時獨立運行[8]。Tomcat是世界上廣泛使用并支持JSP和Servlet的Web服務器,因此,在本次畢業(yè)設計中,我選擇了使用Tomcat作為服務器。2.2開發(fā)技術介紹2.2.1Java簡介Java是一款目前流行性很強的開發(fā)語言,無論在手機方面還是互聯(lián)網(wǎng)方面,Java都應用廣泛。這一款語言和C++很像,但Java摒棄了C++中很少使用的一些特征,繼續(xù)保持C++語言受人們喜歡的一些優(yōu)點:快速、安全。在使用Java進行開發(fā)程序時,Java面向?qū)ο蟮奶攸c,可以讓開發(fā)人員簡單的使用,省去一些沒有必要的操作,這樣一來就可以節(jié)約時間,讓開發(fā)人員可以用更多的時間精力來進行程序的研究[11]。2.2.2JSP簡介JSP的擴展全稱是JavaServerPages,是多個公司合作得以建立的一種動態(tài)網(wǎng)頁技術標準。它是對Servlet的擴展,主要是為了簡化開發(fā)Web程序的過程而產(chǎn)生的[12]。JSP頁面由html的代碼語句和嵌套在頁面中的Java語句構(gòu)成。它降低了對瀏覽器端的要求,因為服務器端承擔了對程序的所有操作,而瀏覽器端只是呈現(xiàn)對系統(tǒng)操作后頁面運行的效果。JSP這一技術的引入,主要原因是為了彌補servlet不方便展示信息的缺點,但它在本質(zhì)上來說,也還是一個servlet。利用JSP能夠使得開發(fā)出的程序具有動態(tài)、高性能的特點。在運行JSP項目時,需要安裝服務器tomcat,它是JSP常用的一個引擎,免費而且開源,所以利用JSP開發(fā)的程序費用方面不用考慮。除了這一點,JSP還有很多優(yōu)勢,這也是為什么選用JSP來開發(fā)本本系統(tǒng)的原因。(1)ASP有專用語言的限制,而JSP沒有,可用Java編寫,同時還有很強的可移植性能。(2)JSP還能對很多網(wǎng)頁格式進行支持。(3)在JSP程序開發(fā)中使用了Java,所以說,也有了Java的所有好處,包括編寫一次就能處處都使用、安全性能高等。2.2.3SSM簡介SSM框架指的是Spring框架、MyBatis框架、SpringMVC框架,它們?nèi)齻€都是開源框架,所以它也是一個開源框架。這三個中的Spring是輕量級的,主要有控制反轉(zhuǎn)(IOC)和面向切面(AOP)兩大技術點,而SpringMVC為Spring的一個后續(xù)產(chǎn)品,它將控制器、模型對象、分派器和處理程序?qū)ο蟮慕巧蛛x開來從而使它們定制起來更容易[13]。第三個框架MyBatis是支持SQL查詢的持久層的框架,并支持存儲過程、高級映射等。Spring是一個輕量式、低侵入式的框架。大部分Java程序都因為Spring而得到便捷,不僅僅在開發(fā)服務器上,還有簡單性、可測試性和松耦合這些地方,都是獲益良多的[14]。SpringMVC模塊響應圖如圖2-1所示。圖2-1SpringMVC模塊響應圖Mybatis的三層功能架構(gòu):(1)基礎支持層:通過負責數(shù)據(jù)庫連接、配置加載、緩存處理和事務管理這些部分來為上層提供支持。(2)數(shù)據(jù)處理層:通過負責生成SQL語句并對其進行解析、執(zhí)行、處理結(jié)果映射等。(3)API接口層:給開發(fā)人員提供了大量API接口,從而與其他層協(xié)作對數(shù)據(jù)庫進行一系列操作。下面是三層功能架構(gòu)圖,如圖2-2所示。圖2-2MyBatis三層功能架構(gòu)圖Mybatis的框架應用架構(gòu):(1)加載配置:編寫配置文件mybatis-config.xml,包括:數(shù)據(jù)庫連接、ORM映射、事務處理和緩存方式。(2)SQL解析:通過SqlSessionFactory建立SqlSession會話實例。(3)結(jié)果映射:將執(zhí)行結(jié)果按照配置好的映射到結(jié)果集并返回。3系統(tǒng)分析這一章主要是對系統(tǒng)的的功能做了可行性分析和需求分析。分析了該在線訂餐實現(xiàn)的功能以及完成這個項目后想要達到什么樣的效果。3.1系統(tǒng)可行性分析系統(tǒng)的可行性分析是系統(tǒng)分析過程中的一個步驟。它是系統(tǒng)開發(fā)之前的一個環(huán)節(jié)。這個鏈接不是為了實現(xiàn)系統(tǒng),而是通過簡單的分析過程進行可行和深入的調(diào)查。從任務開始,系統(tǒng)的設計是可行的,并且還可以將設計的系統(tǒng)直接放置在穩(wěn)定的服務器上。以下會從以下三個方面來入手。技術可行性在Java+MySQL的基礎上,對本科學習階段學習到的技術進行了深入研究,一些框架知識將更簡單,更易學。因此,從MVC框架技術應用學習框架也有利于SPRING技術的操作和使用[10]。另外,經(jīng)過我們的分析和考慮,通過一定的研究和分析可以解決上述難點和問題。經(jīng)濟可行性該系統(tǒng)效益可觀。該系統(tǒng)估計項目的編寫、運營和維護成本,估計未來收益以及成本是否高于收入。最后,認為該系統(tǒng)在經(jīng)濟上是可行的。法律可行性分析在任何情況下都不能越過法律的界限,本系統(tǒng)的開發(fā)在法律方面符合法律要求,分析系統(tǒng)是否涉及侵權、合同、責任向抵觸的問題,避免出現(xiàn)。拓展可行原則系統(tǒng)在開發(fā)中要考慮后期的維護,對于拓展性方面,代碼是否可以進行拓展和文本復用,隨著人們需求的不斷提高,系統(tǒng)也要結(jié)合實際進行不斷升級,保證系統(tǒng)拓展后可以正常使用,數(shù)據(jù)可以存儲大量信息。操作者如果需要添加、修改和刪除功能,如果系統(tǒng)拓展差的話,系統(tǒng)可能會奔潰,導致不必要的麻煩的產(chǎn)生,所有我們在開發(fā)前期就應該想到系統(tǒng)的拓展性能,必須能夠達到要求[11]。3.2系統(tǒng)需求分析網(wǎng)上訂餐系統(tǒng)市場的潛力巨大,改變傳統(tǒng)管理方式勢在必行,推出可行的系統(tǒng)也很緊迫。用戶需要實現(xiàn)的具體功能如下:用戶注冊:游客可以在注冊頁面注冊賬號。用戶登錄:輸入已經(jīng)擁有的賬號進入。菜品展示:用戶可在首頁看到菜品的展示。搜索:用戶可以在首頁進行搜索自己心儀的商品。菜品詳情展示:用戶點擊商品可以進入菜品的詳情頁,查看菜品的具體信息。生成訂單:用戶點擊購買之后,系統(tǒng)自動生成訂單并展現(xiàn)在用戶的頁面中。發(fā)布留言:用戶可以對管理員進行留言,有助于管理員更好的管理網(wǎng)站。管理員需要實現(xiàn)的具體功能如下:(1)管理員登錄:管理員可以在登陸頁面進入網(wǎng)站后臺管理系統(tǒng)。(2)用戶管理:管理員可以在此模塊對用戶的信息進行查詢、修改、刪除等操作。(3)分類管理:管理員可以對菜品進行分類管理,并直接出現(xiàn)在用戶的首頁中。(4)商品管理:管理員可以對商品進行分詳細的管理,可編輯商品的詳情,也可增加商品和刪除商品,管理員進行的操作直接出現(xiàn)在用戶的首頁中。(5)訂單管理:管理員可以在此模塊對用戶產(chǎn)生的訂單進行查看編輯等具體的操作管理(6)留言管理:管理員進入后臺管理系統(tǒng)后,可以對用戶的留言進行查看和相關操作。3.3系統(tǒng)需求分析根據(jù)對系統(tǒng)的功能分析,我們通過用例圖對系統(tǒng)進行描述。用戶用例圖圖如圖3-1所示。圖3-1用戶用例圖管理員用例圖如圖3-2所示。圖3-2管理員用例圖3.4系統(tǒng)非功能性需求分析系統(tǒng)非功能分析是對除了功能結(jié)構(gòu)以外的信息進行分析,一個系統(tǒng)設計很多方面,我們需要保證所有信息都完善、確保穩(wěn)定,能夠正常運行。1、數(shù)據(jù)完整。我們要保證數(shù)據(jù)的完整,保證數(shù)據(jù)沒有亂碼出現(xiàn),數(shù)據(jù)庫中所有信息都可以進行前端展示。2、頁面美觀簡潔。對頁面的設計關系用戶的體驗,我們要保證頁面設計簡單易操作,用戶可以很快的熟悉系統(tǒng),進行購買。3、邏輯性。系統(tǒng)邏輯不能出現(xiàn)錯誤,第一步到第二部再到第三部,必須符合正常邏輯思維。4系統(tǒng)設計當系統(tǒng)分析完成之后,所需要做的就是對系統(tǒng)的詳細設計。本章節(jié)的目的就是從邏輯和物理層面考慮搭建出可以實現(xiàn)的系統(tǒng)框架,方便后期的實現(xiàn)。4.1系統(tǒng)架構(gòu)設計我們采用了B/S,采用B/S模式不僅可以避免用戶必須安裝專業(yè)軟件才能開發(fā)系統(tǒng)或者訪問系統(tǒng)的局限性,而且更加便利。4.2系統(tǒng)總體設計系統(tǒng)總體功能結(jié)構(gòu)圖如圖4-1所示。圖4-1系統(tǒng)功能結(jié)構(gòu)圖4.3數(shù)據(jù)庫設計簡而言之,數(shù)據(jù)庫設計就是根據(jù)業(yè)務系統(tǒng)和您選擇的DBMS的需求設計最佳的數(shù)據(jù)存儲模型。4.3.1概念模型設計數(shù)據(jù)庫在程序的設計中扮演了重要的角色,它將系統(tǒng)涉及的數(shù)據(jù)全部容納其中,在數(shù)據(jù)庫設計時,為了能夠明確思路,一般都是先構(gòu)建實體E-R圖,在構(gòu)建實體E-R圖時采取先確定好實體,再規(guī)劃實體屬性的方法。實體:實體就是指可以摸到的存在的具有區(qū)分其他事物的特性或?qū)傩圆⑴c其他實體有聯(lián)系的實體。屬性可以理解為實體的特征,以下為本購物網(wǎng)站的相關實體介紹。(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)惠價格、商店標價、商品圖路徑、詳情、上架時間,商品實體E-R圖如圖4-5所示。圖4-5商品實體圖(5)用戶實體包括ID、用戶昵稱、密碼、姓名、郵箱、電話、地址,用戶實體E-R圖如圖4-6所示。圖4-6用戶實體圖4.3.2數(shù)據(jù)庫表設計以下為系統(tǒng)中使用的數(shù)據(jù)庫表信息。(1)管理員表:用來存放管理員的基本信息,包括管理員ID、用戶名、密碼等信息。客戶表如表4-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)惠價格、商店標價、商品圖路徑、商品詳情、上架時間等相關信息。商品表如表4-4所示。表4-4商品表序號列名數(shù)據(jù)類型長度備注1pidint11ID2pnamevarchar255商品名3Market_pricevarchar255優(yōu)惠價格4Shop_pricevarchar255商店標價5imagevarchar255商品圖路徑6pdescevarchar255商品詳情7pdatevarchar255上架時間(5)用戶表:用于用戶的基本信息,包括ID、用戶昵稱、密碼、姓名、郵箱、電話、地址等相關信息。課程表如表4-5所示。表4-5用戶表序號列名數(shù)據(jù)類型長度備注1uidint11ID2usernamevarchar255用戶昵稱3passwordvarchar255密碼4namevarchar255用戶姓名5emailvarchar255郵箱6phoneint255電話7addrvarchar255地址
5系統(tǒng)實現(xiàn)為了將本系統(tǒng)的實現(xiàn)更詳細的進行介紹,本章節(jié)對各個功能模塊進行詳細的展示和介紹。該網(wǎng)上訂餐系統(tǒng)各模塊的具體功能實現(xiàn)如下。5.1用戶注冊游客可以在此頁面進行賬號注冊,便于系統(tǒng)管理員更好的管理系統(tǒng),游客注冊之后具有標識性,用戶注冊頁面如圖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"ms
5.2用戶登錄如圖5-2所示。圖5-2用戶登錄界面用戶登錄關鍵代碼://用戶登錄 @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菜品展示頁面菜品展示關鍵代碼:
@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)搜索框中可以直接對菜品進行準確搜索,可以有效的減少用戶的選品時間,其界面圖如圖5-4和5-5所示。5-4搜索界面搜索功能關鍵代碼:@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"searchProdu
5.5菜品詳情展示用戶點擊商品可以進入菜品的詳情頁,查看菜品的具體信息,其界面展示如圖5-6所示。5-6菜品展示界面菜品展示關鍵代碼:@RequestMapping("/productFindByPid") publicStringproductFindByPid(@RequestParamintpid,Modelmodel)throwsException{ Productproduct=prodcutSductFindByPid(pid); model.addAttribute("product",product); return"product"; }5.6生成訂單在這個頁面上,我們可以實現(xiàn)以下功能:用戶點擊購買之后,系統(tǒng)自動生成訂單并展現(xiàn)在用戶的頁面中。其效果圖如圖5-7所示。5-7訂單生成界面訂單生成關鍵代碼:@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表示確認收貨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-8所示。5-8留言界面留言模塊關鍵代碼:@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管理員登陸管理員輸入正確賬號密碼進入系統(tǒng),如果錯誤則會對錯誤信息進行提示,管理員登錄如下圖5-9所示。5-9管理員登陸界面管理員登錄關鍵代碼://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)中,對信息進行增刪改查操作,如圖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","對不起您還沒有登錄"); 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)之后,可以看到分類管理模塊,管理員可以對菜品進行分類管理,并直接出現(xiàn)在用戶的首頁中。具體如圖5-11.5-11分類管理界面分類管理關鍵代碼:@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商品管理 管理員進入后臺管理系統(tǒng)之后,在商品管理模塊,管理員可以對商品進行分詳細的管理,可編輯商品的詳情,也可增加商品和刪除商品,管理員進行的操作直接出現(xiàn)在用戶的首頁中。具體如圖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","對不起您還沒有登錄"); 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)中的訂單管理模塊,管理員可以對訂單進行相關操作,具體如圖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","對不起您還沒有登錄"); 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)中的留言模塊,管理員可以對用戶的反饋進行查看回復操作。具體如圖5-14.5-14留言管理界面留言核心代碼如下://后臺留言管理 @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"; } messageService.deleteMessage(messageid); r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三寶一券測試題及答案
- 文物拓片售賣合同協(xié)議書
- 學校建設合作合同協(xié)議書
- 凈水器合同協(xié)議書
- 便利店新零售模式下的智能化供應鏈協(xié)同報告
- 家庭教育指導服務行業(yè)供需關系重構(gòu)與市場前景展望報告:2025年深度分析
- 大四法學面試題及答案
- 口腔預防科考試題及答案
- 數(shù)字化浪潮下2025年能源行業(yè)智能電網(wǎng)優(yōu)化與轉(zhuǎn)型發(fā)展報告
- 新能源汽車生產(chǎn)基地產(chǎn)業(yè)協(xié)同發(fā)展與初步設計規(guī)劃研究報告
- 王春武-農(nóng)藥干懸浮劑(DF)項目研究與開發(fā)
- 幼兒啟蒙12電子狗機器人課件
- 《好的數(shù)學:數(shù)的故事》讀書筆記模板
- 2023國家開放大學:《人文英語1》形考答案解析5-8unit
- 土溶洞處理監(jiān)理實施細則
- 道路危險貨物運輸安全標準化手冊
- 名校版初中物理“公式+考點+方法技巧”大匯編
- 醫(yī)院消毒供應中心CSSD??浦R《CSSD器械消毒與干燥方式的正確選擇》精美培訓課件
- 杠桿(CA1340自動車床)加工工藝及夾具設計
- NB-T 10316-2019 風電場動態(tài)無功補償裝置并網(wǎng)性能測試規(guī)范
- GB/T 9444-2019鑄鋼鑄鐵件磁粉檢測
評論
0/150
提交評論