java实现黑窗口Map图书管理
2021/7/23 11:39:41
本文主要是介绍java实现黑窗口Map图书管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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() + "成功"); } }
第一次自己复现的一个小的实例 算是熟悉了一下业务系统
这篇关于java实现黑窗口Map图书管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16使用vue3+springboot构建简单Web应用教程
- 2024-11-15全栈开发项目实战:从入门到初级项目的实现
- 2024-11-15数据库项目实战:从入门到初级应用教程
- 2024-11-15IDEA项目实战入门教程
- 2024-11-15IT编程项目实战:新手入门的全面指南
- 2024-11-15Java开发项目实战:新手入门与初级技巧
- 2024-11-15Java零基础项目实战:从入门到独立开发
- 2024-11-15MyBatis Plus教程:入门与基础操作详解
- 2024-11-15MyBatis-Plus教程:新手入门与实战技巧
- 2024-11-15MyBatis教程:从入门到实践