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() + "成功"); } }
第一次自己复现的一个小的实例 算是熟悉了一下业务系统