基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL)

目 录
1 绪 论 3
1.1背景及意义 3
1.2国内外研究概况 4
1.3研究的内容 5
2 关键技术的研究 7
2.1 Django框架 7
2.2 Python简介 7
2.3 MySQL数据库 8
2.4 B/S架构 8
3 系统分析 10
3.1 系统设计目标 10
3.2 系统可行性分析 10
3.3 系统功能分析和描述 11
3.4系统流程分析 12
3.4.2添加信息流程 12
3.4.1操作流程 13
3.4.3删除信息流程 14
4 系统设计 16
4.1 系统体系结构 16
4.2 数据库设计原则 17
4.3 数据表 19
5 系统实现 23
5.1用户功能模块 23
5.2用户后台功能模块 28
5.2商家功能模块 30
5.3管理员功能模块 34
6 系统测试 41
6.1测试定义及目的 41
6.2性能测试 41
6.3测试模块 42
6.4测试结果 42
总 结 44
参考文献 45
致 谢 46
1.3研究的内容
研究主要内容是论文中介绍研究的具体内容和方法的部分。以下是一个可能的研究主要内容:
本文将基于大数据技术,开发一个基于校园的外卖系统,旨在为校园内外卖业务提供更高效、方便、快捷的解决方案。该系统的主要研究内容包括以下几个方面:
系统架构设计:设计一个分布式架构的系统,采用云计算和分布式存储技术,提高系统的可扩展性和可靠性。
数据采集和处理:从外卖平台和商家提供的数据源中采集、清洗和处理数据,建立系统的数据仓库。
数据挖掘和分析:通过数据挖掘和机器学习技术,对订单数据进行深入分析和挖掘,提高评价的准确性和精度,为用户提供更优质的服务。
订单管理和配送优化:制定标准化的订单管理流程和配送模式,确保订单管理规范和配送效率,提高用户的体验和满意度。
用户体验和界面设计:设计用户友好的界面和操作流程,提高用户的体验和满意度。
在研究中,我们将采用Python语言进行开发,使用mysql数据库存储数据,使用pycharm进行开发和调试。同时,我们还将使用大数据技术,如Hadoop、Spark等,提高系统的效率和精度。通过研究和实践,我们期望能够开发出一款高效、稳定、易于维护的校园外卖系统,为校园内外卖业务的管理和发展做出贡献。
本文的研究主要贡献包括以下几个方面:
提出了基于大数据技术的校园外卖系统的设计思路和实现方案,为校园内外卖业务的管理和发展提供了新的思路和方法。
采用分布式架构和云计算技术,提高了系统的可扩展性和可靠性,满足了大规模数据处理和分析的需求。
引入了数据挖掘和机器学习技术,对订单数据进行深入分析和挖掘,提高了评价的准确性和精度,为用户提供更优质的服务。
设计了标准化的订单管理流程和配送模式,确保订单管理规范和配送效率,提高用户的体验和满意度。
实现了一个完整的校园外卖系统,包括用户端、商家端、配送员端等多个模块,为各类用户提供了一个方便、快捷、高效的外卖服务平台。
通过本文的研究,我们将为校园内外卖业务的管理和发展提供一个全面、准确、方便的解决方案,为外卖平台的发展做出贡献。同时,我们的研究还将为大数据技术在外卖业务领域的应用提供一个实践案例和借鉴。

#coding:utf-8
__author__ = "ila"
import base64, copy, logging, os, time, xlrd
from django.http import JsonResponse
from django.apps import apps
from django.db.models.aggregates import Count,Sum
from .models import caipinxinxi
from util.codes import *
from util.auth import Auth
from util.common import Common
import util.message as mes
from django.db import connection
import random
from django.core.mail import send_mail
from django.conf import settings
from django.shortcuts import redirect
from django.db.models import Q
from util.baidubce_api import BaiDuBce
from .config_model import config




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'] = "用户已存在,请勿重复注册!"
        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)
        try:
            __sfsh__= caipinxinxi.__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, 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")

        columns=  caipinxinxi.getallcolumn( caipinxinxi, caipinxinxi)

        try:
            __loginUserColumn__= caipinxinxi.__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=caipinxinxi.getbyparams(caipinxinxi, caipinxinxi, recordsParam)
        if len(records)<1:
            msg['code'] = 400
            msg['msg'] = '用户不存在'
            return JsonResponse(msg)

        eval('''caipinxinxi.objects.filter({}='{}').update({}='{}')'''.format(username_str,username,password_str,init_pwd))
        
        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_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=caipinxinxi.getbyparams(caipinxinxi, caipinxinxi, req_dict)
        if len(data)>0:
            msg['data']  = data[0]
        else:
            msg['data']  = {}
        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")

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

        #当前登录用户所在表
        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__=caipinxinxi.__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__=caipinxinxi.__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 'caipinxinxi' != 'forum':
            if req_dict.get("userid") and 'caipinxinxi' != 'chat':
                del req_dict["userid"]

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

        #当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的
        try:
            __authTables__=caipinxinxi.__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']  =caipinxinxi.page(caipinxinxi, caipinxinxi, req_dict, request, q)

        return JsonResponse(msg)

