阶段项目实战
一、奥利给电影购票系统简介
- 不是真的开发成一个完美的,可以上线的电影购票系统的项目,只是模拟电影购票系统的功能开发,综合起之前所学的知识。
二、项目功能演示
1、首页
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
您还没有注册!请先注册~~
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
2
----------------商家用户注册界面----------------
请您输入登录名称:
zy888
请您输入登录密码:
abc123
请您输入真实姓名:
赵云
请您输入联系方式:
110110
请您输入账户余额:
5000
请您输入电影院名称:
三国国际影院
请您输入电影院地址:
火星风云路99号111栋109房间
请您输入性别:
男
尊敬的赵云先生,恭喜您,注册成功啦!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
2
----------------商家用户注册界面----------------
请您输入登录名称:
zj888
请您输入登录密码:
abc123
请您输入真实姓名:
甄姬
请您输入联系方式:
120120
请您输入账户余额:
8000
请您输入电影院名称:
神马国际影院
请您输入电影院地址:
水星天水路89号4A11栋201房间
请您输入性别:
女
尊敬的甄姬女士,恭喜您,注册成功啦!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
3
----------------普通用户注册界面----------------
请您输入登录名称:
zy888
登录名称已被占用!
您是否继续?y/n
y
请您输入登录名称:
zj888
登录名称已被占用!
您是否继续?y/n
y
请您输入登录名称:
ljj666
请您输入登录密码:
123123
请您输入真实姓名:
林俊杰
请您输入联系方式:
898989
请您输入账户余额:
5000
请您输入性别:
第三方
您输入的性别有误!
您是否继续?y/n
y
请您输入性别:
男
尊敬的林俊杰先生,恭喜您,注册成功啦!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
3
----------------普通用户注册界面----------------
请您输入登录名称:
zj666
请您输入登录密码:
123123
请您输入真实姓名:
张杰
请您输入联系方式:
787878
请您输入账户余额:
7500
请您输入性别:
f
您输入的性别有误!
您是否继续?y/n
y
请您输入性别:
男
尊敬的张杰先生,恭喜您,注册成功啦!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
2、商家
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
请您输入登录名称:
zy888
请您输入登录密码:
abc123
欢迎赵云先生进入奥利给电影系统~~
----------------商家操作界面----------------
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
1
----------------商家详情界面----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间 账户余额:5000.0
您的电影院当前无片可放映~~
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
2
----------------商家上架电影界面----------------
请您输入新影片名称:
新三国
请您输入新影片主演:
赵云
请您输入新影片时长:
120
请您输入新影片票价:
11
请您输入新影片票数:
2000
请您输入新影片放映时间(例:1999-09-22 13:33:22):
2011:3232
您输入的日期时间格式有误!!
您是否继续?y/n
y
请您输入新影片放映时间(例:1999-09-22 13:33:22):
2011-12-12 12:12:00
您已成功上架《新三国》这部电影!
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
2
----------------商家上架电影界面----------------
请您输入新影片名称:
三国演义
请您输入新影片主演:
刘备
请您输入新影片时长:
140
请您输入新影片票价:
42
请您输入新影片票数:
200
请您输入新影片放映时间(例:1999-09-22 13:33:22):
2005-05-19 20:30:12
您已成功上架《三国演义》这部电影!
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
1
----------------商家详情界面----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间 账户余额:5000.0
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
三国演义 刘备 140.0 0.0 42.0 200 2005-05-19 20:30:12
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
4
----------------商家修改电影界面----------------
请您输入要修改的影片名称:
士大夫
您要修改的《士大夫》未上架~~
您是否继续?y/n
y
请您输入要修改的影片名称:
三国演义
请您输入修改后的影片名称:
演义
请您输入修改后的影片主演:
诸葛亮
请您输入修改后的影片时长:
110
请您输入修改后的影片票价:
20
请您输入修改后的影片票数:
210
请您输入修改后的影片放映时间:
2010-11-11 11:11:11
您已成功修改《演义》这部电影!
----------------商家详情界面----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间 账户余额:5000.0
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
演义 诸葛亮 110.0 0.0 20.0 210 2010-11-11 11:11:11
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
3
----------------商家下架电影界面----------------
请您输入要下架的影片名称:
更
您要下架的《更》未上架!请先上架~~
您是否继续?y/n
y
请您输入要下架的影片名称:
演义
您已成功下架《演义》这部电影!
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
1
----------------商家详情界面----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间 账户余额:5000.0
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
5
尊敬的赵云先生,您已退出登录~~ 欢迎下次光临!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
3、用户
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
请您输入登录名称:
ljj666
请您输入登录密码:
12313
sorry!您输入的密码有误~
您是否继续?y/n
y
请您输入登录名称:
ljj888
请您输入登录密码:
123123
sorry!您输入的登录名有误~
您是否继续?y/n
y
请您输入登录名称:
ljj666
请您输入登录密码:
123123
欢迎林俊杰先生进入奥利给电影系统~~
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
1
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 0.0 25.0 100 2022-08-10 12:12:12
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
2
----------------根据电影名称查询电影信息----------------
请您输入要查询的电影名称:
泰坦尼克号
您要查询的《泰坦尼克号》还未上映~~
您是否继续?y/n
y
请您输入要查询的电影名称:
新三国
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
2
----------------根据电影名称查询电影信息----------------
请您输入要查询的电影名称:
甄嬛传
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 0.0 25.0 100 2022-08-10 12:12:12
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
sorry!此选项不存在~
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
3
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 0.0 25.0 100 2022-08-10 12:12:12
----------------电影评分界面----------------
请您输入要评分的电影名称:
新
sorry!《新》这部电影未上映~~
请您输入要评分的电影名称:
甄嬛传
您要对《甄嬛传》这部电影进行评分!
请您开始评分(1-10):
0
sorry!评分范围:1-10分!
您是否继续?y/n
y
请您开始评分(1-10):
dsfds十多个.;
您的评分数据有误!!
请您开始评分(1-10):
10.5
sorry!评分范围:1-10分!
您是否继续?y/n
y
请您开始评分(1-10):
9.8
您对《甄嬛传》这部电影的评分是:9.8分
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
1
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 100 2022-08-10 12:12:12
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
3
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 0.0 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 100 2022-08-10 12:12:12
----------------电影评分界面----------------
请您输入要评分的电影名称:
新三国
您要对《新三国》这部电影进行评分!
请您开始评分(1-10):
8.9
您对《新三国》这部电影的评分是:8.9分
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
1
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 8.9 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 100 2022-08-10 12:12:12
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
4
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 8.9 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 100 2022-08-10 12:12:12
----------------购买电影票界面----------------
请您输入要购票的电影院名称:
牛马影院
sorry!牛马影院不存在~~
您是否继续?y/n
y
请您输入要购票的电影院名称:
神马国际影院
请您输入要购票的电影名称:
新三国
您要购票的《新三国》这部电影未上架~~
您是否继续?y/n
y
请您输入要购票的电影名称:
甄嬛传
请问您要购买多少张《甄嬛传》的电影票:
101
sorry!当前电影票最多可以购买:100张
您是否继续?y/n
y
请问您要购买多少张《甄嬛传》的电影票:
50
您成功购买了《甄嬛传》50张电影票!
总金额是:1250.0元
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
5
----------------用户详情界面----------------
登录名称:ljj666 姓名:林俊杰
电话:898989 账户余额:3750.0
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
6
尊敬的林俊杰先生,您已退出登录~~ 欢迎下次光临!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
3
----------------普通用户注册界面----------------
请您输入登录名称:
zj666
登录名称已被占用!
您是否继续?y/n
n
好的!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
请您输入登录名称:
zj666
请您输入登录密码:
123123
欢迎张杰先生进入奥利给电影系统~~
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
1
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 8.9 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 50 2022-08-10 12:12:12
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
5
----------------用户详情界面----------------
登录名称:zj666 姓名:张杰
电话:787878 账户余额:7500.0
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
4
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 8.9 11.0 2000 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 50 2022-08-10 12:12:12
----------------购买电影票界面----------------
请您输入要购票的电影院名称:
三国国际影院
请您输入要购票的电影名称:
新三国分
您要购票的《新三国分》这部电影未上架~~
您是否继续?y/n
y
请您输入要购票的电影名称:
新三国
请问您要购买多少张《新三国》的电影票:
20001
sorry!当前电影票最多可以购买:2000张
您是否继续?y/n
y
请问您要购买多少张《新三国》的电影票:
100
您成功购买了《新三国》100张电影票!
总金额是:1100.0元
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
5
----------------用户详情界面----------------
登录名称:zj666 姓名:张杰
电话:787878 账户余额:6400.0
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
6
尊敬的张杰先生,您已退出登录~~ 欢迎下次光临!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
请您输入登录名称:
ljj666
请您输入登录密码:
123123
欢迎林俊杰先生进入奥利给电影系统~~
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
5
----------------用户详情界面----------------
登录名称:ljj666 姓名:林俊杰
电话:898989 账户余额:3750.0
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
4
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 8.9 11.0 1900 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 50 2022-08-10 12:12:12
----------------购买电影票界面----------------
请您输入要购票的电影院名称:
神马国际影院
请您输入要购票的电影名称:
甄嬛传
请问您要购买多少张《甄嬛传》的电影票:
50
您成功购买了《甄嬛传》50张电影票!
总金额是:1250.0元
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
5
----------------用户详情界面----------------
登录名称:ljj666 姓名:林俊杰
电话:898989 账户余额:2500.0
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
6
尊敬的林俊杰先生,您已退出登录~~ 欢迎下次光临!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
请您输入登录名称:
zj888
请您输入登录密码:
abc123
欢迎甄姬女士进入奥利给电影系统~~
----------------商家操作界面----------------
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
1
----------------商家详情界面----------------
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间 账户余额:10500.0
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 0 2022-08-10 12:12:12
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
5
尊敬的甄姬女士,您已退出登录~~ 欢迎下次光临!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
3
----------------普通用户注册界面----------------
请您输入登录名称:
ljj666
登录名称已被占用!
您是否继续?y/n
n
好的!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
请您输入登录名称:
ljj666
请您输入登录密码:
12313
sorry!您输入的密码有误~
您是否继续?y/n
y
请您输入登录名称:
ljj666
请您输入登录密码:
123123
欢迎林俊杰先生进入奥利给电影系统~~
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
5
----------------用户详情界面----------------
登录名称:ljj666 姓名:林俊杰
电话:898989 账户余额:2500.0
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
4
----------------查询所有影院排片信息----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 8.9 11.0 1900 2011-12-12 12:12:00
神马国际影院 电话:120120 地址:水星天水路89号4A11栋201房间
电影名 主演 时长 评分 票价 余票数量 放映时间
甄嬛传 甄姬 149.0 9.8 25.0 0 2022-08-10 12:12:12
----------------购买电影票界面----------------
请您输入要购票的电影院名称:
三国国际影院
请您输入要购票的电影名称:
新三国
请问您要购买多少张《新三国》的电影票:
1900
您当前余额不足!
您是否继续?y/n
y
请问您要购买多少张《新三国》的电影票:
200
您成功购买了《新三国》200张电影票!
总金额是:2200.0元
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
5
----------------用户详情界面----------------
登录名称:ljj666 姓名:林俊杰
电话:898989 账户余额:300.0
----------------客户操作界面----------------
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
请您输入选项:
6
尊敬的林俊杰先生,您已退出登录~~ 欢迎下次光临!
----------------奥利给电影系统首页----------------
1、用户登录
2、商家用户注册
3、普通用户注册
4、退出系统
请您输入选项:
1
----------------用户登录界面----------------
请您输入登录名称:
zy888
请您输入登录密码:
123123
sorry!您输入的密码有误~
您是否继续?y/n
y
请您输入登录名称:
zy888
请您输入登录密码:
abc123
欢迎赵云先生进入奥利给电影系统~~
----------------商家操作界面----------------
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
1
----------------商家详情界面----------------
三国国际影院 电话:110110 地址:火星风云路99号111栋109房间 账户余额:8300.0
电影名 主演 时长 评分 票价 余票数量 放映时间
新三国 赵云 120.0 8.9 11.0 1700 2011-12-12 12:12:00
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
请您输入选项:
三、奥利给电影购票系统技术选型分析
- 面向对象编程:
- 系统包含了电影、商家、客户对象,需要用到继承、多态等语法知识。
- 使用集合容器:
- 系统需要提供不同的容器分别存储系统注册的用户,以及当前商家发布的电影信息。
- 程序流程控制:
- 需要结合分支、循环、跳转关键字等相关操作控制程序的业务逻辑。
- 使用常见API:
- 登录信息的内容比较,业务数据的分析、处理,日期时间的处理等。
四、学习本项目,将至少得到如下收获
- 优秀的面向对象编程能力。
- 清晰、缜密的业务、数据分析能力。
- 熟练使用程序流程技术来控制计算机完成自己的想法。
- 形成良好的编码习惯,获得一定的编码经验。
- 提升业务分析和解决问题的能力,让基础知识形成系统结构,为后续Web技术的学习做有力的支撑。
五、日志框架搭建、系统角色设计
1、集成日志框架,用于后期记录日志信息。
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds" debug="false">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<file>E:/JavaDevelop/log/movie-log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>E:/JavaDevelop/log/movie-log2-%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<root level="All">
<appender-ref ref="FILE" />
</root>
</configuration>
2、定义一个电影类,包含:电影名、主演、评分、时长、票价、余票、放映时间。
package com.app.bean;
import java.util.Date;
public class Movie {
private String movieName;
private String actor;
private double score;
private double duration;
private double price;
private int remainingVotes;
private Date startTime;
public Movie() {
}
public Movie(String movieName, String actor, Double duration, Double price, int remainingVotes, Date startTime) {
this.movieName = movieName;
this.actor = actor;
this.duration = duration;
this.price = price;
this.remainingVotes = remainingVotes;
this.startTime = startTime;
}
public String getMovieName() {
return movieName;
}
public void setMovieName(String movieName) {
this.movieName = movieName;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public Double getDuration() {
return duration;
}
public void setDuration(Double duration) {
this.duration = duration;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public int getRemainingVotes() {
return remainingVotes;
}
public void setRemainingVotes(int remainingVotes) {
this.remainingVotes = remainingVotes;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
@Override
public String toString() {
return "Movie{" +
"movieName='" + movieName + '\'' +
", actor='" + actor + '\'' +
", score=" + score +
", duration=" + duration +
", price=" + price +
", remainingVotes=" + remainingVotes +
", startTime=" + startTime +
'}';
}
}
3、系统包含两个用户角色:商家、客户(存在大量相同属性的信息);
定义用户类作为父类,包含:登录名称、密码、用户真实姓名、性别、电话、账户余额。
package com.app.bean;
public class User {
private String loginName;
private String passWord;
private String userName;
private char sex;
private String phone;
private double money;
public User() {
}
public User(String loginName, String passWord, String userName, char sex, String phone, double money) {
this.loginName = loginName;
this.passWord = passWord;
this.userName = userName;
this.sex = sex;
this.phone = phone;
this.money = money;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
@Override
public String toString() {
return "User{" +
"loginName='" + loginName + '\'' +
", passWord='" + passWord + '\'' +
", userName='" + userName + '\'' +
", sex=" + sex +
", phone='" + phone + '\'' +
", money=" + money +
'}';
}
}
5、定义商家类,包含:电影院名称、电影院地址。
package com.app.bean;
public class Business extends User {
private String CinemaName;
private String CinemaAddress;
public String getCinemaName() {
return CinemaName;
}
public void setCinemaName(String cinemaName) {
CinemaName = cinemaName;
}
public String getCinemaAddress() {
return CinemaAddress;
}
public void setCinemaAddress(String cinemaAddress) {
CinemaAddress = cinemaAddress;
}
public Business() {
}
public Business(String loginName, String passWord, String userName, char sex, String phone, double money, String cinemaName, String cinemaAddress) {
super(loginName, passWord, userName, sex, phone, money);
CinemaName = cinemaName;
CinemaAddress = cinemaAddress;
}
}
6、定义客户类,包含:
package com.app.bean;
public class Customer extends User{
public Customer(){
}
public Customer(String loginName, String passWord, String userName, char sex, String phone, double money) {
super(loginName, passWord, userName, sex, phone, money);
}
}
六、首页设计、登录、商家界面、用户界面
1、首页需要包含:用户登录、商家用户注册、普通用户注册、退出系统功能。
2、商家用户和普通用户可以共用一个登录功能;
判断登录成功的用户的真实类型,根据用户类型完成对应的操作界面设计。
七、商家功能
1、查看详情
2、上架电影
3、下架电影
4、修改电影
5、退出登录
八、客户功能
1、展示所有影片信息
2、根据电影名称查询影片信息
3、评分
4、购票
5、个人中心
6、退出登录
九、最终实现
1、Movie类——电影类
package com.app.bean;
import java.util.Date;
public class Movie {
private String movieName;
private String actor;
private double score;
private double duration;
private double price;
private int remainingVotes;
private Date startTime;
public Movie() {
}
public Movie(String movieName, String actor, Double duration, Double price, int remainingVotes, Date startTime) {
this.movieName = movieName;
this.actor = actor;
this.duration = duration;
this.price = price;
this.remainingVotes = remainingVotes;
this.startTime = startTime;
}
public String getMovieName() {
return movieName;
}
public void setMovieName(String movieName) {
this.movieName = movieName;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public Double getDuration() {
return duration;
}
public void setDuration(Double duration) {
this.duration = duration;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public int getRemainingVotes() {
return remainingVotes;
}
public void setRemainingVotes(int remainingVotes) {
this.remainingVotes = remainingVotes;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
@Override
public String toString() {
return "Movie{" +
"movieName='" + movieName + '\'' +
", actor='" + actor + '\'' +
", score=" + score +
", duration=" + duration +
", price=" + price +
", remainingVotes=" + remainingVotes +
", startTime=" + startTime +
'}';
}
}
2、User类——用户类
package com.app.bean;
public class User {
private String loginName;
private String passWord;
private String userName;
private char sex;
private String phone;
private double money;
public User() {
}
public User(String loginName, String passWord, String userName, char sex, String phone, double money) {
this.loginName = loginName;
this.passWord = passWord;
this.userName = userName;
this.sex = sex;
this.phone = phone;
this.money = money;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
@Override
public String toString() {
return "User{" +
"loginName='" + loginName + '\'' +
", passWord='" + passWord + '\'' +
", userName='" + userName + '\'' +
", sex=" + sex +
", phone='" + phone + '\'' +
", money=" + money +
'}';
}
}
3、Business类——商家类
package com.app.bean;
public class Business extends User {
private String CinemaName;
private String CinemaAddress;
public String getCinemaName() {
return CinemaName;
}
public void setCinemaName(String cinemaName) {
CinemaName = cinemaName;
}
public String getCinemaAddress() {
return CinemaAddress;
}
public void setCinemaAddress(String cinemaAddress) {
CinemaAddress = cinemaAddress;
}
public Business() {
}
public Business(String loginName, String passWord, String userName, char sex, String phone, double money, String cinemaName, String cinemaAddress) {
super(loginName, passWord, userName, sex, phone, money);
CinemaName = cinemaName;
CinemaAddress = cinemaAddress;
}
}
4、Customer类——客户类
package com.app.bean;
public class Customer extends User{
public Customer(){
}
public Customer(String loginName, String passWord, String userName, char sex, String phone, double money) {
super(loginName, passWord, userName, sex, phone, money);
}
}
5、MovieSystem类——电影购票系统类
package com.app.run;
import com.app.bean.Business;
import com.app.bean.Customer;
import com.app.bean.Movie;
import com.app.bean.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
public class MovieSystem {
public static final List<User> ALL_USERS = new ArrayList<>();
public static final Map<Business, List<Movie>> ALL_MOVIES = new HashMap<>();
public static final Scanner SYS_SC = new Scanner(System.in);
public static User loginUser;
public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final Logger LOGGER = LoggerFactory.getLogger("MovieSystem.class");
public static void main(String[] args) {
frontPage();
}
private static void frontPage() {
while (true) {
System.out.println("----------------奥利给电影系统首页----------------");
System.out.println("1、用户登录");
System.out.println("2、商家用户注册");
System.out.println("3、普通用户注册");
System.out.println("4、退出系统");
System.out.println("请您输入选项:");
String select = SYS_SC.nextLine();
switch (select) {
case "1":
userLogin();
break;
case "2":
businessRegister();
break;
case "3":
customerRegister();
break;
case "4":
System.out.println("您已退出奥利给电影系统~~ 欢迎下次光临!");
return;
default:
System.out.println("sorry!此选项不存在~");
break;
}
}
}
private static void businessRegister() {
System.out.println("----------------商家用户注册界面----------------");
while (true) {
System.out.println("请您输入登录名称:");
String loginName = SYS_SC.nextLine();
User user = getBusinessAndCustomerByLoginName(loginName);
if (user != null) {
System.out.println("登录名称已被占用!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}else {
System.out.println("请您输入登录密码:");
String passWord = SYS_SC.nextLine();
System.out.println("请您输入真实姓名:");
String userName = SYS_SC.nextLine();
System.out.println("请您输入联系方式:");
String phone = SYS_SC.nextLine();
System.out.println("请您输入账户余额:");
String money = SYS_SC.nextLine();
System.out.println("请您输入电影院名称:");
String cinemaName = SYS_SC.nextLine();
System.out.println("请您输入电影院地址:");
String cinemaAddress = SYS_SC.nextLine();
while (true) {
System.out.println("请您输入性别:");
String sex = SYS_SC.nextLine();
if (sex.charAt(0) == '男' || sex.charAt(0) == '女') {
char sexCh = sex.charAt(0);
Business business = new Business(
loginName, passWord, userName, sexCh, phone, Double.valueOf(money), cinemaName, cinemaAddress
);
ALL_USERS.add(business);
List<Movie> movies = new ArrayList<>();
ALL_MOVIES.put(business, movies);
System.out.println("尊敬的" + userName + (sexCh == '男' ? "先生" : "女士") + ",恭喜您,注册成功啦!");
return;
}else {
System.out.println("您输入的性别有误!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}
}
}
private static void customerRegister() {
System.out.println("----------------普通用户注册界面----------------");
while (true) {
System.out.println("请您输入登录名称:");
String loginName = SYS_SC.nextLine();
User user = getBusinessAndCustomerByLoginName(loginName);
if (user != null) {
System.out.println("登录名称已被占用!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}else {
System.out.println("请您输入登录密码:");
String passWord = SYS_SC.nextLine();
System.out.println("请您输入真实姓名:");
String userName = SYS_SC.nextLine();
System.out.println("请您输入联系方式:");
String phone = SYS_SC.nextLine();
System.out.println("请您输入账户余额:");
String money = SYS_SC.nextLine();
while (true) {
System.out.println("请您输入性别:");
String sex = SYS_SC.nextLine();
if (sex.charAt(0) == '男' || sex.charAt(0) == '女') {
char sexCh = sex.charAt(0);
Customer customer = new Customer(
loginName, passWord, userName, sexCh, phone, Double.valueOf(money)
);
ALL_USERS.add(customer);
System.out.println("尊敬的" + userName + (sexCh == '男' ? "先生" : "女士") + ",恭喜您,注册成功啦!");
return;
}else {
System.out.println("您输入的性别有误!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}
}
}
private static User getBusinessAndCustomerByLoginName(String loginName) {
for (User user : ALL_USERS) {
if (user.getLoginName().equals(loginName)) {
return user;
}
}
return null;
}
private static void userLogin() {
System.out.println("----------------用户登录界面----------------");
if (ALL_USERS.size() == 0){
System.out.println("您还没有注册!请先注册~~");
return;
}
while (true) {
System.out.println("请您输入登录名称:");
String loginName = SYS_SC.nextLine();
System.out.println("请您输入登录密码:");
String passWord = SYS_SC.nextLine();
User u = getUserByLoginName(loginName);
if (u != null) {
if (u.getPassWord().equals(passWord)) {
loginUser = u;
LOGGER.info(u.getUserName() + "登录了电影系统~");
if (u instanceof Customer) {
CustomerInterface();
}else {
BusinessInterface();
}
return;
}else {
System.out.println("sorry!您输入的密码有误~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}else {
System.out.println("sorry!您输入的登录名有误~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}
private static void BusinessInterface() {
System.out.println("欢迎" + loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士") + "进入奥利给电影系统~~");
System.out.println("----------------商家操作界面----------------");
while (true) {
System.out.println("1、查看详情");
System.out.println("2、上架电影");
System.out.println("3、下架电影");
System.out.println("4、修改电影");
System.out.println("5、退出登录");
System.out.println("请您输入选项:");
String select = SYS_SC.nextLine();
switch (select) {
case "1":
showBusinessInfos();
break;
case "2":
addMovie();
break;
case "3":
deleteMovie();
break;
case "4":
updateMovie();
break;
case "5":
System.out.println("尊敬的" + loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士") +",您已退出登录~~ 欢迎下次光临!");
return;
default:
System.out.println("sorry!此选项不存在~");
break;
}
}
}
private static void updateMovie() {
System.out.println("----------------商家修改电影界面----------------");
Business business = (Business) loginUser;
List<Movie> movies = ALL_MOVIES.get(business);
if (movies.size() == 0) {
System.out.println("您的电影院无片可修改~~");
return;
}
while (true) {
System.out.println("请您输入要修改的影片名称:");
String movieName = SYS_SC.nextLine();
for (Movie movie : movies) {
if (movie.getMovieName().equals(movieName)) {
System.out.println("请您输入修改后的影片名称:");
String updateMovieName = SYS_SC.nextLine();
System.out.println("请您输入修改后的影片主演:");
String updateActor = SYS_SC.nextLine();
System.out.println("请您输入修改后的影片时长:");
String updateDuration = SYS_SC.nextLine();
System.out.println("请您输入修改后的影片票价:");
String updatePrice = SYS_SC.nextLine();
System.out.println("请您输入修改后的影片票数:");
String updateRemainingVotes = SYS_SC.nextLine();
try {
System.out.println("请您输入修改后的影片放映时间:");
String updateStartTime = SYS_SC.nextLine();
movie.setMovieName(updateMovieName);
movie.setActor(updateActor);
movie.setDuration(Double.valueOf(updateDuration));
movie.setPrice(Double.valueOf(updatePrice));
movie.setRemainingVotes(Integer.valueOf(updateRemainingVotes));
movie.setStartTime(sdf.parse(updateStartTime));
System.out.println("您已成功修改" + "《" + movie.getMovieName() + "》" + "这部电影!");
showBusinessInfos();
return;
} catch (Exception e) {
System.out.println("您输入的日期时间格式有误!");
LOGGER.error("时间解析出错!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}
System.out.println("您要修改的《" + movieName + "》未上架~~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
private static void deleteMovie() {
System.out.println("----------------商家下架电影界面----------------");
Business business = (Business) loginUser;
List<Movie> movies = ALL_MOVIES.get(business);
if (movies.size() == 0) {
System.out.println("您的电影院无片可下架~~");
return;
}
while (true) {
System.out.println("请您输入要下架的影片名称:");
String movieName = SYS_SC.nextLine();
for (Movie movie : movies) {
if (movie.getMovieName().contains(movieName)) {
movies.remove(movie);
System.out.println("您已成功下架" + "《" + movie.getMovieName() + "》" + "这部电影!");
return;
}
}
System.out.println("您要下架的《" + movieName + "》未上架!请先上架~~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
private static void addMovie() {
System.out.println("----------------商家上架电影界面----------------");
Business business = (Business) loginUser;
List<Movie> movies = ALL_MOVIES.get(business);
while (true) {
System.out.println("请您输入新影片名称:");
String movieName = SYS_SC.nextLine();
Movie movie1 = getMovieByMovieName(movieName);
if (movie1 != null) {
System.out.println("您要上架的《" + movieName + "》已经上架了!请不要侵权哦~~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}else {
System.out.println("请您输入新影片主演:");
String actor = SYS_SC.nextLine();
System.out.println("请您输入新影片时长:");
String duration = SYS_SC.nextLine();
System.out.println("请您输入新影片票价:");
String price = SYS_SC.nextLine();
System.out.println("请您输入新影片票数:");
String remainingVotes = SYS_SC.nextLine();
while (true) {
try {
System.out.println("请您输入新影片放映时间(例:1999-09-22 13:33:22):");
String startTime = SYS_SC.nextLine();
Movie movie2 = new Movie(movieName, actor, Double.valueOf(duration), Double.valueOf(price),
Integer.valueOf(remainingVotes), sdf.parse(startTime));
movies.add(movie2);
System.out.println("您已成功上架" + "《" + movie2.getMovieName() + "》" + "这部电影!");
return;
} catch (Exception e) {
System.out.println("您输入的日期时间格式有误!!");
LOGGER.error("时间解析出错!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}
}
}
private static void showBusinessInfos() {
System.out.println("----------------商家详情界面----------------");
Business business = (Business) loginUser;
System.out.println(business.getCinemaName() + "\t\t电话:" + business.getPhone() + "\t\t地址:" + business.getCinemaAddress() + "\t\t账户余额:" + business.getMoney());
List<Movie> movies = ALL_MOVIES.get(loginUser);
if (movies.size() > 0) {
System.out.println("\t\t电影名\t\t\t主演\t\t时长\t\t评分\t\t票价\t\t余票数量\t\t放映时间");
movies.stream().sorted((e1, e2) -> Double.compare(e2.getScore(), e1.getScore())).forEach( e ->
System.out.println("\t\t" + e.getMovieName() + "\t\t" + e.getActor() + "\t\t" + e.getDuration() + "\t\t" +
e.getScore() + "\t\t" + e.getPrice() + "\t\t" + e.getRemainingVotes() + "\t\t" +
sdf.format(e.getStartTime()))
);
}else {
System.out.println("您的电影院当前无片可放映~~");
}
}
private static void CustomerInterface() {
System.out.println("欢迎" + loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士") + "进入奥利给电影系统~~");
while (true) {
System.out.println("----------------客户操作界面----------------");
System.out.println("1、展示所有影片信息");
System.out.println("2、根据电影名称查询影片信息");
System.out.println("3、评分");
System.out.println("4、购票");
System.out.println("5、个人中心");
System.out.println("6、退出登录");
System.out.println("请您输入选项:");
String select = SYS_SC.nextLine();
switch (select) {
case "1":
showAllMovies();
break;
case "2":
queryMovies();
break;
case "3":
movieScore();
break;
case "4":
buyMovieTickets();
break;
case "5":
showCustomerInfos();
break;
case "6":
System.out.println("尊敬的" + loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士") +",您已退出登录~~ 欢迎下次光临!");
return;
default:
System.out.println("sorry!此选项不存在~");
break;
}
}
}
private static void showCustomerInfos() {
System.out.println("----------------用户详情界面----------------");
System.out.println(
"\t\t登录名称:" + loginUser.getLoginName() + "\t\t姓名:" + loginUser.getUserName()
+ "\n\t\t电话:" + loginUser.getPhone() + "\t\t账户余额:" + loginUser.getMoney()
);
}
private static void buyMovieTickets() {
showAllMovies();
System.out.println("----------------购买电影票界面----------------");
while (true) {
System.out.println("请您输入要购票的电影院名称:");
String cinemaName = SYS_SC.nextLine();
Business business = getBusinessByCinemaName(cinemaName);
if (business == null) {
System.out.println("sorry!" + cinemaName +"不存在~~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}else {
List<Movie> movies = ALL_MOVIES.get(business);
if (movies.size() > 0) {
while (true) {
System.out.println("请您输入要购票的电影名称:");
String movieName = SYS_SC.nextLine();
Movie movie = getMovieByBusinessAndMovieName(business, movieName);
if (movie != null) {
while (true) {
System.out.println("请问您要购买多少张《" + movie.getMovieName() + "》的电影票:");
String tickets = SYS_SC.nextLine();
int buyTicktes = Integer.valueOf(tickets);
if (movie.getRemainingVotes() >= buyTicktes) {
double money = BigDecimal.valueOf(movie.getPrice()).multiply(BigDecimal.valueOf(buyTicktes)).doubleValue();
if (loginUser.getMoney() >= money) {
System.out.println("您成功购买了《"+ movie.getMovieName() + "》" + buyTicktes + "张电影票!");
System.out.println("总金额是:" + money + "元");
loginUser.setMoney(loginUser.getMoney() - money);
business.setMoney(business.getMoney() + money);
movie.setRemainingVotes(movie.getRemainingVotes() - buyTicktes);
return;
}else {
System.out.println("您当前余额不足!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}else {
System.out.println("sorry!当前电影票最多可以购买:" + movie.getRemainingVotes() + "张");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}else {
System.out.println("您要购票的《" + movieName + "》这部电影未上架~~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}else {
System.out.println("sorry!该电影院打烊了~~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}
}
private static Movie getMovieByBusinessAndMovieName(Business business, String movieName) {
List<Movie> movies = ALL_MOVIES.get(business);
for (Movie movie : movies) {
if (movie.getMovieName().contains(movieName)) {
return movie;
}
}
return null;
}
private static Business getBusinessByCinemaName(String cinemaName) {
Set<Business> businesses = ALL_MOVIES.keySet();
for (Business business : businesses) {
if (business.getCinemaName().equals(cinemaName)) {
return business;
}
}
return null;
}
private static void movieScore() {
showAllMovies();
System.out.println("----------------电影评分界面----------------");
while (true) {
System.out.println("请您输入要评分的电影名称:");
String movieName = SYS_SC.nextLine();
Movie movie = getMovieByMovieName(movieName);
if (movie != null) {
System.out.println("您要对《" + movie.getMovieName() + "》这部电影进行评分!");
while (true) {
try {
System.out.println("请您开始评分(1-10):");
String score = SYS_SC.nextLine();
if (Double.valueOf(score) >= 1 && Double.valueOf(score) <= 10) {
System.out.println("您对《" + movie.getMovieName() + "》这部电影的评分是:" + Double.valueOf(score) + "分");
movie.setScore(Double.valueOf(score));
return;
}else {
System.out.println("sorry!评分范围:1-10分!");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
} catch (Exception e) {
System.out.println("您的评分数据有误!!");
}
}
}else {
System.out.println("sorry!《" + movieName + "》这部电影未上映~~");
}
}
}
private static void queryMovies() {
System.out.println("----------------根据电影名称查询电影信息----------------");
while (true) {
System.out.println("请您输入要查询的电影名称:");
String movieName = SYS_SC.nextLine();
Movie movie = getMovieByMovieName(movieName);
if (movie != null) {
System.out.println("\t\t电影名\t\t\t主演\t\t时长\t\t评分\t\t票价\t\t余票数量\t\t放映时间");
System.out.println("\t\t" + movie.getMovieName() + "\t\t" + movie.getActor() + "\t\t" + movie.getDuration() + "\t\t" +
movie.getScore() + "\t\t" + movie.getPrice() + "\t\t" + movie.getRemainingVotes() + "\t\t" +
sdf.format(movie.getStartTime()));
return;
}else {
System.out.println("您要查询的《" + movieName + "》还未上映~~");
System.out.println("您是否继续?y/n");
String select = SYS_SC.nextLine();
switch (select) {
case "y":
break;
default:
System.out.println("好的!");
return;
}
}
}
}
private static Movie getMovieByMovieName(String movieName) {
Collection<List<Movie>> movies = ALL_MOVIES.values();
for (List<Movie> movieList : movies) {
for (Movie movie : movieList) {
if (movie.getMovieName().equals(movieName)) {
return movie;
}
}
}
return null;
}
private static void showAllMovies() {
System.out.println("----------------查询所有影院排片信息----------------");
ALL_MOVIES.forEach((business, movies) -> {
System.out.println(business.getCinemaName() + "\t\t电话:" + business.getPhone() + "\t\t地址:" + business.getCinemaAddress());
System.out.println("\t\t电影名\t\t\t主演\t\t时长\t\t评分\t\t票价\t\t余票数量\t\t放映时间");
movies.stream().sorted((e1, e2) -> Double.compare(e2.getScore(), e1.getScore())).forEach( e ->
System.out.println("\t\t" + e.getMovieName() + "\t\t" + e.getActor() + "\t\t" + e.getDuration() + "\t\t" +
e.getScore() + "\t\t" + e.getPrice() + "\t\t" + e.getRemainingVotes() + "\t\t" +
sdf.format(e.getStartTime()))
);
});
}
private static User getUserByLoginName(String loginName) {
for (User user : ALL_USERS) {
if (user.getLoginName().equals(loginName)) {
return user;
}
}
return null;
}
}
|