目 录
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)
猜你喜欢
- 20小时前基于STM32的四旋翼无人机项目(二):MPU6050姿态解算(含上位机3D姿态显示教学)
- 20小时前将网页数据读入数据库+将数据库数据读出到网页——基于python flask实现网页与数据库的交互连接【全网最全】
- 18小时前浙江传媒学院(浙江传媒学院硕士点)
- 17小时前小考成绩怎么查(小考成绩怎么查2024山西)
- 11小时前奋笔勤书还是奋笔疾书(奋笔疾书还是奋书疾笔)
- 10小时前patrol尼桑(patrol尼桑途乐价格)
- 5小时前吉利ec7(吉利ec715rv)
- 5小时前dnfcc是什么意思(dnfc是什么职业)
- 4小时前console什么意思(汽车console什么意思)
- 1小时前dnf罗杰在哪(dnf罗杰在哪里)
网友评论
- 搜索
- 最新文章
- 热门文章