计算机毕业设计Python+django 网上外卖订餐系统(源码+系统+mysql数据库+Lw文档)
本论文主要论述了如何使用python语言开发一个网上订餐系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述网上订餐系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。网上订餐系统的主要使用者分为管理员、商家和用户,实现功能包括管理员首页、个人中心、个人信息、菜品类型管理,论坛管理、系统管
项目介绍
本论文主要论述了如何使用python语言开发一个网上订餐系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述网上订餐系统 的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。
网上订餐系统的主要使用者分为管理员、商家和用户,实现功能包括管理员:首页、个人中心、个人信息、菜品类型管理,论坛管理、系统管理、商家管理、菜品信息管理、投诉建议管理、用户管理、订单信息管理、评价信息管理等等。商家管理:个人中心、个人信息、菜品信息、投诉建议管理、订单信息管理、评价信息等功能。用户管理:个人中心、个人信息、投诉建议管理、订单信息管理、评价信息、我的收藏等等。由于本网站的功能模块设计比较全面,所以使得整个网上订餐系统 的过程得以实现。
登录模块主要满足了管理员以及用户的权限登录
管理员以及用户登录后均可进行添加信息操作,添加信息模块顺序图如图
开发环境
开发语言:Python
python框架:django
软件版本:python3.7/python3.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
开发软件:PyCharm/vs code
前端框架:vue.js
可开发框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发
系统截图
用户在前台菜品信息中可以查看菜品的详情页面,并可以进行下单、支付、收藏等操作如图
管理员输入个人的账号、密码登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的账号、密码和验证码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入输入自己的账号、密码和验证码,直到账号密码输入成功后,会提登录成功的信息。
管理员对菜品信息管理信息进行上传、删除、修改以及查看等操作。程序效果图如下图
管理员对用户信息进行用户名、用户姓名、密码性别等等进行添加、查看、修改以及删除等操作。程序效果图如下图
管理员对订单信息编辑订单编号、商家号、菜品编号、菜品名称、数量、价格、总金额等等进行删除、修改以及查看等操作。程序效果图如下图
在商家管理页面可以查看菜品编号、城市、菜品名称、菜品类型、价格、数量等内容,并可根据需要对添加、删除、修改以及查看详细内容操作
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)
更多推荐
所有评论(0)