java实现黑窗口Map图书管理

2021/7/23 11:39:41

本文主要是介绍java实现黑窗口Map图书管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

package it.heima.图书馆管理系统开发;

import java.util.*;

/**
 * Description:
 * 查看全部书本 query
 * 添加 add
 * 删除 delete
 * 修改 update
 * 退出 exit
 * * 书本信息结构
 * * 类型    书本      价格
 * * 言情小说
 * *         金瓶梅    99.2
 * *         红楼梦    198.2
 * *武侠小说
 * *         三少爷    98.2
 * *         神雕侠侣     98.2
 * *
 * * 定义集合存储书本信息数据
 */
public class BookSystem {
    /**
     * 定义集合 键是栏目 值是list 书本信息
     */
    public static void main(String[] args) {
        //展示操作界面
        //独立功能 封装成方法 调用 方便象湖镇之间调用
        showCommamd();

    }

    public static final Map<String, List<Book>> BOOK_STORE = new HashMap<>();
    public static final Scanner SYS_SCANNER = new Scanner(System.in);

    private static void showCommamd() {
        //* 查看全部书本 query
        // * 添加 add
        // * 删除 delete
        // * 修改 update
        // * 退出 exit
        System.out.println("=================欢迎您进入系统=================");
        System.out.println("1 查看全部书本 query");
        System.out.println("2 添加 add");
        System.out.println("3 删除 delete");
        System.out.println("4 修改 update");
        System.out.println("5 退出 exit");
        System.out.println("输入自己的操作");
        String command = SYS_SCANNER.nextLine();
        switch (command) {
            //查找
            case "query":
                queryBook();
                break;
            //添加
            case "add":
                addBook();
                break;
            //删除
            case "delete":
                deleteBook();
                break;
            //更新
            case "update":
                upadateBook();
                break;
            //退出
            case "exit":
                System.out.println("再次登录");
                System.exit(0);
                break;
            default:
                System.err.println("输入错误");
        }
        //方法递归
        showCommamd();
    }

    /**
     * 删除书本信息
     * Map<String, List<Book>> BOOK_STORE ={type1=[book1,book2],type2=[book1,book2],}
     */
    private static void deleteBook() {
        queryBook();
        System.out.println("=================欢迎进入删除书本业务=================");
        while (true) {
            System.out.println("请输入要删除的栏目");
            String type = SYS_SCANNER.nextLine();
            //判断是否有栏目
            if (BOOK_STORE.containsKey(type)) {
                while (true) {
                    //存在该栏目
                    System.out.println("请问您要删除的书本名称是");
                    String name = SYS_SCANNER.nextLine();
                    //去栏目下找到该栏目对应的书
                    Book book = getBookByTypeAndName(type, name);
                    //判断是否为nulL
                    if (book == null) {
                        System.out.println("不存在这本书");
                    } else {
                        //存在这本书
                        //取出这个栏目的集合
                        List<Book> books = BOOK_STORE.get(type);
                        books.remove(book);
                        System.out.println("删除成功");
                        queryBook();
                        //一定要有一个回调的功能 中止while 循环
                        return;
                    }
                }
            } else {
                //不存在该栏目
                System.out.println("不存在该栏目");
            }
        }
    }

    /**
     * 修改书籍 修改书本信息
     */

    private static void upadateBook() {
        //如果一本书都没有
        if (BOOK_STORE.size() == 0) {
            System.out.println("您现在没有任何栏目可以修改");
        } else {
            queryBook();
            System.out.println("=================欢迎进入修改书本业务=================");
            while (true) {
                System.out.println("请输入要修改的栏目:");
                String type = SYS_SCANNER.nextLine();
                if (BOOK_STORE.containsKey(type)) {
                    while (true) {
                        //如果存在该栏目
                        //请输入要修改的书名
                        System.out.println("请输入要修改的书名:");
                        String name = SYS_SCANNER.nextLine();
                        //书名用户也会乱写
                        //根据栏目和书名查询这本书
                        Book book = getBookByTypeAndName(type, name);
                        if (book == null) {
                            System.out.println("不存在这本书");
                        } else {
                            System.out.println("输入修改这本书的新名称");
                            String newName = SYS_SCANNER.nextLine();
                            System.out.println("请输入修改书本的价格");
                            String newPrice = SYS_SCANNER.nextLine();
                            //收成字符串 转double形式 Double.valueOf(price)
                            System.out.println("请输入修改书本的作者");
                            String newAuthor = SYS_SCANNER.nextLine();
                            //修改新作者
                            book.setName(newName);
                            book.setPrice(Double.valueOf(newPrice));
                            book.setAuthor(newAuthor);
                            //修改完成之后查一下
                            queryBook();
                            System.out.println("修改的书本成功 查看内容确认");
                            //结束修改的方法
                            return;
                        }
                    }
                } else {
                    //不存在该栏目
                    System.out.println("您输入的栏目不存在 重新输入");
                    //知道修改正确为止

                }
            }
        }
    }

