上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin11天前

目 录

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)

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第1张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第2张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第3张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第4张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第5张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第6张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第7张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第8张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第9张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第10张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第11张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第12张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第13张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第14张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第15张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第16张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第17张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第18张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第19张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第20张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第21张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第22张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第23张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第24张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第25张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第26张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第27张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第28张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第29张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第30张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第31张

基于大数据的校园外卖系统的设计与实现(Python+Django+MySQL),在这里插入图片描述,第32张

网友评论

搜索
最新文章
热门文章
热门标签