• 计算机毕业设计Python+django 网上外卖订餐系统(源码+系统+mysql数据库+Lw文档)


    项目介绍

    本论文主要论述了如何使用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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
  • 相关阅读:
    南大通用数据库-Gbase-8a-学习-06-集群节点扩容(8.6版本)
    To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
    使用 Docker 部署 TaleBook 私人书籍管理系统
    记录undefined reference to `SSLv3_client_method‘错误笔记
    【Autosar 存储栈Memery Stack 4.Tc397的Flash编程】
    【PHP特性-变量覆盖】函数的使用不当、配置不当、代码逻辑漏洞
    2022 OpenCV AI 竞赛来啦!详细介绍Spatial AI赛道!
    YOLOv8-seg改进:SEAM、MultiSEAM分割物与物相互遮挡、分割小目标性能
    mac磁盘工具显示未装载 磁盘读写速度慢的原因
    第5篇:Java基础语法
  • 原文地址:https://blog.csdn.net/z459382737/article/details/126040438