图书管理系统(涉及map和list知识)

本文介绍了一个简单的图书管理系统的设计与实现,该系统使用 Java 编程语言,能够实现图书的增删改查等功能。通过定义书本类及其属性,利用 HashMap 存储图书信息,实现了基本的数据管理操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,定义一个书本类,封装名称,价格,作者三个属性,并返回对应的属性值

 然后定义一个实现类,在控制台实现图书的增删改查等功能,以下是基本架构

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+"添加成功");        
    }
 

实现效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smilehjl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值