需要学会什么?
想清楚的知道一个系统运行的过程和详情怎么办?
输出语句记录日志的弊端:
以前记录日志的方式:
Scanner scanner = new Scanner(System.in)
System.out.println("请输入一个整数");
String number = scanner.nextLine();
try {
int result = Integer.parseInt(number);
System.out.println("输入的数字为:" result);
} catch (NumberFormatException e) {
System.out.println("输入的数字有误,请输入一个整数!");
}
日志技术具备的优势:
| 输出语句 | 日志技术 | |
|---|---|---|
| 输出位置 | 只能是控制台。 | 可以将日志信息写入到文件或者数据库中。 |
| 取消日志 | 需求修改代码,灵活性比较差。 | 不需要修改代码,灵活性比较好。 |
| 多线程 | 性能较差。 | 性能较好。 |
日志规范:一些接口,提供给日志的实现框架设计的标准。
因为对Commons Logging的接口不满意,有人做了SLF4J。
日志框架:牛人或者第三方公司已经做好的日志记录实现代码,后来者可以直接拿去使用。
因为对Log4j的性能不满意,有人做了Logback。
Logback日志框架:
Logback主要分为三个技术模块:
总结:
需求:
分析:
在项目下新建文件夹lib,导入Logback的相关jar包到该文件夹下,并添加到项目依赖库中去。(选中jar包文件,右键Add as Library。)
将Logback的核心配置文件logback.xml直接拷贝到src目录下。(如果没有,则使用默认配置。)
在代码中获取日志对象。
public static final Logger LOGGER = LoggerFactory.getLogger("类对象");
Test.java
package com.javase.logbackdemo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test {
// 创建Logback日志对象
public static final Logger LOGGER = LoggerFactory.getLogger("Test.class");
public static void main(String[] args) {
try {
LOGGER.debug("main方法开始执行力...");
LOGGER.info("开始记录第二行日志 开始做除法");
int a = 10;
int b = 0;
LOGGER.trace("a=" + a);
LOGGER.trace("b=" + b);
System.out.println(a / b);
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("功能出现异常:" + e);
}
}
}
Logback日志系统的特性都是通过核心配置文件logback.xml控制的。
Logback日志输出位置、格式设置:
输出到控制台的配置标志:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
输出到系统文件的配置标志:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
如果系统上线后只想记录一些错误的日志信息或者不想记录日志了,怎么办?
日志级别:
具体在标签的level属性中设置日志级别。
<root level="INFO">
<appender-ref ref="CONSOLEL" />
<appender-ref ref="FILE" />
root>
电影购票系统技术选型分析:
学习完成本项目,将得到以下收获:
系统角色类准备:
Movie.java
import java.util.Date;
/**
* 电影类
*/
public class Movie {
// 片名
private String name;
// 主演
private String actor;
// 评分
private double score;
// 票价
private double price;
// 电影时长
private double time;
// 余票数
private int number;
// 放映时间
private Date startTime;
public Movie() {
}
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 getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getTime() {
return time;
}
public void setTime(double time) {
this.time = time;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Movie(String name, String actor, double price, double time, int number, Date startTime) {
this.name = name;
this.actor = actor;
this.price = price;
this.time = time;
this.number = number;
this.startTime = startTime;
}
@Override
public String toString() {
return "Movie{" +
"name='" + name + '\'' +
", actor='" + actor + '\'' +
", score=" + score +
", price=" + price +
", time=" + time +
", number=" + number +
", startTime=" + startTime +
'}';
}
}
User.java
/**
* 用户类:客户和商家的父类
*/
public class User {
// 假名 不可重复
private String loginName;
// 真名
private String userName;
// 密码
private String password;
// 性别
private char sex;
// 电话号码
private String phone;
// 余额
private double money;
public User() {
}
public User(String loginName, String userName, String password, char sex, String phone, double money) {
this.loginName = loginName;
this.userName = userName;
this.password = password;
this.sex = sex;
this.phone = phone;
this.money = money;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
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;
}
}
Business.java
/**
* 商家类
*/
public class Business extends User {
// 店铺名称
private String shopName;
// 店铺地址
private String address;
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Customer.java
/**
* 客户类
*/
public class Customer extends User {
}
MovieSystem.java
import com.javase.bean.Business;
import com.javase.bean.Customer;
import com.javase.bean.Movie;
import com.javase.bean.User;
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<>();
/* employeeList2.add(new Employee("张无忌", '男', 30000, 2000000, "错放陈友谅"));
employeeList2.add(new Employee("赵敏", '女', 10000, 20000, null));
employeeList2.add(new Employee("周芷若", '女', 10000, 2000, "反复无常"));
employeeList2.add(new Employee("小昭", '女', 10000, 20000, null));
employeeList2.add(new Employee("殷离", '女', 10000, 10000, null));
employeeList2.add(new Employee("张翠山", '男', 10000, 500, "冲动易怒惹人厌"));*/
// 测试数据
static {
/* 添加客户对象*/
Customer customer1 = new Customer();
customer1.setLoginName("ZWJ");
customer1.setUserName("张无忌");
customer1.setPassword("123456");
customer1.setSex('男');
customer1.setPhone("18888888881");
customer1.setMoney(10000);
ALL_USERS.add(customer1);
Customer customer2 = new Customer();
customer2.setLoginName("ZM");
customer2.setUserName("赵敏");
customer2.setPassword("123456");
customer2.setSex('女');
customer2.setPhone("18888888882");
customer2.setMoney(8000);
ALL_USERS.add(customer2);
Customer customer3 = new Customer();
customer3.setLoginName("ZZR");
customer3.setUserName("周芷若");
customer3.setPassword("123456");
customer3.setSex('女');
customer3.setPhone("18888888883");
customer3.setMoney(1000);
ALL_USERS.add(customer3);
/* 添加商家对象 */
Business business1 = new Business();
business1.setLoginName("BZH");
business1.setUserName("白子画");
business1.setPassword("123456");
business1.setSex('男');
business1.setPhone("19888888881");
business1.setMoney(9000000);
business1.setShopName("长留山国际影城");
ALL_USERS.add(business1);
List<Movie> movieList1 = new ArrayList<>();
ALL_MOVIES.put(business1, movieList1);
Business business2 = new Business();
business2.setLoginName("DFYQ");
business2.setUserName("东方彧卿");
business2.setPassword("123456");
business2.setSex('男');
business2.setPhone("19888888882");
business2.setMoney(1000000);
business2.setShopName("异朽阁国际影院");
ALL_USERS.add(business2);
List<Movie> movieList2 = new ArrayList<>();
ALL_MOVIES.put(business2, movieList2);
}
public static void main(String[] args) {
}
}
首页、登录、商家界面、用户界面设计:
商家功能-展示详情、影片上架、退出:
商家功能-影片下架、影片修改:
用户功能-展示全部影片信息:
Movie.java
package com.javase.bean;
import java.util.Date;
/**
* 电影类
*/
public class Movie {
// 片名
private String name;
// 主演
private String actor;
// 评分
private double score;
// 票价
private double price;
// 电影时长
private double time;
// 余票数
private int number;
// 放映时间
private Date startTime;
public Movie() {
}
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 getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getTime() {
return time;
}
public void setTime(double time) {
this.time = time;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Movie(String name, String actor, double price, double time, int number, Date startTime) {
this.name = name;
this.actor = actor;
this.price = price;
// 评分由观众打分
// this.score = score;
this.time = time;
this.number = number;
this.startTime = startTime;
}
@Override
public String toString() {
return "Movie{" +
"name='" + name + '\'' +
", actor='" + actor + '\'' +
", score=" + score +
", price=" + price +
", time=" + time +
", number=" + number +
", startTime=" + startTime +
'}';
}
}
User.java
package com.javase.bean;
/**
* 用户类:客户和商家的父类
*/
public class User {
// 假名 不可重复
private String loginName;
// 真名
private String userName;
// 密码
private String password;
// 性别
private char sex;
// 电话号码
private String phone;
// 余额
private double money;
public User() {
}
public User(String loginName, String userName, String password, char sex, String phone, double money) {
this.loginName = loginName;
this.userName = userName;
this.password = password;
this.sex = sex;
this.phone = phone;
this.money = money;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
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;
}
}
Business.java
package com.javase.bean;
/**
* 商家类
*/
public class Business extends User {
// 店铺名称
private String shopName;
// 店铺地址
private String address;
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Customer.java
package com.javase.bean;
/**
* 客户类
*/
public class Customer extends User {
}
MovieSystem.java
package com.javase.run;
import com.javase.bean.Business;
import com.javase.bean.Customer;
import com.javase.bean.Movie;
import com.javase.bean.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 电影系统类
*/
public class MovieSystem {
// 创建日志对象
public static final Logger LOGGER = LoggerFactory.getLogger("MovieSystem.calss");
// 存储很多客户对象 商家对象
public static final List<User> ALL_USERS = new ArrayList<>();
// 存储系统全部商家和其排片信息
public static final Map<Business, List<Movie>> ALL_MOVIES = new HashMap<>();
// 扫描器
public static final Scanner SCANNER = new Scanner(System.in);
// 登录成功用户
public static User loginUser;
// 简单日期格式化对象
public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 测试数据
static {
/* 添加客户对象*/
Customer customer1 = new Customer();
customer1.setLoginName("ZWJ");
customer1.setUserName("张无忌");
customer1.setPassword("123456");
customer1.setSex('男');
customer1.setPhone("18888888881");
customer1.setMoney(10000);
ALL_USERS.add(customer1);
Customer customer2 = new Customer();
customer2.setLoginName("ZM");
customer2.setUserName("赵敏");
customer2.setPassword("123456");
customer2.setSex('女');
customer2.setPhone("18888888882");
customer2.setMoney(8000);
ALL_USERS.add(customer2);
Customer customer3 = new Customer();
customer3.setLoginName("ZZR");
customer3.setUserName("周芷若");
customer3.setPassword("123456");
customer3.setSex('女');
customer3.setPhone("18888888883");
customer3.setMoney(1000);
ALL_USERS.add(customer3);
/* 添加商家对象 */
Business business1 = new Business();
business1.setLoginName("BZH");
business1.setUserName("白子画");
business1.setPassword("123456");
business1.setSex('男');
business1.setPhone("19888888881");
business1.setMoney(9000000);
business1.setShopName("长留山国际影城");
business1.setAddress("长留山");
ALL_USERS.add(business1);
List<Movie> movieList1 = new ArrayList<>();
ALL_MOVIES.put(business1, movieList1);
Business business2 = new Business();
business2.setLoginName("DFYQ");
business2.setUserName("东方彧卿");
business2.setPassword("123456");
business2.setSex('男');
business2.setPhone("19888888882");
business2.setMoney(1000000);
business2.setShopName("异朽阁国际影院");
business2.setAddress("异朽阁");
ALL_USERS.add(business2);
List<Movie> movieList2 = new ArrayList<>();
ALL_MOVIES.put(business2, movieList2);
}
/**
* 主函数
*
* @param args
*/
public static void main(String[] args) {
// 首页
showMain();
}
/**
* 首页
*/
private static void showMain() {
while (true) {
System.out.println("==============首页==============");
System.out.println("1.登录");
System.out.println("2.用户注册");
System.out.println("3.商家注册");
System.out.println("请输入操作命令:");
// 接收控制台输入
String command = SCANNER.nextLine();
switch (command) {
case "1":
// 登录
login();
break;
case "2":
// 用户注册
break;
case "3":
// 商家注册
break;
default:
System.out.println("输入命令有误,请确认!");
}
}
}
/**
* 登录功能
*/
private static void login() {
while (true) {
System.out.println("请您输入登录名称:");
String loginName = SCANNER.nextLine();
System.out.println("请您输入登录密码:");
String password = SCANNER.nextLine();
// 根据登录名称查询用户对象
User user = getUserByLoginName(loginName);
// 判断用户是否存在
if (user != null) {
// 对比密码是否正确
if (user.getPassword().equals(password)) {
// 记录登录成功用户
loginUser = user;
LOGGER.info(user.getUserName() + "登录了系统.");
if (user instanceof Customer) {
// 普通用户登录成功
showCustomerMain();
} else {
// 商家用户登录成功
showBusinessMain();
}
break;
} else {
System.out.println("密码错误!");
}
} else {
System.out.println("登录名称错误,请重新输入!");
}
}
}
/**
* 商家操作界面
*/
private static void showBusinessMain() {
while (true) {
System.out.println("==============商家操作界面==============");
System.out.println("欢迎" + loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士") + "进入系统");
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("请输入您要操作的命令");
String command = SCANNER.nextLine();
switch (command) {
case "1":
// 展示商家详情
showBusinessInfo();
break;
case "2":
// 上架电影
addMoive();
break;
case "3":
// 下架电影
deleteMoive();
break;
case "4":
// 修改电影
updateMoive();
break;
case "5":
// 退出
System.out.println("欢迎下次使用系统!");
return;
default:
System.out.println("命令输入错误!");
break;
}
}
}
/**
* 修改电影
*/
private static void updateMoive() {
// 用户对象转为商家对象
Business business = (Business) loginUser;
List<Movie> movieList = ALL_MOVIES.get(business);
System.out.println("==============商家修改电影界面==============");
if (movieList.size() == 0) {
System.out.println("当前无电影可修改!");
return;
}
while (true) {
System.out.println("请您输入需要修改的电影名称:");
String movieName = SCANNER.nextLine();
// 根据电影名称查找当前商家的电影对象
Movie movie = getMovieByName(movieName);
if (movie != null) {
System.out.println("请您修改后的输入新片名:");
String name = SCANNER.nextLine();
System.out.println("请您修改后的输入主演:");
String actor = SCANNER.nextLine();
System.out.println("请您修改后的输入时长:");
String time = SCANNER.nextLine();
System.out.println("请您修改后的输入票价:");
String price = SCANNER.nextLine();
System.out.println("请您修改后的输入票数:");
String number = SCANNER.nextLine();
while (true) {
try {
System.out.println("请您修改后的影片的放映时间:");
String startTime = SCANNER.nextLine();
movie.setName(name);
movie.setActor(actor);
movie.setPrice(Double.valueOf(price));
movie.setTime(Double.valueOf(time));
movie.setNumber(Integer.valueOf(number));
movie.setStartTime(simpleDateFormat.parse(startTime));
System.out.println("您已经修改电影:《" + movie.getName() + "》");
showBusinessInfo();
return;
} catch (ParseException e) {
e.printStackTrace();
LOGGER.error("时间解析存在问题!");
}
}
} else {
System.out.println("您的店铺没有上架该影片!");
System.out.println("是否继续修改影片:y/n");
String command = SCANNER.nextLine();
if (!command.equals("Y")) {
System.out.println("好的!");
return;
}
}
}
}
/**
* 下架电影
*/
private static void deleteMoive() {
// 用户对象转为商家对象
Business business = (Business) loginUser;
List<Movie> movieList = ALL_MOVIES.get(business);
System.out.println("==============商家下架电影界面==============");
if (movieList.size() == 0) {
System.out.println("当前无电影可下架!");
return;
}
while (true) {
System.out.println("请您输入需要下架的电影名称:");
String movieName = SCANNER.nextLine();
// 根据电影名称查找当前商家的电影对象
Movie movie = getMovieByName(movieName);
if (movie != null) {
movieList.remove(movie);
System.out.println("您的店铺已成功下架:" + movie.getName());
return;
} else {
System.out.println("您的店铺没有上架该影片!");
System.out.println("是否继续下架影片:y/n");
String command = SCANNER.nextLine();
if (!command.equals("Y")) {
System.out.println("好的!");
return;
}
}
}
}
/**
* 根据电影名称查找当前商家的电影对象
*
* @param movieName 电影名称
* @return 电影对象
*/
private static Movie getMovieByName(String movieName) {
// 用户对象转为商家对象
Business business = (Business) loginUser;
List<Movie> movieList = ALL_MOVIES.get(business);
for (Movie movie : movieList) {
// 模糊查询
if (movie.getName().contains(movieName)) {
return movie;
}
}
return null;
}
/**
* 上架电影
*/
private static void addMoive() {
// 用户对象转为商家对象
Business business = (Business) loginUser;
List<Movie> movieList = ALL_MOVIES.get(business);
System.out.println("==============商家上架电影界面==============");
System.out.println("请您输入新片名:");
String name = SCANNER.nextLine();
System.out.println("请您输入主演:");
String actor = SCANNER.nextLine();
System.out.println("请您输入时长:");
String time = SCANNER.nextLine();
System.out.println("请您输入票价:");
String price = SCANNER.nextLine();
System.out.println("请您输入票数:");
String number = SCANNER.nextLine();
while (true) {
try {
System.out.println("请您输入影片的放映时间:");
String startTime = SCANNER.nextLine();
Movie movie = new Movie(name, actor, Double.valueOf(price), Double.valueOf(time), Integer.valueOf(number), simpleDateFormat.parse(startTime));
movieList.add(movie);
System.out.println("您已经成功上架了:《" + movie.getName() + "》");
return;
} catch (ParseException e) {
e.printStackTrace();
LOGGER.error("时间解析存在问题!");
}
}
}
/**
* 展示商家详情
*/
private static void showBusinessInfo() {
System.out.println("==============商家详情界面==============");
LOGGER.info(loginUser.getUserName() + "商家正在查看店铺的详情信息.");
// 用户对象转为商家对象
Business business = (Business) loginUser;
System.out.println(business.getShopName() + "\t\t" + business.getPhone() + "\t\t" + business.getAddress());
System.out.println();
// 根据商家对象作为Map集合的键提取对应集合的值
List<Movie> movieList = ALL_MOVIES.get(loginUser);
// 如果电影集合为空
if (movieList.size() > 0) {
System.out.println("片名\t\t\t主演\t\t评分\t\t票价\t\t电影时长\t\t余票数\t\t放映时间");
for (Movie movie : movieList) {
System.out.println(movie.getName() + "\t\t\t" + movie.getActor() + "\t\t" + movie.getScore()
+ "\t\t" + movie.getPrice() + "\t\t" + movie.getTime() + "\t\t" + movie.getNumber()
+ "\t\t" + simpleDateFormat.format(movie.getStartTime()));
}
} else {
System.out.println("当前您的店铺无片在放映...");
}
}
/**
* 客户操作界面
*/
private static void showCustomerMain() {
while (true) {
System.out.println("==============客户操作界面==============");
System.out.println("欢迎" + loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士") + "进入系统!" + "\t余额:" + loginUser.getMoney());
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("请输入您要操作的命令");
String command = SCANNER.nextLine();
switch (command) {
case "1":
// 展示全部影片信息功能
showAllMovies();
break;
case "2":
// 根据电影名称查询电影信息
break;
case "3":
// 评分功能
break;
case "4":
// 购票功能
buyMovieTickets();
break;
case "5":
// 退出系统
System.out.println("欢迎下次使用系统!");
return;
default:
System.out.println("命令输入错误!");
break;
}
}
}
/**
* 客户购票功能
*/
private static void buyMovieTickets() {
// 展示全部影片信息
showAllMovies();
System.out.println("==============客户购票界面==============");
while (true) {
System.out.println("请您输入需要买票的影院:");
String shopName = SCANNER.nextLine();
// 根据影院查询商家对象
Business business = getBusinessByShopName(shopName);
if (business == null) {
System.out.println("该影院不存在!");
} else {
// 该影院所有的电影
List<Movie> movieList = ALL_MOVIES.get(business);
// 判断该影院影片是否为空
if (movieList.size() > 0) {
System.out.println("请输入需要购买电影名称:");
String movieName = SCANNER.nextLine();
// 根据电影名称查询电影对象
Movie movie = getMovieByShopAndName(business, movieName);
if (movie != null) {
// 购票
System.out.println("请您输入购买电影票数:");
String number = SCANNER.nextLine();
int buyNumber = Integer.valueOf(number);
// 判断是否购票
if (movie.getNumber() >= buyNumber) {
// 购票金额
double money = BigDecimal.valueOf(movie.getPrice()).multiply(BigDecimal.valueOf(buyNumber)).doubleValue();
if (loginUser.getMoney() >= money) {
// 买票
System.out.println("您成功购买了" + movie.getName() + buyNumber + "张票,总金额是:" + money);
// 更新本人金额
loginUser.setMoney(loginUser.getMoney() - money);
// 更新商家金额
business.setMoney(business.getMoney() + money);
// 更新票
movie.setNumber(movie.getNumber() - buyNumber);
return;
} else {
// 票数不够
System.out.println("是否继续买票:y/n");
String command = SCANNER.nextLine();
if (!command.equals("y")) {
System.out.println("好的!");
return;
}
}
} else {
System.out.println("您当前最多可以购买:" + movie.getNumber());
System.out.println("是否继续买票:y/n");
String command = SCANNER.nextLine();
if (!command.equals("y")) {
System.out.println("好的!");
return;
}
}
} else {
System.out.println("影片不存在!");
}
} else {
System.out.println("抱歉,该影院已经打烊了!");
System.out.println("是否继续买票:y/n");
String command = SCANNER.nextLine();
if (!command.equals("y")) {
System.out.println("好的!");
return;
}
}
}
}
}
/**
* 根据电影名称查询电影对象
*
* @param business 商家对象
* @param movieName 电影名称
* @return 电影对象
*/
public static Movie getMovieByShopAndName(Business business, String movieName) {
List<Movie> movieList = ALL_MOVIES.get(business);
for (Movie movie : movieList) {
if (movie.getName().contains(movieName)) {
return movie;
}
}
return null;
}
/**
* 根据影院查询商家对象
*
* @return 商家对象
*/
public static Business getBusinessByShopName(String shopName) {
// 获取所有商家对象
Set<Business> businesses = ALL_MOVIES.keySet();
for (Business business : businesses) {
if (business.getShopName().equals(shopName)) {
return business;
}
}
return null;
}
/**
* 展示全部影片信息
*/
private static void showAllMovies() {
System.out.println("==============客户展示全部影片信息界面==============");
ALL_MOVIES.forEach((business, movieList) -> {
// 商家信息
System.out.println(business.getShopName() + "\t\t" + business.getPhone() + "\t\t" + business.getAddress());
System.out.println("片名\t\t\t主演\t\t评分\t\t票价\t\t电影时长\t\t余票数\t\t放映时间");
for (Movie movie : movieList) {
System.out.println(movie.getName() + "\t\t\t" + movie.getActor() + "\t\t" + movie.getScore()
+ "\t\t" + movie.getPrice() + "\t\t" + movie.getTime() + "\t\t" + movie.getNumber()
+ "\t\t" + simpleDateFormat.format(movie.getStartTime()));
}
});
}
/**
* 根据登录名查找用户
*
* @param loginName 登录名
* @return 用户
*/
public static User getUserByLoginName(String loginName) {
// 遍历所有用户
for (User user : ALL_USERS) {
// 判断用户是否存在
if (user.getLoginName().equals(loginName)) {
return user;
}
}
return null;
}
}