集合综合案例——图书管理系统
一、图书管理系统业务分析
目标:图书管理系统的开发。
业务需求分析:
(1)查看全部书籍。query
(2)添加书本信息。add
(3)删除书本信息。delete
(4)修改书本信息。update
(5)退出系统。 exit
书本信息的结构:
类型 书名 价格 作者
---------------------------------------------------
言情小说
《金瓶梅》 99.9 阿猫
《红楼梦》 198.2 曹雪芹
武侠小说
《三少爷的剑》 98.2 古龙
《神雕侠侣》 98.2 金庸
------------------------------------------------------
分析:
(1)定义一个书本类。
(2)定义一个集合表示图书馆用于存储书本信息数据:Map<String,List<Book>>。
(3)展示操作界面。
(4)完成相应功能。
1.查看全部书籍
1.定义一个书本类封装属性和方法
public class Book {
//书名
private String name;
//价格
private double price;
//作者
private String author;
public Book() {
}
public Book(String name, double price, String author) {
this.name = name;
this.price = price;
this.author = author;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
2.定义一个集合表示图书馆存储图书信息
因为有书所属的橱窗信息,List集合集不能满足要求,采用Map集合。
键作为书本的橱窗,值是List集合对象存储基本的书籍信息。
public static final Map<String, List<Book>> BOOK_STORE = new HashMap<>();
定义一个扫描器完成对输入的扫描
public static final Scanner SYS_SCANNER = new Scanner(System.in);
3.展示操作界面
private static void showCommand() {
System.out.println("===============欢迎您进入系统===================");
System.out.println("(1)查看全部书籍。query");
System.out.println("(2)添加书本信息。add");
System.out.println("(3)删除书本信息。delete");
System.out.println("(4)修改书本信息。update");
System.out.println("(5)退出系统。 exit");
System.out.print("请您输入您的操作命令:");
String command = SYS_SCANNER.nextLine();
// 判断用户的命令是想干啥
switch (command){
case "query":
// 查看全部书籍
queryBooks();
break;
case "add":
// 添加书籍
addBook();
break;
case "delete":
// 删除书籍
deleteBooke();
break;
case "update":
// 修改书籍
updateBook();
break;
case "exit":
// 退出系统
System.out.println("退出成功,期待您下次光临!");
System.exit(0);
break;
default:
System.err.println("您的命令输入有无,请重新确认!");
}
showCommand(); // 调用自己,实现循环的效果
}
4.查询全部书本信息的方法
先查看存储书籍信息的Map集合是否为空,为空提示补充书籍,反之遍历该类型下的橱柜中的全部书本对象
/**
查询全部书本信息
Map<String, List<Book>> BOOK_STORE = {type1=[b1, b2, b3] , type2=[b1] }
*/
private static void queryBooks() {
System.out.println("===============欢迎您进入查询书本业务=================");
//查看存储书籍信息的Map集合是否为空
if(BOOK_STORE.size() == 0){
//为空提示补充书籍
System.out.println("您的图书馆一本书都没有,请补充书籍!");
}else{
System.out.println("类型\t\t\t\t书名\t\t\t\t\t价格\t\t\t作者");
//使用lambda表达式来遍历
BOOK_STORE.forEach((type , books) -> {
System.out.println(type);
// 反之遍历该类型下的橱柜中的全部书本对象
for (Book book : books) {
System.out.println("\t\t\t\t