目 录
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 JsonResponsefrom django.apps import apps
from django.db.models.aggregates import Count,Sumfrom.models import caipinxinxi
from util.codes import *from util.auth import Authfrom 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 Qfrom util.baidubce_api import BaiDuBcefrom.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']="用户已存在,请勿重复注册!"returnJsonResponse(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
returnJsonResponse(msg)try:
__sfsh__= caipinxinxi.__sfsh__
except:
__sfsh__=Noneif __sfsh__=='是':if datas[0].get('sfsh')!='是':
msg['code']=other_code
msg['msg']="账号已锁定,请联系管理员审核!"returnJsonResponse(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}returnJsonResponse(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)iflen(records)<1:
msg['code']=400
msg['msg']='用户不存在'returnJsonResponse(msg)eval('''caipinxinxi.objects.filter({}='{}').update({}='{}')'''.format(username_str,username,password_str,init_pwd))returnJsonResponse(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]returnJsonResponse(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)iflen(data)>0:
msg['data']= data[0]else:
msg['data']={}returnJsonResponse(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__=Noneif __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__=Noneif __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__ =Nonebreak# 当前表也是有管理员权限的表if __isAdmin__ =="是" and 'caipinxinxi'!='forum':if req_dict.get("userid") and 'caipinxinxi'!='chat':
del req_dict["userid"]else:#非管理员权限的表,判断当前表字段名是否有useridif 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__=Noneif __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)returnJsonResponse(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)returnJsonResponse(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__=Noneif __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
#forrEndListAuthtry:
__foreEndListAuth__=caipinxinxi.__foreEndListAuth__
except:
__foreEndListAuth__=None
#authSeparatetry:
__authSeparate__=caipinxinxi.__authSeparate__
except:
__authSeparate__=Noneif __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__ =Nonebreakif __isAdmin__ =="是":if req_dict.get("userid"):# del req_dict["userid"]
pass
else:#非管理员权限的表,判断当前表字段名是否有useridif"userid"in columns:try:
pass
except:
pass
#当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的try:
__authTables__=caipinxinxi.__authTables__
except:
__authTables__=Noneif __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)breakif 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)returnJsonResponse(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__ =Nonebreak#获取全部列名
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
returnJsonResponse(msg)
版权归原作者 biyezuopinvip 所有, 如有侵权,请联系我们删除。