def caipinxinxi_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 caipinxinxi.getallcolumn(caipinxinxi,caipinxinxi):
            req_dict['sort']='clicknum'
        elif "browseduration"  in caipinxinxi.getallcolumn(caipinxinxi,caipinxinxi):
            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']  = caipinxinxi.page(caipinxinxi,caipinxinxi, req_dict)

        return JsonResponse(msg)


def caipinxinxi_list(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")
        if req_dict.__contains__('vipread'):
            del req_dict['vipread']

        #获取全部列名
        columns=  caipinxinxi.getallcolumn( caipinxinxi, caipinxinxi)
        #表属性[foreEndList]前台list:和后台默认的list列表页相似,只是摆在前台,否:指没有此页,是:表示有此页(不需要登陆即可查看),前要登:表示有此页且需要登陆后才能查看
        try:
            __foreEndList__=caipinxinxi.__foreEndList__
        except:
            __foreEndList__=None

        if __foreEndList__=="前要登":
            tablename=request.session.get("tablename")
            if tablename!="users" and 'userid' in columns:
                try:
                    req_dict['userid']=request.session.get("params").get("id")
                except:
                    pass
        #forrEndListAuth
        try:
            __foreEndListAuth__=caipinxinxi.__foreEndListAuth__
        except:
            __foreEndListAuth__=None


        #authSeparate
        try:
            __authSeparate__=caipinxinxi.__authSeparate__
        except:
            __authSeparate__=None

        if __foreEndListAuth__ =="是" and __authSeparate__=="是":
            tablename=request.session.get("tablename")
            if tablename!="users":
                req_dict['userid']=request.session.get("params",{"id":0}).get("id")

        tablename = request.session.get("tablename")
        if tablename == "users" and req_dict.get("userid") != None:#判断是否存在userid列名
            del req_dict["userid"]
        else:
            __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__ == "是":
                if req_dict.get("userid"):
                    # del req_dict["userid"]
                    pass
            else:
                #非管理员权限的表,判断当前表字段名是否有userid
                if "userid" in columns:
                    try:
                        pass
                    except:
                            pass
        #当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的
        try:
            __authTables__=caipinxinxi.__authTables__
        except:
            __authTables__=None

        if __authTables__!=None and  __authTables__!={} and __foreEndListAuth__=="是":
            try:
                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
        
        if caipinxinxi.__tablename__[:7]=="discuss":
            try:
                del req_dict['userid']
            except:
                pass


        q = Q()

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

        return JsonResponse(msg)

def caipinxinxi_save(request):
    '''
    后台新增
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
        req_dict = request.session.get("req_dict")
        if 'clicktime' in req_dict.keys():
            del req_dict['clicktime']
        tablename=request.session.get("tablename")
        __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


        #获取全部列名
        columns=  caipinxinxi.getallcolumn( caipinxinxi, caipinxinxi)
        if tablename!='users' and req_dict.get("userid")!=None and 'userid' in columns  and __isAdmin__!='是':
            params=request.session.get("params")
            req_dict['userid']=params.get('id')


        error= caipinxinxi.createbyreq(caipinxinxi,caipinxinxi, req_dict)
        if error!=None:
            msg['code'] = crud_error_code
            msg['msg'] = error

        return JsonResponse(msg)


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当前,餐饮业还面临着越来越激烈的市场竞争、要想在竞争中取胜,必须采用先进的管理方法和手段。实现先进的计算机网络化管理,能更方便快捷的满足顾客的就餐需要,使管理更合理、更先进;减少人力、物力资源的浪费,降低成本;提高工作效率,提高管理效率;提高经济效益,从而提高餐厅的整体竞争力。 系统为顾客提供了各种美食的详细信息,可以方便顾客对美食进行选购,顾客还可对自己的个人信息进行修改,可以查看过往订过的美食的信息;为餐厅提供了一个虚拟的店面,方便餐厅管理人员了解顾客的需求,进而改变下一阶段的销售策略,还可以进行美食管理,订单管理,会员信息管理,其中,超级管理员还可以对管理员的信息进行管理。 本系统开发使用B/S结构,严格的按照软件工程的思想贯穿系统设计,利用Java语言,以Oracle作为系统数据库,实现网上订餐系统的开发。这些先进的开发思想和技术手段有力地保证了此系统可以安全地、高效地为餐厅的运营和顾客的就餐进行服务。 本文介绍了经过用户需求分析后,对订餐系统的基本设计、系统设计、详细设计的开发研制过程。本文所设计的功能满足餐厅的实际需求,使餐厅在订餐方面更加科学化,减少了人物力资源的不合理消耗,最后实现了提高工作效率的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值