博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程CSDN博客 翰文编程-CSDN博客
文末下方有源码获取地址
4.2 功能结构设计
图4.1即为设计的管理员功能结构,管理员权限操作的功能包括管理用户,管理电影类型,管理电影,其中电影管理包括电影场次管理,电影评价管理,电影收藏管理,电影订单管理等子模块。
图4.1 管理员功能结构
图4.2即为设计的用户功能结构,用户权限操作的功能包括选择电影场次,选择观影座位,购买电影票,管理电影订单,收藏电影等。
图4.2 用户功能结构
4.3 数据库设计
电影购票系统运行中产生的数据需要按照提前设置的存储规则进行保存,设计出一个符合项目的最优数据存储格式,因为它能减少用户的等待时间,还可以对系统的请求在最短时间内进行响应。所以,对数据库设计时,需要对功能需求进行详细的拆分,以及对业务状态的细分,然后设计具体的存储规则,保证数据库能正常运作,缩短数据处理时间,并在一定程度上降低数据冗余,节省存储空间。
4.3.1 数据库概念设计
实体-联系图还有一个名称即E-R图,是Entity Relationship Diagram各英文单词首字母的缩写,它这种概念模型通常用于对现实世界进行描述。同时它还是一种能够直观表达数据中实体,联系,属性的有效手段。绘制E-R图能够选择的工具也有很多,但是Office Visio 这款软件在E-R图的绘制上一般都是作为首选工具,因为它是基于可视化处理,使用它创建E-R图非常简单。使用基本的E-R图构成元素,比如椭圆,菱形,矩形,还有实线段来表达对应的信息,椭圆代表属性,即实体的特征,矩形代表实体,即数据库中的一个具体数据表,菱形代表实体中相互关系,实线段主要是完成椭圆,矩形,菱形的连接。
(1)图4.4即为电影这个实体所拥有的属性值。
图4.4 电影实体属性图
(2)图4.5即为电影订单这个实体所拥有的属性值。
图4.5 电影订单实体属性图
(3)图4.6即为管理员这个实体所拥有的属性值。
图4.6 管理员实体属性图
- 图4.7即为用户这个实体所拥有的属性值。
图4.7 用户实体属性图
- 图4.8即为上面介绍的实体中存在的联系。
图4.8 实体间关系E-R图
4.3.2 数据库物理设计
本小节主要任务即是根据上述内容进行数据存储结构的设计,实体的属性就用来表示字段名称,不同的字段表示的数据类型以及取值都不相同,以及该表各个字段是否能够保持空等进行说明,设计完成一张数据表的结构之后,在保存时同样要命名,尽量选择英文名称进行命名并保存,还不容易导致系统出错。接下来就对设计的表进行简单说明。
表4.1 电影表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
dianying_name | 电影名称 | varchar(200) | 是 |
dianying_photo | 电影照片 | varchar(200) | 是 |
dianying_types | 电影类型 | int(11) | 是 |
dianying_old_money | 电影原价 | decimal(10,2) | 是 |
dianying_new_money | 现价 | decimal(10,2) | 是 |
zuowei_number | 座位 | int(11) | 是 |
dianying_clicknum | 电影热度 | int(11) | 是 |
shangxia_types | 是否上架 | int(11) | 是 |
dianying_delete | 逻辑删除 | int(11) | 是 |
dianying_content | 电影简介 | text | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.2 电影场次表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
dianying_id | 电影 | int(11) | 是 |
dianying_changci_yingyuan_name | 影院名称 | varchar(200) | 是 |
dianying_changci_yingyuan_fangyingting | 放映厅 | varchar(200) | 是 |
dianying_changci_yingyuan_address | 放映地点 | varchar(200) | 是 |
fangying_kaishi_shijian | 放映开始时间 | varchar(200) | 是 |
fangying_jieshu_shijian | 放映结束时间 | varchar(200) | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.3 电影收藏表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
dianying_id | 电影 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
dianying_collection_types | 类型 | int(11) | 是 |
insert_time | 收藏时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.4 电影评价表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
dianying_id | 电影 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
dianying_commentback_text | 评价内容 | text | 是 |
insert_time | 评价时间 | timestamp | 是 |
reply_text | 回复内容 | text | 是 |
update_time | 回复时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.5 电影订单表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
dianying_order_uuid_number | 订单号 | varchar(200) | 是 |
dianying_id | 电影 | int(11) | 是 |
dianying_changci_id | 电影场次 | int(11) | 是 |
yonghu_id | 用户 | int(11) | 是 |
dianying_order_true_price | 实付价格 | decimal(10,2) | 是 |
dianying_order_types | 订单类型 | int(11) | 是 |
dianying_order_payment_types | 支付类型 | int(11) | 是 |
buy_zuowei_number | 购买的座位 | varchar(200) | 是 |
buy_zuowei_time | 订购日期 | date | 是 |
insert_time | 订单创建时间 | timestamp | 是 |
create_time | 创建时间 | timestamp | 是 |
表4.6 管理员表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | bigint(20) | 否 |
username | 用户名 | varchar(100) | 否 |
password | 密码 | varchar(100) | 否 |
role | 角色 | varchar(100) | 是 |
addtime | 新增时间 | timestamp | 否 |
表4.7 用户表
字段 | 注释 | 类型 | 空 |
id (主键) | 主键 | int(11) | 否 |
username | 账户 | varchar(200) | 是 |
password | 密码 | varchar(200) | 是 |
yonghu_name | 用户姓名 | varchar(200) | 是 |
yonghu_phone | 用户手机号 | varchar(200) | 是 |
yonghu_id_number | 用户身份证号 | varchar(200) | 是 |
yonghu_photo | 用户头像 | varchar(200) | 是 |
sex_types | 性别 | int(11) | 是 |
yonghu_email | 电子邮箱 | varchar(200) | 是 |
new_money | 余额 | decimal(10,2) | 是 |
create_time | 创建时间 | timestamp | 是 |
编程人员在搭建的开发环境中,会让各种编程技术一起呈现出最终效果。本节就展示关键部分的页面效果。
5.1 管理员功能实现
5.1.1 电影管理
图5.1 即为编码实现的电影管理界面,电影信息有电影类型,电影原价,现价,座位,电影热度等信息,管理员修改登记出错误的电影信息,查询电影等。
图5.1 电影管理界面
5.1.2 电影场次管理
图5.2 即为编码实现的电影场次管理界面,电影场次信息包括影院名称,放映厅,放映开始时间,放映结束时间等,管理员可以使用修改功能更改登记有误的电影场次信息,可以删除需要删除的电影场次信息。
图5.2 电影场次管理界面
5.1.3 电影评价管理
图5.3 即为编码实现的电影评价管理界面,用户观影后,对电影发布的评价信息会在电影评价管理界面展示,管理员不仅可以查看电影评价,还能回复评价电影的用户。
图5.3 电影评价管理界面
5.1.4 电影订单管理
图5.4 即为编码实现的电影订单管理界面,管理员可以对电影订单进行检票,可以查看电影订单详情,可以通过电影名称或用户姓名来查询电影订单。
图5.4 电影订单管理界面
5.1.5 用户管理
图5.5 即为编码实现的用户管理界面,用户的注册信息包括用户头像,电子邮箱,性别,姓名等信息也能让管理员查看和修改,删除。
图5.5 用户管理界面
5.2 用户功能实现
5.2.1 电影信息
图5.6 即为编码实现的电影信息界面,用户查看电影售价信息,电影热度信息,查看电影评论。用户可以在电影信息界面选择场次,选择观影座位号,然后购买电影票。
图5.6 电影信息界面
电影选座 界面 主要代码:
<!-- 座位 --><div class="seat-list" :style='{"padding":"10px 0 10px 0","boxShadow":"0 0 5px var(--publicMainColor, #808080)","margin":"10px 0 0 0","backgroundColor":"rgba(255, 255, 255, 1)","borderRadius":"20px","borderWidth":"0","borderStyle":"solid"}'><div style="width: 100%"><span style="font-size: 40px;float: left;margin-left: 1%;width: 99%;">座位列表</span><span style="width: 99%;margin-top: 12px;margin-right: 1%;"><span style="width: 20%;">场次:</span><el-select v-model="dianyingChangciId" filterable placeholder="请选择放映厅" @change ="zuoweiChange" style="width: 92%"><el-optionv-for="(item,index) in dianyingChangciList"v-bind:key="item.id":label="'影院名称:['+item.dianyingChangciYingyuanName+'],放映厅:['+item.dianyingChangciYingyuanFangyingting+'],放映地点:['+item.dianyingChangciYingyuanAddress+'],放映开始时间:['+item.fangyingKaishiShijian+'],放映结束时间:['+item.fangyingJieshuShijian+']'":value="item.id"></el-option></el-select></span><span style="width: 29%;margin-top: 12px;margin-right: 1%;"><span style="width: 20%;">订购日期:</span><el-date-picker style="width:35%" v-model="buyZuoweiTime" :picker-options="buyZuoweiTimeOptions" @change ="zuoweiChange" type="date" placeholder="选择日期"></el-date-picker></span><button @click="addDianyingOrder()" style="height:auto;" :style='{"padding":"0 10px","boxShadow":"0 0 0px rgba(255,0,0,.3)","margin":"0 5px","borderColor":"rgba(0,0,0,.3)","backgroundColor":"rgba(23, 124, 176, 1)","color":"rgba(255, 255, 255, 1)","borderRadius":"6px","borderWidth":"0","width":"auto","lineHeight":"40px","fontSize":"16px","borderStyle":"solid"}' type="button" class="layui-btn btn-submit">立即购买</button></div><label style="background: var(--publicMainColor);width:1000px;height: 1px;margin: 10px 0px 10px"></label><div v-for="(item,index) in zuoweiNumberList " v-bind:key="index" class="seat-item"><img @click="selectTip()" v-if="item.select" class="seat-icon" src="../../img/select.png" /><img @click="selectSeat(item)" v-else-if="!item.active" class="seat-icon" src="../../img/unselect.png" /><img @click="unselectSeat(item)" v-else class="seat-icon" src="../../img/selectActive.png" /><span>{{item.name}}</span></div></div>
选座位主要代码:
<!-- 座位 -->// 选座座位selectSeat(item) {item.active = true;},// 取消选择座位unselectSeat(item) {item.active = false;},// 提示该座位已经被选择了selectTip() {layer.msg(`该座位已被预定`, {time: 2000,icon: 5});},zuoweiChange() {let _this = this;if(layui.jquery.type(this.buyZuoweiTime) === "date"){//如果类型是日期的话,要格式化成字符串, 否则后台没法查询_this.buyZuoweiTime =layui.util.toDateString(this.buyZuoweiTime, 'yyyy-MM-dd');}layui.http.request(`dianyingOrder/list`, 'get', {page: 1,limit: 100,dianyingId: vue.detail.id,dianyingOrderDelete: 1,buyZuoweiTimeStart:_this.buyZuoweiTime ,buyZuoweiTimeEnd: _this.buyZuoweiTime,zhengchangdingdan: "不为空",dianyingChangciId: _this.dianyingChangciId,}, function (res) {//生成默认座位_this.zuoweiNumberList = [];for (let i = 1; i <= _this.detail.zuoweiNumber; i++) {_this.zuoweiNumberList.push({name: `${i}号`,select: false,active: false});}//生成座位被使用if (res.data.list.length > 0) {res.data.list.forEach(element => {if (element.buyZuoweiNumber != null) {for (let i = 0; i < element.buyZuoweiNumber.split(',').length; i++) {_this.zuoweiNumberList[element.buyZuoweiNumber.split(',')[i] - 1].select = true;}}});}});},}});
5.2.2 电影订单
图5.7 即为编码实现的电影订单界面,用户购买电影票之后,系统自动跳转至电影订单界面,在电影订单界面,用户可以对已支付订单退款,对已完成订单评价等。
图5.7 电影订单界面
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者