package cn.liu.lang; import java.util.*; public class BookManger { public static void main(String[] args) { Map<String, ArrayList<Book>> map = new HashMap<>(); // 创建集合对象,用于存储学生数据 ArrayList<Book> it = new ArrayList(); it.add(new Book("Java入门到精通", 99)); it.add(new Book("PHP入门到精通", 9.9)); map.put("it书籍", it); ArrayList<Book> mz = new ArrayList(); mz.add(new Book("西游记", 19)); mz.add(new Book("水浒传", 29)); map.put("名著", mz); while (true) { //这是学生管理系统的主界面 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("请输入你的选择:"); //创建键盘录入对象 Scanner sc = new Scanner(System.in); int num = sc.nextInt(); switch (num) { case 1: findAllBook(map);break; case 2: addBook(map);break; case 3: deleteBook(map);break; case 4: editBook(map);break; case 5: System.out.println("谢谢你的使用");System.exit(0);break; default: System.out.println("输入错误,请重新输入");break; } } } //查看所有图书 private static void findAllBook(Map<String, ArrayList<Book>> map) { //书籍打印的格式 System.out.println("类型\t\t书名\t价格"); //遍历map集合,首先用entrySet获取map所有entry Set<Map.Entry<String, ArrayList<Book>>> entries = map.entrySet(); //通过增强for循环遍历获得map里所有的entry for (Map.Entry<String, ArrayList<Book>> entry : entries) { //通过entry调用getKey()和getValue()方法获取 key值和key值映射的值 String key = entry.getKey(); System.out.println(key); //value里存放的是Book对象 ArrayList<Book> value = entry.getValue(); //遍历打印出对象的属性值 for (Book book : value) { System.out.println("\t\t" + book.getName() + "\t" + book.getPrice()); } } } //添加图书 private static void addBook(Map<String, ArrayList<Book>> map) { Scanner sc = new Scanner(System.in); System.out.println("请输入您要添加书籍的类型:"); String type = sc.nextLine(); System.out.println("请输入您要添加书籍的名称:"); String name = sc.nextLine(); System.out.println("请输入您要添加书籍的价格:"); double price = sc.nextDouble(); //将输入的值传入,新建一个book对象 Book book = new Book(name, price); //之前输入的type就是map集合的键值,通过键值获取到对应的value ArrayList<Book> books = map.get(type); if (books == null) { books = new ArrayList<>(); map.put(type, books); } books.add(book); System.out.println("添加" + name + "成功"); } //删除图书 private static void deleteBook(Map<String, ArrayList<Book>> map) { // 创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入要删除书籍的类型:"); String type = sc.next(); System.out.println("请输入要删除的书名:"); String name = sc.next(); // 通过输入的type值,获取到对应的book类集合 ArrayList<Book> books = map.get(type); /*1.我们删除图书的判断有两种 * (1)第一种首先我们先判断有没有此类型的书籍,如果没有,直接提示此类型的书籍不存在 * (2)第二种,如果第一种判断通过,然后我们再在对应的类型里,去查找是否有对应的书籍名字 * 如果有那么就删除,如果,没有,就提示没找到*/ //判断集合内是否存在与type对应的book集合类 if (books == null) { System.out.println("您删除的书籍类型不存在"); return; } for (int i = 0; i < books.size(); i++) { Book book = books.get(i); if (book.getName().equals(name)) { books.remove(i); // 找到这本书,删除这本书 System.out.println("删除" + name + "书籍成功"); return; // 删除书籍后结束方法 } } System.out.println("没有找到" + name + "书籍"); } //修改图书 private static void editBook(Map<String, ArrayList<Book>> map) { // 创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入要修改书籍的类型:"); String type = sc.next(); System.out.println("请输入要修改的书名:"); String oldName = sc.next(); System.out.println("请输入新的书名:"); String newName = sc.next(); System.out.println("请输入新的价格:"); double price = sc.nextDouble(); // 拿到书籍列表 ArrayList<Book> books = map.get(type); if (books == null) { System.out.println("您修改的书籍类型不存在"); return; } for (int i = 0; i < books.size(); i++) { Book book = books.get(i); if (book.getName().equals(oldName)) { // 找到这本书,修改这本书 book.setName(newName); book.setPrice(price); System.out.println("修改成功"); return; // 修改书籍后结束方法 } } System.out.println("没有找到" + oldName + "书籍"); } }
//存放图书信息的书籍类
package cn.liu.lang; public class Book { private String name; private double price; public Book() { } public Book(String name, double price) { this.name = name; this.price = price; } 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; } }