本論文主要論述了如何使用python語言開發一個網上訂餐系統 ,本系統將嚴格按照軟件開發流程進行各個階段的工作,采用B/S架構,面向對象編程思想進行項目開發.在引言中,作者將論述網上訂餐系統 的當前背景以及系統開發的目的,後續章節將嚴格按照軟件開發流程,對系統進行各個階段分析設計.
網上訂餐系統的主要使用者分為管理員、商家和用戶,實現功能包括管理員:首頁、個人中心、個人信息、菜品類型管理,論壇管理、系統管理、商家管理、菜品信息管理、投訴建議管理、用戶管理、訂單信息管理、評價信息管理等等.商家管理:個人中心、個人信息、菜品信息、投訴建議管理、訂單信息管理、評價信息等功能.用戶管理:個人中心、個人信息、投訴建議管理、訂單信息管理、評價信息、我的收藏等等.由於本網站的功能模塊設計比較全面,所以使得整個網上訂餐系統 的過程得以實現.
登錄模塊主要滿足了管理員以及用戶的權限登錄
管理員以及用戶登錄後均可進行添加信息操作,添加信息模塊順序圖如圖
開發語言:Python
python框架:django
軟件版本:python3.7/python3.8
數據庫:mysql 5.7或更高版本
數據庫工具:Navicat11
開發軟件:PyCharm/vs code
前端框架:vue.js
可開發框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可開發
The user can view the details page of the dish in the dish information at the front desk,and can place an order、支付、Collection and other operations as shown in the figure
管理員輸入個人的賬號、密碼登錄系統,這時候系統的數據庫就會在進行查找相關的信息,如果我們輸入的賬號、密碼和驗證碼不正確,數據庫就會提示出錯誤的信息提示,同時會提示管理員重新輸入輸入自己的賬號、密碼和驗證碼,直到賬號密碼輸入成功後,會提登錄成功的信息.
管理員對菜品信息管理信息進行上傳、刪除、修改以及查看等操作.程序效果圖如下圖
管理員對用戶信息進行用戶名、用戶姓名、密碼性別等等進行添加、查看、修改以及刪除等操作.程序效果圖如下圖
The administrator edits the order number for the order information、商家號、菜品編號、菜品名稱、數量、價格、The total amount, etc. are deleted、修改以及查看等操作.程序效果圖如下圖
You can view the dish number on the merchant management page、城市、菜品名稱、菜品類型、價格、數量等內容,and can be added as needed、刪除、Modify and view detailed content operations
1 緒論 1
1.1 研究背景 1
1.2 研究現狀 1
1.3 研究內容 2
2 系統關鍵技術 3
2.1 python技術 3
2.2Dango框架 3
2.3 MYSQL數據庫 4
2.4 B/S結構 4
3 系統分析 5
3.1 可行性分析 5
3.1.1 技術可行性 5
3.1.2經濟可行性 5
3.1.3操作可行性 5
3.2 系統性能分析 5
3.3 系統功能分析 6
3.5系統流程分析 7
3.5.1登錄流程 7
3.5.2注冊流程 8
3.5.3添加信息流程 8
3.5.4刪除信息流程 9
4 系統設計 10
4.1系統概要設計 10
4.2系統結構設計 10
4.3系統順序圖設計 11
4.3.1登錄模塊順序圖 11
4.3.2添加信息模塊順序圖 11
4.4數據庫設計 12
4.4.1數據庫E-R圖設計 12
4.3.2數據庫表設計 14
5 .1系統的實現 17
5.2 管理員功能模塊 18
5.3商家功能模塊 21
5.4.用戶前後台管理 21
6 系統測試 23
6.1 測試定義 23
6.2 測試目的 23
6.3測試方案 24
6.4系統分析 26
7 結論 27
參考文獻 28
謝辭 29
def caipinxinxi_register(request):
if request.method in ["POST", "GET"]:
msg = {
'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
error = caipinxinxi.createbyreq(caipinxinxi, caipinxinxi, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def caipinxinxi_login(request):
if request.method in ["POST", "GET"]:
msg = {
'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
datas = caipinxinxi.getbyparams(caipinxinxi, caipinxinxi, req_dict)
if not datas:
msg['code'] = password_error_code
msg['msg'] = mes.password_error_code
return JsonResponse(msg)
req_dict['id'] = datas[0].get('id')
return Auth.authenticate(Auth, caipinxinxi, req_dict)
def caipinxinxi_logout(request):
if request.method in ["POST", "GET"]:
msg = {
"msg": "登出成功",
"code": 0
}
return JsonResponse(msg)
def caipinxinxi_resetPass(request):
''' '''
if request.method in ["POST", "GET"]:
msg = {
"code": normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
error = caipinxinxi.updatebyparams(caipinxinxi,caipinxinxi, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def caipinxinxi_session(request):
''' '''
if request.method in ["POST", "GET"]:
msg = {
"code": normal_code,"msg": mes.normal_code, "data": {
}}
req_dict={
"id":request.session.get('params').get("id")}
msg['data'] = caipinxinxi.getbyparams(caipinxinxi, caipinxinxi, req_dict)[0]
return JsonResponse(msg)
def caipinxinxi_page(request):
''' '''
if request.method in ["POST", "GET"]:
msg = {
"code": normal_code, "msg": mes.normal_code, "data":{
"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
req_dict = request.session.get("req_dict")
#當前登錄用戶所在表
tablename = request.session.get("tablename")
#當列屬性authTable有值(某個用戶表)[該列的列名必須和該用戶表的登陸字段名一致],則對應的表有個隱藏屬性authTable為”是”,那麼該用戶查看該表信息時,只能查看自己的
try:
__authTables__=caipinxinxi.__authTables__
except:
__authTables__=None
if __authTables__!=None and __authTables__!={
}:
for authColumn,authTable in __authTables__.items():
if authTable==tablename:
params = request.session.get("params")
req_dict[authColumn]=params.get(authColumn)
break
#當項目屬性hasMessage為”是”,生成系統自動生成留言板的表messages,同時該表的表屬性hasMessage也被設置為”是”,字段包括userid(用戶id),username(用戶名),content(留言內容),reply(回復)
#接口page需要區分權限,普通用戶查看自己的留言和回復記錄,管理員查看所有的留言和回復記錄
try:
__hasMessage__=caipinxinxi.__hasMessage__
except:
__hasMessage__=None
if __hasMessage__=="是":
tablename=request.session.get("tablename")
if tablename!="users":
req_dict["userid"]=request.session.get("params").get("id")
if tablename == "users" and req_dict.get("userid") != None:
del req_dict["userid"]
else:
# 判斷當前表的表屬性isAdmin,為真則是管理員表
# 當表屬性isAdmin=”是”,刷出來的用戶表也是管理員,即page和list可以查看所有人的考試記錄(同時應用於其他表)
__isAdmin__ = None
allModels = apps.get_app_config('main').get_models()
for m in allModels:
if m.__tablename__==tablename:
try:
__isAdmin__ = m.__isAdmin__
except:
__isAdmin__ = None
break
# 當前表也是有管理員權限的表
if __isAdmin__ == "是":
del req_dict["userid"]
else:
#非管理員權限的表,判斷當前表字段名是否有userid
if tablename!="users" and "userid" in caipinxinxi.getallcolumn(caipinxinxi,caipinxinxi):
req_dict["userid"] = request.session.get("params").get("id")
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] =caipinxinxi.page(caipinxinxi, caipinxinxi, req_dict)
return JsonResponse(msg)