基于Python的校园外卖点餐系统 在线订餐系统django框架 前后端分离【Python毕业设计.课程设计·文档报告·代码讲解·安装调试】

博主介绍:⚡全栈开发工程师,精通Web前后端技术、数据库、架构设计。专注于Java、Python、机器学习、大数据、爬虫等技术领域和小程序领域的开发,毕业设计课程设计项目中主要包括定制化开发、源代码、代码讲解、文档报告辅导、安装调试等

✅文末获取联系✅

目录

1 项目介绍 

2 技术选型 

3 功能需求分析 

4 系统总体设计 

5 项目效果图

6 代码实现  

7 总结  

8 源码获取或咨询 

1 项目介绍 

本文的研究目标是以高校校园外卖点餐为对象,使其南京某高校校园外卖点餐为目标,使得南京某高校校园外卖点餐的信息化体系发展水平提高。论文的研究内容包括对个人中心、美食分类管理、用户管理、商家管理、美食信息管理、工作人员管理、安全检查管理、系统管理、订单管理等方面进行了研究。在线平台以当前应用最为广泛的Python技术为基础,结合了目前应用最为广泛的嵌入式平台,集成了B/S体系结构。数据库选择简便高效的MySQL。利用网站进行管理,不仅可以解除时间空间的束缚,还可以节省人力成本,将数据和库存一目了然地呈现在眼前,方便管理。南京某高校校园外卖点餐系统目前的管理工作使得整个系统操作简便,界面亲切,实用性,安全,高效率,能准确完成全部过程。南京某高校校园外卖点餐系统大大提高了高效严格的信息记录和交流方面的效率。

2 技术选型 

此系统基于Python平台,采用B/S架构模式,使用技术有Python+Django+Vue、爬虫等,数据库使用的是MySQL,采用Maven构建工具,可使用开发软件有 idea/navicat/vscode,都能够正常运行。 

3 功能需求分析 

(1)管理员用例分析图

(2)用户用例分析图

(3)商家用例分析图 

(4)工作人员用例分析图  

4 系统总体设计 

4.1系统功能模块设计 

 4.2 数据库概念结构设计

 (1)美食信息实体属性图

 (2)系统公告实体属性图

(3)用户实体属性图

 (4)公告信息实体属性图

(5)商家实体属性图 

(6)商家实体属性图  

3.3 数据库逻辑结构设计  

 表3.1订单表

表3.2美食信息表

表3.3美食信息评论表

表3.4购物车表

表3.5用户表

表3.6安全检查表

表3.7美食分类表 

表3.8商家表  

 

 5 项目效果图

(1)用户注册界面

​ (2)系统首页

 (3)美食信息界面

 (4)美食详情界面

 (5)购物车界面

 (6)个人中心界面

 (7)后台登录界面

 (8)用户管理界面

 (9)商家管理界面

 (10)美食信息管理界面

 (11)订单管理界面

(12)商家管理界面 

6 代码实现  

