赞
踩
电影购票系统简介、项目功能演示
日志框架搭建、系统角色分析
首页设计、登录、商家界面、用户界面实现
商家-详情页设计、影片上架、退出
商家-影片下架、影片修改
用户-展示全部影片
用户-购票功能 用户-评分功能
用户-评分降序展示
用户-根据片名查询全部影片信息
- D:\Java\jre\bin\java.exe "-javaagent:D:\java\Intellij_IDEA\IntelliJ IDEA 2021.1.1\lib\idea_rt.jar=64025:D:\java\Intellij_IDEA\IntelliJ IDEA 2021.1.1\bin" -Dfile.encoding=UTF-8 -classpath D:\java\jre\jre\lib\charsets.jar;D:\java\jre\jre\lib\deploy.jar;D:\java\jre\jre\lib\ext\access-bridge-64.jar;D:\java\jre\jre\lib\ext\cldrdata.jar;D:\java\jre\jre\lib\ext\dnsns.jar;D:\java\jre\jre\lib\ext\jaccess.jar;D:\java\jre\jre\lib\ext\jfxrt.jar;D:\java\jre\jre\lib\ext\localedata.jar;D:\java\jre\jre\lib\ext\nashorn.jar;D:\java\jre\jre\lib\ext\sunec.jar;D:\java\jre\jre\lib\ext\sunjce_provider.jar;D:\java\jre\jre\lib\ext\sunmscapi.jar;D:\java\jre\jre\lib\ext\sunpkcs11.jar;D:\java\jre\jre\lib\ext\zipfs.jar;D:\java\jre\jre\lib\javaws.jar;D:\java\jre\jre\lib\jce.jar;D:\java\jre\jre\lib\jfr.jar;D:\java\jre\jre\lib\jfxswt.jar;D:\java\jre\jre\lib\jsse.jar;D:\java\jre\jre\lib\management-agent.jar;D:\java\jre\jre\lib\plugin.jar;D:\java\jre\jre\lib\resources.jar;D:\java\jre\jre\lib\rt.jar;D:\java\code\javase\out\production\Movie;D:\java\code\javase\Movie\lib\logback-classic-1.2.3.jar;D:\java\code\javase\Movie\lib\logback-core-1.2.3.jar;D:\java\code\javase\Movie\lib\slf4j-api-1.7.26.jar com.lou.run.movieSystem
- =========电影首页=========
- 1、登录
- 2、用户注册
- 3、商家注册
- 4、退出系统
- 请输入操作命令:
- 2
- =============================用户注册========================
- 请输入登录名称:
- 老白
- 请输入登录密码:
- 121
- 请再次输入登录密码:
- 121
- 请输入真实名称:
- 白展堂
- 请输入性别:
- 男
- 请输入电话:
- 12
- 请输入账户金额:
- 123
- 老白注册成功
- =========电影首页=========
- 1、登录
- 2、用户注册
- 3、商家注册
- 4、退出系统
- 请输入操作命令:
- 1
- 请输入登录名称:
- 老白
- 请输入登录密码:
- 111
- 密码错误
- 请输入登录名称:
- 老白
- 请输入登录密码:
- 121
- 登录成功
- 白展堂女士欢迎您进入系统 余额:123.0
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 1
- =============================展示全部商家排片信息========================
- 橘子国际影城 电话:110110 地址:火星6号2B二层
- 片名 主演 时长 评分 票价 余票数量 放映时间
- 东邪西毒 大环境 180.0 0.0 100.0 200 2022/05/18 12:00:00
- ==================================================================================
- 青苹果国际影城 电话:110110 地址:火星8号8B八层
- 片名 主演 时长 评分 票价 余票数量 放映时间
- 武林外传 白展堂 180.0 0.0 100.0 200 2022/05/18 18:00:00
- ==================================================================================
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 5
- 白展堂先生您好 余额:123.0
- 您还没有购买记录
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 6
- 还没有评分数据
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 4
- =============================展示全部商家排片信息========================
- 橘子国际影城 电话:110110 地址:火星6号2B二层
- 片名 主演 时长 评分 票价 余票数量 放映时间
- 东邪西毒 大环境 180.0 0.0 100.0 200 2022/05/18 12:00:00
- ==================================================================================
- 青苹果国际影城 电话:110110 地址:火星8号8B八层
- 片名 主演 时长 评分 票价 余票数量 放映时间
- 武林外传 白展堂 180.0 0.0 100.0 200 2022/05/18 18:00:00
- ==================================================================================
- =============================用户购票功能========================
- 请输入您想要买票的影城:
- 青苹果
- 请输入需要购买电影的名称:
- 武林
- 请您输入需要购买的票数:
- 12
- 您的钱不够
- 是否继续买票?(y/f):
- y
- 请您输入需要购买的票数:
- 1
- 您成功购买了1张《武林外传》,花费了100.0元钱
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 5
- 白展堂先生您好 余额:23.0
- 您已经购买的电影为:
- 武林外传
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 3
- 请您对:武林外传进行打分(0-10):
- 5
- =============================展示全部商家排片信息========================
- 橘子国际影城 电话:110110 地址:火星6号2B二层
- 片名 主演 时长 评分 票价 余票数量 放映时间
- 东邪西毒 大环境 180.0 0.0 100.0 200 2022/05/18 12:00:00
- ==================================================================================
- 青苹果国际影城 电话:110110 地址:火星8号8B八层
- 片名 主演 时长 评分 票价 余票数量 放映时间
- 武林外传 白展堂 180.0 0.0 100.0 199 2022/05/18 18:00:00
- ==================================================================================
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 6
- 武林外传 5.0
- ============电影客户界面===================
- 请您选择要操作的功能:
- 1、展示全部影片信息功能:
- 2、根据电影名称查询电影信息:
- 3、评分功能:
- 4、购票功能:
- 5、显示用户详细信息:
- 6、评分降序展示:
- 7、退出系统:
- 请输入您要操作的命令:
- 7
集成日志框架、用于后期记录日志信息。
定义一个电影类Movie类,Movie类包含:片名、主演、评分、时长、票价、余票 系统包含2个用户角色:客户、商家。存在大量相同属性信息。
定义User类作为父类,属性:登录名称、密码、真实名称、性别、电话、账户金额
定义Business类代表商家角色,属性:店铺名称、地址。
定义Customer类代表客户角色,属性: 空
定义集合List<User>用户存放系统注册的用户对象信息。
定义集合Map<Business, List<Movie>>存放商家和其排片信息。
准备一些测试数据。
- package com.lou.bean;
-
- import java.util.Date;
-
- /**
- * 定义一个电影类Movie类,Movie类包含:片名、主演、评分、时长、票价、余票
- */
- public class movie {
- private String name;
- private String actor;
- private double score;
- private double time;
- private double price;
- private int num;
- private Date startData;//放映时间
-
- public movie() {
- }
-
- @Override
- public String toString() {
- return "movie{" +
- "name='" + name + '\'' +
- ", actor='" + actor + '\'' +
- ", score=" + score +
- ", time=" + time +
- ", price=" + price +
- ", num=" + num +
- ", startData=" + startData +
- '}';
- }
-
- public movie(String name, String actor, double score, double time, double price, int num, Date startData) {
- this.name = name;
- this.actor = actor;
- this.score = score;
- this.time = time;
- this.price = price;
- this.num = num;
- this.startData = startData;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- 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 getTime() {
- return time;
- }
-
- public void setTime(double time) {
- this.time = time;
- }
-
- public double getPrice() {
- return price;
- }
-
- public void setPrice(double price) {
- this.price = price;
- }
-
- public int getNum() {
- return num;
- }
-
- public void setNum(int num) {
- this.num = num;
- }
-
- public Date getStartData() {
- return startData;
- }
-
- public void setStartData(Date startData) {
- this.startData = startData;
- }
- }
- package com.lou.bean;
-
- import java.io.InputStreamReader;
-
- /**
- * 定义User类作为父类,属性:登录名称、密码、真实名称、性别、电话、账户金额
- */
- public class User {
- private String loginName;
- private String password;
- private String userName;
- private char sex;
- private String phone;
- private double money;
-
- 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 User() {
- }
-
- 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;
- }
- }
- package com.lou.bean;
-
- /**
- * 定义Business类代表商家角色,属性:店铺名称、地址。
- *
- * 定义Customer类代表客户角色,属性: 空
- */
- public class Business extends User{
- //独有属性
- private String shopName;
- private String shopAddress;
-
- public String getShopName() {
- return shopName;
- }
-
- public void setShopName(String shopName) {
- this.shopName = shopName;
- }
-
- public String getShopAddress() {
- return shopAddress;
- }
-
- public void setShopAddress(String shopAddress) {
- this.shopAddress = shopAddress;
- }
- }
- package com.lou.bean;
-
- public class Custom extends User{
-
- }
- //定义集合List<User>用户存放系统注册的用户对象信息。
- public static final List<User>ALL_USERS=new ArrayList<>();
-
- //定义集合Map<Business, List<Movie>>存放商家和其排片信息。
- public static final Map<Business, List<movie>>ALL_MOVIE=new HashMap<>();
- //准备一些测试数据。(代码块)
- static {
- Custom c = new Custom();
- c.setLoginName("备");
- c.setPassword("123456");
- c.setUserName("刘备");
- c.setSex('男');
- c.setMoney(10000);
- c.setPhone("110110");
- ALL_USERS.add(c);
-
- Custom c1 = new Custom();
- c1.setLoginName("羽");
- c1.setPassword("123456");
- c1.setUserName("羽");
- c1.setSex('女');
- c1.setMoney(2000);
- c1.setPhone("111111");
- ALL_USERS.add(c1);
-
- Business b = new Business();
- b.setLoginName("小猫");
- b.setPassword("123456");
- b.setUserName("小明");
- b.setMoney(0);
- b.setSex('男');
- b.setPhone("110110");
- b.setShopAddress("火星6号2B二层");
- b.setShopName("橘子国际影城");
- ALL_USERS.add(b);
- // 注意,商家一定需要加入到店铺排片信息中去
- List<movie> movies = new ArrayList<>();
- ALL_MOVIES.put(b , movies); // b = []
-
- Business b2 = new Business();
- b2.setLoginName("小狗");
- b2.setPassword("123456");
- b2.setUserName("小玲");
- b2.setMoney(0);
- b2.setSex('女');
- b2.setPhone("110110");
- b2.setShopAddress("火星8号8B八层");
- b2.setShopName("青苹果国际影城");
- ALL_USERS.add(b2);
- // 注意,商家一定需要加入到店铺排片信息中去
- List<movie> movies3 = new ArrayList<>();
- ALL_MOVIES.put(b2 , movies3); // b2 = []
- }
首页需要包含登录,商家入驻,客户注册功能。
商家和客户可以共用一个登录功能。
判断登录成功的用户的真实类型,根据用户类型完成对应的操作界面设计。
- /**
- * 首页
- */
- private static void showMain() {
- System.out.println("=========电影首页=========");
- System.out.println("1、登录");
- System.out.println("2、用户注册");
- System.out.println("3、商家注册");
- System.out.println("请输入操作命令:");
- String command = SC.nextLine();
- while (true) {
- switch (command) {
- case "1":
- break;
- case "2":
- break;
- case "3":
- break;
- default:
- System.out.println("命令有误,请重新确认");
- }
- }
- }
- /**
- * 登录
- */
- private static void login() {
- while (true) {
- System.out.println("请输入登录名称:");
- String loginName=SC.nextLine();
- System.out.println("请输入登录密码:");
- String loginPassword=SC.nextLine();
- //根据登录名称查询用户对象
- User user=getUserByLoginName(loginName);
- if(user!=null){
- //比对密码是否正确
- if(user.getPassword().equals(loginPassword)){
- System.out.println("登录成功");
- }
- else {
- System.out.println("密码错误");
- }
- }
- else {
- System.out.println("登录名称错误,请确认");
- }
- }
- }
- if(user instanceof Custom){
- //普通用户
- showCustomer();
- }
- else {
- //商家用户
- showBusiness();
- }
展示本商家的信息和其排片情况。
提供影片上架功能:就是创建一个影片对象,存入到商家的集合中去。
退出,需要回到登录的首页。
提供影片下架功能:其实就是从商家的集合中删除影片对象。
影片修改功能:拿到需要修改的影片对象,修改里面的数据。
- /**
- * 展示本商家的信息和其排片情况。
- */
- private static void showBusinessInfos() {
- //根据商家对象,作为Map集合的键,提取对应的值就是排片信息
- //loginUser属于User类,要转为Business类才能访问到商家独有属性
- Business business=(Business)loginUser;
- System.out.println(business.getShopName()+"\t\t电话:"+business.getPhone()+"\t\t地址:"+business.getShopAddress());
- 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余票数量\t\t\t放映时间");
- for(movie m:movies){
- System.out.println(m.getName()+"\t\t"+m.getActor()+"\t\t\t"+m.getTime()+"\t\t\t"+m.getScore()+"\t\t\t"+
- m.getPrice()+"\t\t\t"+m.getNum()+"\t\t\t"+sdf.format(m.getStartData()));
- }
- }
- else {
- System.out.println("当前影院无影片");
- }
- }
- /**
- * 提供影片上架功能:就是创建一个影片对象,存入到商家的集合中去
- */
- private static void addMovie() {
- Business business = (Business) loginUser;
- List<movie> movies = ALL_MOVIES.get(loginUser);
-
- System.out.println("请您输入新片名:");
- String name = SC.nextLine();
- System.out.println("请您输入主演:");
- String actor = SC.nextLine();
- System.out.println("请您输入时长:");
- String time = SC.nextLine();
- System.out.println("请您输入票价:");
- String price = SC.nextLine();
- System.out.println("请您输入票数:");
- String totalNumber = SC.nextLine(); // 200\n
- while (true) {
- try {
- System.out.println("请您输入影片放映时间:");
- String stime = SC.nextLine();
- movie m = new movie(name, actor, Double.valueOf(time), Double.valueOf(price)
- , Integer.valueOf(totalNumber), sdf.parse(stime));
- movies.add(m);
- System.out.println("您已经成功上架了:《" + m.getName() + "》");
- return; // 直接退出去
- }
- catch (ParseException e) {
- e.printStackTrace();
- logger.error("时间解析出了问题");
- }
- }
- }
- /**
- * 提供影片下架功能:其实就是从商家的集合中删除影片对象
- */
- private static void deleteMovie() {
- Business business = (Business) loginUser;
- List<movie> movies = ALL_MOVIES.get(business);
- if (movies.size() == 0) {
- System.out.println("当前无影片可以下架");
- return;
- }
- System.out.println("输入要下架的电影名称:");
- String name = SC.nextLine();
- movie m = getMovieByName(name);
- if (m != null) {
- System.out.println("下架《"+m.getName()+"》成功");
- movies.remove(m);
- return;
- }
- System.out.println("没有找到这个名称的电影");
- }
- /**
- * 影片修改功能:拿到需要修改的影片对象,修改里面的数据
- */
- private static void updateMovie() {
- Business business = (Business) loginUser;
- List<movie> movies = ALL_MOVIES.get(business);
- if (movies.size() == 0) {
- System.out.println("当前无影片可以修改");
- return;
- }
- System.out.println("输入要修改的电影名称:");
- String filmName = SC.nextLine();
- movie m = getMovieByName(filmName);
- if (m != null) {
- System.out.println("是否要修改片名(y/f):");
- String command1 = SC.nextLine();
- if (command1.equals("y")) {
- System.out.println("请您输入新片名:");
- String name = SC.nextLine();
- m.setName(name);
- }
-
- System.out.println("是否要修改主演(y/f):");
- String command2 = SC.nextLine();
- if (command2.equals("y")) {
- System.out.println("请您输入主演:");
- String actor = SC.nextLine();
- m.setActor(actor);
- }
-
- System.out.println("是否要修改时长(y/f):");
- String command3 = SC.nextLine();
- if (command3.equals("y")) {
- System.out.println("请您输入时长:");
- String time = SC.nextLine();
- m.setTime(Double.valueOf(time));
- }
-
- System.out.println("是否要修改票价(y/f):");
- String command4 = SC.nextLine();
- if (command4.equals("y")) {
- System.out.println("请您输入票价:");
- String price = SC.nextLine();
- m.setPrice(Double.valueOf(price));
- }
-
- System.out.println("是否要修改票数(y/f):");
- String command5 = SC.nextLine();
- if (command5.equals("y")) {
- System.out.println("请您输入票数:");
- String totalNumber = SC.nextLine(); // 200\n
- m.setNum(Integer.valueOf(totalNumber));
- }
-
- System.out.println("是否要修改影片放映时间(y/f):");
- String command6 = SC.nextLine();
- if (command6.equals("y")) {
- while (true) {
- try {
- System.out.println("请您输入影片放映时间(2022/05/18 12:00:00):");
- String stime = SC.nextLine();
- m.setStartData(sdf.parse(stime));
- System.out.println("您已经成功修改了:《" + m.getName() + "》");
- showBusinessInfos();
- return; // 直接退出去
- } catch (ParseException e) {
- e.printStackTrace();
- logger.error("时间解析出了问题");
- }
- }
- }
- System.out.println("您已经成功修改了:《" + m.getName() + "》");
- showBusinessInfos();
- return;
- }
- System.out.println("没有找到这个名称的电影");
- }
展示全部影片信息
购票操作
评分功能[拓展]
评分降序展示
根据片名查询全部影片信息
- /**
- * 展示全部影片信息
- */
- private static void showAllMovies() {
- System.out.println("=============================展示全部商家排片信息========================");
- ALL_MOVIES.forEach((business, movies) -> {
- System.out.println(business.getShopName() + "\t\t电话:" + business.getPhone() + "\t\t地址:" + business.getShopAddress());
- System.out.println("片名\t\t\t主演\t\t\t时长\t\t\t评分\t\t\t票价\t\t\t余票数量\t\t\t放映时间");
- for (movie m : movies) {
- System.out.println(m.getName() + "\t\t" + m.getActor() + "\t\t" + m.getTime() + "\t\t" + m.getScore() + "\t\t\t" +
- m.getPrice() + "\t\t\t" + m.getNum() + "\t\t\t" + sdf.format(m.getStartData()));
- }
- System.out.println("==================================================================================");
- });
- }
- /**
- * 用户购票功能
- */
- private static void buyMovie() {
- showAllMovies();
- System.out.println("=============================用户购票功能========================");
- while (true) {
- System.out.println("请输入您想要买票的影城:");
- String shopName = SC.nextLine();
- //查询是否存在该商家
- Business business = getUserByShopName(shopName);
- if (business != null) {
- //此商家全部影片
- List<movie> movies = ALL_MOVIES.get(business);
- if (movies.size() > 0) {
- while (true) {
- System.out.println("请输入需要购买电影的名称:");
- String movieName=SC.nextLine();
- //在当前商家查询该电影对象
- movie m=getMovieByShopName(movieName,business);
- if(m!=null){
- while (true) {
- //开始购票
- System.out.println("请您输入需要购买的票数:");
- String movieNum=SC.nextLine();
- int buyNum=Integer.valueOf(movieNum);
- //判断电影票数是否足够
- if(m.getNum()>=buyNum){
- //当前需要花费的金额
- double money= BigDecimal.valueOf(m.getPrice()).multiply(BigDecimal.valueOf(buyNum)).doubleValue();
- if(loginUser.getMoney()>=money){
- System.out.println("您成功购买了"+buyNum+"张《"+m.getName()+"》,花费了"+money+"元钱");
- //更新客户和商家数据
- loginUser.setMoney(loginUser.getMoney()-money);
- m.setNum(m.getNum()-buyNum);
- business.setMoney(business.getMoney()+money);
- return;
- }
- else {
- System.out.println("您的钱不够");
- System.out.println("是否继续买票?(y/f):");
- String command = SC.nextLine();
- switch (command) {
- case "y":
- break;
- default:
- System.out.println("好的");
- return;
- }
- }
- }
- else {
- System.out.println("票数不够,您当前最多购买"+m.getNum()+"张");
- System.out.println("是否继续买票?(y/f):");
- String command = SC.nextLine();
- switch (command) {
- case "y":
- break;
- default:
- System.out.println("好的");
- return;
- }
- }
- }
- }
- else {
- System.out.println("该影城无该电影");
- }
- }
- } else {
- System.out.println("该影城无电影放映");
- System.out.println("是否继续买票?(y/f):");
- String command = SC.nextLine();
- switch (command) {
- case "y":
- break;
- default:
- System.out.println("好的");
- return;
- }
- }
- } else {
- System.out.println("对不起没有该影城");
- }
- }
- }
- /**
- * 评分功能
- */
- private static void scoreMovie() {
- // 1、查询当前登录成功的用户历史购买记录,看哪些电影是它可以评分的。
- Custom c = (Custom) loginUser;
- Map<String, Boolean> movies = c.getBuyMovies();
- if(movies.size() == 0 ){
- System.out.println("当前您没有看过电影,不能评价!");
- return;
- }
-
- // 买过了 ,看哪些电影是它可以评分的。
- movies.forEach((name, flag) -> {
- if(flag){
- System.out.println(name +"此电影已评价");
- }else {
- System.out.println("请您对:" + name +"进行打分(0-10):");
- double score = Double.valueOf(SC.nextLine());
-
- // 先根据电影名称拿到评分数据
- List<Double> scores = MOVIES_SCORE.get(name); // MOVIES_SCORE = [ 名称=[10] , ... ]
- if(scores == null){
- // 说明此电影是第一次评价
- scores = new ArrayList<>();
- scores.add(score);
- MOVIES_SCORE.put(name , scores);
- }else {
- scores.add(score);
- }
- movies.put(name, true);
- }
- });
- }
- /**
- * 评分降序展示
- */
- private static void scoreSort() {
- if (MOVIES_SCORE.size() > 0) {
- List<Score> scores = new ArrayList<>();
- MOVIES_SCORE.forEach(new BiConsumer<String, List<Double>>() {
- @Override
- public void accept(String s, List<Double> doubles) {
- List<Double> list = MOVIES_SCORE.get(s);
- double sum = 0;
- for (Double d : list) {
- sum = BigDecimal.valueOf(sum).add(BigDecimal.valueOf(d)).doubleValue();
- }
- scores.add(new Score(s, BigDecimal.valueOf(sum).divide(BigDecimal.valueOf(list.size())).doubleValue()));
- }
- });
- scores.sort((o1, o2)->Double.compare(o2.getScore(),o1.getScore()));
- scores.forEach(score->System.out.println(score.getMovieName()+"\t\t"+score.getScore()));
- }
- else {
- System.out.println("还没有评分数据");
- }
- }
- public static void getInfoByMovieName() {
- System.out.println("请输入想要查询的电影名称:");
- String movieName=SC.nextLine();
- ALL_MOVIES.forEach((business, movies) -> {
- for (movie m : movies) {
- if(m.getName().equals(movieName)) {
- System.out.println("==================================================================================");
- System.out.println(business.getShopName() + "\t\t电话:" + business.getPhone() + "\t\t地址:" + business.getShopAddress());
- System.out.println("片名\t\t\t主演\t\t\t时长\t\t\t评分\t\t\t票价\t\t\t余票数量\t\t\t放映时间");
- System.out.println(m.getName() + "\t\t" + m.getActor() + "\t\t" + m.getTime() + "\t\t" + m.getScore() + "\t\t\t" +
- m.getPrice() + "\t\t\t" + m.getNum() + "\t\t\t" + sdf.format(m.getStartData()));
- }
- }
- });
- }
- /**
- * 用户注册
- */
- private static void customerRegister() {
- Custom user = new Custom();
- System.out.println("=============================用户注册========================");
- //定义User类作为父类,属性:登录名称、密码、真实名称、性别、电话、账户金额
- System.out.println("请输入登录名称:");
- String loginName = SC.nextLine();
- while (true) {
- System.out.println("请输入登录密码:");
- String loginPasswordFirst = SC.nextLine();
- System.out.println("请再次输入登录密码:");
- String loginPasswordSecond = SC.nextLine();
- if (loginPasswordSecond.equals(loginPasswordFirst)) {
- user.setPassword(loginPasswordSecond);
- break;
- } else {
- System.out.println("两次输入的密码不一致,请再次输入");
- }
- }
- System.out.println("请输入真实名称:");
- String userName = SC.nextLine();
- System.out.println("请输入性别:");
- String sex = SC.nextLine();
- System.out.println("请输入电话:");
- String phone = SC.nextLine();
- System.out.println("请输入账户金额:");
- String money = SC.nextLine();
-
- user.setMoney(Double.valueOf(money));
- user.setUserName(userName);
- user.setPhone(phone);
- user.setSex(sex);
- user.setLoginName(loginName);
- ALL_USERS.add(user);
- System.out.println(user.getLoginName() + "注册成功");
- }
- /**
- * 商家注册
- */
- private static void businessRegister() {
- Business user = new Business();
- System.out.println("=============================商家注册========================");
- //定义User类作为父类,属性:登录名称、密码、真实名称、性别、电话、账户金额
- System.out.println("请输入登录名称:");
- String loginName = SC.nextLine();
- while (true) {
- System.out.println("请输入登录密码:");
- String loginPasswordFirst = SC.nextLine();
- System.out.println("请再次输入登录密码:");
- String loginPasswordSecond = SC.nextLine();
- if (loginPasswordSecond.equals(loginPasswordFirst)) {
- user.setPassword(loginPasswordSecond);
- break;
- } else {
- System.out.println("两次输入的密码不一致,请再次输入");
- }
- }
- System.out.println("请输入真实名称:");
- String userName = SC.nextLine();
- System.out.println("请输入性别:");
- String sex = SC.nextLine();
- System.out.println("请输入电话:");
- String phone = SC.nextLine();
- System.out.println("请输入账户金额:");
- String money = SC.nextLine();
- System.out.println("请输入店铺名称:");
- String shopName = SC.nextLine();
- System.out.println("请输入店铺地址:");
- String address = SC.nextLine();
-
- user.setMoney(Double.valueOf(money));
- user.setUserName(userName);
- user.setPhone(phone);
- user.setSex(sex);
- user.setLoginName(loginName);
- user.setShopAddress(address);
- user.setShopName(shopName);
- ALL_USERS.add(user);
- System.out.println(user.getLoginName() + "注册成功");
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。