摘要
立足于當(dāng)下餐飲行業(yè)現(xiàn)有的點(diǎn)餐模式,分析傳統(tǒng)APP點(diǎn)餐的運(yùn)作流程,結(jié)合微信小程序的特點(diǎn)設(shè)計(jì)新型的外賣點(diǎn)餐系統(tǒng)。近幾年,人們生活水平日益提升,但工作強(qiáng)度和壓力不斷增強(qiáng),尤其是對于上班族而言,到餐廳吃飯費(fèi)時(shí)費(fèi)力,而傳統(tǒng)的APP點(diǎn)餐難以適應(yīng)針對性?;诖耍柚鶺eb開發(fā)技術(shù)以及后臺數(shù)據(jù)庫,設(shè)計(jì)了以微信小程序?yàn)槠脚_的外賣點(diǎn)餐系統(tǒng),實(shí)現(xiàn)了用戶登錄、在線點(diǎn)餐、外賣配送、信息管理等功能,為人們的日常生活提供了較大的便利,同時(shí)基于微信小程序的外賣點(diǎn)餐系統(tǒng)也是信息時(shí)代發(fā)展的必然趨勢。
關(guān)鍵詞:外賣點(diǎn)餐系統(tǒng),SSM,數(shù)據(jù)庫
Design and implementation of takeout ordering system based on wechat applet
????????????????????abstract
Based on the current ordering mode in the catering industry, this paper analyzes the operation process of traditional app ordering, and designs a new takeout ordering system combined with the characteristics of wechat applet. In recent years, people's living standards are improving day by day, but the work intensity and pressure are increasing. Especially for office workers, eating in restaurants is time-consuming and laborious, while the traditional app ordering is difficult to adapt to the pertinence. Based on this, with the help of web development technology and background database, a takeout ordering system based on wechat applet is designed, which realizes the functions of user login, online ordering, takeout distribution and information management, and provides great convenience for people's daily life. At the same time, the takeout ordering system based on wechat applet is also the inevitable trend of the development of the information age.
Key words:?Takeout ordering system, SSM, database
目 ?錄
第1章?緒???論
1.1課題背景
1.2 課題意義
1.3 開發(fā)工具及技術(shù) 3
1.4 國內(nèi)外現(xiàn)狀 5
第2章 系統(tǒng)分析 7
2.1 可行性分析 7
2.2總體設(shè)計(jì)原則 7
2.3 系統(tǒng)需求分析 8
2.4 業(yè)務(wù)流程分析 8
第3章 系統(tǒng)設(shè)計(jì) 11
3.1 系統(tǒng)概要設(shè)計(jì) 11
3.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 11
3.3 數(shù)據(jù)庫設(shè)計(jì) 12
第4章系統(tǒng)實(shí)現(xiàn)
4.1系統(tǒng)功能模塊
4.2管理員功能模塊 22
4.3用戶功能模塊 24
第5章軟件測試
5.1軟件測試的重要性
5.2測試實(shí)例的研究與選擇
5.3測試環(huán)境與測試條件
5.4系統(tǒng)運(yùn)行情況
5.5系統(tǒng)評價(jià)
第6章?總結(jié) 30
參考文獻(xiàn): 31
致謝 33
- ?緒 ??論
1.1課題背景
當(dāng)前高速發(fā)展的經(jīng)濟(jì)模式下,人們工作和生活都處于高壓下,沒時(shí)間做飯,在哪做飯成了人們的難題,傳統(tǒng)下班回家做飯的生活習(xí)俗漸漸地變得難以實(shí)現(xiàn)。在社會驅(qū)動(dòng)下,我國在餐飲方面的收入額,逐年成上升趨勢。餐飲方面帶來的收入拉高了社會消費(fèi)品的零售總額。不得不說,餐飲行業(yè)的轉(zhuǎn)型已經(jīng)開始慢慢地有了成效,整個(gè)餐飲市場正處于不斷復(fù)蘇的狀態(tài)中。即使人們在外就餐很方便,但有時(shí)候難免會遇到一些意外的情況,有時(shí)候到餐館就餐會遇到排長隊(duì)或是就餐位置擁擠的現(xiàn)象;有一些“蝸居”族不愿出家門嫌麻煩不動(dòng)手做飯又想享受到美味的食物。
因此伴隨而來的很多新式的訂餐服務(wù)和訂餐方式也逐漸產(chǎn)生,在以前人們都是單一的通過訂餐電話來進(jìn)行訂餐,但隨著近些年來的發(fā)展,訂餐電話已經(jīng)不能夠滿足越來越多的訂餐人群的需要,越來越多的缺陷明顯出現(xiàn)?;谝陨戏N種原因,本系統(tǒng)設(shè)計(jì)的目標(biāo)就是將傳統(tǒng)的通過電話和面對面的餐點(diǎn)銷售方式,轉(zhuǎn)換到基于網(wǎng)絡(luò)這樣一個(gè)更方便快捷的外賣網(wǎng)絡(luò)訂餐方式。通過外賣訂餐網(wǎng)站的建設(shè),商家能在網(wǎng)站上更為系統(tǒng)地處理眾多客戶的訂單,甚至還能在網(wǎng)站上管理自己店鋪的經(jīng)營情況和員工情況等。另外在網(wǎng)站上,用戶可以通過圖文并茂的網(wǎng)站食譜和搜索功能可以更快捷方便地預(yù)定購買自己想要吃的餐點(diǎn),而且這并沒有時(shí)間和餐點(diǎn)種類的限制,這更好地解決了有些用戶想在同一時(shí)間享用多家店鋪食品的情況。每一分每一秒對于商家來說都是利益,節(jié)約時(shí)間就能夠節(jié)約大量的成本,在某些角度上來說這就是在盈利。對用戶來說,足不出戶就可以購買到自己想要吃的東西,就是一種理想的購買模式。外賣訂餐系統(tǒng)最主要的目的和意義就在于為商家和客戶節(jié)約更多的時(shí)間和精力,使其能更為方便快捷地滿足各自的需求。
我國已經(jīng)成為世界第二大經(jīng)濟(jì)體,經(jīng)濟(jì)實(shí)力高速發(fā)展以及百姓生活水平的普遍提高,不斷地要求企業(yè)提供更加多元化的娛樂方式,更加快速和方便的服務(wù),因此對點(diǎn)餐行業(yè)也提出了更加嚴(yán)格的要求,如管理更加妥當(dāng)、服務(wù)更加舒適等。而現(xiàn)在我們所能看到的點(diǎn)餐數(shù)量也越來越多,信息量巨大,點(diǎn)餐業(yè)快速發(fā)展使得管理成本不斷擴(kuò)大。然而,傳統(tǒng)的點(diǎn)餐方式有許多缺點(diǎn):實(shí)際時(shí)間差異、超負(fù)荷、高成本和信息0共享。而外賣點(diǎn)餐系統(tǒng)正是當(dāng)下各大餐飲業(yè)為了適應(yīng)時(shí)代發(fā)展所推出的互聯(lián)網(wǎng)服務(wù),以其方便高效的服務(wù),在降低餐飲職工的勞動(dòng)強(qiáng)度,也減少了客戶排隊(duì)的煩惱。在全球信息化發(fā)展的背景下,網(wǎng)絡(luò)技術(shù)得到了前所未有的發(fā)展,手機(jī)逐漸成為人們?nèi)粘2豢苫蛉钡耐ㄐ殴ぞ?,而QQ、微信等新興通信軟件逐漸代替了短信等傳統(tǒng)通訊方式。2017年4月,騰訊公司旗下企鵝智酷公布了最新的《微信用戶&生態(tài)研究報(bào)告》,報(bào)告中指出截止到2016年年底,全球每月微信活用戶數(shù)達(dá)到8.89億,新興公眾號平臺共計(jì)1000萬個(gè)。由微信所帶動(dòng)的通信消費(fèi)為1742.5億元,這個(gè)消費(fèi)額占到2016年中國通信總消費(fèi)額的4.54%。也正是由于微信如此龐大的用戶群體,在很大程度上推動(dòng)了微信小程序的發(fā)展。
微信小程序具有如下特點(diǎn):首先,微信小程序作為一種新興的服務(wù)方式,直接與微信公眾號、微信支付以及微信卡券等模塊對接,同時(shí)該程序融入了微信生態(tài)體系,為用戶提供了更為便捷的使用體驗(yàn);其次,微信小程序無須單獨(dú)下載,是直接鑲嵌于微信程序中,用完退出即可,不必卸載。第三,與傳統(tǒng)APP相比,微信小程序推廣更加方便,成本也較低;第四,微信小程序借助微信平臺能夠?qū)崿F(xiàn)快速生成和投入使用,開發(fā)效率較高。因此,本文選擇基于微信小程序設(shè)計(jì)外賣點(diǎn)餐系統(tǒng),而非基于微信公眾號。
1.2 課題意義
社會主義進(jìn)入新時(shí)代,經(jīng)濟(jì)實(shí)力越來越強(qiáng)。我們也變得越來越忙碌、對生活的要求也變得更加嚴(yán)格,對快速和方便的服務(wù)的需求也在逐漸增加。因此,對點(diǎn)餐行業(yè)的管理、服務(wù)的要求也越來越嚴(yán)格。為適應(yīng)時(shí)代的發(fā)展,各大餐飲業(yè)開始廣泛地使用電腦來進(jìn)行管理,并推出微信小程序與外賣點(diǎn)餐系統(tǒng)相結(jié)合的外賣點(diǎn)餐小程序,為提高工作人員效率提供了一種新的方式,并且減輕了他們的工作強(qiáng)度,也免去排隊(duì)和租賃場地的困擾。免除排隊(duì)可以說在很大程度上降低客戶的不舒適感,在樹立企業(yè)形象的同時(shí),為客戶提供更加方便、舒適、優(yōu)質(zhì)而高效的服務(wù),實(shí)現(xiàn)雙贏。
與此同時(shí),開發(fā)基于微信小程序的外賣點(diǎn)餐系統(tǒng),也是順應(yīng)時(shí)代潮流的舉措,現(xiàn)如今點(diǎn)餐種類正逐漸增加,浩繁的點(diǎn)餐信息令點(diǎn)餐業(yè)迎來管理上的難題。餐飲行業(yè)進(jìn)入高速發(fā)展的時(shí)代,菜系管理工作變得越來越困難,在這一客觀需要的推動(dòng)下,建立、完善、發(fā)展外基于微信小程序的外賣點(diǎn)餐系統(tǒng),可以為電管理員帶來極大的方便。本文所設(shè)計(jì)的基于微信小程序的外賣點(diǎn)餐系統(tǒng)就是在這種客觀條件下進(jìn)行的,是一項(xiàng)利民利國的、非常有價(jià)值的工作。
1.3 開發(fā)技術(shù)
本系統(tǒng)前端部分基于MVVM模式進(jìn)行開發(fā),采用B/S模式,后端部分基于Java的ssm框架進(jìn)行開發(fā)。
前端部分:前端框架采用了比較流行的漸進(jìn)式JavaScript框架Vue.js。使用Vue-Router和Vuex實(shí)現(xiàn)動(dòng)態(tài)路由和全局狀態(tài)管理,Ajax實(shí)現(xiàn)前后端通信,Element UI組件庫使頁面快速成型,項(xiàng)目前端通過柵格布局實(shí)現(xiàn)響應(yīng)式,可適應(yīng)PC端、平板端、手機(jī)端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用ssm作為開發(fā)框架,同時(shí)集成MyBatis、Redis等相關(guān)技術(shù)。
1.3.1ssm框架介紹
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個(gè)開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容)。常作為數(shù)據(jù)源較簡單的web項(xiàng)目的框架。
1.6.1 Spring
Spring就像是整個(gè)項(xiàng)目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實(shí)體類的構(gòu)造方法來實(shí)例化對象。也可以稱之為項(xiàng)目中的粘合劑。
Spring的核心思想是IoC(控制反轉(zhuǎn)),即不再需要程序員去顯式地`new`一個(gè)對象,而是讓Spring框架幫你來完成這一切。
1.6.2 SpringMVC
SpringMVC在項(xiàng)目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔(dān)中介或是前臺這樣的職責(zé),將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應(yīng)請求所執(zhí)行的操作。SpringMVC相當(dāng)于SSH框架中struts。
1.6.3 mybatis
mybatis是對jdbc的封裝,它讓數(shù)據(jù)庫底層操作變的透明。mybatis的操作都是圍繞一個(gè)sqlSessionFactory實(shí)例展開的。mybatis通過配置文件關(guān)聯(lián)到各實(shí)體類的Mapper文件,Mapper文件中配置了每個(gè)類對數(shù)據(jù)庫所需進(jìn)行的sql語句映射。在每次與數(shù)據(jù)庫交互時(shí),通過sqlSessionFactory拿到一個(gè)sqlSession,再執(zhí)行sql命令。
頁面發(fā)送請求給控制器,控制器調(diào)用業(yè)務(wù)層處理邏輯,邏輯層向持久層發(fā)送請求,持久層與數(shù)據(jù)庫交互,后將結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)。
1.3.2?MySQL數(shù)據(jù)庫
科技的進(jìn)步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術(shù),數(shù)碼相機(jī)用到了光電檢測技術(shù),比如超市貨物進(jìn)出庫的記錄需要一個(gè)信息倉庫。這個(gè)信息倉庫就是數(shù)據(jù)庫,而這次的超市商品管理系統(tǒng)也需要這項(xiàng)技術(shù)的支持。
用MySQL這個(gè)軟件,是因?yàn)樗芙邮芏鄠€(gè)使用者訪問,而且里面存在Archive等。它會先把數(shù)據(jù)進(jìn)行分類,然后分別保存在表里,這樣的特別操作就會提高數(shù)據(jù)管理系統(tǒng)自身的速度,讓數(shù)據(jù)庫能被靈活運(yùn)用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個(gè)特點(diǎn)能夠降低使用者的成本,再搭配合適的軟件后形成一個(gè)良好的網(wǎng)站系統(tǒng)。雖然它有缺點(diǎn),但是綜合各方面來說,它是使用者的主流運(yùn)用的對象。
1.3.3?B/S結(jié)構(gòu)
B/S(Browser/Server)比前身架構(gòu)更為省事的架構(gòu)。它借助Web server完成數(shù)據(jù)的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達(dá)到“瘦身”效果, 不需要考慮不停裝軟件的問題。
1.3.4?B/S體系工作原理
B/S架構(gòu)采取瀏覽器請求,服務(wù)器響應(yīng)的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務(wù)器產(chǎn)生的文本、數(shù)據(jù)、圖片、動(dòng)畫、視頻點(diǎn)播和聲音等信息;
而每一個(gè)Web服務(wù)器又可以通過各種方式與數(shù)據(jù)庫服務(wù)器連接,大量的數(shù)據(jù)實(shí)際存放在數(shù)據(jù)庫服務(wù)器中;
從Web服務(wù)器上下載程序到本地來執(zhí)行,在下載過程中若遇到與數(shù)據(jù)庫有關(guān)的指令,由Web服務(wù)器交給數(shù)據(jù)庫服務(wù)器來解釋執(zhí)行,并返回給Web服務(wù)器,Web服務(wù)器又返回給用戶。在這種結(jié)構(gòu)中,將許許多多的網(wǎng)連接到一塊,形成一個(gè)巨大的網(wǎng),即全球網(wǎng)。而各個(gè)企業(yè)可以在此結(jié)構(gòu)的基礎(chǔ)上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對許多分布于網(wǎng)絡(luò)上的服務(wù)器進(jìn)行請求訪問的,瀏覽器的請求通過服務(wù)器進(jìn)行處理,并將處理結(jié)果以及相應(yīng)的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請求全部都是由Web Server完成的。通過該框架結(jié)構(gòu)以及植入于操作系統(tǒng)內(nèi)部的瀏覽器,該結(jié)構(gòu)已經(jīng)成為了當(dāng)今軟件應(yīng)用的主流結(jié)構(gòu)模式。
1.3.5 ?ssm框架各層關(guān)系
DAO層、Service層這兩個(gè)層次都可以單獨(dú)開發(fā),互相的耦合度很低,完全可以獨(dú)立進(jìn)行,這樣的一種模式在開發(fā)大項(xiàng)目的過程中尤其有優(yōu)勢。
Controller,View層因?yàn)轳詈隙缺容^高,因而要結(jié)合在一起開發(fā),但是也可以看作一個(gè)整體獨(dú)立于前兩個(gè)層進(jìn)行開發(fā)。這樣,在層與層之前只需要知道接口的定義,調(diào)用接口即可完成所需要的邏輯單元應(yīng)用,一切顯得非常清晰簡單。
1.8 JavaScript 運(yùn)行模式:
JavaScript是一種屬于網(wǎng)絡(luò)的高級腳本語言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來為網(wǎng)頁添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實(shí)現(xiàn)自身的功能的。
1.8.1是一種解釋性腳本語言(代碼不進(jìn)行預(yù)編譯)。
1.8.2主要用來向HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)頁面添加交互行為。
1.8.3可以直接嵌入HTML頁面,但寫成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。
1.8.4跨平臺特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺下運(yùn)行(如Windows、Linux、Mac、Android、iOS等)。
1.8.5 JavaScript腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型,表達(dá)式和算術(shù)運(yùn)算符及程序的基本程序框架。JavaScript提供了四種基本的數(shù)據(jù)類型和兩種特殊數(shù)據(jù)類型用來處理數(shù)據(jù)和文字。而變量提供存放信息的地方,表達(dá)式則可以完成較復(fù)雜的信息處理。
1.3.6 ?小程序框架以及目錄結(jié)構(gòu)介紹
整個(gè)小程序框架系統(tǒng)分為兩部分:邏輯層和視圖層。小程序開發(fā)框架的目標(biāo)是通過盡可能簡單、高效的方式讓開發(fā)者可以在微信中開發(fā)具有原生 小程序 體驗(yàn)的服務(wù)。小程序在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),提供了自己的視圖層以及邏輯層框架,讓開發(fā)者能夠?qū)W⒂跀?shù)據(jù)與邏輯??蚣艿暮诵氖且粋€(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),可以讓數(shù)據(jù)與視圖非常簡單地保持同步。在邏輯層做數(shù)據(jù)修改,在視圖層就會做相應(yīng)的更新??蚣芴峁┝艘惶谆A(chǔ)的組件,這些組件自帶微信風(fēng)格的樣式以及特殊的邏輯,開發(fā)者可以通過組合基礎(chǔ)組件,創(chuàng)建出強(qiáng)大的微信小程序 。
1.4國內(nèi)外現(xiàn)狀
進(jìn)入2022年以來,中國餐飲業(yè)行業(yè)的競爭正越來越激烈,受疫情影響,大量餐飲店倒閉,如何減輕用人成本、維護(hù)費(fèi)用,成為各大餐飲業(yè)的難題。而使用一個(gè)高效、靈活、安全可靠的外賣點(diǎn)餐系統(tǒng)對于減輕用人成本、方便維護(hù)、提高效率等都具有十分重要的意義。
從餐飲業(yè)的角度來看,外賣點(diǎn)餐小程序通過拉入注冊量,穩(wěn)固餐飲的客源,提高用戶的依賴性;?
從用戶的角度來看,外賣點(diǎn)餐小程序相當(dāng)于一個(gè)方便快捷的平臺,使用在線服務(wù)給予了他們更多的方便,能夠不受時(shí)間、空間的限制,完成從點(diǎn)餐的選擇到點(diǎn)餐等服務(wù)。
經(jīng)過數(shù)十年的發(fā)展和各大餐飲業(yè)的努力,餐飲行業(yè)可以說是比較成熟了,不論是菜系管理的質(zhì)量、數(shù)量、類型都比數(shù)十年前有了質(zhì)的飛躍。它在提高人們的生活質(zhì)量和拉動(dòng)地區(qū)經(jīng)濟(jì)方面貢獻(xiàn)著自己的力量,也是國家文化輸出的重要工具。新時(shí)代的人們在網(wǎng)上可以實(shí)現(xiàn)許多交易活動(dòng),如預(yù)定酒店房間、機(jī)票等。順應(yīng)時(shí)代發(fā)展的大勢所趨,倚靠計(jì)算機(jī)、互聯(lián)網(wǎng)技術(shù),整合資源是合乎發(fā)展潮流的正確選擇。本著為餐飲業(yè)提供一個(gè)方便管理和節(jié)約成本的方式,也為客戶提供一個(gè)高效獲取菜品信息的平臺,設(shè)計(jì)一個(gè)基于微信小程序的外賣點(diǎn)餐系統(tǒng),是必須也是必然的。
-
系統(tǒng)分析
2.1?可行性分析
可行性分析的目的是確定一個(gè)系統(tǒng)是否有必要開發(fā)、確定系統(tǒng)是否能以最小的代價(jià)實(shí)現(xiàn)。其工作主要有三個(gè)方面,分別是技術(shù)、經(jīng)濟(jì)和社會三方面的可行性。我會從這三個(gè)方面對基于微信小程序的外賣點(diǎn)餐系統(tǒng)進(jìn)行詳細(xì)的分析。
2.1.1技術(shù)可行性
該系統(tǒng)主要使用SSM框架啊和MySQL數(shù)據(jù)庫進(jìn)行開發(fā),Java易于學(xué)習(xí)和使用靈活。在校期間也接觸過SSM和MySQL數(shù)據(jù)庫的課程,對此有一定的開發(fā)經(jīng)驗(yàn),因此開發(fā)難度不高,所以從技術(shù)上來說是可行的。
2.1.2經(jīng)濟(jì)可行性
本系統(tǒng)設(shè)計(jì)所選擇的開發(fā)工具和服務(wù)器都是免費(fèi)的開源軟件,又或者是適合學(xué)生使用的免費(fèi)版本,并不需要支付費(fèi)用,而且由作者本人單獨(dú)完成,也不存在團(tuán)隊(duì)費(fèi)用,幾乎沒有經(jīng)濟(jì)成本,具備經(jīng)濟(jì)可行性。
2.1.3社會可行性
社會可行性主要包括法律和用戶兩個(gè)方面,下面將從這兩方面進(jìn)行分析。
(1)法律因素
本系統(tǒng)是學(xué)習(xí)開發(fā)所制作的程序,并不用作商業(yè)用途,是在根據(jù)實(shí)際調(diào)研的結(jié)果結(jié)合現(xiàn)有的外賣點(diǎn)餐系統(tǒng)后得出的,而且系統(tǒng)制作的全部過程都是在個(gè)人的工作電腦中完成的,使用的都是開源和免費(fèi)的開發(fā)環(huán)境、分析軟件和數(shù)據(jù)庫,不存在侵權(quán)問題。
(2)用戶可行性
操作人員或者客戶只需要具備一定的windows電腦操作常識,不需要精通計(jì)算機(jī)技能。此外系統(tǒng)管理人員,只需要在windows常識之上再熟悉下使用Tomcat服務(wù)器的操作流程,只要掌握一定的計(jì)算機(jī)知識即可,在正式上線運(yùn)營之前,僅需要對操作人員進(jìn)行簡單的熟悉流程培訓(xùn)即可。所以從用戶可行性上也是可行的。
2.2總體設(shè)計(jì)原則
一個(gè)系統(tǒng)要在開發(fā)和維護(hù)的過程中方便使用,必須采取一定的設(shè)計(jì)原則,其主要設(shè)計(jì)原則有:
簡單性:系統(tǒng)功能簡單易懂,只需要掌握基本的計(jì)算機(jī)操作能力即可使用。
針對性:針對特定的用戶,沒有多余的其他功能,使用戶可以專心使用。
實(shí)用性:能夠滿足用戶查看菜品信息等方面的需求。
一致性:設(shè)計(jì)風(fēng)格、命名規(guī)范一致,整個(gè)系統(tǒng)的各個(gè)功能模塊色彩、擺放位置、功能等都是一致的。
先進(jìn)性:本系統(tǒng)的代碼采用讀取數(shù)據(jù)的方式,方便后續(xù)開發(fā)、拓展。
2.3 系統(tǒng)需求分析
基于微信小程序的外賣點(diǎn)餐系統(tǒng)需要滿足的需求有以下幾個(gè):
1.信息獲取方便,用戶可在網(wǎng)頁上快速瀏覽到新的信息
2.查看點(diǎn)餐詳情,單獨(dú)查看某一個(gè)菜品信息,獲取好評等。
3.注冊登錄,餐飲需要吸引客戶,即通過注冊來提高用戶的存留率。
4.歷史記錄,用戶可以查看自己訂單信息以及其他操作。
5.修改用戶信息,可以修改用戶密碼或者用戶名等一些個(gè)性化操作。
6.管理員功能,管理員可以對用戶或者點(diǎn)餐進(jìn)行管理。
7.系統(tǒng)安全,操作簡便,不過于復(fù)雜。
8.系統(tǒng)可以穩(wěn)定運(yùn)行,不存在卡頓等問題造成用戶反感。
2.4 業(yè)務(wù)流程分析
2.4.1登錄流程
登錄模塊主要滿足管理員以及用戶的權(quán)限登錄,用戶登錄流程圖如圖2-1所示。
圖2-1?登錄流程圖
2.4.2注冊流程
未有賬號的用戶可進(jìn)入注冊界面進(jìn)行注冊操作,用戶注冊流程圖如圖2-2所示。
圖2-2?注冊流程圖
2.4.3添加信息流程
用戶在添加信息時(shí),信息編號自動(dòng)生成,系統(tǒng)會對添加的信息進(jìn)行驗(yàn)證,驗(yàn)證通過則添加至數(shù)據(jù)庫,添加信息成功,反之添加失敗。添加信息流程如圖2-3所示。
圖2-3?添加信息流程圖
2.4.4刪除信息流程
用戶可選擇要?jiǎng)h除的信息進(jìn)行信息刪除操作,在刪除信息時(shí)系統(tǒng)提示是否確定刪除信息,是則刪除信息成功,系統(tǒng)數(shù)據(jù)庫將信息進(jìn)行刪除。刪除信息流程圖如圖2-4所示。
圖2-4刪除信息流程圖
- 系統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)概要設(shè)計(jì)
本菜品系統(tǒng)選擇B/S結(jié)構(gòu)(Browser/Server,瀏覽器/服務(wù)器結(jié)構(gòu))和基于Web服務(wù)兩種模式。適合在互聯(lián)網(wǎng)上進(jìn)行操作,只要用戶能連網(wǎng),任何時(shí)間、任何地點(diǎn)都可以進(jìn)行系統(tǒng)的操作使用。系統(tǒng)工作原理圖如圖3-1所示:
圖3-1 系統(tǒng)工作原理圖
3.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
整個(gè)系統(tǒng)是由多個(gè)功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進(jìn)行逐個(gè)的功能設(shè)計(jì),使得每一個(gè)模塊都有相對應(yīng)的功能設(shè)計(jì),然后進(jìn)行系統(tǒng)整體的設(shè)計(jì)。
本外賣點(diǎn)餐系統(tǒng)結(jié)構(gòu)圖如圖3-2所示。
圖3-2?外賣點(diǎn)餐系統(tǒng)結(jié)構(gòu)圖
3.3 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫可以說是所有軟件的根本,如果數(shù)據(jù)庫存在缺陷,那么會導(dǎo)致系統(tǒng)開發(fā)的不順利、維護(hù)困難、用戶使用不順暢等一系列問題,嚴(yán)重時(shí)將會直接損害企業(yè)的利益,同時(shí)在開發(fā)完成后,數(shù)據(jù)庫缺陷也更加難以解決。所以必須要對數(shù)據(jù)庫設(shè)計(jì)重點(diǎn)把握,做到認(rèn)真細(xì)致。因此,數(shù)據(jù)庫設(shè)計(jì)是這個(gè)點(diǎn)餐購票系統(tǒng)的重點(diǎn)要素。
3.3.1概念結(jié)構(gòu)設(shè)計(jì)
(1)管理員實(shí)體屬性圖如下圖3-3所示
圖3-3管理員實(shí)體屬性圖
(2)?系統(tǒng)實(shí)體屬性如下圖3-4所示
圖3-4系統(tǒng)實(shí)體屬性圖
3.3.2數(shù)據(jù)庫表設(shè)計(jì)
將數(shù)據(jù)庫概念設(shè)計(jì)的E-R圖轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫。在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)關(guān)系由數(shù)據(jù)表組成,但是表的結(jié)構(gòu)表現(xiàn)在表的字段上。
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
ordinary_users_id |
int |
11 |
是 |
是 |
普通用戶ID |
user_name |
varchar |
64 |
否 |
否 |
用戶姓名 |
user_gender |
varchar |
64 |
否 |
否 |
用戶性別 |
user_number |
varchar |
64 |
是 |
否 |
用戶編號 |
examine_state |
varchar |
16 |
是 |
否 |
審核狀態(tài) |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
user_id |
int |
11 |
是 |
否 |
用戶ID |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時(shí)間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時(shí)間 |
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
user_feedback_id |
int |
11 |
是 |
是 |
用戶反饋ID |
user_number |
int |
11 |
否 |
否 |
用戶編號 |
user_name |
varchar |
64 |
否 |
否 |
用戶姓名 |
user_mobile_number |
varchar |
16 |
否 |
否 |
用戶手機(jī)號 |
feedback_type |
varchar |
64 |
否 |
否 |
反饋類型 |
feedback_information |
text |
0 |
否 |
否 |
反饋信息 |
feedback_reply |
text |
0 |
否 |
否 |
反饋回復(fù) |
examine_state |
varchar |
16 |
是 |
否 |
審核狀態(tài) |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時(shí)間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時(shí)間 |
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
user_evaluation_id |
int |
11 |
是 |
是 |
用戶評價(jià)ID |
order_number |
varchar |
64 |
否 |
否 |
訂單號 |
dish_name |
varchar |
64 |
否 |
否 |
菜品名稱 |
store_name |
varchar |
64 |
否 |
否 |
店鋪名稱 |
purchase_quantity |
varchar |
64 |
否 |
否 |
購買數(shù)量 |
user_name |
varchar |
64 |
否 |
否 |
用戶姓名 |
user_mobile_number |
varchar |
64 |
否 |
否 |
用戶手機(jī)號 |
user_rating |
varchar |
64 |
否 |
否 |
用戶評分 |
merchant_number |
int |
11 |
否 |
否 |
商家編號 |
user_number |
int |
11 |
否 |
否 |
用戶編號 |
user_evaluation |
text |
0 |
否 |
否 |
用戶評價(jià) |
merchant_reply |
text |
0 |
否 |
否 |
商家回復(fù) |
examine_state |
varchar |
16 |
是 |
否 |
審核狀態(tài) |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時(shí)間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時(shí)間 |
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
order_center_id |
int |
11 |
是 |
是 |
訂單中心ID |
order_number |
varchar |
64 |
否 |
否 |
訂單號 |
dish_name |
varchar |
64 |
否 |
否 |
菜品名稱 |
dish_no |
varchar |
64 |
否 |
否 |
菜品編號 |
store_name |
varchar |
64 |
否 |
否 |
店鋪名稱 |
dish_unit_price |
varchar |
64 |
否 |
否 |
菜品單價(jià) |
purchase_quantity |
int |
11 |
否 |
否 |
購買數(shù)量 |
total_dishes |
varchar |
64 |
否 |
否 |
菜品合計(jì) |
user_number |
int |
11 |
否 |
否 |
用戶編號 |
user_name |
varchar |
64 |
否 |
否 |
用戶姓名 |
user_mobile_number |
varchar |
16 |
否 |
否 |
用戶手機(jī)號 |
receiving_address |
varchar |
64 |
否 |
否 |
收貨地址 |
order_time_ |
varchar |
64 |
否 |
否 |
下單時(shí)間 |
merchant_number |
int |
11 |
否 |
否 |
商家編號 |
whether_to_accept_the_order |
varchar |
64 |
否 |
否 |
是否接單 |
service_preference |
text |
0 |
否 |
否 |
服務(wù)偏好 |
examine_state |
varchar |
16 |
是 |
否 |
審核狀態(tài) |
pay_state |
varchar |
16 |
是 |
否 |
支付狀態(tài) |
pay_type |
varchar |
16 |
否 |
否 |
支付類型: |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時(shí)間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時(shí)間 |
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
dish_information_id |
int |
11 |
是 |
是 |
菜品信息ID |
dish_name |
varchar |
64 |
否 |
否 |
菜品名稱 |
dish_no |
varchar |
64 |
否 |
否 |
菜品編號 |
store_name |
varchar |
64 |
否 |
否 |
店鋪名稱 |
dish_pictures |
varchar |
255 |
否 |
否 |
菜品圖片 |
dish_unit_price |
int |
11 |
否 |
否 |
菜品單價(jià) |
dish_inventory |
int |
11 |
否 |
否 |
菜品庫存 |
merchant_number |
int |
11 |
否 |
否 |
商家編號 |
dish_materials |
text |
0 |
否 |
否 |
菜品材料 |
introduction_to_dishes |
text |
0 |
否 |
否 |
菜品簡介 |
hits |
int |
11 |
是 |
否 |
點(diǎn)擊數(shù) |
examine_state |
varchar |
16 |
是 |
否 |
審核狀態(tài) |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時(shí)間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時(shí)間 |
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
distribution_information_id |
int |
11 |
是 |
是 |
配送信息ID |
order_number |
varchar |
64 |
否 |
否 |
訂單號 |
dish_name |
varchar |
64 |
否 |
否 |
菜品名稱 |
store_name |
varchar |
64 |
否 |
否 |
店鋪名稱 |
purchase_quantity |
varchar |
64 |
否 |
否 |
購買數(shù)量 |
user_name |
varchar |
64 |
否 |
否 |
用戶姓名 |
user_mobile_number |
varchar |
64 |
否 |
否 |
用戶手機(jī)號 |
receiving_address |
varchar |
64 |
否 |
否 |
收貨地址 |
distribution_status |
varchar |
64 |
否 |
否 |
配送狀態(tài) |
estimated_delivery_time |
varchar |
64 |
否 |
否 |
預(yù)計(jì)送達(dá)時(shí)間 |
user_sign_in |
varchar |
64 |
否 |
否 |
用戶簽收 |
merchant_number |
int |
11 |
否 |
否 |
商家編號 |
user_number |
int |
11 |
否 |
否 |
用戶編號 |
service_preference |
text |
0 |
否 |
否 |
服務(wù)偏好 |
examine_state |
varchar |
16 |
是 |
否 |
審核狀態(tài) |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時(shí)間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時(shí)間 |
第4章系統(tǒng)實(shí)現(xiàn)
4.1系統(tǒng)功能模塊
外賣點(diǎn)餐系統(tǒng),在系統(tǒng)首頁可以查看首頁、菜品信息、外賣資訊、跳轉(zhuǎn)到后臺等內(nèi)容,如圖4-1所示。
??????????????????????????????????
圖4-1系統(tǒng)功能界面圖
???菜品信息管理,在菜品信息管理可以查看店鋪名稱、商家編號、菜品編號、菜品材料、菜品名稱、價(jià)格、數(shù)量、圖片等內(nèi)容,如圖4-2所示。
圖4-2菜品信息信息界面圖
菜品信息的邏輯代碼如下:
?@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
}
????public void insert(Map<String,Object> body){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
外賣資訊,在外賣資訊頁面可以查看資訊詳細(xì)信息,如圖4-3所示。在注冊頁面通過填寫用戶賬號、密碼、用戶姓名、手機(jī)等信息完成用戶注冊,如圖4-4所示。
圖4-3資訊列表界面圖
圖4-4注冊界面圖
用戶注冊邏輯代碼如下:
/**
?????* 注冊
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶ID:[0,8388607]用戶獲取其他與用戶相關(guān)的數(shù)據(jù)
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|4已注銷)
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶組:[0,32767]決定用戶身份和權(quán)限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時(shí)間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機(jī)號碼:[0,11]用戶的手機(jī)號碼,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機(jī)認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶名:[0,16]用戶登錄時(shí)所用的賬戶名稱
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱:[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶登錄所需的密碼,由6-16位數(shù)字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶的郵箱,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創(chuàng)建時(shí)間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
4.2管理員功能模塊
管理員登錄,通過填寫注冊時(shí)輸入的用戶名、密碼、權(quán)限進(jìn)行登錄,如圖4-5所示。
圖4-5管理員登錄界面圖
管理員登錄進(jìn)入外賣點(diǎn)餐系統(tǒng)可以查看首頁、站點(diǎn)管理(管理員、商家、普通用戶)內(nèi)容管理(資訊列表、資訊分類)更多管理(菜品信息管理、分類管理、訂單管理)系統(tǒng)管理等信息,如圖4-6所示。
圖4-6管理員功能界面圖
分類管理,在分類列表中可以查看菜品分類等內(nèi)容,還可以根據(jù)需要對分類信息進(jìn)行修改或刪除操作,如圖4-7所示。
圖4-7菜品信息管理界面圖
菜品信息管理界面邏輯代碼如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
外賣資訊管理,在外賣資訊管理中可以查看資訊名稱、標(biāo)題、圖片、內(nèi)容等信息,并可根據(jù)需求進(jìn)行修改或刪除操作,如圖4-8所示。
圖4-8外賣資訊管理界面圖
訂單信息管理,在訂單信息管理列表中可以查看菜品編號、菜品名稱、類型、價(jià)格、購買數(shù)量、總價(jià)格、用戶賬號、用戶姓名、手機(jī)、送貨地址、備注、是否審核等信息,并可根據(jù)需要進(jìn)行修改或刪除操作,如圖4-9所示。
圖4-9訂單信息管理界面圖
訂單信息管理界面邏輯代碼如下:
?@RequestMapping("/get_list")
????public Map<String, Object> getList(HttpServletRequest request) {
????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
????????return success(map);
}
用戶管理,在用戶管理列表中可以查看用戶賬號、密碼、用戶姓名、性別、手機(jī)、照片等內(nèi)容,并且根據(jù)需要進(jìn)行修改或刪除操作,如圖4-10所示。
圖4-10用戶管理界面圖
4.3用戶功能模塊
用戶登錄進(jìn)入外賣點(diǎn)餐系統(tǒng)可以查看首頁、公告欄、美食資訊、菜品信息、訂餐等內(nèi)容,如圖4-11所示。
圖4-11用戶功能界面圖
個(gè)人中心,在用戶信息列表中通過填寫用戶賬號、密碼、用戶姓名、性別、手機(jī)、照片等信息進(jìn)行提交,如圖4-12所示。
圖4-12個(gè)人中心界面圖
訂單信息管理,在訂單信息列表中可以查看菜品編號、菜品名稱、菜系、價(jià)格、購買數(shù)量、總價(jià)格、用戶賬號、用戶姓名、手機(jī)、送貨地址、備注、是否支付等信息,如圖4-13所示。
圖4-13訂單信息管理界面圖
訂單管理界面關(guān)鍵代碼如下:
@RestController
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
????/**
?????* 服務(wù)對象
?????*/
????@Autowired
????public AuthController(AuthService service) {
????????setService(service);
????}
??????????????????第5章軟件測試
測試存在于軟件開發(fā)進(jìn)程中的最后一個(gè)階段,它可以保證一個(gè)軟件的開發(fā)質(zhì)量是否符合設(shè)計(jì)者的初衷,也為程序的正式上線做了最后一道質(zhì)量檢測的工序。軟件測試主要是控制各種條件、包括軟件輸出方式,使用模式和運(yùn)行環(huán)境等,來評估一個(gè)系統(tǒng)或應(yīng)用是否符合設(shè)計(jì)標(biāo)準(zhǔn)。在軟件測試過程中,我們一般刻意的去制造錯(cuò)誤和極端條件,不能僅依照正常模式允許,而是多去嘗試那些意外的情況。
5.1軟件測試的重要性
只有在運(yùn)行和維護(hù)階段之前經(jīng)歷大量的測試的軟件,才能說明它的質(zhì)量是經(jīng)得起檢驗(yàn)的。最近計(jì)算機(jī)業(yè)界也都一致認(rèn)為,測試應(yīng)該存在于軟件設(shè)計(jì)的每個(gè)階段,因?yàn)樵皆绨l(fā)現(xiàn)錯(cuò)誤,修復(fù)起來就越容易。
實(shí)際上,對于一個(gè)軟件應(yīng)用,錯(cuò)誤是必然存在的,無論使用何種技術(shù)或手段,都不可能絕對的排除軟件漏洞。測試是隨著軟件開發(fā)一同誕生的,兩者是共同發(fā)展進(jìn)步的。實(shí)際上,測試可以大幅度的降低維護(hù)的成本,如果一個(gè)漏洞在開發(fā)的早期就被發(fā)現(xiàn),那么修復(fù)它的成本遠(yuǎn)比上線后再修復(fù)的成本要低得多。
5.2測試實(shí)例的研究與選擇
測試有白盒測試和黑盒測試兩種方式。
其中,白盒測試是將軟件看成一個(gè)透明的白盒子,按照程序的內(nèi)部控制結(jié)構(gòu)和處理技術(shù)邏輯來選定測試用例、軟件系統(tǒng)測試的邏輯路徑及過程需要進(jìn)行管理測試,又稱玻璃盒測試。因此白盒測試需要選擇足夠多的測試用例,覆蓋盡可能多的代碼來發(fā)現(xiàn)程序中的錯(cuò)誤。
黑盒測試,也稱為功能測試。它將需軟件看作一個(gè)黑盒,像一個(gè)普通用戶一樣來模擬軟件的使用流程。黑盒測試通過大量的輸入邊界值或錯(cuò)誤數(shù)據(jù),來檢查是否可產(chǎn)生正確的輸出。
本系統(tǒng)測試 主要選擇黑盒測試,少量采用白盒測試。通過測試達(dá)到以下測試目的:
1.檢查各大功能模塊的運(yùn)行,確保其能夠正確運(yùn)行,并檢查各頁面的完整性,保證頁面完整。
2.檢查各個(gè)接口是否可以正確地輸入和輸出,保證數(shù)據(jù)流通穩(wěn)定可行。
3.檢查數(shù)據(jù)結(jié)構(gòu),保證其和外部接口沒有訪問錯(cuò)誤,訪問順利。
4.檢查原計(jì)劃的性能需求有沒有完成,運(yùn)行流暢。
本系統(tǒng)的測試用例(部分):
登錄部分測試用例 | |||||
編號 |
對象 |
項(xiàng)目 |
操作 |
預(yù)期結(jié)果 |
結(jié)果 |
1 |
登錄 |
登錄提示 |
使用正確的賬號密碼登錄 |
成功登錄 |
預(yù)期結(jié)果 |
2 |
登錄提示 |
使用正確的賬號但錯(cuò)誤的密碼登錄 |
提示密碼錯(cuò)誤 |
預(yù)期結(jié)果 |
|
3 |
登錄提示 |
使用錯(cuò)誤的賬號登錄 |
提示不存在賬戶 |
預(yù)期結(jié)果 |
|
4 |
登錄提示 |
不輸入賬號,點(diǎn)擊登錄 |
提示輸入賬號 |
預(yù)期結(jié)果 |
|
5 |
登錄提示 |
輸入賬號但不輸入密碼點(diǎn)擊登錄 |
提示輸入密碼 |
預(yù)期結(jié)果 |
|
6 |
登錄入口 |
已登錄賬號,查看登錄入口 |
不顯示登錄入口 |
預(yù)期結(jié)果 |
5.3測試環(huán)境與測試條件
處理器:Inter Core I7-4710MQ四核處理器
內(nèi)存:4GB
硬盤:1T
操作系統(tǒng):Windows 10
數(shù)據(jù)庫:MySQL
5.4系統(tǒng)運(yùn)行情況
全部測試用例都已通過(包括但不限于以上測試用例),且不存在漏洞,實(shí)現(xiàn)了論文開始時(shí)所作要求。本系統(tǒng)運(yùn)行穩(wěn)定,使用流暢,可以滿足客戶需求。
5.5系統(tǒng)評價(jià)
5.5.1系統(tǒng)功能評價(jià)
試運(yùn)行后進(jìn)行系統(tǒng)評估,可以認(rèn)為該系統(tǒng)達(dá)到預(yù)定的目標(biāo)要求,可以滿足用戶的需求,也滿足了系統(tǒng)開發(fā)前所作目標(biāo)。
5.5.2系統(tǒng)技術(shù)評價(jià)
系統(tǒng)在經(jīng)過大量重復(fù)測試后運(yùn)行十分穩(wěn)定,安全實(shí)用,功能模塊已經(jīng)達(dá)到預(yù)定目標(biāo)所需。
5.5.3系統(tǒng)經(jīng)濟(jì)評價(jià)
在規(guī)定的時(shí)間內(nèi)實(shí)現(xiàn)系統(tǒng)的大部分功能,且滿足要求,節(jié)省開發(fā)成本,有助于提高科學(xué)管理水平,符合本人經(jīng)濟(jì)情況。
第6章 總結(jié)
2022年的今天,計(jì)算機(jī)技術(shù)已經(jīng)相當(dāng)成熟。它的發(fā)展推動(dòng)了許多行業(yè)改頭換面,計(jì)算機(jī)的出現(xiàn)使人類社會有了進(jìn)一步降低人力物力和資源的方法,提高了人類社會的生產(chǎn)力,轉(zhuǎn)變了社會生產(chǎn)方式。目前各大餐飲都在積極備戰(zhàn),發(fā)展計(jì)算機(jī)和互聯(lián)網(wǎng),結(jié)合自身優(yōu)勢進(jìn)軍互聯(lián)網(wǎng)行業(yè)成為各大企業(yè)的重點(diǎn)項(xiàng)目。
本文利用SSM框架和MySQL數(shù)據(jù)庫技術(shù),通過分析外賣點(diǎn)餐平臺與微信小程序的基礎(chǔ)上,并完成了基于微信小程序的外賣點(diǎn)餐系統(tǒng)。經(jīng)調(diào)試結(jié)果顯示,本系統(tǒng)基本可以滿足一個(gè)基于微信小程序的外賣點(diǎn)餐系統(tǒng)的業(yè)務(wù)需要。系統(tǒng)界面簡潔而有美感, 易操作,做出了自己的特色,然而因?yàn)闀r(shí)間倉促再加上缺乏系統(tǒng)開發(fā)經(jīng)驗(yàn)和僅依靠少數(shù)問卷調(diào)查方式,因此本系統(tǒng)還存在不少缺陷、不足,比如:
1. 數(shù)據(jù)輸入的格式并沒有全部檢驗(yàn),所以很難保證數(shù)據(jù)的準(zhǔn)確,可能有一些不符合規(guī)則的數(shù)據(jù)也可以通過檢驗(yàn)。
2. 系統(tǒng)功能還不夠完善,無法提供豐富多彩的在線功能,只能實(shí)現(xiàn)菜系管理、菜品信息管理、訂單信息管理、用戶管理、營養(yǎng)搭配管理等一系列功能。
本系統(tǒng)還存在一些漏洞沒有解決,在現(xiàn)實(shí)應(yīng)用情境中很難保證完全不出錯(cuò),但相信通過再次完善,可以調(diào)試出真正符合實(shí)際的基于微信小程序的外賣點(diǎn)餐系統(tǒng)。
參考文獻(xiàn):
[1]王一竹.基于MySQL的圖書館信息管理系統(tǒng)設(shè)計(jì)[J].電腦編程技巧與維護(hù),2022(01):93-95+116.DOI:10.16184/j.cnki.comprg.2022.01.003.
[2]朱廣躍.移動(dòng)Web點(diǎn)餐系統(tǒng)的設(shè)計(jì)[J].集成電路應(yīng)用,2022,39(01):124-125.DOI:10.19339/j.issn.1674-2583.2022.01.045.
[3]劉學(xué)玉.JAVA編程語言在計(jì)算機(jī)軟件開發(fā)中的應(yīng)用[J].電子技術(shù)與軟件工程,2022(01):57-60.
[4]黃美益.基于Java Web技術(shù)的教學(xué)資源庫系統(tǒng)設(shè)計(jì)[J].電子技術(shù)與軟件工程,2022(01):229-232.
[5]王瑛瑛.基于Java技術(shù)的英語學(xué)習(xí)激勵(lì)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微型電腦應(yīng)用,2021,37(12):71-73+77.
[6]涂華燕.基于MySQL宿舍管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)[J].電腦編程技巧與維護(hù),2021(12):104-106.DOI:10.16184/j.cnki.comprg.2021.12.038.
[7]佟亞超.計(jì)算機(jī)軟件Java編程特點(diǎn)及技術(shù)探析[J].技術(shù)與市場,2021,28(12):86-87+89.
[8]易潔,黃翔.基于《MySQL數(shù)據(jù)庫技術(shù)》的新形態(tài)教材開發(fā)與應(yīng)用[J].機(jī)械職業(yè)教育,2021(12):53-57.DOI:10.16309/j.cnki.issn.1007-1776.2021.12.012.
[9]閆繼正,張雷,張海濤.基于MySQL的空管設(shè)備集中監(jiān)控系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)[J].微處理機(jī),2021,42(06):47-51.
[10]何芳.Java平臺及應(yīng)用Java技術(shù)的安全問題分析[J].科技資訊,2021,19(35):10-12.DOI:10.16661/j.cnki.1672-3791.2111-5042-9792.
[11]Zhuoxi Zhang,Ming Yuan,Hanwei Qian. Research on MySQL Database Recovery and Forensics Based on Binlog[C]//Proceedings of the 11th International Conference on Computer Engineering and Networks(CENet2021)Part I.,2021:750-759.DOI:10.26914/c.cnkihy.2021.045076.
[12]喻佳,吳丹新.基于SpringBoot的Web快速開發(fā)框架[J].電腦編程技巧與維護(hù),2021(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.
[13]鹿俊聰.基于Android的食堂點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科學(xué)技術(shù)創(chuàng)新,2021(22):101-102.
[14]馮秀玲.智能點(diǎn)餐系統(tǒng)設(shè)計(jì)與應(yīng)用[J].電子技術(shù),2021,50(06):30-32.
[15]邱璐璐,陳俊仁.基于SpringBoot和Vue框架的高校代領(lǐng)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].信息技術(shù)與信息化,2021(04):25-27.
[16]Guanhong Chen,Jiangming Xu. Design and implementation of efficient Learning platform based on SpringBoot Framework[J]. Journal of Electronics and Information Science,2020,6(1):
[17]Minmin He,Shengli Lv. Research on Civil Aircraft Structural Strength Material Performance Database Based on SpringBoot[C]//Proceedings of 2020 4th International Conference on Electrical,Automation and Mechanical Engineering(EAME2020).Proceedings of 2020 4th International Conference on Electrical,2020:1062-1067.DOI:10.26914/c.cnkihy.2020.057541.
[18]田海晴. 基于SpringBoot和Vue框架的共享運(yùn)營管理平臺的設(shè)計(jì)與實(shí)現(xiàn)[D].山東大學(xué),2020.DOI:10.27272/d.cnki.gshdu.2020.004528.
[19]葉濟(jì)凡. 基于SpringBoot與Vue框架的中文社科論文分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京大學(xué),2020.DOI:10.27235/d.cnki.gnjiu.2020.001733.
[20]吳彥文. 外賣點(diǎn)餐軟件品類導(dǎo)航服務(wù)及其運(yùn)營系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南京大學(xué),2018
致???謝
大學(xué)生活在這個(gè)時(shí)候即將劃上一個(gè)句號,但是對于我的人生道路來說,這僅僅是一個(gè)逗號,我將面對的是又一次征程的開始。
回憶過去,許許多多的事情浮現(xiàn)在腦海:剛上大學(xué)時(shí)歡樂心情和興奮的場景還歷歷在目。一切都是那么新鮮,那么富有吸引力。有快樂也有艱辛,有收獲也有失落。衷心感謝信息學(xué)院所有支持幫助過我的老師,謝謝你們多年來的關(guān)心和愛護(hù)。同窗的友情同樣難忘,你們與我共同走過了人生中不平凡的道路,給我留下了值得珍藏的美好記憶。
最后,我要特別感謝指導(dǎo)點(diǎn)餐購票系統(tǒng)論文設(shè)計(jì)的老師。本論文是在他的悉心指導(dǎo)和熱情幫助下完成的,老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和精深的理論水平都使我受益匪淺。老師無論在理論上還是在實(shí)踐中,都給予我很大的幫助,使我專業(yè)技能的應(yīng)用水平得到很大提高,這對于我以后的工作和學(xué)習(xí)都有益處。值此論文完成之際,特別向老師表示衷心的感謝和崇高的敬意,謝謝他細(xì)心而又耐心地輔導(dǎo),使得我得以順利的完成畢業(yè)設(shè)計(jì)開發(fā)工作,同時(shí)也要感謝其他幫助過我的老師和同學(xué),他們在我成長過程中給予了我很大的幫助,在此一并表示感謝。
由于本人水平有限,加上時(shí)間緊促,本文一定有不少缺點(diǎn)和不足,懇請各位老師給予幫助和指正。文章來源:http://www.zghlxwxcb.cn/news/detail-482728.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 點(diǎn)贊+收藏+關(guān)注??→? 私信領(lǐng)取本源代碼、數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-482728.html
到了這里,關(guān)于ssm基于微信小程序的外賣點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)-附源碼211704的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!