python项目
泉州信息工程学院
软件学院
课程设计报告书
课程名: python课程设计
课程设计项目名称:基于Django的中餐厅网站的设计与实现
团队成员: 刘冬华、杨艺萍
一、项目简介
1.1 项目博客地址
https://www.cnblogs.com/pbc1332/
1.2 项目完成的功能与特色
本项目实现的主要功能有会员登录、会员注册、网站前端页面的显示和网站管理员对后台数据的管理,以及前后端连接数据库,获取数据库的信息,进行增删改查,并将信息遍历在网页前端显示出来,。
项目特色是为中餐美食爱好者提供美食菜谱选择,以餐厅网站形式让顾客了解餐厅的美食,食膳轩以特色经营为基础,以服务满意为保证,倾心打造至高品味的美食场所,创立中餐特色餐饮品牌,将传统大型中餐与特色餐饮相结合,满足不同消费群体的不同需求。
1.3 项目采用的技术栈
本项目使用pycham,mysql两种python工具,使用了Django框架,mysql数据库。
1.4 项目借鉴源代码的地址
https://www.cnblogs.com/sticker0726/p/8074549.html
https://blog.csdn.net/tianlalua/article/details/88298332
https://blog.csdn.net/laikaikai/article/details/80563387
1.5 团队成员任务分配表
|
|
姓名 |
任务分配 |
|
组长 |
刘冬华 |
前端数据: 数据库表:config表,picture表,nav表,user表 会员注册、登录 |
|
组员 |
杨艺萍 |
数据库:features表、menu表、about表、team表 后端管理员操作 菜品数据分析 |
二、项目的需求分析
2.1前期调查
随着中餐美食越来越受人们喜爱,中餐厅的竞争模式也愈发激烈,宣传方式也变得五花八门,在信息在网络上普及的时代,通过网络做为宣传模式介绍餐厅特色,在此情况下,我们以中式餐厅为出发点做一家中式餐厅的网站,希望可以给到中餐美食爱好者另一种视觉体验。
2.2需求分析
由前期调查可以了解到,我们的网站需要能够介绍餐厅信息,展示出餐厅特色菜品,以及美食的照片和参照价格。用以介绍餐厅特色,及给到消费者不一样的美食体验和超前的消费感受。
三、项目功能架构图、主要功能流程图

3-1项目功能架构图
3-2主要功能流程图
四、系统模块说明
4.1 系统模块列表
(1)前端数据
|
模块名称 |
导航栏 |
图片 |
文字 |
|
模块内容 |
特色菜 我们的故事 菜单 大厨 会员中心 其他 菜品分析 |
|
见网页 |
4-1前端数据表
(2)后端数据、数据库数据
(3)会员登录、注册功能
4.2 各模块详细描述(名称,功能,运行截图,关键源代码)
4.2.1前端显示数据
功能:数据遍历到页面
(1)导航栏模块
源代码:<ul class="nav navbar-nav">
{% for i in b %}
<li><a href="{{i.url}}" class="page-scroll">{{i.name}}</a></li>
{% endfor %}
</ul>

(2)图片模块
源代码:<h3>{{ i.name }}</h3>
<img src="{{ i.img }}" class="img-responsive" alt="">
<p>{{i.text}}</p>

(3)文字模块
源代码:<h3>{{ i.name }}</h3>
<img src="{{ i.img }}" class="img-responsive" alt="">
<p>{{i.text}}</p>

4.2.2后端获取数据
功能:后端管理员操作:后台数据的管理,增、删、改、查
源代码:
def index(request):
a = Picture.objects.all()
b = Nav.objects.all() # 目录
c = Features.objects.all() # 特色菜
d = About.objects.all() # 我们的故事
e = Menu.objects.all() # 菜单
e1 = Menu1.objects.all()
e2 = Menu2.objects.all()
e3 = Menu3.objects.all()
contact=Contact.objects.all()
team=Team.objects.all()
return render(request, "index.html", {"a": a, "b": b, "c": c, "d": d, "e": e, "e1": e1, "e2": e2, "e3": e3,"contact":contact,"team":team})
运行截图:


4.2.3数据库管理数据
功能:通过mysql来存储数据,用超级管理员对数据进行增删改查
运行截图:
Nav表
About表

Picture表
数据库表
4.2.4会员登录、注册
(1)会员注册
功能:用来从数据库获取数据,然后传到页面,实现用户注册
源代码:
def regist(request):
if request.method == 'GET':
return render(request,'regist.html')
if request.method == 'POST':
name = request.POST.get('name')
pwd = request.POST.get('pwd')
re_pwd = request.POST.get('re_pwd')
if name and pwd and re_pwd:
if pwd == re_pwd:
user_obj = models.User.objects.filter(name=name).first()
if user_obj:
return HttpResponse('用户已存在')
else:
models.User.objects.create(name=name,pwd=pwd).save()
return redirect('/login/')
else:
return HttpResponse('两次密码不一致')
else:
return HttpResponse('不能有空!')
运行截图:

(2)会员登录
功能:用来从数据库获取数据,然后传到页面,实现用户登录
源代码:
@csrf_exempt
def login(request):
if request.method == 'GET':
return render(request,'login.html')
if request.method == 'POST':
name = request.POST.get('name')
pwd = request.POST.get('pwd')
user_obj = models.User.objects.filter(name=name,pwd=pwd).first()
if user_obj:
return redirect('/user/')
else:
return HttpResponse('用户名或密码错误')
运行截图:

4.2.5菜品数据分析
功能:用来分析菜品占比,形成数据图
源代码:
def s(request):
getname = request.GET.get('name')
p = Num.objects.get(name=getname)
p.click = p.click + 1
p.save()
def ybt(zs):
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
edu = (zs[0].click,zs[1].click,zs[2].click)
labels = (zs[0].name,zs[1].name,zs[2].name)
explode = [0,0,0]
color = ['yellow', 'red', 'brown']
plt.axes(aspect='equal')
plt.pie(x=edu, labels=labels, autopct='%.1f%%',
explode=explode, colors=color,
wedgeprops={'linewidth': 1.5, 'edgecolor': 'black'},
textprops={'fontsize': 10, 'color': 'black'})
plt.title('菜品分析')
plt.savefig('./static/img/0123.png')
plt.clf()
return
运行截图:

五、项目总结
5.1 特点
本系统是使用Django框架,运用了mysql的技术对数据进行管理,还使用了超级管理员,通过models在admin中可以直接对数据库进行增删改查操作。用以介绍餐厅特色,及给到消费者不一样的美食体验和超前的消费感受。
5.2 不足之处
系统的运行效率还有改进的地方,数据库表还不够优化。前台页面的操作功能还不够完善。


浙公网安备 33010602011771号