    //定义一个查找书的的方法 每次可以查到书

    /**
     * 在某个栏目先 根据书名查询这本书的对象返回
     *
     * @param type 栏目名称
     * @param name 书名称
     * @return书本对象
     */
    public static Book getBookByTypeAndName(String type, String name) {
        //先提取这个栏目的橱柜 根据栏目提取值
        List<Book> books = BOOK_STORE.get(type);
        for (Book book : books) {
            //如果该书的名称一样则返回这本书
            if (book.getName().equals(name)) {
                return book;
            }
        }
        return null;
    }

    /**
     * 查询全部书本信息
     * 遍历map类型
     */
    private static void queryBook() {
        System.out.println("=================欢迎进入查询业务=================");
        System.out.println("类型\t\t\t\t\t书名\t\t\t\t\t价格\t\t\t\t\t作者");
        //假如书一本都没有的情况下 整个图书馆没有书
        if (BOOK_STORE.size() == 0) {
            System.out.println("您的图书馆一本书都没有");
        } else {
            //有书的情况下再遍历书
            //jdk8 技术的遍历
            BOOK_STORE.forEach((type, books) -> {
                System.out.println(type);
                //再遍历该橱柜下的书本
                for (Book book : books) {
                    System.out.println(book.getName() + "\t\t\t\t\t\t" + book.getPrice() + "\t\t\t\t\t\t" + book.getAuthor());
                }
            });
        }

    }

    /**
     * 添加书本信息
     * Map<String, List<Book>> BOOK_STORE ={type1=[book1,book2],type2=[book1,book2],}
     */
    private static void addBook() {
        System.out.println("=================添加书本页面=================");
        System.out.println("添加书本的栏目");
        String type = SYS_SCANNER.nextLine();
        //定义一个list集合用于保存栏目的橱柜
        List<Book> books = null;
        //这个橱柜根据栏目是否存在来确定
        //判断是否存在该栏目
        if (BOOK_STORE.containsKey(type)) {
            /**
             //存在该栏目
             //直接得到该栏目存在的对象 取得它存在的list
             List<Book> books = BOOK_STORE.get(type);
             //从栏目的名称得到对应的list对象
             System.out.println("请输入书本的名称");
             String name = SYS_SCANNER.nextLine();
             System.out.println("请输入书本的价格");
             String price = SYS_SCANNER.nextLine();
             //收成字符串 转double形式 Double.valueOf(price)
             System.out.println("请输入书本的作者");
             String author = SYS_SCANNER.nextLine();
             //定义一个书本对象 封装
             Book book = new Book(name, Double.valueOf(price), author);
             books.add(book);
             **/
            books = BOOK_STORE.get(type);
        } else {
            /**
             //不存在该栏目
             //不存在橱柜 要为新加橱柜 即新建一个list<Book>
             List<Book> books = new ArrayList<>();
             System.out.println("请输入书本的名称");
             String name = SYS_SCANNER.nextLine();
             System.out.println("请输入书本的价格");
             String price = SYS_SCANNER.nextLine();
             //收成字符串 转double形式 Double.valueOf(price)
             System.out.println("请输入书本的作者");
             String author = SYS_SCANNER.nextLine();
             //定义一个书本对象 封装
             Book book = new Book(name, Double.valueOf(price), author);
             books.add(book);
             //把橱柜和栏目存储到图书馆集合中去
             BOOK_STORE.put(type, books);
             */
            //如果栏目不存在就要为栏目创建一个新的橱柜 创建完成 往里面加新的橱柜
            books = new ArrayList<>();
            BOOK_STORE.put(type, books);
        }
        System.out.println("请输入书本的名称");
        String name = SYS_SCANNER.nextLine();
        System.out.println("请输入书本的价格");
        String price = SYS_SCANNER.nextLine();
        //收成字符串 转double形式 Double.valueOf(price)
        System.out.println("请输入书本的作者");
        String author = SYS_SCANNER.nextLine();
        //定义一个书本对象 封装
        Book book = new Book(name, Double.valueOf(price), author);
        books.add(book);
        System.out.println("您添加在" + type + "栏目下的书" + book.getName() + "成功");
    }
}

第一次自己复现的一个小的实例 算是熟悉了一下业务系统



这篇关于java实现黑窗口Map图书管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程