摘 要
随着互联网技术的发展,电影院线上售票已经成为一种趋势。同时,为了提高用户体验和销售效果,推荐系统也在电影院售票系统中发挥着重要作用。本文将介绍如何使用Django框架设计和实现一个影院电子票务管理系统。
该管理系统采取B/S结构,并采取web网页交互的方法,利用MySQL来作为信息管理系统,利用pycharm来作为软件的程序设计语句。它的两大部分分别是:管理员和用户。管理者可以控制该管理系统的首页、系统用户(管理员、普通用户)电影信息、电影类型、购票订单、退票信息、系统管理(轮播图)、留言管理、电影公告、资源管理(影院文章、文章分类)交流管理(交流论坛、论坛分类)和其他相关内容。而用户则可以控制该管理系统的购票、退票、留言等相关内容。
经过严格的测试,我们发现这个系统的编写流畅,可靠性高,而且可以满足各种复杂的需求,使得管理者可以轻松地访问各种功能,而使得使用者可以获得更优质的服务。
关键词:电影院,电子票务,管理系统
一、绪论
(一)研究背景
随着科技的不断发展和人们生活水平的提高,电子票务管理系统在影院行业中得到了广泛应用。传统的影院售票方式存在一些问题,比如排队等候时间长、售票效率低、容易出现票务错误等。而电子票务管理系统通过引入互联网和信息技术,可以实现在线选座购票、快速取票、电子支付等功能,极大地提高了售票效率和用户体验。目前对于影院电子票务管理系统的研究还存在一些不足之处。首先,现有研究大多集中在系统的技术实现上,缺乏对于系统应用效果的评估和分析。其次,对于系统的用户体验和用户满意度的研究相对较少,这是影响系统推广和应用的重要因素。此外,由于影院电子票务管理系统的特殊性,涉及到票务安全、数据隐私等问题,对于系统的安全性研究也需要进一步加强。
综上所述,影院电子票务管理系统是一个值得深入研究的课题。未来的研究可以从系统的设计与开发、运营与管理、用户体验与满意度、安全性等方面展开,以期为影院行业提供更高效、便捷、安全的票务管理解决方案。
(二)研究现状
研究表明,当今社会,由于日益紧张的工作和生活压力,许多人都希望通过智能手机的方式获得更好的服务。然而,由于缺乏有效的网络管理,许多人都选择放弃这项工作。目前,我国的网络影院电子票务管理系统存在较差的效率和较高的失误率。为了满足这些需求,人们正在努力开发一款高质量的电影导航工具。
随着时代的发展,影院电子票务管理系统的出现为用户提供了更多的选择,并且不断壮大。我们的目标是满足用户和管理人员的需求,让他们能够通过互联网更好地了解、比较和交易电影。通过这个系统,管理者可以更加全面地了解用户的实际需求,并且能够更好地管理不同品牌的电影。它的设计旨在帮助人们更加轻松地进行电影横向比较,从而节省时间,并降低管理者的财务负担。
(三)系统开发目标
在网站的前台设计中,应该确保主界面的清晰、有序,以吸引用户的目光,避免视觉疲劳,同时也要提供一种简单易操作的体验,以此来留住用户,并延长其使用寿命。为了提高系统的性能,我们应该采用简洁高效的技术,使开发更加容易,并且更加便于日后的维护。我们不仅要确保所有的功能都能够满足用户的需求,还要让用户可以通过网站自由地完成任务,而管理者也可以通过网站轻松获取用户的信息,并进行相应的管理。为了实现这一目标,我们提出了如下目标:
(1)用户可以随时获取最新的电影和其他有价值的信息;
(2)用户可以对比各大电影的信息,选择自己较为满意的电影;
(3)用户可以在论坛上分享他们的观影体验和购买经验;
(4)管理人员可以轻松地访问和控制前端网站的所有信息;
(5)管理员可以轻松地检索和整理用户的使用情况。
二、技术与原理
(一)开发技术
我们的系统的前端框架是基于Vue.js的逐步演化技术。我们还利用Vue-Router、Vuex来控制动态路由,并且支持Ajax来支持前后台的交互。此外,我们还拥有一个Element UI的组件库,可以让我们的网站更加高效。在后台,我们使用Django来构建一个开源的系统,并将MyBatis和Redis这些先进的数据库进行整合。
(二)Python语言
早在上个世纪90年代,Python就由吉多·范罗苏姆进行创造,自诞生之日起,Python就一直深深的受到了程序开发者的广泛喜爱,它作为计算机主要的编程语言,一直到今。Python语言是真的是一种纯面向对象的计算机语言,在Python的世界中,所有的方法、数据类型、符号等都是以类的方式存在的,最顶层的就是Object,所有的类都是对object的继承。继承是Python中的核心思想,与C语言不同的是,子类只有一个父类,这样的好处就是操作更加的简便,让人更容易理解,在代码的书写上也会容易较多。Python另外一个特性就是多态性,调用父类接口的方法可以实现子类的实现,这样的好处就是很好的对实现方法进行了隐藏(封装),而且又能够把API进行公开,一举两得。接口思想很好的诠释了想象对象的思想,让面向对象编程渐渐转向面向接口编程。如今,随着编程思想的继续发展,Python也加入了一些函数式编程的思想,这样的好处就是让编程代码更加的简洁与方便。本管理系统采用Python编程语言进行后台的开发,一是鉴于标准化制定以后,Python语言常用于大型商业应用程序后台系统中,生态稳定;二是也希望通过本系统的开发提高自己编写Python代码的能力。
(三)MySQL数据库
MySQL数据库已经成为网络上的一种强大的工具,它能够支持多个用户,并且能够根据客户端和服务端的需求进行调整,从而满足不同的需求。在这里,服务端和客户端只是一种软件上的概念,而我们所使用的计算机硬件则没有必要完全相互匹配。
MySQL作为一个受到广泛认可的开放式DBMS,其卓越的性能和易于操作的特性,以及其在多种操作环境中的灵活性,让其成为了众多AP中的首选。此外,MySQL还具有良好的跨平台性,让软件开发人员对其有着极高的评价。与传统的关联式数据库系统形式大相径庭,MySQL拥有一套完善的数据库管理策略,以确保用户的安全、稳健、安全。MySQL具备良好的容错、安全、快速、稳健的特点,使得mysql成为一款极其实用的数据库管理工具。
MySQL拥有一种独特的权限分配机制,可以根据用户的身份和业务逻辑,为用户提供更多的选择,从而大大提高了MySQL的安全性和完整性,远超过其他关系型数据库。
MySQL具有强大的功能,能够处理各种数据类型,包括动态、静态、多种语言,从而使用户能够轻松访问多种数据。
MySQL具有多种功能,它能够支持多种平台的开发,并且支持多种编程语言,使得用户能够轻松访问和使用MySQL数据库。。
(四)B/S结构
B/S架构是目前应用最广泛的架构模式,它不仅能够让系统的开发变得更加简单易操作,而且还能够方便地进行维护。使用这种架构,只需要在电脑上安装一个数据库,并配置一些常见的浏览器即可。通过B/S架构,浏览器和数据库之间可以
图2-1 B/S模式三层结构图
三、可行性分析
在软件开发的过程中,可行性分析是至关重要的,它旨在评估问题的可行性,以便尽可能快地解决,同时也要考虑到不同的解决方案的优势和劣势,以及实施这些方案所带来的经济效益。通过对影院电子票务管理系统的可行性分析,我们可以从技术、操作和经济三个方面来评估其可行性,从而为其提供有效的支持和保障。
(一)技术可行性
所谓技术可行性,是指能否在有限的时间内实现预定的功能。在开发和设计中是否有未解决的问题。完成的项目能否很好地应用,如果有任何不足之处,后期的维护是否会有较大的困难。经过对该系统的评估,确定现有的技术可以达到目标。通过使用Python技术来创建动态的页面,采取低耦合的架构,搭载灵活的数据库,以及强劲的服务器,我们能够显著地改善系统的性能。这表明,我们不仅要追求理论上的目标,还要在实践中不断探索。
(二)市场可行性
在进行市场可行性分析时,我们对市场的现状与发展趋势进行了深入研究。首先,通过市场调研和数据分析,我们可以了解到电子票务系统市场正以年均10%以上的速度增长。在此基础上,结合自身的研究课题,评估出该系统的市场潜力和发展前景,确定该系统对于市场需求具备较高的匹配度,且市场竞争不激烈,因此,该系统的市场可行性是比较高的。
(三)系统需求分析
1.功能需求分析
影院电子票务管理系统的设计与实现是为了让用户的使用者更加方便的查询到自己喜欢的电影一些信息,使用者查找某一信息的时候能节省大量的时间和精力,有效减少不必要的查找时间。
影院电子票务管理系统的设计与实现,是为了能够拥有界面简洁友好、操作简单以及运行稳定的智能化的一站式电影管理方式。系统的需求主要来自影院的管理人员与用户两大部分。
影院电子票务管理系统选择Eclipse开发工具的Python开发语言中Django+mysql数据库来存储数据,实现了首页、系统用户(管理员、普通用户)电影信息、电影类型、购票订单、退票信息、系统管理(轮播图)、留言管理、电影公告、资源管理(影院文章、文章分类)交流管理(交流论坛、论坛分类)这几大功能。
(1)登录功能:用户输入账号和密码进行登录验证。系统验证用户信息,如果验证通过,则允许用户登录系统。
(2)个人信息维护功能:用户可以查看和修改个人信息,如姓名、联系方式等。提供界面供用户输入和更新个人信息。系统将保存用户的个人信息,并在需要时进行更新。
(3)电影浏览功能:用户可以按照电影类型浏览电影信息。系统将显示电影的编号、名称、类型、导演、主演、语言、上映日期、宣传海报、宣传视频、原价、折扣价、今日场次、电影简介等详细信息。用户可以使用搜索功能来查找特定电影。
(4)评论浏览功能:用户可以查看其他用户对某个电影的评论。系统将显示评论内容、评论者、评论时间等信息。
(5)电影购票功能:用户可以选择感兴趣的电影,并进行购票操作。系统将提供座位选择界面,用户可以选择合适的座位。系统将计算票价,并提供支付接口供用户完成支付。
(6)历史购票单查看功能:用户可以查看自己过去购买的电影票的详细信息。系统将显示电影名称、场次、座位、票价等信息。
(7)评论功能:用户可以根据自己的观点和看法对电影进行评论。用户可以输入评论内容,并选择评分。系统将保存用户的评论,并显示在相关电影的评论列表中。
(8)退票功能:用户可以在一定时间范围内申请退票。系统将验证退票条件,并根据退票政策进行退款处理。
(9)收藏功能:用户可以将感兴趣的电影添加到收藏夹中。用户可以查看和管理收藏夹中的电影。系统将保存用户的收藏信息,并提供相应的界面供用户操作。
管理员功能模块:
(1)修改密码功能:管理员可以通过界面输入旧密码和新密码来修改自己的登录密码。系统将验证管理员身份,并更新密码信息。
(2)购票单处理功能:管理员可以查看购票单信息,包括用户信息、电影信息、座位信息等。管理员可以对购票单进行审核、确认或取消等操作。
(3)电影信息管理功能:管理员可以添加、删除、修改电影的相关信息,如名称、类型、导演、主演、语言、上映日期、宣传海报、宣传视频、原价、折扣价、今日场次、电影简介等。管理员可以根据需要对电影信息进行搜索和排序。
(4)售票员信息管理功能:管理员可以添加、删除、修改售票员的相关信息,如姓名、联系方式等。管理员可以查看售票员的工作记录和销售情况。
(5)退票处理功能:管理员可以查看退票申请单信息,包括用户信息、电影信息、座位信息等。管理员可以对退票申请进行审核、确认或取消等操作。
(6)电影推荐数据信息管理功能:管理员可以发布、删除相关的电影推荐数据信息,包括推荐的电影名称、海报、简介等。管理员可以根据需要对推荐数据进行排序和调整。
(7)评论信息管理功能:管理员可以查看用户的评论,包括评论内容、评分、评论时间等。管理员可以回复用户的评论,并及时了解用户的建议和反馈。
(8)用户管理功能:管理员可以查看注册用户的信息,包括用户名、联系方式等。管理员可以对用户进行管理操作,如禁用账号、重置密码等。
2.非功能性需求分析
影院电子票务管理系统的非功能性需求比如影院电子票务管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3.1 影院电子票务管理系统非功能需求表
安全性 | 主要指影院电子票务管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指影院电子票务管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响影院电子票务管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着影院电子票务管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 影院电子票务管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
(四)系统用例分析
通过3.4的分析得出了本影院电子票务管理系统中管理人员角色用例图,如图3-1所示:
图3-1 管理员角色用例图
影院电子票务管理系统中用户角色用例图如图3-2所示:
图3-2用户角色用例图
(五)系统流程分析
为了成功地访问该系统,帐号和密码都是唯一的,因此只有获得准确的验证,方可轻松访问。访问完成之后,还可以根据自己的喜好,在想看的内容的详细页面上,点击右上角的购入按钮,即可完成订阅。根据图3-3,详细的步骤可以在此处找到:
图3-3 用户操作流程图
为了确保系统的安全性,建议先登录系统,以便更好地管理信息。详情请参考图3-4,它提供了一个完整的登录流程:
图3-4 系统操作流程图
四、架构设计
在上一章节中分析了影院电子票务管理系统的功能性需求,并且根据需求分析了影院电子票务管理系统中的用例以及系统的增删改查流程。那么接下来就要开始对影院电子票务管理系统架构、主要功能和数据库开始进行设计。
(一)系统功能模块设计
系统的整体架构确定以后,再来看影院电子票务管理系统的主要功能模块图。整体的功能模块包括首页、系统用户(管理员、普通用户)电影信息、电影类型、购票订单、退票信息、系统管理(轮播图)、留言管理、电影公告、资源管理(影院文章、文章分类)交流管理(交流论坛、论坛分类)这几大功能,图4.1就是影院电子票务管理系统的功能模块图。
图4-1 系统结构图
(二)数据库实体设计
数据库是一种重要的信息存储和管理工具,它可以将系统中的所有数据实时地存储起来,以便于用户的操作。此外,数据库中的数据也应当具有良好的共享性,允许多个系统共享,并且保持一定的独立性,以确保数据的安全性。为了确保数据的安全,必须对其进行身份验证,否则将无法访问和使用。在设计数据库时,必须清楚地界定各个实体之间的关系,并将其映射到E-R图中,以便更好地理解和管理,系统的E-R图如下图所示:
图4-2系统实体ER属性图
(三)数据库逻辑结构设计
通过前面E-R关系图一共需要创建很多个数据表。在此罗列这几个主要数据库表的关系模型如下:
表access_token (登陆访问时长)
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
token_id | int | 10 | N | Y | 临时访问牌ID | |
token | varchar | 64 | Y | N | 临时访问牌 | |
info | text | 65535 | Y | N | ||
maxage | int | 10 | N | N | 2 | 最大寿命:默认2小时 |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
user_id | int | 10 | N | N | 0 | 用户编号: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
article_id | mediumint | 8 | N | Y | 文章id:[0,8388607] | |
title | varchar | 125 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
type | varchar | 64 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
hits | int | 10 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
praise_len | int | 10 | N | N | 0 | 点赞数 |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
source | varchar | 255 | Y | N | 来源:[0,255]文章的出处 | |
url | varchar | 255 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
tag | varchar | 255 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
content | longtext | 2147483647 | Y | N | 正文:文章的主体内容 | |
img | varchar | 255 | Y | N | 封面图 | |
description | text | 65535 | Y | N | 文章描述 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
type_id | smallint | 5 | N | Y | 分类ID:[0,10000] | |
display | smallint | 5 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
name | varchar | 16 | N | N | 分类名称:[2,16] | |
father_id | smallint | 5 | N | N | 0 | 上级分类ID:[0,32767] |
description | varchar | 255 | Y | N | 描述:[0,255]描述该分类的作用 | |
icon | text | 65535 | Y | N | 分类图标: | |
url | varchar | 255 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
auth_id | int | 10 | N | Y | 授权ID: | |
user_group | varchar | 64 | Y | N | 用户组: | |
mod_name | varchar | 64 | Y | N | 模块名: | |
table_name | varchar | 64 | Y | N | 表名: | |
page_title | varchar | 255 | Y | N | 页面标题: | |
path | varchar | 255 | Y | N | 路由路径: | |
position | varchar | 32 | Y | N | 位置: | |
mode | varchar | 32 | N | N | _blank | 跳转方式: |
add | tinyint | 3 | N | N | 1 | 是否可增加: |
del | tinyint | 3 | N | N | 1 | 是否可删除: |
set | tinyint | 3 | N | N | 1 | 是否可修改: |
get | tinyint | 3 | N | N | 1 | 是否可查看: |
field_add | text | 65535 | Y | N | 添加字段: | |
field_set | text | 65535 | Y | N | 修改字段: | |
field_get | text | 65535 | Y | N | 查询字段: | |
table_nav_name | varchar | 500 | Y | N | 跨表导航名称: | |
table_nav | varchar | 500 | Y | N | 跨表导航: | |
option | text | 65535 | Y | N | 配置: | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
collect_id | int | 10 | N | Y | 收藏ID: | |
user_id | int | 10 | N | N | 0 | 收藏人ID: |
source_table | varchar | 255 | Y | N | 来源表: | |
source_field | varchar | 255 | Y | N | 来源字段: | |
source_id | int | 10 | N | N | 0 | 来源ID: |
title | varchar | 255 | Y | N | 标题: | |
img | varchar | 255 | Y | N | 封面: | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
comment_id | int | 10 | N | Y | 评论ID: | |
user_id | int | 10 | N | N | 0 | 评论人ID: |
reply_to_id | int | 10 | N | N | 0 | 回复评论ID:空为0 |
content | longtext | 2147483647 | Y | N | 内容: | |
nickname | varchar | 255 | Y | N | 昵称: | |
avatar | varchar | 255 | Y | N | 头像地址:[0,255] | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
source_table | varchar | 255 | Y | N | 来源表: | |
source_field | varchar | 255 | Y | N | 来源字段: | |
source_id | int | 10 | N | N | 0 | 来源ID: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
film_genre_id | int | 10 | N | Y | 电影类型ID | |
film_genre | varchar | 64 | Y | N | 电影类型 | |
recommend | int | 10 | N | N | 0 | 智能推荐 |
create_time | datetime | 19 | N | N | CURRENT_TIMESTAMP | 创建时间 |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
forum_id | mediumint | 8 | N | Y | 论坛id | |
display | smallint | 5 | N | N | 100 | 排序 |
user_id | mediumint | 8 | N | N | 0 | 用户ID |
nickname | varchar | 16 | Y | N | 昵称:[0,16] | |
praise_len | int | 10 | Y | N | 0 | 点赞数 |
hits | int | 10 | N | N | 0 | 访问数 |
title | varchar | 125 | N | N | 标题 | |
keywords | varchar | 125 | Y | N | 关键词 | |
description | varchar | 255 | Y | N | 描述 | |
url | varchar | 255 | Y | N | 来源地址 | |
tag | varchar | 255 | Y | N | 标签 | |
img | text | 65535 | Y | N | 封面图 | |
content | longtext | 2147483647 | Y | N | 正文 | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
avatar | varchar | 255 | Y | N | 发帖人头像: | |
type | varchar | 64 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
type_id | smallint | 5 | N | Y | 分类ID:[0,10000] | |
name | varchar | 16 | N | N | 分类名称:[2,16] | |
description | varchar | 255 | Y | N | 描述:[0,255]描述该分类的作用 | |
url | varchar | 255 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
father_id | smallint | 5 | N | N | 0 | 上级分类ID:[0,32767] |
icon | varchar | 255 | Y | N | 分类图标: | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
hits_id | int | 10 | N | Y | 点赞ID: | |
user_id | int | 10 | N | N | 0 | 点赞人: |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
source_table | varchar | 255 | Y | N | 来源表: | |
source_field | varchar | 255 | Y | N | 来源字段: | |
source_id | int | 10 | N | N | 0 | 来源ID: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
message_id | int | 10 | N | Y | 留言板ID: | |
user_id | int | 10 | N | N | 0 | 用户ID: |
title | varchar | 64 | Y | N | 标题: | |
content | longtext | 2147483647 | N | N | 内容: | |
nickname | varchar | 32 | N | N | 昵称: | |
avatar | varchar | 255 | Y | N | 头像: | |
| varchar | 125 | Y | N | 留言者邮箱 | |
phone | varchar | 11 | Y | N | 留言者手机号码 | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
reply | longtext | 2147483647 | Y | N | 回复 | |
reply_state | tinyint | 4 | Y | N | 0 | 回复状态 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
movie_information_id | int | 10 | N | Y | 电影信息ID | |
film_genre | varchar | 64 | Y | N | 电影类型 | |
movie_title | varchar | 64 | Y | N | 电影名称 | |
movie_number | varchar | 64 | Y | N | 电影编号 | |
release_date | date | 10 | Y | N | 上映日期 | |
movie_pictures | varchar | 255 | Y | N | 电影图片 | |
film_language | varchar | 64 | Y | N | 电影语言 | |
film_director | varchar | 64 | Y | N | 电影导演 | |
film_actor | varchar | 64 | Y | N | 电影主演 | |
promotion_video | varchar | 255 | Y | N | 宣传视频 | |
movie_details | text | 65535 | Y | N | 电影详情 | |
film_sessions | varchar | 64 | Y | N | 电影场次 | |
original_ticket_price | int | 10 | Y | N | 0 | 购票原价 |
discount_price | int | 10 | Y | N | 0 | 折扣价格 |
hits | int | 10 | N | N | 0 | 点击数 |
praise_len | int | 10 | N | N | 0 | 点赞数 |
recommend | int | 10 | N | N | 0 | 智能推荐 |
create_time | datetime | 19 | N | N | CURRENT_TIMESTAMP | 创建时间 |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
notice_id | mediumint | 8 | N | Y | 公告id: | |
title | varchar | 125 | N | N | 标题: | |
content | longtext | 2147483647 | Y | N | 正文: | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
ordinary_users_id | int | 10 | N | Y | 普通用户ID | |
user_name | varchar | 64 | Y | N | 用户姓名 | |
contact_number | varchar | 64 | Y | N | 联系电话 | |
examine_state | varchar | 16 | N | N | 已通过 | 审核状态 |
recommend | int | 10 | N | N | 0 | 智能推荐 |
user_id | int | 10 | N | N | 0 | 用户ID |
create_time | datetime | 19 | N | N | CURRENT_TIMESTAMP | 创建时间 |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
praise_id | int | 10 | N | Y | 点赞ID: | |
user_id | int | 10 | N | N | 0 | 点赞人: |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
source_table | varchar | 255 | Y | N | 来源表: | |
source_field | varchar | 255 | Y | N | 来源字段: | |
source_id | int | 10 | N | N | 0 | 来源ID: |
status | bit | 1 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
slides_id | int | 10 | N | Y | 轮播图ID: | |
title | varchar | 64 | Y | N | 标题: | |
content | varchar | 255 | Y | N | 内容: | |
url | varchar | 255 | Y | N | 链接: | |
img | varchar | 255 | Y | N | 轮播图: | |
hits | int | 10 | N | N | 0 | 点击量: |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表ticket_purchase_order (购票订单)
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
ticket_purchase_order_id | int | 10 | N | Y | 购票订单ID | |
user_name | int | 10 | Y | N | 0 | 用户姓名 |
contact_number | varchar | 64 | Y | N | 联系电话 | |
film_genre | varchar | 64 | Y | N | 电影类型 | |
movie_title | varchar | 64 | Y | N | 电影名称 | |
movie_number | varchar | 64 | Y | N | 电影编号 | |
release_date | date | 10 | Y | N | 上映日期 | |
movie_pictures | varchar | 255 | Y | N | 电影图片 | |
film_sessions | varchar | 64 | Y | N | 电影场次 | |
movie_details | text | 65535 | Y | N | 电影详情 | |
original_ticket_price | int | 10 | Y | N | 0 | 购票原价 |
number_of_tickets_purchased | int | 10 | Y | N | 0 | 购票数量 |
discount_price | int | 10 | Y | N | 0 | 折扣价格 |
total_purchase_price | varchar | 64 | Y | N | 购买总价 | |
pay_state | varchar | 16 | N | N | 未支付 | 支付状态 |
pay_type | varchar | 16 | Y | N | 支付类型: 微信、支付宝、网银 | |
recommend | int | 10 | N | N | 0 | 智能推荐 |
create_time | datetime | 19 | N | N | CURRENT_TIMESTAMP | 创建时间 |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表ticket_refund_information (退票信息)
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
ticket_refund_information_id | int | 10 | N | Y | 退票信息ID | |
refund_user | int | 10 | Y | N | 0 | 退票用户 |
film_genre | varchar | 64 | Y | N | 电影类型 | |
contact_number | varchar | 64 | Y | N | 联系电话 | |
movie_title | varchar | 64 | Y | N | 电影名称 | |
film_sessions | varchar | 64 | Y | N | 电影场次 | |
reason_for_refund | text | 65535 | Y | N | 退票原因 | |
number_of_tickets_purchased | int | 10 | Y | N | 0 | 购票数量 |
total_purchase_price | varchar | 64 | Y | N | 购买总价 | |
examine_state | varchar | 16 | N | N | 未审核 | 审核状态 |
recommend | int | 10 | N | N | 0 | 智能推荐 |
create_time | datetime | 19 | N | N | CURRENT_TIMESTAMP | 创建时间 |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
upload_id | int | 10 | N | Y | 上传ID | |
name | varchar | 64 | Y | N | 文件名 | |
path | varchar | 255 | Y | N | 访问路径 | |
file | varchar | 255 | Y | N | 文件路径 | |
display | varchar | 255 | Y | N | 显示顺序 | |
father_id | int | 10 | Y | N | 0 | 父级ID |
dir | varchar | 255 | Y | N | 文件夹 | |
type | varchar | 32 | Y | N | 文件类型 |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
user_id | mediumint | 8 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
state | smallint | 5 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
user_group | varchar | 32 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
login_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
phone | varchar | 11 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
phone_state | smallint | 5 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
username | varchar | 16 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
nickname | varchar | 16 | Y | N | 昵称:[0,16] | |
password | varchar | 64 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
| varchar | 64 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
email_state | smallint | 5 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
avatar | varchar | 255 | Y | N | 头像地址:[0,255] | |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
名称 | 数据类型 | 长度 | 允许空值 | 主键 | 默认值 | 说明 |
group_id | mediumint | 8 | N | Y | 用户组ID:[0,8388607] | |
display | smallint | 5 | N | N | 100 | 显示顺序:[0,1000] |
name | varchar | 16 | N | N | 名称:[0,16] | |
description | varchar | 255 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
source_table | varchar | 255 | Y | N | 来源表: | |
source_field | varchar | 255 | Y | N | 来源字段: | |
source_id | int | 10 | N | N | 0 | 来源ID: |
register | smallint | 5 | Y | N | 0 | 注册位置: |
create_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 创建时间: |
update_time | timestamp | 19 | N | N | CURRENT_TIMESTAMP | 更新时间: |
五、系统实现
(一)用户功能模块
1.用户注册模块
游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现购票、退票等,就必须有这个系统的账号,如果没有账号的话,可以注册成会员用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。其主界面展示如下图5.1所示。
图5-1 用户注册界面图
2.前台首页模块
查看影院电子票务管理系统的首页信息:影院电子票务管理系统的首页信息包含首页、交流论坛、电影公告、影院文章、用户留言、电影信息。其主界面展示如下图5.2所示。
图5-2 前台首页界面图
3.交流论坛模块
用户点击“交流论坛”菜单显示所有的交流论坛信息,可以按照分类查看帖子信息,或者输入关键词进行局部搜索,点击可以进入帖子的详细展示界面,在此界面用户可以点赞、收藏、评论,也可以点击“发布内容”输入帖子信息进行发帖。其主界面展示如下图5.3所示。
图5-3 交流论坛界面图
4.用户留言模块
查用户点击“用户留言”菜单可以输入留言标题、用户名、留言内容提交留言,或者输入关键词进行查询,点击可以进入用户留言详细展示界面,在此界面用户可以查看留言回复。其主界面展示如下图5.4所示。
图5-4 用户留言界面图
5.电影信息模块
点击“电影信息”这个按钮就会显示出所有的电影的信息,包含电影类型、电影编号、电影图片、电影名称、上映日期、电影语言、电影导演、电影主演、宣传视频、电影场次、购票原价、折扣价格等;同时也支持对电影信息进行购票、点赞、收藏和查询;其主界面展示如下图5.5所示。
图5-5 电影信息界面图
(二)管理员功能模块
1.管理员登录模块
管理员,在登录界面输入用户名+密码,然后选择对应的角色,点击“登录”按钮,系统在用户数据库表中会对管理员的账号进行匹配,用户名+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,如果忘记密码的话,可以点击登录按钮下面的忘记密码,根据提示进行找回密码;其主界面展示如下图5.6所示。
图5-6 管理员登录界面图
2.用户管理模块
管理员进入到影院电子票务管理系统以后,点击“用户管理”下的“管理员”这个按钮就会显示出管理员的信息,如果想要填写新的管理员,点击右上角“添加”按钮,然后输入用户名、密码、昵称、手机号码等信息,点击“提交”按钮进行提交,其中用户名和密码是必须填写的,同时也支持对已有的管理员进行编辑、删除和查询,其主界面展示如下图5.7所示。
图5-7 用户管理界面图
3.电影信息模块
点击“电影信息”这个按钮就会显示出所有的电影的信息,如果想要填写新的电影信息,点击上方的“添加”按钮,然后输入电影类型、电影编号、电影图片、电影名称、上映日期、电影语言、电影导演、电影主演、宣传视频、电影场次、购票原价、折扣价格、电影详情点击“提交”按钮进行提交,同时也支持对已有的电影信息进行编辑、删除和查询;其主界面展示如下图5.8所示。
图5-8 电影信息界面图
4.购票订单模块
点击“购票订单”这个按钮就会显示出所有的购票订单的信息,如果想要查看购票订单,点击右方的“详情”按钮,然后可以查看用户姓名、电影类型、电影编号、电影图片、购票原价、折扣价格、取票方式、联系电话、电影名称、上映日期、电影场次、电影详情、购票数量、购买总价、选座等信息同时也支持对已有的购票订单信息进行编辑、删除和查询;其主界面展示如下图5.9所示。
图5-9 购票订单界面图
5.退票信息模块
点击“退票信息”这个按钮就会显示出所有的退票的信息,如果想要查看某个退票信息,点击右方的“详情”按钮,然后可以查看退票用户、联系电话、电影场次、购票数量、审核状态、电影类型、电影名称、退换原因、购买总价,支持对购票信息进行审核,同时也支持对已有的购票信息进行编辑、删除和查询;其主界面展示如下图5.10所示。
图5-10 退票信息界面图
六、系统的测试
(一)测试目的
由于互联网的快速普及,许多领域已经开始依赖它来实现信息的传输和处理。因此,确保产品的准确性和高品质成为相当重要的。同时,它还会影响消费者的忠诚度。为了获得更高的忠诚度,我们需要严格控制软件的质量,确保它的可信度和安全性,避免任何可能的损失。因此,为了确保系统的安全、高效、易操作,必须对其进行全面的检验,以便ACK其符合各种应用场景的标准,从而达成最佳的效果。检验的过程对于整个系统的成功至关重要,因此必须认真对待。
集成测试是一种有效的测试方式,它可以帮助我们更快更准确地检测系统中可能存在的问题,并且可以避免人工测试带来的疲劳和结果出错。因此,采用集成测试是一种更加高效、更加可靠的测试方式,可以更好地满足用户的需求。
通过对软件的测试,我们能够及时发现问题,并采取有效措施来解决,从而确保设计的系统能够正常稳定地运行,避免出现重大的故障。为此,我们采取了三个步骤来完成测试:
(1)通过模块测试,我们可以深入了解系统的各个方面,从而发现并解决存在的问题。
(2)通过系统测试,我们可以观察系统在不同环境中的表现,并及时发现和解决运行过程中出现的稳定性问题。
(3)在所有测试结束之后,我们将进行最终的验收,以确保软件已经准备就绪。
(二)测试方法
经过精心设计的两种测试手段,我们有效地检查了系统,以确定其是否正常工作,并及早发现潜在的缺陷,从而确保其顺利实施。在考虑软件的内部结构与实际执行之间的关联时,我们可以使用黑盒测试或白盒测试。
(1)通过使用黑盒测试,我们可以评估系统的性能,检查它在用户的任何操作中,是否可以快速、精确地收集和处理数据,从而实现预期的目标。为了达到这一目的,我们必须仔细检查各项功能和使用步骤,以便将其全部输出和输入。
(2)通过使用白盒测试,我们可以深入了解系统的结构,从而确保它能够在运行时保持良好的性能和稳定性。
影院电子票务管理系统的测试也会从下面几方面进行:
(1)通过对窗口的精心设计,我们可以在用户输入用户名和密码时,及时弹出界面,以便提供反馈。为此,我们进行了严格的测试,以确保每一个窗口都能够及时响应用户的操作。
(2)通过数据跟踪,我们可以及时发现系统功能的异常情况,并及时调整数据库中的信息,以满足用户的需求。此外,通过跟踪,我们还可以更加清晰地找到系统存在的问题,从而有效地解决这些问题,并保持系统的正常运行。
(3)经过综合测试,我们可以从内部和外部发现系统中的问题,并及时采取措施解决。为了满足不同用户的需求,我们应该根据实际使用情况,采取有针对性的开发方案。
(三)功能测试
经过精心设计,这款影院电子票务管理系统已经完美地实现了最初的期望,其各项功能的运行效果出色,完全满足用户的使用要求,并且及时纠正了大量的错误信息。总的来说,这款软件已经通过了严格的测试。
表6-1: 用户登录测试表
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
表6-2:修改密码测试表
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
(四)测试结论
在测试每个功能的过程中,都应该严格按照指定的测试计划一步一步地进行测试,不能急于求成,并且要将每个测试的结果都进行详尽的记录,最佳的选择是采用自动化的测试,这样可以更为精确并且快速地完成测试,并不能依赖于人工测试,因为这种自动化测试的方式可以避免出现一些问题,同时也可以避免疲劳和出现问题。在进行测试时,必须保持高度的专注,密切关注测试结果,并及时纠正任何异常情况;最终,测试完成后的文档应当妥善保存,以备日后使用。
经过测试可以发现,当初制定系统的初衷是明确的,只有将其细化,编程的流程就变得更加顺畅。只有拥有良好的结构,后期的编程工作才能够顺利完成,而且还可以大大减少耗费的时间与精力。
结论
经本次影院电子票务管理系统的开发使我成长了不少,在此之前我对Python编程还是一知半解,许多编程思想和方法都还没掌握牢靠,比如Bootsatrp、Jquery、AJAX 、Spring、SpringMVC、mybeatis等许多Python Web开发技术,都是在本次影院电子票务管理系统的开发中我逐渐掌握逐渐熟悉的技术。
本次影院电子票务管理系统的开发中我还学会了例如良好的编程思想和完善的规划思想。在着手编程之前需要罗列出程序框架的大概,脑海中构建出程序的主题框架。做好这一步我们才能胸有成竹的经行开发项目。当设计框架了熟于心之后,需要思考本次编程所需的主要知识点和技术点,并充分学习。如此一来项目的开发才能循序渐进、如丝般顺滑,长久以往就能养成良好的开发习惯。一个程序好不好还要看出的bug多不多,如果在项目完成前做好bug的查验与预防可能发生的事故才能保证程序的稳定长久性运行。如果项目在完工后出现各种问题自己,那么在进入社会后,不仅会给公司团队带来麻烦和增加不必要的工作,还会导致客户流失,公司对自己的评价下降。
在本次项目中我也暴露了诸多问题。对于Python的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。
致谢
至此论文结束,感谢您的阅读。在此我要感谢我的导师,虽然我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。虽然我在实习期间很忙,以至于很晚才开始进行论文撰写和编写程序的工作,但是在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。也从导师身上看到了自己的不足,不论是在即使层面上还是在对待工作的态度上,倒数如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于Django框架方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就花上了一个圆满的句号了。
参考文献
[1]王健,刘惠子.基于开源项目的Python程序设计课程混合式教学模式设计[J].软件导刊,2023,22(02):166-171.
[2]任夏荔.基于Python+PyEcharts的数据可视化应用[J].山西电子技术,2023(01):83-86.
[3]杨健,陈伟.基于Python的三种网络爬虫技术研究[J].软件工程,2023,26(02):24-27+19.DOI:10.19644/j.cnki.issn2096-1472.2023.002.005.
[4]付文杰.基于Python的大数据网购商品异常价格与销量识别[J].网络安全和信息化,2022(10):72-76.
[5]华厚强,康佳春.基于Python的校园交易平台设计[J].现代计算机,2022,28(15):105-111.
[6]林军.基于Python的网页信息数据爬取设计与实现分析[J].长春工程学院学报(自然科学版),2022,23(02):108-112.
[7]卢琦. 广西“政采云”网上超市商品价格监测体系优化研究[D].广西财经学院,2022.DOI:10.27956/d.cnki.ggxcj.2022.000096.
[8]平奥琦. 安卓端跨平台商品多维度比价系统[D].长安大学,2022.DOI:10.26976/d.cnki.gchau.2022.000932.
[9]邹乐,王丽丽,褚甜甜.基于微信小程序的大数据杀熟比价系统的设计与实现[J].电脑知识与技术,2021,17(36):57-60.DOI:10.14004/j.cnki.ckt.2021.3565.
[10]孟宪颖,毛应爽.基于Python爬虫技术的商品信息采集与分析[J].软件,2021,42(11):128-130.
[11]高雅婷,刘雅举.基于Python的网上购物数据爬取[J].现代信息科技,2021,5(16):26-31.DOI:10.19850/j.cnki.2096-4706.2021.16.007.
[12]骆魁永.一种基于Python的商品信息采集方法[J].无线互联科技,2021,18(15):72-73.
[13]Ramos-Carreño Carlos,Torrecilla José L.. dcor: Distance correlation and energy statistics in Python[J]. SoftwareX,2023,22.
[14]Sufyan bin Uzayr. Mastering Django:A Beginner's Guide[M].CRC Press:2022-05-15.
[15]Matthew Tyson. Error tracking with Sentry, Python, and Django[J]. InfoWorld.com,2022.