def shangjia_register(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")


        error = shangjia.createbyreq(shangjia, shangjia, req_dict)
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = "用户已存在,请勿重复注册!"
        return JsonResponse(msg)

def shangjia_login(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")

        datas = shangjia.getbyparams(shangjia, shangjia, req_dict)
        if not datas:
            msg['code'] = password_error_code
            msg['msg'] = mes.password_error_code
            return JsonResponse(msg)
        try:
            __sfsh__= shangjia.__sfsh__
        except:
            __sfsh__=None

        if  __sfsh__=='是':
            if datas[0].get('sfsh')!='是':
                msg['code']=other_code
                msg['msg'] = "账号已锁定,请联系管理员审核!"
                return JsonResponse(msg)
                
        req_dict['id'] = datas[0].get('id')
        return Auth.authenticate(Auth, shangjia, req_dict)


def shangjia_logout(request):
    if request.method in ["POST", "GET"]:
        msg = {
            "msg": "登出成功",
            "code": 0
        }

        return JsonResponse(msg)


def shangjia_resetPass(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code}

        req_dict = request.session.get("req_dict")

        columns=  shangjia.getallcolumn( shangjia, shangjia)

        try:
            __loginUserColumn__= shangjia.__loginUserColumn__
        except:
            __loginUserColumn__=None
        username=req_dict.get(list(req_dict.keys())[0])
        if __loginUserColumn__:
            username_str=__loginUserColumn__
        else:
            username_str=username
        if 'mima' in columns:
            password_str='mima'
        else:
            password_str='password'

        init_pwd = '123456'
        recordsParam = {}
        recordsParam[username_str] = req_dict.get("username")
        records=shangjia.getbyparams(shangjia, shangjia, recordsParam)
        if len(records)<1:
            msg['code'] = 400
            msg['msg'] = '用户不存在'
            return JsonResponse(msg)

        eval('''shangjia.objects.filter({}='{}').update({}='{}')'''.format(username_str,username,password_str,init_pwd))
        
        return JsonResponse(msg)



def shangjia_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']  = shangjia.getbyparams(shangjia, shangjia, req_dict)[0]

        return JsonResponse(msg)


def shangjia_default(request):

    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code,"msg": mes.normal_code, "data": {}}
        req_dict = request.session.get("req_dict")
        req_dict.update({"isdefault":"是"})
        data=shangjia.getbyparams(shangjia, shangjia, req_dict)
        if len(data)>0:
            msg['data']  = data[0]
        else:
            msg['data']  = {}
        return JsonResponse(msg)

def shangjia_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")

        #获取全部列名
        columns=  shangjia.getallcolumn( shangjia, shangjia)

        #当前登录用户所在表
        tablename = request.session.get("tablename")


            #authColumn=list(__authTables__.keys())[0]
            #authTable=__authTables__.get(authColumn)

            # if authTable==tablename:
                #params = request.session.get("params")
                #req_dict[authColumn]=params.get(authColumn)

        '''__authSeparate__此属性为真,params添加userid,后台只查询个人数据'''
        try:
            __authSeparate__=shangjia.__authSeparate__
        except:
            __authSeparate__=None

        if __authSeparate__=="是":
            tablename=request.session.get("tablename")
            if tablename!="users" and 'userid' in columns:
                try:
                    req_dict['userid']=request.session.get("params").get("id")
                except:
                    pass

        #当项目属性hasMessage为”是”,生成系统自动生成留言板的表messages,同时该表的表属性hasMessage也被设置为”是”,字段包括userid(用户id),username(用户名),content(留言内容),reply(回复)
        #接口page需要区分权限,普通用户查看自己的留言和回复记录,管理员查看所有的留言和回复记录
        try:
            __hasMessage__=shangjia.__hasMessage__
        except:
            __hasMessage__=None
        if  __hasMessage__=="是":
            tablename=request.session.get("tablename")
            if tablename!="users":
                req_dict["userid"]=request.session.get("params").get("id")



        # 判断当前表的表属性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__ == "是" and 'shangjia' != 'forum':
            if req_dict.get("userid") and 'shangjia' != 'chat':
                del req_dict["userid"]

        else:
            #非管理员权限的表,判断当前表字段名是否有userid
            if tablename!="users" and 'shangjia'[:7]!='discuss'and "userid" in shangjia.getallcolumn(shangjia,shangjia):
                req_dict["userid"] = request.session.get("params").get("id")

        #当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的
        try:
            __authTables__=shangjia.__authTables__
        except:
            __authTables__=None

        if __authTables__!=None and  __authTables__!={}:
            try:
                del req_dict['userid']
                # tablename=request.session.get("tablename")
                # if tablename=="users":
                    # del req_dict['userid']
                
            except:
                pass
            for authColumn,authTable in __authTables__.items():
                if authTable==tablename:
                    params = request.session.get("params")
                    req_dict[authColumn]=params.get(authColumn)
                    username=params.get(authColumn)
                    break

        q = Q()

        msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
        msg['data']['pageSize']  =shangjia.page(shangjia, shangjia, req_dict, request, q)

        return JsonResponse(msg)

def shangjia_autoSort(request):
    '''
    .智能推荐功能(表属性:[intelRecom(是/否)],新增clicktime[前端不显示该字段]字段(调用info/detail接口的时候更新),按clicktime排序查询)
主要信息列表(如商品列表,新闻列表)中使用,显示最近点击的或最新添加的5条记录就行
    '''
    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")
        if "clicknum"  in shangjia.getallcolumn(shangjia,shangjia):
            req_dict['sort']='clicknum'
        elif "browseduration"  in shangjia.getallcolumn(shangjia,shangjia):
            req_dict['sort']='browseduration'
        else:
            req_dict['sort']='clicktime'
        req_dict['order']='desc'
        msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
        msg['data']['pageSize']  = shangjia.page(shangjia,shangjia, req_dict)

        return JsonResponse(msg)

}

7 总结  

本论文的研究对象为高校校园外卖点餐体系。目的在于为高校提供一个合理、高效的管理体系。其主要作用是有效地处理高校校园外卖点餐信息的问题。

整个体系由管理员、用户、商家和工作人员四大部分组成。因为本软件是为方便快捷方便的实际工作过程而设计的,因此具有很好的实用性和实用性。

在建立这个体系时,我们进行了很多调查,通过对不同观点进行了调查,并借鉴了各行业的运作方式,对问题进行了研究和研究。找出一个合理的解决办法。结果表明,本软件的研制,能很好地解决目前运作成本高、工作效率等问题。

在设计的时候,我们总是按照软件的设计流程,详情的需求分析、大纲设计、详情设计、界面设计和代码设计。该流程是以模块式的方式进行的。在系统接口的设计上,根据使用者的需求和电脑的使用程度,初始接口的设计相当的简洁和实际。各用户可以在“欢迎”的界面上进行,以便于用户的工作。 

8 源码获取或咨询 

 关注公众号:计算机编程吧

关注后 会不定时更新学习资源,发放福利哟!

 感谢大家能够积极点赞、收藏、关注、评论哦 ,更多推荐:计算机毕业设计

👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻如果大家有任何疑虑,请下方昵称位置详细咨询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机编程吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值