当前位置:首页 > IT教程

图书管理系统的实现流程及代码

时间:2020-06-02 10:31:03来源:金橙教程网 作者:admin8 阅读:80次 [手机版]
 

图书管理系统流程图

图书管理系统

功能分析:

​ 1.功能选择界面

​ 2.初始化书籍

​ 3.查看书籍

​ 4.添加书籍

​ 5.删除书籍

​ 6.修改书籍

目标:实现 1.功能选择界面

打印输出相应字符串即可

​ 使用键盘输入

​ 根据用户的输入进行选择

 while (true) {
     // 1.功能选择界面, 打印输出相应字符串即可
     System.out.println("--------欢迎来到图书管理系统--------");
     System.out.println("1.查看书籍");
     System.out.println("2.添加书籍");
     System.out.println("3.删除书籍");
     System.out.println("4.修改书籍");
     System.out.println("5.退出");
     // 使用键盘输入
     Scanner sc = new Scanner(System.in);
     System.out.println("请输入你的选择:");
     int operator = sc.nextInt();

     // 根据用户的输入进行选择
     switch (operator) {
         CASE 1:
             showAllBooks(Map);
             break;
         case 2:
             addBook(map);
             break;
         case 3:
             deleteBook(map);
             break;
         case 4:
             upDATeBook(map);
             break;
         case 5:
             System.out.println("大爷,请慢走,欢迎下次再来!");
             System.exit(0);
             break;
         default:
             System.out.println("大爷,你的操作不存在.请不要乱来");
             break;
     }
 }

目标:实现 2.初始化书籍

​ 1.定义Book书籍类

​ 2.创建一个名著集合,存储两本名著

​ 3.创建一个it书籍集合,存储两本it书籍

​ 4.创建一个Map,键是书籍类型,值就是对应的书籍集合

​ 5.添加对应的数据到Map集合中

// 2.初始化书籍
// 1.定义Book书籍类
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;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}

// 2.创建一个名著集合,存储两本名著
ArrayList<Book> mz = new ArrayList<>();
mz.add(new Book("西游记", 19));
mz.add(new Book("水浒传", 29));

// 3.创建一个it书籍集合,存储两本it书籍
ArrayList<Book> it = new ArrayList<>();
it.add(new Book("java入门到精通", 99));
it.add(new Book("php入门到精通", 9.9));

// 4.创建一个Map,键是书籍类型,值就是对应的书籍集合
HashMap<String, ArrayList<Book>> map = new HashMap<>();

// 5.添加对应的数据到Map集合中
map.put("名著", mz);
map.put("it书籍", it);

目标:实现 3.查看书籍

遍历map集合

 private static void showAllBooks(HashMap<String, ArrayList<Book>> map) {
     System.out.println("类型\t\t书名\t价格");
     // 遍历Map,使用Entry方式
     // 1.得到所有的Entry
     Set<Map.Entry<String, ArrayList<Book>>> entrySet = map.entrySet();
     // 2.遍历得到每个Entry
     for (Map.Entry<String, ArrayList<Book>> entry : entrySet) {
         // 打印键
         System.out.println(entry.getKey());

         // 得到值(ArrayList集合)
         ArrayList<Book> value = entry.getValue();
         // 遍历ArrayList
         for (Book book : value) {
             System.out.println("\t\t\t" +book.getName() + "\t" + book.getPrice());
         }
     }
 }

目标:实现 4.添加书籍

​ 输入要添加书籍的类型

​ 输入要添加的书名

​ 输入要添加书的价格

​ 创建Book对象

​ 添加到对应的ArrayList集合中

