基于Python的校园影院系统 影院订票选座系统django框架 前后端分离【Python毕业设计.课程设计·文档报告·代码讲解·安装调试】

博主介绍:⚡全栈开发工程师,精通Web前后端技术、数据库、架构设计。专注于Java、Python、机器学习、大数据、爬虫等技术领域和小程序领域的开发,毕业设计课程设计项目中主要包括定制化开发、源代码、代码讲解、文档报告辅导、安装调试等

✅文末获取联系✅

目录

1 项目介绍 

2 技术选型 

3 功能需求分析 

4 系统总体设计 

5 项目效果图

6 代码实现  

7 总结  

8 源码获取或咨询 

1 项目介绍 

随着社会的不断进步与发展,人们对生活质量要求逐步提升。如果开发一款柚子校园影院,可以让管理员和用户在最短的时间里享受到最好的服务;而开发本系统,又能够提高系统整体工作水平,简化工作程序,这对管理员和用户来说都是一件非常乐意的事情。

本论文针对柚子校园影院的特点,以Python为核心,以MySQL为数据库,B/S为系统构架,对柚子校园影院进行设计和开发。通过使用本系统可有效地减少运营成本,提高管理效率。

柚子校园影院主要分为用户管理和管理员管理。

用户可以查看到首页,进行登录注册,查询影院信息,查询电影信息并进行选座预订,公告信息等功能进行操作。

管理员主要功能为首页,个人中心,用户管理,影院信息管理,电影类型管理,电影信息管理,系统管理,订单管理等功能。

2 技术选型 

此系统基于Python平台,采用B/S架构模式,使用技术有Python+Django+Vue、爬虫等,数据库使用的是MySQL,采用Maven构建工具,可使用开发软件有 PyCharm/navicat/vscode,都能够正常运行。 

3 功能需求分析 

(1)管理员用例分析图

(2)用户用例分析图

4 系统总体设计 

4.1系统功能模块设计 

 4.2 数据库概念结构设计

 (1)用户信息实体属性图

 (2)电影信息评论实体属性图

(3)影院信息实体属性图

 (4)公告信息实体属性图

(5)订单实体属性图 

3.3 数据库逻辑结构设计  

 表3.1收藏表

表3.2订单表

表3.3公告信息表

表3.4电影信息评论表

表3.5电影信息表

表3.6电影类型表

表3.7影院信息表 

表3.8用户表   

 5 项目效果图

(1)用户注册界面

​ (2)系统首页

 (3)影院信息界面

 (4)影院详情界面

 (5)电影信息界面

 (6)电影信息详情界面

 (7)确认下单界面

 (8)我的订单界面

 (9)用户管理界面

 (10)影院信息管理界面

 (11)电影类型管理界面

(12)电影信息管理界面 

(13)公告信息管理界面  

6 代码实现  

#coding:utf-8 
__author__ = "计算机编程吧"
import base64, copy, logging, os, sys, time, xlrd, json, datetime
from django.http import JsonResponse
from django.apps import apps
from django.db.models.aggregates import Count,Sum
from .models import dianyingleixing
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 dianyingleixing_register(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")


        error = dianyingleixing.createbyreq(dianyingleixing, dianyingleixing, req_dict)
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = "用户已存在,请勿重复注册!"
        return JsonResponse(msg)

def dianyingleixing_login(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")

        datas = dianyingleixing.getbyparams(dianyingleixing, dianyingleixing, req_dict)
        if not datas:
            msg['code'] = password_error_code
            msg['msg'] = mes.password_error_code
            return JsonResponse(msg)
        try:
            __sfsh__= dianyingleixing.__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, dianyingleixing, req_dict)


def dianyingleixing_logout(request):
    if request.method in ["POST", "GET"]:
        msg = {
            "msg": "登出成功",
            "code": 0
        }

        return JsonResponse(msg)


def dianyingleixing_resetPass(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code}

        req_dict = request.session.get("req_dict")

        columns=  dianyingleixing.getallcolumn( dianyingleixing, dianyingleixing)

        try:
            __loginUserColumn__= dianyingleixing.__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=dianyingleixing.getbyparams(dianyingleixing, dianyingleixing, recordsParam)
        if len(records)<1:
            msg['code'] = 400
            msg['msg'] = '用户不存在'
            return JsonResponse(msg)

        eval('''dianyingleixing.objects.filter({}='{}').update({}='{}')'''.format(username_str,username,password_str,init_pwd))
        
        return JsonResponse(msg)



def dianyingleixing_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']  = dianyingleixing.getbyparams(dianyingleixing, dianyingleixing, req_dict)[0]

        return JsonResponse(msg)


def dianyingleixing_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=dianyingleixing.getbyparams(dianyingleixing, dianyingleixing, req_dict)
        if len(data)>0:
            msg['data']  = data[0]
        else:
            msg['data']  = {}
        return JsonResponse(msg)

def dianyingleixing_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=  dianyingleixing.getallcolumn( dianyingleixing, dianyingleixing)

        #当前登录用户所在表
        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__=dianyingleixing.__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__=dianyingleixing.__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 'dianyingleixing' != 'forum':
            if req_dict.get("userid") and 'dianyingleixing' != 'chat':
                del req_dict["userid"]

        else:
            #非管理员权限的表,判断当前表字段名是否有userid
            if tablename!="users" and 'dianyingleixing'[:7]!='discuss'and "userid" in dianyingleixing.getallcolumn(dianyingleixing,dianyingleixing):
                req_dict["userid"] = request.session.get("params").get("id")

        #当列属性authTable有值(某个用户表)[该列的列名必须和该用户表的登陆字段名一致],则对应的表有个隐藏属性authTable为”是”,那么该用户查看该表信息时,只能查看自己的
        try:
            __authTables__=dianyingleixing.__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']  =dianyingleixing.page(dianyingleixing, dianyingleixing, req_dict, request, q)

        return JsonResponse(msg)

def dianyingleixing_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 dianyingleixing.getallcolumn(dianyingleixing,dianyingleixing):
            req_dict['sort']='clicknum'
        elif "browseduration"  in dianyingleixing.getallcolumn(dianyingleixing,dianyingleixing):
            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']  = dianyingleixing.page(dianyingleixing,dianyingleixing, req_dict)

        return JsonResponse(msg)

}

7 总结  

基于Hadoop的物品租赁系统在经过系统的开发后,已经成功完成搭建。在搭建过程中,最开始的工作是从查阅相关资料开始的,通过在互联网的物品租赁系统资料查询和阅读,对整个物品租赁系统有了整体的概念了解,然后对本物品租赁系统进行分析设计,本次物品租赁系统的诉求是实现用户的基本需求,所以在设计时,整个系统功能模块十分简洁,系统为管理员和用户两大模块。在系统具体实现过程中,先把系统数据库搭建,然后进行功能模块的代码编译,最后将所有模块进行整合,形成完整的物品租赁系统。最后对系统进行了测试,测试结果符合预期。

系统仍然存在很多不足,各环节的流程没有做到非常精密的联系,逻辑上还有漏洞。从这些问题中吸取经验教训积累宝贵。 

8 源码获取或咨询 

 关注公众号:计算机编程吧

关注后 会不定时更新学习资源,发放福利哟!

 感谢大家能够积极点赞、收藏、关注、评论哦 ,更多推荐:计算机毕业设计

👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻如果大家有任何疑虑,请下方昵称位置详细咨询。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机编程吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值