版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第I頁基于JSP的網上訂餐系統的設計與實現摘要隨著計算機科學技術的快速發展,電子商務的發展,影響各行各業的發展。近年來,人們生活速度的加快,網上訂餐已經成為人們日常生活中越來越熱枕的方式。通過網上訂餐,人們不僅可以實現在線選餐、送貨上門的服務,而且也可以避免浪費大量的時間。網上訂餐是繼網上購物以來又一新型的電子商務形式。通過網上訂餐的形式,可以快速在線訂購自己喜歡的美食,方便、快捷。本文從用戶的需求出發,結合電子商務行業系統的發展特點,先了解了網上訂餐背景,解決了菜品的發布、菜單選擇以及總體的核算、菜品分類等問題。然后,介紹了與這篇文章相關的系統開發技術,利用當下主流框架SSM,并用功能強大的MySQL支持數據庫。關鍵詞:網上訂餐,Java,MySQL目錄1緒論 11.1開發背景與意義 11.2研究現狀 11.3論文內容及結構 12系統開發技術介紹 32.1開發技術介紹 32.1.1Java簡介 32.2.2JSP簡介 32.2.1SSM的介紹 33系統分析 63.1系統可行性分析 63.2系統需求分析 73.3系統需求分析 73.4系統非功能性需求分析 84系統設計 104.1系統架構設計 104.2系統的總體構思 104.3數據庫設計 104.3.1概念模型設計 114.3.2數據庫表設計 135系統實現 165.1用戶注冊 165.2用戶登錄 165.3菜品展示 185.4菜品搜索 185.5菜品詳情展示 205.6生成訂單 215.7用戶留言 235.8管理員登陸 235.9用戶管理 255.10分類管理 265.11貨物管理 275.12訂單管理 285.13用戶的反饋管理 296系統測試 296.1系統測試 296.2系統維護 306.3測試目的 306.4測試實例 316.5測試結果 317結束語 32參考文獻 34附錄 351緒論1.1開發背景與意義本章主要對網上訂餐系統進行詳細的描述,較為完整地介紹了該系統的開發產生的條件,意義以及現在面臨的情況。近年來,隨著人們生活步伐的加快,越來越多的人們都會選擇網上訂餐,因此網上訂餐已經越來越受人們的歡迎。通過網上訂餐的方式,人們不僅可以通過電腦、手機等選擇自己想要選擇的食品,而且可以避免浪費大量的時間。就目前而言,像“美團”、“餓了么”等這些網上訂餐的平臺,擁有了很大的好評度。所以這次的畢業設計我的選題是“網上訂餐系統”,該系統的開發是與時俱進順應當今社會的潮流和趨勢,能夠滿足人們日常的需求。1.2研究現狀黃信洋指出伴隨著我們現代高科技的快速發展,計算機的應用在當代的生活中日益廣泛,已經逐漸深入人們的生活,網絡技術與各個服務行業的連接日漸加強,各種方便的軟件逐個被開發應用到現實生活中,在這樣的大前提下,各個服務行業的前景也被無限放大[1]。楊彤蕾指出隨著計算機和網絡的日趨發展,網上店鋪如雨后春筍般出現,就連沃爾瑪,金拱門這一類老品牌的商家都開拓了自己的網上購物渠道,有調查表明:無論是中國還是西方國家,越來越的用戶已經習慣于網絡購物,人們的消費平臺逐漸開始向虛擬世界轉移,而網上訂餐是其中重要的一環,發展網絡訂餐平臺已經成為了新的時代的新的需求[2]。1.3論文內容及結構本論文一共由六章組成,下面是對于各部分的描述:(1)緒論該節主要從對網上訂餐系統的產生的條件、實際的意義、還有以及系統的發展狀況進行的總結與敘述,同時我們也在系統的應用方面著手進行闡述。(2)系統的具體分析想要進行系統的具體分析,首先我們要先從用戶的需求分析出手,然后進行可行性分析、角色劃分、角色功能分析等。(3)系統設計我們針對系統的結構以及數據庫的方面入手,然后設計和實現出我們要做的網上訂餐系統,我們還會用圖片等形式向大家展示出來,方便讀閱。(4)系統的實現開發出的系統的主要界面進行展示。(5)系統測試此章節是我們讓所作出的程序進入最后的測試階段,通過具體的測試發現問題,然后用來更新完善我們的系統。我們會針對不同的模塊設計出相應的測試用例,從而做到對系統的查漏補缺。(6)結束語該部分是對設計系統的過程中遇到的問題和解決方法的總結,對未來性的期望。2系統開發技術介紹2.1開發技術介紹2.1.1Java簡介Java是一款目前流行性很強的開發語言,無論在手機方面還是互聯網方面,Java都應用廣泛。這一款語言和C++很像,但Java摒棄了C++中很少使用的一些特征,繼續保持C++語言受人們喜歡的一些優點:快速、安全。2.2.2JSP簡介JSP這一技術的引入,主要原因是為了彌補servlet不方便展示信息的缺點,但它在本質上來說,也還是一個servlet。利用JSP能夠使得開發出的程序具有動態、高性能的特點。在運行安裝tomcat,tomcat免費而且開源,所以利用JSP開發的程序費用方面不用考慮。除了這一點,JSP還有很多優勢,這也是為什么選用JSP來開發本本系統的原因。(1)ASP有專用語言的限制,而JSP沒有,可用Java編寫,同時還有很強的可移植性能。(2)JSP還能對很多網頁格式進行支持。(3)在JSP程序開發中使用了Java,所以說,也有了Java的所有好處,包括編寫一次就能處處都使用、安全性能高等。2.2.1SSM的介紹Spring是一個輕量式、低侵入式的框架。這個框架可以減少開發的復雜程度,同時在去除此框架后,我們只需要更改一些配置信息就可以了,大大方便了我們的開發。SpringMVC模塊響應圖如圖2.1所示。圖2.1SpringMVC模塊響應圖Mybatis的三層功能架構:(1)基礎支持層:通過負責數據庫連接、配置加載、緩存處理和事務管理這些部分來為表層提供支持。(2)數據處理層:SQL語句的生成,并對其進行處理。(3)API接口層:給我們的開發提供了大量API接口,并和其他層共同對數據庫進行操作。下面是三層功能架構圖,如圖2-2所示。圖2.2MyBatis三層功能架構圖
3系統分析我們針對我們所對系統設計的功能做出相應的可行性的分析以及對客戶的需求分析。主要分析了我們這個系統中所實現的一些功能和對這個項目完成后能達到什么樣子的效果的展望。3.1系統可行性分析系統可行性分析工作就是對系統進行分析的全過程中必須要做的一個操作。它在進行系統設計與開發前的第一個環節。這個連接不僅僅是為了完成一個系統,而是通過簡單的數據分析流程來對其進行可以及深入地研究。從任務開始,系統的設計是可行的,并且還可以將設計的系統直接放置在穩定的服務器上。以下會從以下三個方面來入手。技術可行性在Java+MySQL的基礎上,然后通過知識的積累學習,學習和掌握spring框架。經過我們的分析和考慮,通過一定的研究和分析可以解決上述難點和問題。經濟可持續性研究我們所設計的這個系統的經濟效益是相對可觀的,我們在對項目的編寫、運維成本進行估計后,最后認為該系統在經濟上是可行的。拓展可行原則系統在開發中要考慮后期的維護,對于拓展性方面,代碼是否可以進行拓展和文本復用,隨著人們需求的不斷提高,系統也要結合實際進行不斷升級,保證系統拓展后可以正常使用,數據可以存儲大量信息。操作者如果需要添加、修改和刪除功能,如果系統拓展差的話,系統可能會奔潰,導致不必要的麻煩的產生,所有我們在開發前期就應該想到系統的拓展性能,必須能夠達到要求[11]。3.2系統需求分析網上訂餐系統市場的潛力巨大,改變傳統管理方式勢在必行,推出可行的系統也很緊迫。用戶的具體功能如下:用戶注冊:游客可以在注冊頁面注冊賬號。用戶登錄:輸入已經擁有的賬號進入。陳列菜品:使用者可以在我們的系統首頁面看到我們所陳列的美食。菜品搜索:我們的用戶可以根據自己中意的口味對菜品進行搜尋,從而找到適合自己的口味,方便了選擇困難癥的人群。商品詳情的查看:使用者可以在挑選商品的過程中對每個商品的細節進行觀看。生成訂單:我們的客戶在選擇好商品后下單,我們的系統要對此筆訂單開具證明(自動生成)并展現在用戶的頁面中。發布留言:用戶可以對管理員進行留言,有助于管理員更好的管理網站。下面是為了滿足管理員需求而需要實現的具體功能:(1)登錄功能:管理者可以通過登錄指令進入到網上訂餐系統的后臺界面。(2)管理功能:我們這個系統的管理功能分為四小塊兒:①對使用此網站的用戶的管理:管理者可通過后臺對用戶的信息進行增刪改查操作;②對網站中的商品進行有效的分類:使用者可以通過后臺管理系統對相同類型的菜品進行分類,同時直接出現在用戶的首頁中;③對商品的管理:管理者可以在后臺系統中對商品進行相應的操作,同時出現在用戶的首頁中;④對訂單的管理;⑤對用戶留言的管理。3.3系統需求分析用戶用例圖圖如圖3.1所示。圖3.1用戶用例圖管理員用例圖如圖3.2所示。圖3.2管理員用例圖3.4系統非功能性需求分析系統非功能分析是對除了功能結構以外的信息進行分析,一個系統設計很多方面,我們需要保證所有信息都完善、確保穩定,能夠正常運行。1.數據安全可靠無亂碼。數據在系統中表演著至關重要的角色,它的完整與否與我們系統運行好壞休戚相關!大概意思是我們建立的數據庫中的所有信息都可以進行前端展示,并且要保證數據安全可靠無亂碼。2.設計的頁面讓用戶賞心悅目。由于我們設計的系統要進可能的適和廣大人群,那么我們所設計的頁面要讓用戶既有體驗又能一目了然,從而方便使用的人進行購買。3.邏輯性。系統邏輯不能出現錯誤,第一步到第二部再到第三部,必須符合正常邏輯思維。4系統設計4.1系統架構設計在設計該系統的架構時,我們考慮到方便用戶更好的開發系統以及系統所具有的一些局限性,最終我們決定采用B/S。4.2系統的總體構思俗話說的好,在做一件事情前我們要先想一想我們要怎么做、如何去做。這也就告訴我們構思的重要作用。在系統設計之前,我們要先對系統的設計做出總體的布局,這樣才能讓我們的系統更加具有邏輯,并且方便我們在后期對系統的維護。本次的設計我們將網站分為用戶和管理者(后臺)兩個相應的功能;其中用戶這個部分的功能包括用戶的登錄、注冊、菜品展示、搜索、菜品詳情展示、生成訂單、發布留言這七個小塊兒;后臺(管理員)這個部分的功能板塊兒,我們設置了登入、操作(訂單詳情、菜品、用戶發布的留言)功能,這樣的構思我們是遵守方便客戶的原則來設計的,這樣的設計構思可以給用戶很不錯的體驗。功能結構圖如圖4.1所示。圖4.1系統功能結構圖4.3數據庫設計4.3.1概念模型設計數據庫在程序的設計中扮演了極為重要的角色,它將系統涉及的數據全部容納其中,在數據庫設計時,為了能夠明確思路,一般都是先構建實體E-R圖,在構建實體E-R圖時采取先確定好我們所需要的實體,從而再規劃實體屬性的方法。(1)管理員實體如圖4.2所示。圖4.2管理員實體圖(2)商品分類實體如圖4.3所示。圖4.3商品分實體圖(3)訂單實體如圖4.4所示。圖4.4訂單實體圖(4)商品實體如圖4.5所示。圖4.5商品實體圖(5)用戶實體如圖4.6所示。圖4.6用戶實體圖4.3.2數據庫表設計數據庫表的設計是我們通過系統分析所選擇的DBMS模型來進行后臺數據的存儲,數據庫是系統后臺的核心,數據庫就相當于一個寄存東西的堆棧,在我們需要的時候進入堆棧中去取東西。建立的數據庫如下。(1)客戶表如表4.7所示。表4.7客戶表列名數據類型長度備注uidint11IDusernamevarchar255用戶名passwordint255密碼(2)商品分類表如表4.8所示。表4.8商品分類表序號列名數據類型長度備注1idint11ID2c-namevarchar255商品分類名(3)訂單表如表4.9所示。表4.9訂單表序號列名數據類型長度備注1oidint11ID2moneyvarchar255金額3receiveinfovarchar255地址4phoNumvarchar255電話5Order_timevarchar255時間(4)商品表:商品表如表4.10所示。表4.10商品表序號列名數據類型長度備注1pidint11ID2pnamevarchar255商品名3Market_pricevarchar255優惠價格4Shop_pricevarchar255商店標價5imagevarchar255商品圖路徑6pdescevarchar255商品詳情7pdatevarchar255上架時間(5)用戶表:課程表如表4.11所示。表4.11用戶表序號列名數據類型長度備注1uidint11ID2usernamevarchar255用戶昵稱3passwordvarchar255密碼4namevarchar255用戶姓名5emailvarchar255郵箱6phoneint255電話7addrvarchar255地址
5系統實現該網上訂餐系統各模塊的具體功能實現如下。5.1用戶注冊游客可以在此頁面進行賬號注冊,便于系統管理員更好的管理系統,游客注冊之后具有標識性,用戶注冊頁面如圖5.1所示。圖5.1用戶注冊圖5.2用戶登錄如圖5.2所示。圖5.2用戶登錄界面核心代碼:request.getSession().setAttribute("loginUser",loginUser);request.getSession().removeAttribute("message");return"redirect:index.action";5.3菜品展示用戶登錄成功后,可以在網站首頁看到各種各樣的菜品,其具體功能如圖5.3所示。圖5.3菜品展示頁面5.4菜品搜索用戶在系統搜索框中可以直接對菜品進行準確搜索,可以有效的減少用戶的選品時間,其界面圖如圖5.4所示。圖5.4搜索界面搜索功能關鍵代碼:List<Product>srList=productService.searchProduct(condition);model.addAttribute("srList",srList);5.5菜品詳情展示用戶在選擇商品時,我們為了可以讓用戶放心購買的,我們設置了這個菜品詳情展示欄,用戶可以在點擊后看到商品的介紹、評價等信息如圖5-5所示。圖5.5菜品展示界面菜品展示關鍵代碼:publicStringproductFindByPid(@RequestParamintpid,Modelmodel)throwsException{ Productproduct=prodcutSductFindByPid(pid); model.addAttribute("product",product); return"product"; }5.6生成訂單在這個頁面上,我們可以實現以下功能:用戶點擊購買之后,系統自動生成訂單并展現在用戶的頁面中。其效果圖如圖5.6所示。圖5.6訂單生成界面核心代碼: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用戶留言用戶可以登錄,并提出自己的意見反饋,有助于管理員更好的管理網站,其展示如圖5.7所示。圖5.7留言界面5.8管理員登陸用戶可以登錄,并提出自己的意見反饋,有助于管理員更好的管理網站,其展示如圖5.8所示。圖5.8管理員登陸界面管理員登錄關鍵代碼://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用戶管理管理員可以在系統中,對信息進行增刪改查操作,如圖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分類管理管理的人可以在后臺系統中對食物的種類進行分類,這樣的話就會大大方便用戶的選餐,節省用戶的時間,在管理員對商品進行分類后,顧客在登錄首頁會直接看到,也就像實時更新一樣。具體如圖5.11。圖5.11分類管理界面5.11貨物管理分出食品的類別從而方面客戶的查詢,同時還具有修改商品詳情的權限,方便商家更好的介紹自己的產品從而得到顧客的青睞,管理者也可自行的增刪商品,管理員進行的操作直接出現在用戶的首頁中。具體如圖5.12圖5.11商品管理界面流程圖如下:圖5.12商品管理流程圖5.12訂單管理訂單管理流程圖如下:圖5.13訂單管理流程圖在系統中的訂單管理模塊中,具體如圖5.14。5.14訂單管理界面5.13用戶的反饋管理在系統中的用戶反饋模塊,管理員可以對其進行操作。具體如圖5.15。5.15留言管理界面6系統測試在此,要對開發的系統進行測試這部分的工作了,這也意味著程序即將完成,但測試艱巨度還是很大的,測試費時費力,還相當重要,通過測試是為了發現問題,檢測程序。6.1系統測試(1)兼容性測試其測試的目的是保證其系統在瀏覽器中完成所有設計需求功能。(2)下載時間和容量(3)系統的人機工程(4)檢測鏈接(5)應用程序測試6.2系統維護在我們在對系統的每個部分進行測試后,所有的測試都完成了,系統可以正常的運行,我們在這個時候就要把我們的關注點放在系統后期的維護和升級中了。我們在對系統進行這個階段的操作的時候,我們可以把重心放到系統的核心問題上,比如說針對數據庫的升級和保護,我們的系統在面向客戶時,人群的占比小的話,我們通常會選擇小型的服務器,但當我們面對的業務范圍大的時候就會存在由于我們的服務器小而造成的停機的情況,這個時候我們就要考錄到對我們原先選擇的服務器進行升級了。同時操作系統也是我們的系統能夠穩定運行的根本,因此我們也要加強對操作系統的重視(升級和維護)。6.3測試目的系統測試是系統的最后一部分,在系統開發過程中多多少少會出現錯誤,這些錯誤有可能會導致字段不現實或者系統啟動不了,一個小的錯誤需要我們耗費大量時間去解決,所有在系統開發過程中一定要盡量不必要的錯誤產生。一、功能測試:功能必須完善,所有頁面顯示的功能都可以進行操作,如果功能方面有所欠缺需要盡快完善,找出系統的bug,防止不必要的麻煩的產生。二、性能測試:確保系統的穩定性,系統無論在什么環境、版本下都可以正常顯示,并且3秒內可以進行數據輸送和傳達,展示頁面信息三、安全測試:安全在各個場合都是放在第一位的東西,同樣的我們在安全測試中要保證賬號登錄要安全并且能讓用戶放心,所以我們要保證我們所設計的系統在使用的人登錄賬號時是安全可靠的,這樣可以避免用戶信息的泄露,讓用戶放心的系統才有希望成為好的系統。6.4測試實例針對系統的各個功能挨個的進行過細的檢測,檢查我們所設計的系統的功能是否達到我們所期望的。下面我們挨個測試與系統各部分相對應的功能。測試用例表如表6.1所示。表6.1測試用例測試用例方案輸入數據預期結果測試結果用戶登錄使用已存在的賬號和相匹配的密碼登錄網站賬號:kobe密碼:12345系統提示登錄成功,并跳轉至系統主頁與預期結果一致搜索用戶登錄網站進行川菜搜索點擊按鍵點擊后跳轉到川菜成功頁面與預期結果一致訂單管理管理員進到后臺管理移除訂單點擊按鈕點擊后成功把訂單移除與預期結果一致商品添加管理員進入后臺管理系統之后添加商品點擊添加按鍵,輸入西紅柿,9.9元等操作點擊后跳轉到成功添加商品并在用戶界面顯示與預期結果一致6.5測試結果該系統經過測試,可以滿足相關信息的管理要求。
7結束語本文對網上訂餐管理系統的相關方面進行了詳細的剖析,通過以上內容成功的實現了網上訂餐管理系統的設計與開發。本次畢業設計的開發,遵循IT開發技術的原則,最終實現系統預期的期望結果。畢業設計是對我們在大學中學到的知識的實踐和應用。結果表明,經過測試,系統整體運行流暢,系統功能完善,系統整體構思明確,再運行過程中無重大問題產生,基本完成任務書和需求分析所要求達到的要求八個模塊的增加功能、刪除功能、修改功能、查詢功能都正常運行,符合設計基本理念,達到測試用例所寫出的測試場景和預期達到的目標,在運行操作中正常運行,所以系統設計成功。在這次的開發過程中,通過自身的學習和經歷我積累了一些經驗:系統分析在系統的設計開發中占據至關重要的地位,在我們開發前我們先要對系統的各個部分(需求、局限性、未來性)進行詳細的分析,對系統的設計情況進行大體的規劃,這就好比作畫之前我們要先決定我們要使用什么色彩,使用什么紙張一樣,紙張和色彩選擇的好壞決定了這幅畫的好壞。同理來說,一個系統的好壞也和我們在設計系統之前對系統的分析的好壞。在這次的畢業系統設計中,我們完成了系統的初步階段,但是還存在著很多不足的地方,不管如何這是我第一次設計的系統,也是給大學四年呈上的答卷。在以后的工作中,我還會對該系統進行進一步的完善。參考文獻黃信洋.網上餐飲信息服務平臺設計與實現[D].電子科技大學,2019.楊彤蕾,李建.“互聯網+”背景下高校學生群體外賣訂餐現狀及問題研究——以西安某高校為例[J].價值工程,2018,37(25):33-35.聶維,張忠,劉小豫.網上訂餐系統的設計與開發[J].信息與電腦(理論版),2019,31(20):56-58.祝坤艷,楊藝,賈好朋.“互聯網+”校園網上訂餐的現狀和問題[J].現代營銷(下旬刊),2020(02):151-152.ZimmerMeghanC.,BeairdJacob,SteevesElizabethT.Anderson.WICParticipants’PerspectivesAboutOnlineOrderingandTechnologyintheWICProgram[J].JournalofNutritionEducationandBehavior,2020(prepublish).郝恬.針對雙用戶的訂餐系統設計研究[D].武漢理工大學,2019.聶維,張忠,劉小豫.網上訂餐系統的設計與開發[J].信息與電腦(理論版),2019,31(20):56-58.黃信洋.網上餐飲信息服務平臺設計與實現[D].電子科技大學,2019.王金朔,孫延輝.基于SSM和Java的網上訂餐系統設計[J].信息通信,2018(10):99-100.劉娟.基于ASP.NET的網上訂餐系統的分析與設計[J].數字技術應用,2018,36(09):156-157.張紫微.高校食堂訂餐系統的研究與分析[J].經濟研究導刊,2018(14):188-189.張蕾.網上訂餐系統的數據庫設計[J].工業技術與職業教育,2018,16(01):12-14.[13]胡朝友,張星晨,吳海珍,常章梅.基于Java和MySQL軟件的實驗室菌種管理系統設計與應用[J].中華臨床實驗室管理電子雜志,2020,8(01):41-47.[14]朱運喬.基于SpringBoot+SSM框架的Web應用系統搭建與實現[J].電腦編程技巧與維護,2019(10):23-25.
附錄用戶注冊核心代碼:@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("驗證碼錯誤請重新注冊"); } //開始寫入數據庫 userService.saveUser(user); //model.addAttribute("message","注冊成功請去郵箱激活"); model.addAttribute("message","注冊成功請登錄"); return"ms
}用戶登錄關鍵代碼://用戶登錄 @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";
}菜品展示關鍵代碼:
@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"; }搜索功能關鍵代碼:@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;}菜品展示關鍵代碼:@RequestMapping("/productFindByPid") publicStringproductFindByPid(@RequestParamintpid,Modelmodel)throwsException{ Productproduct=prodcutSductFindByPid(pid); model.addAttribute("product",product); return"product";}訂單生成關鍵代碼:@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表示已付款即將發貨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"; }
}留言模塊關鍵代碼:@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"; }}管理員登錄關鍵代碼://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"; }用戶管理主要代碼如下:@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"; }分類管理關鍵代碼:@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"; }商品管理核心代碼://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"; }訂單管理核心代碼:/**訂單管理模塊**/ @RequestMapping("/admin/adminOrder_findAllByPage") publicStringadminOrder_findAllByPage(@RequestParamintpage,Modelmodel,HttpServletRequestrequest) throwsException{ AdminuseradminuserLogin=(Adminuser)request.getSession().getAttribute("adminuserLogin"); if(adminuserLogin==null){ request.getSession().setAttribute("message","對不起您還沒有登錄");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寧德市2026-2027學年高三第五次模擬考試物理試卷(含答案解析)
- 小學五年級數學教師2026年二季度課堂教學工作總結
- 高中班級常規班主任2026年上半年班級常規提質總結
- 企業夏季高溫安全生產培訓課件
- 2026 年秋季開學:初中開學第一課樹立目標砥礪前行
- 2026年秋季高中政治開學第一課 學科與生活聯系課件
- 2026年北師大版小學三年級數學上冊《分數的加減法》課時教案
- 肺康復的新進展
- 2025年元宇宙產業投資環境分析
- 膝關節滑膜炎康復訓練
- 2026湖北恩施州利川市選調市外教師30人筆試題庫及完整答案詳解【奪冠系列】
- 2026年育種和育苗行業創新技術報告
- 2026年郵政業務(營銷)員高級理論知識試卷及答案
- 建筑勞務公司管理制度-
- 鄉村教育復興與文化傳承
- 幼兒預防肝炎課件
- (完整版)高考英語詞匯3500詞(精校版)
- 公司對賭協議合同范本2024年
- DZ∕T 0215-2020 礦產地質勘查規范 煤(正式版)
- 高三復讀培訓課件
- 中班語言《誰偷吃了》課件1
評論
0/150
提交評論