首先,定义一个书本类,封装名称,价格,作者三个属性,并返回对应的属性值
然后定义一个实现类,在控制台实现图书的增删改查等功能,以下是基本架构
public class mainface {
//定义一个图书馆,用来存储书,图书馆唯一
static final Map< String ,List<books>> book_system=new HashMap();//经典代码
//定义一个键盘输入器,便于后面获取键盘输入数据
static final Scanner scanner=new Scanner(System.in);
public static void main(String[] args) {
face();
}
private static void face() {
System.out.println("------------欢迎进入图书管理系统--------");
System.out.println("1,查询功能 query");
System.out.println("2,添加功能 add");
System.out.println("3,修改功能 update");
System.out.println("4,删除功能 delete");
System.out.println("5,退出功能 exit");
System.out.print("请输入你的选项:");
String conmand=scanner.next();
switch (conmand){
case "query":
if(book_system.isEmpty()) {
System.out.println("还未添加有图书信息,请前往添加");
}else {
query();
}
break;
case "add":
add();
break;
case "update":
if(book_system.isEmpty()) {
System.out.println("还未添加有图书信息,请前往添加");
}else {
update();
}
break;
case "delete":
delete();
break;
case "exit":
System.exit(0);
default :
System.err.println("你输入有误,请重新输入!");
}
face();//递归调用自身
}
功能实现:实现了增删改查四大功能
private static void delete() {
System.out.println("请输入你要删除书的类型:");
//得到该键下的value,这里的value值是一个list集合
String type=scanner.next();
if(book_system.containsKey(type)) {
List<books> book1=book_system.get(type);
System.out.println("请输入你要删除书的名称:");
// System.out.println( book1);
String name=scanner.next();
for(books x:book1) {
if(x.getName().equals(name)) {
int h=book1.indexOf(x);//获取该对象的索引
book1.remove(x);//移除指定索引处的对象
face();
}
}
}
}
private static void update() {
// TODO Auto-generated method stub
System.out.println("请输入你要修改书的类型:");
String type=scanner.next();
if(book_system.containsKey(type)) {
List<books> book1=book_system.get(type);//得到该键下的value,这里的value值是一个list集合
System.out.println("请输入你要修改的书名");
String name=scanner.next();
book1.forEach(x->{//当前x表示books类对象
/**
* 在java中 ==的用法
返回true,只是说明定义了两个一模一样的字符串,后台只开辟了一个存储空间。
== 只适用于基础类型的比较,例如:int long char等,String不是基础类型,是一个对象,所以你用实际对比的是数据存储的地址。
*/
//System.out.println(x.getName()==name);//结果为false,因为比较的时地址
if(x.getName().equals(name)) {
System.out.print("请输入新修改的书的名称:");
String newname=scanner.next();
System.out.print("请输入新的价格:");
String price=scanner.next();
System.out.print("请输入新的作者:");
String author=scanner.next();
System.out.println(name);
x.setName(newname);
x.setPrice(price);
x.setAuthor(author);
System.out.println("修改成功");
query() ;
}
});
}else {
System.out.println("你要修改的类型不存在");
}
}
private static void query() {
System.out.println("=====欢迎进入书本查询界面=========");
// TODO Auto-generated method stub
System.out.println("书本种类\t\t\t\t 书名 \t\t\t\t 价格 \t\t\t\t 作者");
book_system.forEach((type,books)->{
System.out.println(type);
for(books b:books) {//books集合类型
System.out.println("\t\t\t\t"+b.getName()+"\t\t\t"+b.getPrice()+"\t\t\t\t\t"+b.getAuthor());
}
}
);
}
private static void add() {
System.out.println("=====欢迎进入书本添加界面=========");
List<books> book=null;
System.out.print("请输入书的类型:");
String type=scanner.next();
if(book_system.containsKey(type)) {
//如果书的类型存在时
book=book_system.get(type);//根据键得到对应的值
}else {
book=new ArrayList<books>();
book_system.put(type, book);
}
System.out.print("请输入书的名称:");
String name=scanner.next();
System.out.print("请输入书的价格:");
String price=scanner.next();
System.out.print("请输入书的作者:");
String author=scanner.next();
books f=new books(name, price, author);
book.add(f);
System.out.println("您添加在"+type+"下的书本"+name+"添加成功");
}
实现效果: