基于SpringBoot+Vue的电影售票系统(协同过滤算法)

发布于:2025-07-04 ⋅ 阅读:(14) ⋅ 点赞:(0)

🎈系统亮点:协同过滤算法;

档包含系统功能模块图、用例图、数据流图、系统架构图、总体e-r图、实体属性图。

一.系统开发工具与环境搭建

1.系统设计开发工具

后端使用Java编程语言的Spring boot框架项目架构:B/S架构运行环境:win10/win11、jdk17

前端:

技术:框架Vue.js;

UI库:ElementUI;

开发工具:Visual Studio Code;


后端:

技术:Java语言、mybatis plus、Spring boot框架;

开发工具:IDEA 2023.3.3版本;


数据库:

数据库:mysql5.7/8.0

数据库工具:Navicat12版本;


二. 系统实现(部分展示)

2.1用户功能实现

2.1.1系统首页功能实现

系统首页功能,用户登录系统后,前端会跳转到/Client/Home首页界面,Vue通过mounted生命周期钩子函数,调用BannerListApi和SysNoticeListApi方法获取轮播图数据和系统公告数据。通过封装好的Post方法向/Banner/List接口发送请求获取轮播图数据,查询封面表数据,进行返回给前端,前端接收到后,将数据赋值给BannerDataList并启动自动轮播。同样通过Post方法向/SysNotice/List接口发送请求获取系统公告数据,调用数据库的查询方法,查询系统公告表的数据,将返回的公告列表数据赋值给SysNoticeDataList,进行滚动展示系统列表。系统首页界面图如图4.1所示。

2.1.2协同过滤算法推荐影片功能实现

系统为用户提供了协同过滤算法推荐影片功能,用户进入/Client/RecommendList推荐界面,调用后端/Movies/RecommendList接口,先检查该用户是否登录,未登录则直接返回空列表。查询AppUser用户表和AppointOrder订单表的数据,构建用户-电影评分矩阵,for循环用户集合,获取用户浏览的电影记录,得到电影Id,统计每部电影的浏览次数作为评分,添加到协同过滤算法的数据结构中。使用余弦相似度算法计算当前用户与其他所有用户之间的相似度,并将结果存储在列表中进行排序。从相似度高的用户中提取他们浏览过的电影,并排除当前用户已经浏览过的电影,最终随机排序后返回推荐结果。协同过滤泛推荐影片界面图如图4.3所示。

2.1.3浏览影片功能实现

用户通过影片大全导航栏进入/Client/MoviesList影片大全界面。用户可以通过搜索框输入关键词进行搜索影片,触发@Search事件,调用/Movies/List接口,通过关键词进行查询影片表数据,获取符合条件的影片进行返回,加载影片列表。利用类型、导演、场地、上映计划、评分等多种标签进行筛选,进而查看符合条件的影片列表。在mounted生命周期钩子函数中,分别调用MovieTypeListApi、DirecotrListApi、RegionsListApi方法获取电影类型、导演、场地的数据,点击时会调用对应的选择方法,进行更新where对象中的相应筛选条件,并调用CallBack方法重新加载影片列表。浏览影片界面图如图4.2所示。

2.1.4购票功能实现

用户选择好影片后,进入影片详情界面,用el-pagination-box组件实现分页展示电影场次信息,从/NumberPlan/List接口获取数据,传递参数包括影片ID。用el-table组件展示具体场次数据,包含序号、电影院、影厅、批次、播放时间、票价、操作等列。用户点击选座,展示选座信息,座位布局根据SeatList数据循环渲染,展示座位状态,座位标签展示行列号{{colSeat.S_Row}}-{{colSeat.S_Col}} 。座位图例通过不同图标和文字展示可选、已选、已售状态。选好座位后,点击去支付,触发ToAppoint方法,跳转到/Client/moviesSubmit支付确认界面。影片详情界面图如图4.4所示。

用户进入支付确认界面,选择购票人信息,调用SelectUser方法,打开选择购票人对话框,并记录当前行索引。根据所选购票人的年龄类型计算票价,更新AppointOrderDetDto数组,关闭对话框并调用CaculateMoney方法计算总金额。选择支付方式,点击确认支付,调用/AppointOrder/PayOrder接口,创建并提交订单。购票界面图如图4.5所示。

2.2影院管理员功能实现

2.2.1注册影院功能实现

