package it.heima.图书馆管理系统开发;
import java.util.*;
/**
* Description:
* 查看全部书本 query
* 添加 add
* 删除 delete
* 修改 update
* 退出 exit
* * 书本信息结构
* * 类型 书本 价格
* * 言情小说
* * 金瓶梅 99.2
* * 红楼梦 198.2
* *武侠小说
* * 三少爷 98.2
* * 神雕侠侣 98.2
* *
* * 定义集合存储书本信息数据
*/
public class BookSystem {
/**
* 定义集合 键是栏目 值是list 书本信息
*/
public static void main(String[] args) {
//展示操作界面
//独立功能 封装成方法 调用 方便象湖镇之间调用
showCommamd();
}
public static final Map<String, List<Book>> BOOK_STORE = new HashMap<>();
public static final Scanner SYS_SCANNER = new Scanner(System.in);
private static void showCommamd() {
//* 查看全部书本 query
// * 添加 add
// * 删除 delete
// * 修改 update
// * 退出 exit
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.println("输入自己的操作");
String command = SYS_SCANNER.nextLine();
switch (command) {
//查找
case "query":
queryBook();
break;
//添加
case "add":
addBook();
break;
//删除
case "delete":
deleteBook();
break;
//更新
case "update":
upadateBook();
break;
//退出
case "exit":
System.out.println("再次登录");
System.exit(0);
break;
default:
System.err.println("输入错误");
}
//方法递归
showCommamd();
}
/**
* 删除书本信息
* Map<String, List<Book>> BOOK_STORE ={type1=[book1,book2],type2=[book1,book2],}
*/
private static void deleteBook() {
queryBook();
System.out.println("=================欢迎进入删除书本业务=================");
while (true) {
System.out.println("请输入要删除的栏目");
String type = SYS_SCANNER.nextLine();
//判断是否有栏目
if (BOOK_STORE.containsKey(type)) {
while (true) {
//存在该栏目
System.out.println("请问您要删除的书本名称是");
String name = SYS_SCANNER.nextLine();
//去栏目下找到该栏目对应的书
Book book = getBookByTypeAndName(type, name);
//判断是否为nulL
if (book == null) {
System.out.println("不存在这本书");
} else {
//存在这本书
//取出这个栏目的集合
List<Book> books = BOOK_STORE.get(type);
books.remove(book);
System.out.println("删除成功");
queryBook();
//一定要有一个回调的功能 中止while 循环
return;
}
}
} else {
//不存在该栏目
System.out.println("不存在该栏目");
}
}
}
/**
* 修改书籍 修改书本信息
*/
private static void upadateBook() {
//如果一本书都没有
if (BOOK_STORE.size() == 0) {
System.out.println("您现在没有任何栏目可以修改");
} else {
queryBook();
System.out.println("=================欢迎进入修改书本业务=================");
while (true) {
System.out.println("请输入要修改的栏目:");
String type = SYS_SCANNER.nextLine();
if (BOOK_STORE.containsKey(type)) {
while (true) {
//如果存在该栏目
//请输入要修改的书名
System.out.println("请输入要修改的书名:");
String name = SYS_SCANNER.nextLine();
//书名用户也会乱写
//根据栏目和书名查询这本书
Book book = getBookByTypeAndName(type, name);
if (book == null) {
System.out.println("不存在这本书");
} else {
System.out.println("输入修改这本书的新名称");
String newName = SYS_SCANNER.nextLine();
System.out.println("请输入修改书本的价格");
String newPrice = SYS_SCANNER.nextLine();
//收成字符串 转double形式 Double.valueOf(price)
System.out.println("请输入修改书本的作者");
String newAuthor = SYS_SCANNER.nextLine();
//修改新作者
book.setName(newName);
book.setPrice(Double.valueOf(newPrice));
book.setAuthor(newAuthor);
//修改完成之后查一下
queryBook();
System.out.println("修改的书本成功 查看内容确认");
//结束修改的方法
return;
}
}
} else {
//不存在该栏目
System.out.println("您输入的栏目不存在 重新输入");
//知道修改正确为止
}
}
}
}
//定义一个查找书的的方法 每次可以查到书
/**
* 在某个栏目先 根据书名查询这本书的对象返回
*
* @param type 栏目名称
* @param name 书名称
* @return书本对象
*/
public static Book getBookByTypeAndName(String type, String name) {
//先提取这个栏目的橱柜 根据栏目提取值
List<Book> books = BOOK_STORE.get(type);
for (Book book : books) {
//如果该书的名称一样则返回这本书
if (book.getName().equals(name)) {
return book;
}
}
return null;
}
/**
* 查询全部书本信息
* 遍历map类型
*/
private static void queryBook() {
System.out.println("=================欢迎进入查询业务=================");
System.out.println("类型\t\t\t\t\t书名\t\t\t\t\t价格\t\t\t\t\t作者");
//假如书一本都没有的情况下 整个图书馆没有书
if (BOOK_STORE.size() == 0) {
System.out.println("您的图书馆一本书都没有");
} else {
//有书的情况下再遍历书
//jdk8 技术的遍历
BOOK_STORE.forEach((type, books) -> {
System.out.println(type);
//再遍历该橱柜下的书本
for (Book book : books) {
System.out.println(book.getName() + "\t\t\t\t\t\t" + book.getPrice() + "\t\t\t\t\t\t" + book.getAuthor());
}
});
}
}
/**
* 添加书本信息
* Map<String, List<Book>> BOOK_STORE ={type1=[book1,book2],type2=[book1,book2],}
*/
private static void addBook() {
System.out.println("=================添加书本页面=================");
System.out.println("添加书本的栏目");
String type = SYS_SCANNER.nextLine();
//定义一个list集合用于保存栏目的橱柜
List<Book> books = null;
//这个橱柜根据栏目是否存在来确定
//判断是否存在该栏目
if (BOOK_STORE.containsKey(type)) {
/**
//存在该栏目
//直接得到该栏目存在的对象 取得它存在的list
List<Book> books = BOOK_STORE.get(type);
//从栏目的名称得到对应的list对象
System.out.println("请输入书本的名称");
String name = SYS_SCANNER.nextLine();
System.out.println("请输入书本的价格");
String price = SYS_SCANNER.nextLine();
//收成字符串 转double形式 Double.valueOf(price)
System.out.println("请输入书本的作者");
String author = SYS_SCANNER.nextLine();
//定义一个书本对象 封装
Book book = new Book(name, Double.valueOf(price), author);
books.add(book);
**/
books = BOOK_STORE.get(type);
} else {
/**
//不存在该栏目
//不存在橱柜 要为新加橱柜 即新建一个list<Book>
List<Book> books = new ArrayList<>();
System.out.println("请输入书本的名称");
String name = SYS_SCANNER.nextLine();
System.out.println("请输入书本的价格");
String price = SYS_SCANNER.nextLine();
//收成字符串 转double形式 Double.valueOf(price)
System.out.println("请输入书本的作者");
String author = SYS_SCANNER.nextLine();
//定义一个书本对象 封装
Book book = new Book(name, Double.valueOf(price), author);
books.add(book);
//把橱柜和栏目存储到图书馆集合中去
BOOK_STORE.put(type, books);
*/
//如果栏目不存在就要为栏目创建一个新的橱柜 创建完成 往里面加新的橱柜
books = new ArrayList<>();
BOOK_STORE.put(type, books);
}
System.out.println("请输入书本的名称");
String name = SYS_SCANNER.nextLine();
System.out.println("请输入书本的价格");
String price = SYS_SCANNER.nextLine();
//收成字符串 转double形式 Double.valueOf(price)
System.out.println("请输入书本的作者");
String author = SYS_SCANNER.nextLine();
//定义一个书本对象 封装
Book book = new Book(name, Double.valueOf(price), author);
books.add(book);
System.out.println("您添加在" + type + "栏目下的书" + book.getName() + "成功");
}
}
第一次自己复现的一个小的实例 算是熟悉了一下业务系统