python项目

 

泉州信息工程学院

软件学院

课程设计报告书

 

课程名:    python课程设计         

                                                 课程设计项目名称:基于Django的中餐厅网站的设计与实现    

          团队成员:          刘冬华、杨艺萍                       

 

 

 

 

 

 

一、项目简介

1.1 项目博客地址

https://www.cnblogs.com/pbc1332/

 

1.2 项目完成的功能与特色

本项目实现的主要功能有会员登录、会员注册、网站前端页面的显示和网站管理员对后台数据的管理,以及前后端连接数据库,获取数据库的信息,进行增删改查,并将信息遍历在网页前端显示出来,。

项目特色是为中餐美食爱好者提供美食菜谱选择,以餐厅网站形式让顾客了解餐厅的美食,食膳轩以特色经营为基础,以服务满意为保证,倾心打造至高品味的美食场所,创立中餐特色餐饮品牌,将传统大型中餐与特色餐饮相结合,满足不同消费群体的不同需求。

 

1.3 项目采用的技术栈

本项目使用pychammysql两种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 不足之处

系统的运行效率还有改进的地方,数据库表还不够优化。前台页面的操作功能还不够完善。

 

posted @ 2019-12-09 16:36  胖白菜  阅读(825)  评论(0)    收藏  举报