注册影院功能,使用el-form组件构建注册表单,通过el-row和el-col进行布局排版,包含用户名、密码、确认密码、电话号码、用户类型选择、验证码等表单字段,以及注册和跳转到登录页面的按钮。formData数据进行存储用户输入的内容,当点击“注册”按钮,触发调用handleRegister方法。对整个表单进行验证,验证通过后,检查密码和确认密码是否一致,若一致则 将formData数据发送到/User/Register接口进行注册。注册成功后提示成功信息,1秒后跳转到登录页面;若验证不通过或密码不一致,给出相应错误提示。注册影院界面图如图4.6所示。

2.2.2电影院管理功能实现

影院账号注册后,进入电影院管理界面,进行维护影院基本信息,使用el-card组件包裹表单区域,通过el-form构建具体表单,利用el-row和el-col进行布局排版,划分出基本信息、媒体信息、详细信息区块,以及操作按钮区域。影院管理员通过界面提示输入影院名称,选择影院开业地址,调用handleSelectAddress方法,通过LogLatSelectToast组件打开地址选择弹窗,选择后将地址相关信息更新到formData中。上传影院封面及详细信息,进行提交,调用/MovieArea/CreateOrEdit接口,声明一个电影院实体,将formData数据赋值给该实体,调用数据库的新增方法,进行新增电影院信息,等待管理员进行审核,审核通过后,将可以进行维护影厅、订单等信息。电影院管理界面图如图4.7所示。

2.2.3影厅管理功能实现

影院管理员可以进行维护影厅信息,点击“新增”或“修改”按钮时,调用ShowEditModal方法,向/FilmHall/Get接口发送请求获取影厅信息并填充到formData中,并根据el-dialog组件进行展示新增或修改影厅对话框,对话框内部使用el-form构建表单,包含电影院、影厅编号、位置、座位数、银幕尺寸等表单字段,点击确认按钮,触发CreateOrEditForm方法,先验证表单,验证通过后向/FilmHall/CreateOrEdit接口发送formData数据进行保存或更新操作,成功后关闭模态框并刷新影厅列表。影院管理员可进行维护影厅座位,录入行、列进行维护,传递影厅Id和电影院Id调用/Seat/CreateOrEdit接口,接口会先进行查询询改影厅的所有座位,判断输入的座位是否已经存在,若存在,则进行报错提示;不存在,则进行声明一个座位实体,调用数据库的座位新增方法,进行新增。影厅管理界面图如图4.8所示。

2.2.4影院订单管理功能实现

影院订单管理功能,影院管理员可进行管理自己的影院订单信息。支持通过电影、影厅搜索条件输入,进行获取该影院的订单信息,通过data-table组件展示订单列表,从/AppointOrder/List接口获取数据,配置在dataColum数组定义,包括场次、电影、订单状态等信息。影院管理员可进行查看购票明细、检票完成、删除订单等操作。当点击购票明细时,调用/AppointOrderDet/List接口获取明细数据,进行展示。当点击检票完成时,触发TicketCompletedBtn()方法,调用/AppointOrder/TicketCompleted,修改预约状态为“待评价”,调用数据库的修改方法。影院订单管理界面图如图4.9所示。

2.3管理员功能实现

2.3.1电影院管理功能实现

管理员进入/MovieArea/MovieAreaList电影院管理界面,可进行审核影院信息,通过POST请求调用/MovieArea/List接口,接口进行查询MovieArea电影院表数据,进行展示。当管理员点击审核按钮,触发ShowEditModal()方法,弹出审核对话框,使用el-switch组件,用于表示两种状态,审核成功和审核失败。管理员通过电影院的信息进行审核,点击确认按钮,进行提交审核,调用/MovieArea/CreateOrEdit接口,修改电影院的IsPass字段为true,修改电影院信息。审核通过后,影院管理员将可以进行维护影院的影厅、座位等信息。电影院管理界面图如图4.10所示。

2.3.2影片统计功能实现

影片统计功能,前端在组件挂载后,调用fetchStatisticsData方法,获取统计的数据,随后调用initCharts进行初始化所有的图表,调用/Movies/MoviesSynthesizeStatistics后端接口获取影片相关的数据。影片总数、订单总数、平均分以及平均时长通过el-card数据卡片进行包裹展示。使用环形图展示影片类型分布,横向柱状图展示影片地区分布。影片统计图如图4.11所示。


网站公告

今日签到

点亮在社区的每一天
去签到