电影票预定系统|完整前后端项目,开箱即用(源码分享)
一、项目简介
本项目是一套电影票预定系统,完整前后端分离架构,专门针对电影票预订场景开发。可直接部署上线,省去从零开发成本。
适用人群:Java 开发学习者、毕业设计参考、课程设计、外包快速交付项目。
二、系统核心功能
前台用户端(网页端)
- 用户注册登录
- 首页:所有上映电影列表海报与简介
- 电影列表:所有上映电影列表海报与简介,查看场次,选座购票
- 我的订单:查看我的订单
后台管理端(Web 管理后台)
- 电影管理:新增 / 编辑 / 删除 电影,查看全部电影列表,设置电影介绍、电影时长、电影海报、评分等信息
- 影院管理:新增 / 编辑 / 删除 影院,查看全部影院列表,设置影院的名称、地址、电话、座位数、状态等信息
- 场次管理:新增 / 编辑 / 删除 场次,查看全部场次列表、取消订单,设置电影场次的开始 / 结束时间、票价、状态
- 订单管理:删除订单,查看全部订单列表
- 用户管理:查看所有注册用户,添加 / 编辑 / 删除 用户信息
- 数据统计:用户总数、电影数量统计、影院数量统计、订单总数
三、数据库说明
3.1 用户表 (users)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 用户唯一标识 |
| username | VARCHAR(50) | NOT NULL, UNIQUE | 用户名 |
| password | VARCHAR(100) | NOT NULL | 密码(明文存储) |
| VARCHAR(100) | 邮箱 | ||
| phone | VARCHAR(20) | 手机号 | |
| role | VARCHAR(20) | DEFAULT 'customer' | 用户角色: admin, customer |
| avatar | VARCHAR(255) | 头像URL | |
| status | INT | DEFAULT 1 | 状态: 1-启用, 0-禁用 |
| created_at | DATETIME | 创建时间 | |
| updated_at | DATETIME | 更新时间 |
索引:
- UNIQUE INDEX
uk_username(username)
初始化数据:
| username | password | phone | role | status | |
|---|---|---|---|---|---|
| admin | admin123 | admin@movieticket.com | 13800138000 | admin | 1 |
| user1 | user123 | user1@movieticket.com | 13900139001 | customer | 1 |
| user2 | user123 | user2@movieticket.com | 13900139002 | customer | 1 |
3.2 电影表 (movies)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 电影唯一标识 |
| title | VARCHAR(100) | NOT NULL | 电影标题 |
| director | VARCHAR(50) | 导演 | |
| actors | TEXT | 主演(逗号分隔) | |
| genre | VARCHAR(50) | 类型 | |
| language | VARCHAR(20) | 语言 | |
| duration | INT | 时长(分钟) | |
| poster_url | VARCHAR(255) | 海报URL | |
| description | TEXT | 剧情简介 | |
| rating | DECIMAL(3,1) | 评分 | |
| status | INT | DEFAULT 1 | 状态: 1-上架, 0-下架 |
| release_date | DATE | 上映日期 | |
| created_at | DATETIME | 创建时间 |
索引:
- INDEX
idx_title(title) - INDEX
idx_status(status)
初始化数据:
| title | director | actors | genre | language | duration | rating | release_date |
|---|---|---|---|---|---|---|---|
| 流浪地球2 | 郭帆 | 吴京,刘德华,李雪健 | 科幻 | 中文 | 173 | 9.4 | 2023-01-22 |
| 满江红 | 张艺谋 | 沈腾,易烊千玺,张译 | 悬疑 | 中文 | 159 | 8.5 | 2023-01-22 |
| 长津湖 | 陈凯歌,徐克,林超贤 | 吴京,易烊千玺,段奕宏 | 战争 | 中文 | 176 | 9.5 | 2021-09-30 |
| 孤注一掷 | 申奥 | 张艺兴,金晨,咏梅 | 犯罪 | 中文 | 130 | 8.2 | 2023-08-08 |
| 消失的她 | 崔睿 | 朱一龙,倪妮,文咏珊 | 悬疑 | 中文 | 121 | 8.0 | 2023-06-22 |
2.3 影院表 (theaters)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 影院唯一标识 |
| name | VARCHAR(100) | NOT NULL | 影院名称 |
| address | VARCHAR(255) | 地址 | |
| phone | VARCHAR(20) | 联系电话 | |
| seats_count | INT | DEFAULT 50 | 总座位数 |
| layout | VARCHAR(20) | DEFAULT '5-10' | 座位布局(行-列) |
| status | INT | DEFAULT 1 | 状态: 1-营业, 0-停业 |
| created_at | DATETIME | 创建时间 |
索引:
- INDEX
idx_name(name) - INDEX
idx_status(status)
初始化数据:
| name | address | phone | seats_count | layout | status |
|---|---|---|---|---|---|
| 万达影城(国贸店) | 北京市朝阳区建国门外大街1号国贸商城B1层 | 010-65055588 | 100 | 10-10 | 1 |
| CGV影城(望京店) | 北京市朝阳区望京街9号望京SOHO T1楼5层 | 010-84728888 | 80 | 8-10 | 1 |
| 星美影城(西单店) | 北京市西城区西单北大街120号西单商场7层 | 010-66028888 | 90 | 9-10 | 1 |
| UME影城(双井店) | 北京市朝阳区广渠路31号新百大厦5层 | 010-87777777 | 70 | 7-10 | 1 |
2.4 场次表 (showtimes)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 场次唯一标识 |
| movie_id | BIGINT | FOREIGN KEY | 关联电影ID |
| theater_id | BIGINT | FOREIGN KEY | 关联影院ID |
| start_time | DATETIME | 开始时间 | |
| end_time | DATETIME | 结束时间 | |
| price | DECIMAL(10,2) | 票价 | |
| available_seats | INT | 剩余座位数 | |
| total_seats | INT | 总座位数 | |
| status | INT | DEFAULT 1 | 状态: 1-正常, 0-取消 |
| created_at | DATETIME | 创建时间 |
索引:
- INDEX
idx_movie_id(movie_id) - INDEX
idx_theater_id(theater_id) - INDEX
idx_start_time(start_time)
外键约束:
- FOREIGN KEY (movie_id) REFERENCES movies(id) ON DELETE CASCADE
- FOREIGN KEY (theater_id) REFERENCES theaters(id) ON DELETE CASCADE
2.5 座位表 (seats)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 座位唯一标识 |
| showtime_id | BIGINT | FOREIGN KEY | 关联场次ID |
| seat_row | VARCHAR(10) | 排号(如:A,B,C) | |
| seat_number | INT | 座位号(如:1,2,3) | |
| status | VARCHAR(20) | DEFAULT 'available' | 状态: available, reserved, sold |
| order_id | BIGINT | FOREIGN KEY | 关联订单ID(售出时) |
索引:
- INDEX
idx_showtime_id(showtime_id) - INDEX
idx_status(status)
外键约束:
- FOREIGN KEY (showtime_id) REFERENCES showtimes(id) ON DELETE CASCADE
- FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE SET NULL
2.6 订单表 (orders)
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 订单唯一标识 |
| user_id | BIGINT | FOREIGN KEY | 关联用户ID |
| showtime_id | BIGINT | FOREIGN KEY | 关联场次ID |
| seat_info | VARCHAR(255) | 座位信息(逗号分隔) | |
| total_amount | DECIMAL(10,2) | 总金额 | |
| status | VARCHAR(20) | DEFAULT 'pending' | 状态: pending, paid, cancelled, refunded |
| payment_method | VARCHAR(20) | 支付方式 | |
| created_at | DATETIME | 创建时间 | |
| updated_at | DATETIME | 更新时间 |
索引:
- INDEX
idx_user_id(user_id) - INDEX
idx_showtime_id(showtime_id) - INDEX
idx_status(status)
说明:以上为系统核心表结构,完整建表语句及字段注释见随项目附带的
init.sql数据库脚本。
四、技术栈
- 后端:Java + SpringBoot + MyBatis + MySQL + Maven
- 前端:Vue2 + Element UI(管理后台)
- 部署方式:支持本地 IDEA 直接运行,Linux 服务器部署,内置 SQL 脚本,一键导入数据库
五、项目亮点
✅ 完整前后端代码,不是半成品,可直接跑通
✅ 数据库脚本齐全,附带部署文档,新手也能部署
✅ 文档齐全,附带数据库设计文档、详细设计文档、数据库ER图
✅ 座位可视化下单
✅ 代码结构规范,注释清晰,适合二次开发
✅ 可用于毕设学习参考、课程设计参考
六、运行环境
- JDK 1.8
- MySQL 5.7 +
- Maven 3.6 +
- IDEA 开发工具
- Node.js 14 +(前端编译打包)
| 操作系统 | 版本 | 支持状态 |
|---|---|---|
| Windows | Windows 10/Server 2016+ | ✅ 支持 |
| Linux | CentOS 7+/Ubuntu 18.04+ | ✅ 支持 |
| macOS | macOS 10.15+ | ✅ 支持(开发环境) |
七、系统截图
前台用户端截图




后台管理端截图







说明:以上为系统运行效果截图,实际部署后界面与演示一致。
八、快速部署步骤
详情见部署文档说明
九、获取说明
项目为成品源码,适合学习二次开发,仅供学习参考。
⚠️ 注意:源码不包含永久售后,仅提供部署文档、设计文档。
禁止将源码二次倒卖、侵权分发。
十、总结
如果想做毕业设计、练手项目或者给线下自习室做一套电影票预订系统,从零开发需要花费大量时间。
这套完整前后端电影票预订系统可以快速上手,看懂业务逻辑,也可以基于这个版本扩展功能,比如增加短信通知、优惠券、小程序端改造等。
项目演示效果可以参考小红书:
存下口令,前往【小红书】查看演示:https://xhslink.cn/o/9dlmf1I0Rwi