jun - 云代码空间
—— 相信 ,梦
package cn.itcast.sh.book; /* * 用于描述图书这个事物的对象 */ public class Book { private int id ; //书的编号 UUID private String name; //书名 private double price; //价格 private String author; //作者 public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } /* * 在创建Book对象的时候明确书的具体属性 */ public Book(int id, String name, double price, String author) { super(); this.id = id; this.name = name; this.price = price; this.author = author; } public Book() { } public String toString() { return "Book [id=" + id + ", name=" + name + ", price=" + price + ", author=" + author + "]"; } }
package cn.itcast.sh.book; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /* * 主要负责存储图书 */ public class BookDB { private static ArrayList<Book> DB = new ArrayList<>(); //对外提供给DB中存储图书的功能 public static boolean addBook( Book b ){ return DB.add(b); } /* * 负责查询所有图书 */ public static List<Book> findAll() { return DB; } /* * 根据图书名称返回所有的图书 */ public static List<Book> find(String name) { //创建一个集合,用于存储符合name名称的所有图书 List<Book> books = new ArrayList<>(); //遍历容器,取出每本数,然后判断这本书的名字和传递进来的name是否相同 for( Book b : DB ){ if( b.getName().equals(name) ){ books.add(b); } } //在把DB遍历完之后判断,到底有没有符合条件的图书 if( books.size() == 0 ){ //没有符合条件的图书,就返回null return null; } return books; } /* * 根据id查询有没有这本书 */ public static boolean getBookById(int id) { boolean flag = false; //这里使用迭代器遍历,在遍历的时候可以删除数据 for (Iterator<Book> it = DB.iterator(); it.hasNext();) { //获取一本书 Book b = it.next(); if( b.getId() == id ){ //相同就删除 it.remove(); flag = true; } } return flag; } //给DB中添加需要修改的图书 public static boolean updateBook(Book b2) { return DB.add(b2); } }
package cn.itcast.sh.book; import java.util.List; import java.util.Scanner; /* * 这里负责图书的增删改查动作 * B、删除图书信息 */ public class BookCRUD { private int id=1; public void manage(){ System.out.print("A、输入图书信息\t"); System.out.print("B、删除图书信息\t"); System.out.print("C、修改图书信息\t"); System.out.print("D、查询图书信息\t"); System.out.print("E、查询所有图书信息\t"); System.out.println("F、退出系统\t"); System.out.println("请您选择具体的操作类型:"); //获取用户输入的操作类型 String operator = getKeyInfo(); //把用户输入的操作类型转成大写 operator = operator.toUpperCase(); //使用switch语句分层次来判断到底用户输入的是什么操作符 switch( operator ){ case "A" : //调用获取图书对象的方法 Book book = getBook(); book.setId(id); id++; //把book对象存储到集合中。 boolean boo = BookDB.addBook(book); //判断返回的boo值 if( boo ){ System.out.println("添加成功"); }else{ System.out.println("添加失败"); } manage(); break; case "B" : System.out.println("删除图书"); /* * 删除图书根据id删除。 * 1、第一步需要获取用户输入的图书id * 2、把这个id传递到后台,然后遍历DB容器,取出图书的id,通过判断图书的id和传递的id是否相同 * 相同就删除这本书。 * 注意:集合在删除的时候,需要使用迭代器自身的删除功能,不能在遍历的时候使用集合自身的删除功能。 */ break; case "C" : System.out.println("修改图书"); /* * 根据id来修改图书信息 */ //首先需要用户输入id System.out.println("请输入要修改图书的编号:"); int id = Integer.parseInt(getKeyInfo()); //把id传递后台,判断有没有这个id 的图书 boolean boo2 = BookDB.getBookById(id); if( boo2 == false ){ System.out.println("此编号"+id+"没有对应的图书"); }else{ //在后台查询完成之后,有此id对应的图书 //让用户输入图书的其他信息并封装成book对象 Book b2 = getBook(); //给book设置id b2.setId(id); //把要修改的这个图书给后台 boolean b = BookDB.updateBook(b2); if( b ){ System.out.println("恭喜您,修改成功"); }else{ System.out.println("很遗憾,修改失败"); } } manage(); break; case "D" : System.out.println("查询图书"); /* *按照书名进行查询,注意书名可能重复,这样会导致查询到的是一个集合 */ String name = getBookName(); //把书名传递给后台程序,获取当前这个书名对象的所有的图书 List<Book> books = BookDB.find(name); //判断当前的书名有没有查询到对应的图书 if( books == null ){ System.out.println(name+"没有这本书"); }else{ for(Book b : books){ System.out.println(b); } } manage(); break; case "E" : List<Book> db = BookDB.findAll(); for(Book b : db){ System.out.println(b); } manage(); break; case "F" : System.out.println("退出图书"); System.out.println("================您已经退出本图书管理系统===================="); System.exit(0); default: System.out.println("本系统现在不支持您的需求,请等待。。。。。"); } } /* * 让用户输入书名,并把书名返回 */ public String getBookName() { System.out.println("请输入要查询的书名"); return getKeyInfo(); } /* * 用于获取图书信息 */ public Book getBook() { System.out.println("请输入图名称:"); String name = getKeyInfo(); System.out.println("请输入价格:"); //这里处理对异常处理,保证可以正常获取到一个价格数据。 double price = Double.parseDouble(getKeyInfo()); System.out.println("请输入作者:"); String author = getKeyInfo(); //创建Book对象,把书名,价格还是作者封装到book,返回 Book b = new Book(); //给book封装数据 b.setAuthor(author); b.setName(name); b.setPrice(price); //把book返回 return b; } /* * 单独抽取方法,用于获取键盘录入数据 */ public String getKeyInfo(){ Scanner s = new Scanner(System.in); return s.next(); } }
package cn.itcast.sh.book; public class Start { public static void main(String[] args) { System.out.println("================欢迎光临本图书管理系统===================="); //这里需要去调用其他的程序完成图书的更加具体的操作。 new BookCRUD().manage(); System.out.println("================您已经退出本图书管理系统===================="); } }