前言
吼吼吼,紧张的JavaEE阶段学习结束了,刚学完SSM框架,转眼这就到期末课设了。时间过得可真快啊。(然而我的框架使用和前端技术可能还是老八心爱的奥利给)
但是不论如何,课设就这么来了,这倒是个好机会,能把学过的技术栈给穿起来复习复习。刚好JavaEE阶段学了很多很多技术,但是都没有来得及写成博客梳理一番。借着这个项目,一边完成,一边梳理知识知识点,美汁汁~~
所以这个系列可能会连载许多篇 (我尽量) ,其中会有技术应用的,也会有完成结构的。当然,在完成的过程中一定是充满各种问题的,像是数据库设计的优化,程序结构设计的改善等等。
因此一些文章补充新的内容或者发生重构也肯定是经常的事情,我也真诚的希望在做的不好的地方可以获得你们宝贵的建议。
千里之行,始于足下,今天就从最开始的需求分析做起吧。
需求分析
这个课设并不复杂,简单来说就是三个系统:
后台管理系统
- 管理电影,包括电影的上限,下架
电影包括时长,国家,语言等信息,需要能够上传电影海报 - 管理影厅,包括增删改影厅的属性。
影厅属性包括名称,类型,座位数等等。 - 管理影片放映,主要体现为影片上映的排片计划
需要制定放映的时间、影厅、票价等信息 - 消息记录查询,包括查询票房,电影票售卖记录等
在线购票系统
- 在线自助售票,购票人可以在网站上查询到近期(三天)的各种上映电影
- 选择电影后可电影在某日的排片
- 选择某上映计划后可选择座位,同时确定购买数量
- 结算时使用手机号码进行标记
- 可使用会员卡进行打折,需要输入会员卡的卡号(或手机号)和密码
- 购票成功后将显示影票信息,包括场次,时间,影片,票价,编号等。
(课设要求中并没有涉及到退票的操作,购票完成时就已经出票了。这个作为以后功能扩展的功能吧QAQ)
会员管理系统
- 用户可注册会员卡,注册的会员卡拥有不同的时限、折扣(可增添会员卡的类型)
会员卡需要用户提供手机号码(必选)、生日(可选)、姓名(必选),系统将自动生成会员卡号码即会员卡时限。 - 过时的会员卡将不能进行消费,但是可以续期或是返现。
- 用户可在网页中登录会员对信息做出修改和充值
- 会员购票将进行打折处理,钱将会从卡余额划扣,余额不足不可以使用会员卡消费
项目的需求暂时就只有这些,总体来说功能还算可以,下面我们先来粗略的建立数据库的表单吧。
数据库表单
暂时想来,这个项目不需要特别多的表单,目前想到的,需要七个表:
- 首先是存储电影和影厅需要两个表单,这是两个最基础的表。
- 为了存储电影和海报海报这个一对多的关系,需要再建立一张用来记录海报和影片关系的表。
- 存储vip和员工需要两个表单,这是用来管理人员的表单。
- 接着就是上映计划表,对,影片的上映计划通影片本身是不一样的。这里叫放映计划可能更加合适一些,这个表将记录每一个放映计划,会关联到影片和影厅,并为该场电影指定价格。
- 再接着,就是购票记录表。这张表,可以用来显示用户的购票结果,也可用来进行统计票房。需要关联场次,影厅、座位号、用户电话号码等
员工和vip表
DROP TABLE IF EXISTS `vip`;
CREATE TABLE `vip` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`discount` double(10, 2) NULL DEFAULT 1.00,
`money` double(10, 2) NULL DEFAULT 0.00,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '123456',
`phone` bigint(0) NULL DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`birthday` date NULL DEFAULT NULL,
`due_time` date NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `code`(`code`) USING BTREE,
UNIQUE INDEX `phone`(`phone`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS `staff`;
CREATE TABLE `staff` (
`id` int(0) NOT NULL AUTO_INCREMENT,
`name` varchar(