
----------------奥利给电影系统首页----------------
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、退出系统
请您输入选项:
----------------奥利给电影系统首页----------------
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、退出系统
请您输入选项:
----------------奥利给电影系统首页----------------
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、退出登录
请您输入选项:
1、集成日志框架,用于后期记录日志信息。

<configuration scan="true" scanPeriod="10 seconds" debug="false">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.outtarget>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%npattern>
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%npattern>
<charset>utf-8charset>
encoder>
<file>E:/JavaDevelop/log/movie-log.logfile>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>E:/JavaDevelop/log/movie-log2-%d{yyyy-MM-dd}.log%i.gzfileNamePattern>
<maxFileSize>1MBmaxFileSize>
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、商家用户和普通用户可以共用一个登录功能;
判断登录成功的用户的真实类型,根据用户类型完成对应的操作界面设计。
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 +
'}';
}
}
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 +
'}';
}
}
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;
}
}
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);
}
}
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 {
/*
定义List集合,用于存放系统注册的用户对象信息
1、存储很多用户(普通用户、商家用户)
*/
public static final List<User> ALL_USERS = new ArrayList<>();
/*
定义Map集合,用于存放商家和其排片信息
例如:
商家1 = [排片1, 排片2, 排片3, ...]
商家2 = [排片2, 排片3, ...]
...
*/
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);
// 当查询结果不为null时,说明用户存在
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("----------------商家修改电影界面----------------");
// 根据当前登录的商家对象(loginUser是登录的用户),作为Map集合的键
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("----------------商家下架电影界面----------------");
// 根据当前登录的商家对象(loginUser是登录的用户),作为Map集合的键,
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;
}
}
}
/**
商家功能:上架电影
Map> ALL_MOVIES
商家1 = [电影1, 电影2, 电影3, ...]
商家2 = [电影1, 电影2, 电影3, ...]
...
*/
private static void addMovie() {
System.out.println("----------------商家上架电影界面----------------");
// 根据当前登录的商家对象(loginUser是登录的用户),作为Map集合的键,提取对应的值就是其排片信息:Map> ALL_MOVIES
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();
// 将新影片信息封装成一个电影对象,添加到movies集合中去
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("----------------商家详情界面----------------");
// 根据当前登录的商家对象(loginUser是登录的用户),作为Map集合的键,提取对应的值就是其排片信息:Map> ALL_MOVIES
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();
// 1、根据用户输入的电影院名称,查询是否存在该商家对象
Business business = getBusinessByCinemaName(cinemaName);
if (business == null) {
// 当查询结果为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;
}
}
// 遍历结束,仍然未找到用户想要找的商家,说明不在集合中,返回null
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();
// 评分范围:1-10分
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; // 登录名称匹配失败,说明用户不存在,返回null
}
}