private static void addBook(HashMap<String, ArrayList<Book>> map) {
    // 目标:实现 4.添加书籍
    Scanner sc = new Scanner(System.in);
    //  输入要添加书籍的类型
    System.out.println("请输入要添加书籍的类型");
    String type = sc.next();
    //  输入要添加的书名
    System.out.println("请输入要添加的书名");
    String name = sc.next();
    //  输入要添加书的价格
    System.out.println("请输入要添加书的价格");
    double price = sc.nextDouble();
    //  创建Book对象
    Book book = new Book(name, price);

    // 通过书籍类型,找到书籍集合
    ArrayList<Book> list = map.get(type);

    // 如果list为null说明,没有这种类型的书籍
    if (list == null) {
        list = new ArrayList<>();
        map.put(type, list);
    }

    // 判断书籍是否存在
    // 做一个标记,表示这本书是否存在,false表示不存在
    boolean exists = false;
    for (Book b : list) {
        if (b.getName().equals(name)) {
            // 书名相同;
            exists = true;
            break; // 一旦书名相同,就是重复的书籍,不需要往后面判断啦
        }
    }

    if (exists) {
        // 如果存在,就不添加
        System.out.println(name + "书籍已经存在");
    } else {
        // 如果不存在,就添加

        //  添加到对应的ArrayList集合中
        list.add(book);
        System.out.println("添加" + name + "书籍成功");
    }
}

目标: 实现 5.删除书籍

​ 输入要删除书籍的类型

​ 输入要删除的书名

​ 通过类型找到书籍的集合

​ 从集合中删除这本数

private static void deleteBook(HashMap<String, ArrayList<Book>> map) {
    // 目标: 实现 5.删除书籍
    Scanner sc = new Scanner(System.in);
    //  输入要删除书籍的类型
    System.out.println("请输入要删除书籍的类型");
    String type = sc.next();
    //  输入要删除的书名
    System.out.println("请输入要删除的书名");
    String name = sc.next();

    //  通过类型找到书籍的集合
    ArrayList<Book> list = map.get(type);

    if (list == null) {
        System.out.println("没有这个类型的书籍");
        return;
    }

    //  从集合中删除这本数
    for (int i = 0; i < list.size(); i++) {
        Book book = list.get(i);
        if (book.getName().equals(name)) {
            // 找到要删除的书籍,并删除
            list.remove(i);
            System.out.println("删除" + name + "成功");
            return ; // 结束这个方法
        }
    }

    System.out.println("没有这本书籍" + name);
}

目标: 实现 6.修改书籍

​ 输入要修改书籍的类型

​ 输入要修改书籍的书名

​ 输入新的书名

​ 输入新的价格

​ 通过类型找到书籍的集合

​ 遍历书籍集合找到要修改的书籍

​ 修改书籍

 private static void updateBook(HashMap<String, ArrayList<Book>> map) {
     // 目标: 实现 6.修改书籍
     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 newPrice = sc.nextDouble();

     //  通过类型找到书籍的集合
     ArrayList<Book> list = map.get(type);
     if (list == null) {
         System.out.println("要修改的书籍类型不存在");
         return;
     }
     //  遍历书籍集合找到要修改的书籍
     for (int i = 0; i < list.size(); i++) {
         Book book = list.get(i);
         if (book.getName().equals(oldName)) {
             // 找到了要修改的书籍
             //  修改书籍
             book.setName(newName);
             book.setPrice(newPrice);
             System.out.println("修改" + oldName + "成功");
             return;
         }
     }

     System.out.println("没有找要修改的书籍" + oldName);
 }

相关阅读

如何选择代码签名

什么是代码签名证书(Code Signing Certificate )代码签名证书是对在线数据 文档和其他文件的实用工具进行数字加密,保护原始发布者发

小编教你电脑蓝屏代码0x000000ed怎么处理

今天是周末,苦逼的小编还要上班,打开qq看到一个用户留言询问电脑蓝屏代码0x000000ed怎么处理,电脑蓝屏代码0x000000ed这个问题还

蓝屏代码0x000000a,教您电脑蓝屏代码0x000000a的解决

电脑使用久,而用户不怎么去保养和爱护的话,就容易出现一些故障,这不有用户就遇见了蓝屏的情况了,相信电脑蓝屏,大家都感觉很习以为常了

0x0000007f,教您电脑蓝屏代码0x0000007f

如果电脑在使用过程中,突然出现蓝屏的情况,也已不足为奇,可还是有新的问题出现,既然有蓝屏代码提示,那解决起来也不难,看看这位朋友遇到

教您蓝屏代码0x000007b

我们在使用是你的过程中难免会遇到电脑蓝屏的情况,也难免会因为需求而对计算机进行一系列bios设置。那么,要是我们遇到电脑蓝屏的情

分享到:

IT相关

程序相关

推荐文章

热门文章