做威客有什么靠譜網(wǎng)站怎樣推廣自己的產(chǎn)品
🙊作者簡介:擁有多年開發(fā)工作經(jīng)驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業(yè)設計。
- 代碼可以私聊博主獲取。🌹
- 贈送計算機畢業(yè)設計600個選題excel文件,幫助大學選題。
- 贈送開題報告模板,幫助書寫開題報告。
作者完整代碼目錄供你選擇:
- 《Springboot網(wǎng)站項目》400套
- 《ssm網(wǎng)站項目》800套
- 《小程序項目》300套
- 《App項目》500套
- 《python網(wǎng)站項目》600套
?感興趣大家可以點點關注收藏,后續(xù)更新更多項目資料。?
項目演示
摘要
隨著信息技術在管理上越來越深入而廣泛的應用,管理信息系統(tǒng)的實施在技術上已逐步成熟。本文介紹了微信小程序外賣點餐的設計與實現(xiàn)的開發(fā)全過程。通過分析微信小程序外賣點餐的設計與實現(xiàn)管理的不足,創(chuàng)建了一個計算機管理微信小程序外賣點餐的設計與實現(xiàn)的方案。文章介紹了微信小程序外賣點餐的設計與實現(xiàn)的系統(tǒng)分析部分,包括可行性分析等,系統(tǒng)設計部分主要介紹了系統(tǒng)功能設計和數(shù)據(jù)庫設計。
本微信小程序外賣點餐的設計與實現(xiàn)有管理員,外賣員,餐廳,用戶共四個角色。管理員功能有個人中心,外賣員管理,餐廳管理,用戶管理,菜品分類管理,菜品信息管理,外賣訂單管理,訂單配送管理,訂單評價管理,在線留言管理,系統(tǒng)管理等。外賣員,餐廳,用戶都可以在微信小程序上面進行注冊和登錄操作。餐廳角色可以在微信小程序上面進行菜品的添加,修改,刪除,查詢操作,可以對用戶的訂單進行審核操作,查看訂單配送狀態(tài)和評價,可以查看投訴反饋和在線留言等。外賣員角色可以在微信小程序上面進行訂單的搶單操作,查看訂單配送和評價信息等。
用戶角色可以在微信小程序上面進行菜品的查看和查詢,對自己下的訂單進行支付操作,查看訂單配送和對訂單評價,收藏菜品等操作。因而具有一定的實用性。
本站后臺采用Java的SSM框架進行后臺管理開發(fā),可以在瀏覽器上登錄進行后臺數(shù)據(jù)方面的管理,MySQL作為本地數(shù)據(jù)庫,微信小程序用到了微信開發(fā)者工具,充分保證系統(tǒng)的穩(wěn)定性。系統(tǒng)具有界面清晰、操作簡單,功能齊全的特點,使得微信小程序外賣點餐的設計與實現(xiàn)管理工作系統(tǒng)化、規(guī)范化。
關鍵詞:微信小程序外賣點餐的設計與實現(xiàn);SSM框架;MYSQL數(shù)據(jù)庫
1系統(tǒng)概述
如今互聯(lián)網(wǎng)高速發(fā)展,網(wǎng)絡遍布全球,國內(nèi)移動信息領域獨樹一幟,通過微信發(fā)布的消息能快而方便的傳播到世界每個角落,并且互聯(lián)網(wǎng)上能傳播的信息也很廣,比如文字、圖片、聲音、視頻等。從而,這種種好處使得互聯(lián)網(wǎng)成了信息傳播的主要途徑,社會上各種各樣的信息都想盡辦法通過互聯(lián)網(wǎng)進行傳播,互聯(lián)網(wǎng)對社會產(chǎn)生的影響越來越大。
因此,開發(fā)合適的微信小程序外賣點餐的設計與實現(xiàn),可以方便管理人員對微信小程序外賣點餐的設計與實現(xiàn)的管理,提高信息管理工作效率及查詢效率,用戶可以在手機上通過微信小程序來訂餐,更加的方便,有利于更好的為人們服務。
隨著互聯(lián)網(wǎng)技術的快速發(fā)展,網(wǎng)絡時代的到來,網(wǎng)絡信息也將會改變當今社會。各行各業(yè)在日常企業(yè)經(jīng)營管理等方面也在慢慢的向規(guī)范化和網(wǎng)絡化趨勢匯合。微信小程序外賣點餐的設計與實現(xiàn)的信息化程度體現(xiàn)在將互聯(lián)網(wǎng)與信息技術應用于經(jīng)營與管理,以現(xiàn)代化工具代替?zhèn)鹘y(tǒng)手工作業(yè)。無疑,使用網(wǎng)絡信息化管理使信息管理更先進、更高效、更科學,信息交流更迅速。
對于之前微信小程序外賣點餐的設計與實現(xiàn)的管理,大部分都是使用傳統(tǒng)的人工方式去管理,這樣導致了管理效率低下、出錯頻率高。而且,時間一長的話,積累下來的數(shù)據(jù)信息不容易保存,對于查詢、更新還有維護會帶來不少問題。對于數(shù)據(jù)交接也存在很大的隱患。如果采用電子化的存儲方式就會帶來很大的改善,而且給用戶的查詢帶來了很大便利,因此設計一個微信小程序外賣點餐的設計與實現(xiàn)刻不容緩,能夠提高信息的管理水平。
1.3系統(tǒng)設計思想
一個成功的網(wǎng)站應明確建設網(wǎng)站的目的,確定網(wǎng)站的功能,確定網(wǎng)站規(guī)模、投入費用,進行必要的市場分析等。只有詳細的策劃,才能避免在網(wǎng)站建設中出現(xiàn)的很多問題,使網(wǎng)站建設能順利進行。同時,一個大型的計算機網(wǎng)站系統(tǒng),必須有一個正確的設計指導思想,通過合理選擇數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡結(jié)構(gòu)、操作系統(tǒng)以及開發(fā)環(huán)境,構(gòu)成一個完善的網(wǎng)絡體系結(jié)構(gòu),才能充分發(fā)揮計算機信息管理的優(yōu)勢。根據(jù)現(xiàn)實生活中網(wǎng)民的實際需求,本系統(tǒng)的設計按照下述原則進行。
- 有效性:實際上這里的有效性包括兩個方面的意思:有用性和可用性。有用性是指站點潛在的能滿足用戶需求的功能,而可用性是指能夠通過站點的操作實現(xiàn)特定的目標??梢钥闯鲆粋€站點如果不能恰當運行或設計得非常槽糕就不是一個好站點??捎谜军c的效益應該非常高,并易于學習,在實現(xiàn)用戶目標時令人滿意而不出錯。
- 高可靠性:一個實用的網(wǎng)站同時必須是可靠的,本設計通過合理而先進的網(wǎng)絡設計以及軟、硬件的優(yōu)化選型,可保證網(wǎng)站的可靠性與容錯性。
- 高安全性:在設計中,將充分利用網(wǎng)絡軟、硬件提供的各種安全措施,既可以保證用戶共享資源,充分考慮系統(tǒng)及數(shù)據(jù)資源的容災、備份、恢復的要求。為系統(tǒng)提供強大的數(shù)據(jù)庫備份工具??梢员WC關鍵數(shù)據(jù)的安全性。操作權限級,設置不同的角色確保每一步的操作權限,可以由管理員進行設置。
- 先進性:采用目前國際上最先進的開發(fā)技術,使用JSP開發(fā)技術,MYSQL作為網(wǎng)站后臺數(shù)據(jù)庫。采用這些技術降低了以后的系統(tǒng)運營成本,提高了系統(tǒng)的穩(wěn)定性和易維護性。
- 采用標準技術:本網(wǎng)站的所有設計遵循國際上現(xiàn)行的標準進行,以提高系統(tǒng)的開放性。
- 外觀和技術平衡:系統(tǒng)采用Web風格的界面設計,界面友好、美觀,使用方便,易學易用。網(wǎng)站設計的關鍵問題是外觀和技術的平衡。外現(xiàn)不好的網(wǎng)站令人厭煩,站點可以運行很好,但卻不能帶動用戶積極性,相反,如果外觀非常有表現(xiàn)力,但技術有限,用戶則會感到非常失望。在外觀與技術之間需要確定一個清晰而連續(xù)的關系,即外觀與站點的意圖相關,對不同類型的網(wǎng)站處理方法不同。
2相關技術
2.1微信小程序
小程序是一種新的開放能力,開發(fā)者可以快速地開發(fā)一個小程序。小程序可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗。尤其擁抱微信生態(tài)圈,讓微信小程序更加的如虎添翼,發(fā)展迅猛。
2.2 MYSQL數(shù)據(jù)庫
MySQL是一個真正的多用戶、多線程SQL數(shù)據(jù)庫服務器。 是基于SQL的客戶/服務器模式的關系數(shù)據(jù)庫管理系統(tǒng),它的有點有有功能強大、使用簡單、管理方便、安全可靠性高、運行速度快、多線程、跨平臺性、完全網(wǎng)絡化、穩(wěn)定性等,非常適用于Web站點或者其他應用軟件的數(shù)據(jù)庫后端的開發(fā)工作。此外,用戶可利用許多語言編寫訪問MySQL數(shù)據(jù)庫的程序。作為開放源代碼運動的產(chǎn)物之一,MySQL關系數(shù)據(jù)庫管理系統(tǒng)越來越受到人們的青睞,應用范圍也越來越廣。速度和易用性使MySQL特別適用于Web站點或應用軟件的數(shù)據(jù)庫后端的開發(fā)工作。
2.3?uni-app
uni-app?是一個使用?Vue.js?開發(fā)所有前端應用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應式)、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘/淘寶)、快應用等多個平臺。
DCloud公司擁有800萬開發(fā)者、數(shù)百萬應用、12億手機端月活用戶、數(shù)千款uni-app插件。
2.4?SSM框架簡介
SSM框架,是Spring+Spring MVC+MyBatis的縮寫,這個是繼SSH之后,目前比較主流的Java EE企業(yè)級框架,適用于搭建各種大型的企業(yè)級應用系統(tǒng)。
1.Spring簡介
Spring是一個開源框架,Spring是于2003年興起的一個輕量級的Java開發(fā)框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。
3.MyBatis簡介
MyBatis本是apache的一個開源項目iBatis,2010年這個項目由apache software foundation遷移到了google code,并且改名為MyBatis。MyBatis是一個基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及結(jié)果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。可以這么理解,MyBatis是一個用來幫你管理數(shù)據(jù)增刪改查的框架。
3系統(tǒng)分析
3.1可行性分析
通過對本微信小程序外賣點餐的設計與實現(xiàn)實行的目的初步調(diào)查和分析,提出可行性方案并對其一一進行論證。我們在這里主要從技術可行性、經(jīng)濟可行性、操作可行性等方面進行分析。
3.1.1技術可行性
本微信小程序外賣點餐的設計與實現(xiàn)后端采用SSM框架進行開發(fā),是一種成熟的框架,開發(fā)有很多教程的,微信開發(fā)也有很多教程,并且網(wǎng)絡上很多免費的教程。??
因此,微信小程序外賣點餐的設計與實現(xiàn)在開發(fā)技術上具有很高可行性,且開發(fā)人員掌握了一定的開發(fā)技術,所以此系統(tǒng)的開發(fā)技術具有可行性。
3.1.2經(jīng)濟可行性
本微信小程序外賣點餐的設計與實現(xiàn)采用的軟件都是開源的,這樣能夠削減很多的精力和資源,降低開發(fā)成本。同時對計算機的配置要求也極低,即使是淘汰下來的計算機也能夠滿足需要,因此,本系統(tǒng)在經(jīng)濟上是完全具有可行性的,所以在經(jīng)濟上是十分可行的。
3.1.3操作可行性
本微信小程序外賣點餐的設計與實現(xiàn)的界面簡單易操作,用戶只要平時有在用過電腦,都能進行訪問和操作。本系統(tǒng)具有易操作、易管理、交互性好的特點,在操作上是非常簡單的,因此在操作上具有很高的可行性。
綜上所述,此系統(tǒng)開發(fā)目標已明確,在技術、經(jīng)濟和操作方面都具有很高的可行性,并且投入少、功能完善、管理方便,因此系統(tǒng)的開發(fā)是完全可行的。
3.2系統(tǒng)性能分析
3.2.1 系統(tǒng)安全性
此微信小程序外賣點餐的設計與實現(xiàn)要嚴格控制管理權限,具體要求如下:
(1)要想對微信小程序外賣點餐的設計與實現(xiàn)進行管理,首先要依靠用戶名和密碼在系統(tǒng)中登陸,無權限的用戶不可以通過任何方式登錄系統(tǒng)和對系統(tǒng)的任何信息和數(shù)據(jù)進行查看,這樣可以保證系統(tǒng)的安全可靠性和準確性。
(2)在具體實現(xiàn)中對不同的權限進行設定,不同權限的用戶在系統(tǒng)中登陸后,不可以越級操作。
3.2.2 數(shù)據(jù)完整性
(1)所有記錄信息要保持全面,信息記錄內(nèi)容不可以是空。
(2)各種數(shù)據(jù)間相互聯(lián)系要保持正確。
(3)相同數(shù)據(jù)在不同記錄中要保持一致。
目前,界面設計已經(jīng)成為對軟件質(zhì)量進行評價的一條關鍵指標,一個好的用戶界面可以使用戶使用系統(tǒng)的信心和興趣增加,從而使工作效率提高。微信小程序頁面盡量簡潔,讓頁面清爽,訪問速度能提升上去,訪問服務端接口的時候相應更快更迅捷。
1.輸出設計
輸出是由電腦對輸入的基本信息進行解決,生成高質(zhì)量的有效信息,并使之具有一定的格式,提供給管理者使用,這是輸出設計的主要責任和目標。
系統(tǒng)開發(fā)的過程與實施過程相反,并不是從輸入設計到輸出設計,而是從輸出設計到輸入設計。這是由于輸出表格與使用者直接相聯(lián)系,設計的目的應當是確保使用者可以很方便的使用輸出表格,并且可以將各部門的有用信息及時的反映出來。輸出設計的準繩是既要整體琢磨不同管理層的所有需要,又要簡潔,不要提供給用戶不需要的信息。
2.輸入設計
輸入數(shù)據(jù)的收集和錄入是比較麻煩的,需要非常多的人力和一定設備,而且經(jīng)常出錯。一旦輸入系統(tǒng)的數(shù)據(jù)不正確,那么處理后的輸出就會擴大這些錯誤,因此輸入的數(shù)據(jù)的準確性對整個系統(tǒng)的性能起著決定性意義。
輸入設計有以下幾點原則:
1)輸入量應盡量保持在能夠滿足處理要求的最低限度。輸入量越少,錯誤率就會越少,數(shù)據(jù)的準備時間也越少。
2)應盡可能的使輸入的準備以及輸入的過程進行時比較方便,這樣使錯誤的發(fā)生率降低。
3)應盡量早檢查輸入數(shù)據(jù)(盡量接近原數(shù)據(jù)發(fā)生點),以便使錯誤更正比較及時。
4)輸入數(shù)據(jù)盡早地記錄成其處理所需的形式,以防止數(shù)據(jù)由一種介質(zhì)轉(zhuǎn)移到另一種介質(zhì)時需要轉(zhuǎn)錄而可能發(fā)生的錯誤。
3.4系統(tǒng)流程和邏輯
圖3-3登錄流程圖
圖3-4修改密碼流程圖
4系統(tǒng)概要設計
4.1概述
本系統(tǒng)后臺采用B/S結(jié)構(gòu)(Browser/Server,瀏覽器/服務器結(jié)構(gòu))和基于Web服務兩種模式,是一個適用于Internet環(huán)境下的模型結(jié)構(gòu)。只要用戶能連上Internet,便可以在任何時間、任何地點使用。系統(tǒng)工作原理圖如圖4-1所示:
圖4-1系統(tǒng)工作原理圖
4.2系統(tǒng)結(jié)構(gòu)
設計的管理員主要是為用戶提供的一些信息進行服務的。設計的管理員功能結(jié)構(gòu)圖如下圖所示:
圖4-2管理員功能結(jié)構(gòu)圖
4.3.數(shù)據(jù)庫設計
4.3.1數(shù)據(jù)庫實體
概念設計的目標是設計出反映某個組織部門信息需求的數(shù)據(jù)庫系統(tǒng)概念模式,數(shù)據(jù)庫系統(tǒng)的概念模式獨立于數(shù)據(jù)庫系統(tǒng)的邏輯結(jié)構(gòu)、獨立于數(shù)據(jù)庫管理系統(tǒng)(DBMS)、獨立于計算機系統(tǒng)。
概念模式的設計方法是在需求分析的基礎上,用概念數(shù)據(jù)模型(例如E-R模型)表示數(shù)據(jù)及數(shù)據(jù)之間的相互聯(lián)系,設計出反映用戶信息需求和處理需求的數(shù)據(jù)庫系統(tǒng)概念模式。概念設計的目標是準確描述應用領域的信息模式,支持用戶的各種應用,這樣既容易轉(zhuǎn)換為數(shù)據(jù)庫系統(tǒng)邏輯模式,又容易為用戶理解。數(shù)據(jù)庫系統(tǒng)概念模式是面向現(xiàn)實世界的數(shù)據(jù)模型,不能直接用于數(shù)據(jù)庫系統(tǒng)的實現(xiàn)。在此階段,用戶可以參與和評價數(shù)據(jù)庫系統(tǒng)的設計,從而有利于保證數(shù)據(jù)庫系統(tǒng)的設計與用戶的需求相吻合。在概念模式的設計中,E-R模型法是最常見的設計方法。本系統(tǒng)的E-R圖如下圖所示:
圖4.12 ?菜品信息實體屬性圖
(2)公告信息實體屬性圖如圖4.13所示:
圖4.13??公告信息實體屬性圖
(3)管理員信息實體屬性圖如圖4.14所示:
圖4.14?管理員信息實體屬性圖
4.3.2數(shù)據(jù)庫設計表
微信小程序外賣點餐的設計與實現(xiàn)需要后臺數(shù)據(jù)庫,下面介紹數(shù)據(jù)庫中的各個表的詳細信息:
1公告信息表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | title | String | 標題 | 是 |
4 | introduction | String | 簡介 | 是 |
5 | picture | String | 圖片 | 是 |
6 | content | String | 內(nèi)容 | 是 |
2訂單評價表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | caipinmingcheng | String | 菜品名稱 | 是 |
4 | caipintupian | String | 菜品圖片 | 是 |
5 | cantingbianhao | String | 餐廳編號 | 是 |
6 | caipinpingfen | String | 菜品評分 | 是 |
7 | peisongpingfen | String | 配送評分 | 是 |
8 | peisonggonghao | String | 配送工號 | 是 |
9 | neirongfankui | String | 內(nèi)容反饋 | 是 |
10 | pingjiariqi | date | 評價日期 | 是 |
11 | yonghuming | String | 用戶名 | 是 |
12 | sfsh | String | 是否審核 | 是 |
13 | shhf | String | 審核回復 | 是 |
3外賣員表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | peisonggonghao | String | 配送工號 | 是 |
4 | mima | String | 密碼 | 是 |
5 | peisongxingming | String | 配送姓名 | 是 |
6 | xingbie | String | 性別 | 是 |
7 | zhaopian | String | 照片 | 是 |
8 | dianhua | String | 電話 | 是 |
4收藏表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | userid | Integer | 用戶id | 是 |
4 | refid | Integer | 收藏id | 是 |
5 | tablename | String | 表名 | 是 |
6 | name | String | 收藏名稱 | 是 |
7 | picture | String | 收藏圖片 | 是 |
8 | type | String | 類型(1:收藏,21:贊,22:踩) | 是 |
9 | inteltype | String | 推薦類型 | 是 |
5菜品信息表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | caipinmingcheng | String | 菜品名稱 | 是 |
4 | caipinfenlei | String | 菜品分類 | 是 |
5 | caipintupian | String | 菜品圖片 | 是 |
6 | caipinkouwei | String | 菜品口味 | 是 |
7 | caipintese | String | 菜品特色 | 是 |
8 | caipinjiage | Integer | 菜品價格 | 是 |
9 | caipinxiangqing | String | 菜品詳情 | 是 |
10 | cantingbianhao | String | 餐廳編號 | 是 |
11 | cantingmingcheng | String | 餐廳名稱 | 是 |
12 | lianxidianhua | String | 聯(lián)系電話 | 是 |
13 | cantingdizhi | String | 餐廳地址 | 是 |
14 | clicktime | datetime | 最近點擊時間 | 是 |
15 | userid | Integer | 用戶id | 是 |
6餐廳表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | cantingbianhao | String | 餐廳編號 | 是 |
4 | mima | String | 密碼 | 是 |
5 | cantingmingcheng | String | 餐廳名稱 | 是 |
6 | cantingtupian | String | 餐廳圖片 | 是 |
7 | lianxidianhua | String | 聯(lián)系電話 | 是 |
8 | cantingdizhi | String | 餐廳地址 | 是 |
9 | jingyingfanwei | String | 經(jīng)營范圍 | 是 |
7管理員表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | username | String | 用戶名 | 是 |
3 | password | String | 密碼 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增時間 | 是 |
8菜品分類表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | caipinfenlei | String | 菜品分類 | 是 |
9token表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | userid | Integer | 用戶id | 是 |
3 | username | String | 用戶名 | 是 |
4 | tablename | String | 表名 | 是 |
5 | role | String | 角色 | 是 |
6 | token | String | 密碼 | 是 |
7 | addtime | Date | 新增時間 | 是 |
8 | expiratedtime | Date | 過期時間 | 是 |
10外賣訂單表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | dingdanbianhao | String | 訂單編號 | 是 |
4 | caipinmingcheng | String | 菜品名稱 | 是 |
5 | caipinfenlei | String | 菜品分類 | 是 |
6 | caipintupian | String | 菜品圖片 | 是 |
7 | peisongzhuangtai | String | 配送狀態(tài) | 是 |
8 | caipinjiage | Integer | 菜品價格 | 是 |
9 | dingcanshuliang | Integer | 訂餐數(shù)量 | 是 |
10 | dingdanjine | Integer | 訂單金額 | 是 |
11 | xiadanshijian | datetime | 下單時間 | 是 |
12 | cantingbianhao | String | 餐廳編號 | 是 |
13 | dingdanbeizhu | String | 訂單備注 | 是 |
14 | yonghuming | String | 用戶名 | 是 |
15 | shouji | String | 手機 | 是 |
16 | shouhuodizhi | String | 收貨地址 | 是 |
17 | sfsh | String | 是否審核 | 是 |
18 | shhf | String | 審核回復 | 是 |
19 | ispay | String | 是否支付 | 是 |
11投訴反饋表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | userid | Integer | 用戶id | 是 |
4 | adminid | Integer | 管理員id | 是 |
5 | ask | String | 提問 | 是 |
6 | reply | String | 回復 | 是 |
7 | isreply | Integer | 是否回復 | 是 |
12用戶表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | yonghuming | String | 用戶名 | 是 |
4 | mima | String | 密碼 | 是 |
5 | xingming | String | 姓名 | 是 |
6 | xingbie | String | 性別 | 是 |
7 | touxiang | String | 頭像 | 是 |
8 | shouji | String | 手機 | 是 |
9 | shouhuodizhi | String | 收貨地址 | 是 |
13在線留言表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | userid | Integer | 留言人id | 是 |
4 | username | String | 用戶名 | 是 |
5 | content | String | 留言內(nèi)容 | 是 |
6 | cpicture | String | 留言圖片 | 是 |
7 | reply | String | 回復內(nèi)容 | 是 |
8 | rpicture | String | 回復圖片 | 是 |
14訂單配送表
序號 | 列名 | 數(shù)據(jù)類型 | 說明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時間 | 是 |
3 | dingdanbianhao | String | 訂單編號 | 是 |
4 | caipinmingcheng | String | 菜品名稱 | 是 |
5 | caipintupian | String | 菜品圖片 | 是 |
6 | cantingbianhao | String | 餐廳編號 | 是 |
7 | peisongjindu | String | 配送進度 | 是 |
8 | dingdanpingjia | String | 訂單評價 | 是 |
9 | peisongfeiyong | Integer | 配送費用 | 是 |
10 | yonghuming | String | 用戶名 | 是 |
11 | shouhuodizhi | String | 收貨地址 | 是 |
12 | peisongshijian | datetime | 配送時間 | 是 |
13 | peisonggonghao | String | 配送工號 | 是 |
14 | dianhua | String | 電話 | 是 |
15 | ispay | String | 是否支付 | 是 |
5系統(tǒng)詳細實現(xiàn)
5.1 管理員模塊的實現(xiàn)
5.1.1?菜品信息管理
管理員可以管理菜品信息,可以對菜品信息添加修改刪除。具體界面的展示如圖5.1所示。
圖5.1?菜品信息界面
5.1.2?訂單配送管理
管理員可以訂單配送進行查詢修改,刪除操作。具體界面如圖5.2所示。
圖5.3 訂單配送管理界面
5.1.3?外賣員管理
系統(tǒng)管理員可以對外賣員信息進行新增,修改,刪除,查詢操作。界面如下圖所示:
圖5.4?外賣員管理界面
5.1.4 餐廳管理
系統(tǒng)管理員可以對餐廳信息進行新增,修改,刪除,查詢操作。界面如下圖所示:
圖5.4?餐廳管理界面
5.1.5 用戶管理
系統(tǒng)管理員可以對用戶進行添加修改刪除操作。界面如下圖所示:
圖5.4?用戶管理界面
5.2?小程序用戶模塊的實現(xiàn)
5.2.1 系統(tǒng)首頁
小程序用戶是需要注冊才可以進行登錄的,登錄后在首頁可以搜索菜品名稱,以及查看菜品,并且下面導航可以點擊到其他功能模塊。界面如下圖所示:
圖5.5 系統(tǒng)首頁
5.2.2 我的菜單
在小程序里點擊我的,會出現(xiàn)關于我的界面,在這里可以修改個人信息,以及可以點擊其他功能模塊。界面如下圖所示:
圖5.6 我的菜單
5.2.2 收藏與下單
在商品詳情界面,可以對商品進行收藏和下單操作,點擊菜品圖片右下角的五角星,是收藏操作,雙擊是取消,點擊頁面右下角的下單按鈕,會進行下單操作。界面如下圖所示:
圖5.6 收藏與下單
6系統(tǒng)測試
6.1概念和意義
測試的定義:程序測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。測試(Testing)的任務與目的可以描述為:
目的:發(fā)現(xiàn)程序的錯誤;
任務:通過在計算機上執(zhí)行程序,暴露程序中潛在的錯誤。
另一個預測是相關的術語叫糾錯(Debugging)。它的目的與任務可以規(guī)定為:
目的:定位和糾正錯誤;
任務:消除軟件故障,保證程序的可靠運行。測試與糾錯的關系,可以用圖6-1的數(shù)據(jù)流圖來說明。圖中表明,每一次測試都要準備好若干必要的測試數(shù)據(jù),與被測試程序一道送入計算機執(zhí)行。通常把一次程序執(zhí)行需要的測試數(shù)據(jù),稱為一個“測試用例(Test Case)。每一個測試用例產(chǎn)生一個相應的“測試結(jié)果”。如果它與“期望結(jié)果”不想符合,便說明程序中存在錯誤,需要用糾錯來改正。
圖6.1測試與糾錯信息流程
6.2特性
(1)挑剔性
測試是為了證明程序有錯,而不是證明程序無錯。因此,對于被測程序就是要“純毛求疵”,就是要“雞蛋里挑骨頭”。
(2)復雜性
測試儀程序則比較容易,這其實是一個誤區(qū)。設計測試用力是一項需要細致和高度技巧的高能工作,稍有不慎就會顧此失彼,發(fā)生不應用得數(shù)樓。
(3)不徹底性
實際測試都是不徹底的,當然不能夠保證測試后的程序不存在遺漏的錯誤。
(4)經(jīng)濟性
通場這種測試稱為“選擇測試(Selective Testing)”。為了降低測試成本,選擇測試用力是應注意遵守“經(jīng)濟性”的原則。
6.3重要性
軟件測試在軟件生命周期中占據(jù)重要的地位,在傳統(tǒng)的瀑布模型中,軟件測試學僅處于運行維護階段之前,是軟件產(chǎn)品交付用戶使用之前保證軟件質(zhì)量的重要手段。近來,軟件工程界趨向于一種新的觀點,即認為軟件生命周期每一階段中都應包含測試,從而檢驗本階段的成果是否接近預期的目標,盡可能早的發(fā)現(xiàn)錯誤并加以修正,如果不在早期階段進行測試,錯誤的延時擴散常常會導致最后成品測試的巨大困難。
6.4測試方法
首先我們來說界面測試,界面測試是為了使程序在不同的的操作平臺上能夠運行界面,并且能夠保持原來的風格。我把完整程序拷貝到Windows 7環(huán)境下,似的程序運行正常,運行界面上的字體圖片等設置都能夠保持得非常好。不出現(xiàn)字體變形等情況!
其次進行功能測試。該系統(tǒng)測試采用的是單元測試,集成測試,完善性測試等多種方式進行測試。
經(jīng)過測試,所有功能都能得以實現(xiàn),沒有任何變形。至此,在功能的測試上也已經(jīng)比較圓滿的完成了。
由于經(jīng)驗不足,寫代碼時出現(xiàn)了一些考慮不周的系統(tǒng)缺陷,寫代碼的時候會出現(xiàn)與設想不一致,比如說代碼不規(guī)范導致接口與接口之間出現(xiàn)問題,功能與客戶的要求不符合,這樣導致產(chǎn)品不能過關,無法交付。所以產(chǎn)品在上線前必須反復測試,經(jīng)過反復測試,修改,再測試,再修改,產(chǎn)品才能夠不斷完善。在整個系統(tǒng)測試中,根據(jù)需求文檔和設計文檔,逐一對功能進行檢測并寫好測試用例,有效避免殘片缺陷,因為產(chǎn)品出現(xiàn)缺陷不僅影響功能,而且可以導致數(shù)據(jù)的不準確,導致產(chǎn)品質(zhì)量的降低,經(jīng)過測試,才能使得產(chǎn)品的穩(wěn)定性和成熟度得到極大的提升,產(chǎn)品質(zhì)量也才有保證。
6.5?功能測試
功能測試主要包括五項內(nèi)容:適用性、準確性、可操作性、依從性、安全性。
本系統(tǒng)功能測試如表6.1所示:
表6.1 ?系統(tǒng)功能測試
測試內(nèi)容 | 測試結(jié)果 |
適用性 | 好 |
準確性 | 好 |
可操作性 | 好 |
依從性 | 好 |
安全性 | 好 |
6.6可用性測試
可用性測試用于檢測系統(tǒng)的可操作性、可理解性、可學習性等方面內(nèi)容。具體測試方面如表6.2所示。
表6.2 系統(tǒng)可用性測試
測試項 | 測試人員的評價 |
窗口移動、大小改變、關閉等操作是否正常 | 是 |
操作模塊是否友好 | 是 |
模塊、提示內(nèi)容等文字描述是否正確 | 是 |
模塊布局是否協(xié)調(diào)、合理 | 是 |
模塊的狀態(tài)是否正確(對選中項能否發(fā)生對應切換) | 是 |
鼠標、鍵盤操作是否支持 | 是 |
所需數(shù)據(jù)項是否正確顯示 | 是 |
操作流程是否合理 | 是 |
是否提供幫助信息 | 是 |
6.7性能測試
性能測試主要通過模擬系統(tǒng)運行環(huán)境,測試系統(tǒng)性能是否符合客戶需求。性能測試的重要技術指標就是:系統(tǒng)運行速度、網(wǎng)絡響應時間和支持并發(fā)節(jié)點數(shù)。
1)系統(tǒng)運行速度:通過在不同計算機上試運行本系統(tǒng),沒有發(fā)現(xiàn)有任何遲滯、停頓現(xiàn)象。
2)網(wǎng)絡響應時間:網(wǎng)絡響應時間主要包括網(wǎng)絡最小響應時間、平均響應時間、最大響應時間三個參數(shù)。經(jīng)過測試,在網(wǎng)絡運營良好狀態(tài)下,NBA局域網(wǎng)內(nèi)響應時間三參數(shù)為:1/2/6s,NBA外網(wǎng)響應時間三參數(shù)為3/7/12s,符合客戶需求,屬于用戶心理可承受范圍。
3)支持并發(fā)節(jié)點數(shù):經(jīng)過模擬環(huán)境測試,本系統(tǒng)在并發(fā)節(jié)點達46個時,網(wǎng)絡運營速度會發(fā)生較大波動,延遲時間10秒左右,符合客戶需求。
6.8測試分析
本網(wǎng)站設計時借鑒了國內(nèi)外優(yōu)秀網(wǎng)站的優(yōu)點,從界面到系統(tǒng)設計都保證了用戶能夠方便操作。系統(tǒng)的主要特點和優(yōu)點歸納如下:
(1)本系統(tǒng)用的移置性和針對性都比較高,因為針對性高可以提供更好的服務而移置性可以在多個系統(tǒng)上運行,更給客戶帶來了極大的方便。
(2)該完整內(nèi)容全面,管理方便可以及時的全面的處理各種錯誤,異常,這樣避免了很多因用戶的馬虎操作而出現(xiàn)的失誤,其操作方便,用戶界面友好,能夠上網(wǎng)的人都可以很好的進行操作。
6.9測試結(jié)果分析
經(jīng)過對上述測試結(jié)果分析,本系統(tǒng)符合用戶需求。所有基本功能點實現(xiàn),操作簡單,操作流程簡單合理,產(chǎn)品運行性能良好,是一款值得推廣的微信小程序外賣點餐的設計與實現(xiàn)。
結(jié)論
在這次畢業(yè)設計中遇到的最困難的方面就是在數(shù)據(jù)庫方面的知識,在剛開始進行畢業(yè)設計的時候感覺十分困難,根本不知道該從何處下手,但不斷的堅持,設計最終被完成。無論多么的困難,只要能夠堅持下來,善于去找到好的材料來研究,在研究中充分利用資源,沒有困難是不會被成功解決的。
在開發(fā)系統(tǒng)的過程中,本人運用到了微信小程序開發(fā)技術和平時學習中所了解的一些技術,通過實現(xiàn)這些技術,大大提高了整個系統(tǒng)的性能。在論文中這些技術都做了比較詳細的介紹。本系統(tǒng)還存在很多缺點和不完善的地方,例如有些細節(jié)上做的還不夠完善,有些功能模塊還需要加強。在今后的日子里,能夠?qū)@些不足進行改善。
通過這次最終的畢業(yè)設計,平時所學到的知識不僅融合了,而且獲得了許多計算機知識。在整個設計過程中明白了許多東西,也培養(yǎng)獨立工作能力,樹立信心,對自己能力的工作能力,我相信以后會學習和工作生活中有至關重要的作用。同時也大大提高了手的能力,使其難以充分體會探索的樂趣和成功的創(chuàng)作過程,設計過程中汲取的東西,是一筆寶貴的財富。
回顧過去做畢業(yè)設計的整個過程,充滿了付出和收獲,但是當你看到成果的時候的感覺,是一種難以用言語表達的喜悅之感這些在畢業(yè)設計過程中學習到的東西將會使我終身受益!
最后,感謝指導老師的關心和指導,在我畢業(yè)設計的整個過程中,他給與了我很多的幫助和講解,在導師的幫助下我的畢業(yè)設計才能如此順利的完成。
致謝語
經(jīng)過幾個多月的不斷學習,我的畢業(yè)設計終于如期完成。此次畢業(yè)設計是對我們?nèi)粘K鶎W計算機理論知識的一次綜合性評測,也是將理論應用到實踐的一項考察。
首先我要感謝此次指導我的老師,是他的及時糾正我在設計當中出現(xiàn)的問題,使得我的設計高質(zhì)量完成。指導老師在我本次微信小程序外賣點餐的設計與實現(xiàn)的開發(fā)過程中,為程序、框架的設計、代碼等方面以及論文設計提供了很多寶貴的意見,并且為我推薦了許多相關的資料,他的指導和建議使我受益匪淺,通過老師的耐心輔導和指點,我的論文順利完成,在此,我表示深刻的感謝。
我也要感謝幫助過我的同學們,和我一起探討論文的不足,給我的設計提出寶貴的建議,在這次設計中他們的幫助使得我的設計更加完善更加具體。
最后,我也要感謝學校為我們提供了一個良好的學校環(huán)境。祝愿學校的領導教師以及和我一起奮斗的同學們工作順利,事業(yè)有成,也要祝愿學校的前景更加輝煌。
參考文獻
[1]付昕. 基于B/S模式倉庫管理系統(tǒng)的實現(xiàn)[J].山東省農(nóng)業(yè)管理干部學院學報, 2010, 27(4):166-168
[2] 王玉英. 基于JSP的MySQL數(shù)據(jù)庫訪問技術[J]. 現(xiàn)代計算機:專業(yè)版, 2010, 19(14):63-66
[3] David L.Anderson.Managing ?Information Systems.清華大學出版社,2002:16
[4] 王家華.軟件工程[M],沈陽:東北大學出版社,2011:46
[5] 張孝祥,徐明華.軟件開發(fā)課堂.清華大學出版社,2009:55
[6] 崔洋.MySQL數(shù)據(jù)庫應用從入門到精通.中國鐵道出版社,2013:27
[7] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論.高等教育出版社, 2006:16
[8] 崔洋.MySQL數(shù)據(jù)庫應用從入門到精通.中國鐵道出版社,2013:27
[9] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論.高等教育出版社, 2006:16
[10] 張海潘.軟件工程導論.清華大學出版社,2008:86
[11] 黃艷峰. 在Java語言中實施“案例教學”的研究與探索[J]. 電腦知識與技術, 2010, 6(5):1148-1149
[12] 王玉英. 基于JSP的MySQL數(shù)據(jù)庫訪問技術[J]. 現(xiàn)代計算機:專業(yè)版, 2010, 19(14):63-66
[13]邱丹萍.Web開發(fā)中SSM框架的分析[J].電腦知識與技術,2020,16(17):81-82.
[14]薛茹.基于SSM框架的Web系統(tǒng)研究與應用[J].計算機產(chǎn)品與流通,2018(07):30.
[15]唐權.SSM框架在JavaEE教學中的應用與實踐[J].福建電腦,2017,33(12):93-94+61.
[16]袁堂青,亓婧.基于微信小程序的開發(fā)與研究[J].網(wǎng)絡安全技術與應用,2020(04):66-67.
[17]邢榕珊,匡芳君.微信小程序設計[J].計算機時代,2018(08):9-12.
核心代碼展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查詢公告通知成功").put("data", newsView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端詳情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}