
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("================您已经退出本图书管理系统====================");
}
}