//建两个class
package com.itheima._09图书管理案例;public class Book {private String name;private double price;private String author;public Book() {}public Book(String name, double price, String author) {this.name = name;this.price = price;this.author = author;}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;}}
package com.itheima._09图书管理案例;import java.util.*;/**目标:图书管理系统的开发。业务需求分析:(1)查看全部书籍。query(2)添加书本信息。add(3)删除书本信息。delete(4)修改书本信息。update(5)退出系统。 exit书本信息的结构:类型                书名            价格        作者---------------------------------------------------言情小说《金梅》         99.9        阿猫《红楼梦》         198.2       曹雪芹武侠小说《三少爷的剑》      98.2        古龙《神雕侠侣》        98.2        金庸------------------------------------------------------分析:(1)定义一个书本类。(2)定义一个集合表示图书馆用于存储书本信息数据:Map<String,List<Book>>。(3)展示操作界面。(4)完成相应功能。*/
public class BookSystem {/**1.定义一个集合表示图书馆用于存储书本信息数据:Map<String,List<Book>>。使用Map集合,键是橱柜的栏目类型名称,值是橱柜的List集合对象存储书本信息*/public static final Map<String, List<Book>> BOOK_STORE = new HashMap<>();public static final Scanner SYS_SCANNER = new Scanner(System.in);public static void main(String[] args) {/** 2.展示操作界面 :独立功能建立封装成方法调用 方便互相之间的逻辑调用 */showCommand();}/*** 展示操作界面的命令*/private static void showCommand() {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.print("请您输入您的操作命令:");String command = SYS_SCANNER.nextLine();// 判断用户的命令是想干啥switch (command){case "query":// 查看全部书籍queryBooks();break;case "add":// 添加书籍addBook();break;case "delete":// 删除书籍break;case "update":// 修改书籍updateBook();break;case "exit":// 退出系统System.out.println("退出成功,期待您下次光临!");System.exit(0);break;default:System.err.println("您的命令输入有无,请重新确认!");}showCommand(); // 调用自己}/**修改书本信息。*/private static void updateBook() {if(BOOK_STORE.size() == 0 ){System.out.println("您现在根本没有任何栏目可以修改!");}else{queryBooks();System.out.println("===============欢迎您进入修改书本业务=================");while(true){System.out.print("请您输入修改书本的栏目:");String type = SYS_SCANNER.nextLine();// 1.判断是否存在该栏目if(BOOK_STORE.containsKey(type)){while(true){// 存在该栏目// 2.请输入要修改的书名System.out.print("请您输入修改书本的名称:");String name = SYS_SCANNER.nextLine();// 3.判断该栏目下是否存在该书本对象。// 根据栏目和书名去栏目下查询出这本书对象Book book = getBookByTypeAndName(type , name);if(book == null){System.err.println("您的输入的书名不存在,,请重新确认!");}else{// 书名正确了,开始正式修改System.out.println("请您输入修改书本的新名称:");String newName = SYS_SCANNER.nextLine();System.out.println("请您输入修改书本的新价格:");String newPrice = SYS_SCANNER.nextLine();System.out.println("请您输入修改书本的新作者:");String newAuthor = SYS_SCANNER.nextLine();book.setName(newName);book.setPrice(Double.valueOf(newPrice));book.setAuthor(newAuthor);queryBooks();System.out.println("您修改的书本成功,请看如上信息确认!");return; // 结束修改的方法!}}}else{// 不存在该栏目System.err.println("您输入的栏目不存在,请重新确认!");}}}}/*** 在某个栏目下,根据书名查询出这本书对象返回!* @param type  栏目名称* @param name  书名称* @return 书本对象*/public static Book getBookByTypeAndName(String type , String name){// 1.先提取这个栏目的橱柜,根据栏目提取它的值List<Book> books = BOOK_STORE.get(type);for (Book book : books) {// 如果本书的名称与要找的名称一样,该书就是我们要的,直接返回!if(book.getName().equals(name)){return book;}}return null;// 没有这本书}/**查询全部书本信息Map<String, List<Book>> BOOK_STORE = {type1=[b1, b2, b3] , type2=[b1] }*/private static void queryBooks() {System.out.println("===============欢迎您进入查询书本业务=================");if(BOOK_STORE.size() == 0){System.out.println("您的图书馆一本书都没有,请赶紧买书去!");}else{System.out.println("类型\t\t\t\t书名\t\t\t\t\t价格\t\t\t作者");BOOK_STORE.forEach((type , books) -> {System.out.println(type);// 遍历该类型下的橱柜中的全部书本对象for (Book book : books) {System.out.println("\t\t\t\t"+book.getName()+"\t\t\t"+book.getPrice()+"\t\t"+book.getAuthor());}});}}/**添加书本信息数据Map<String, List<Book>> BOOK_STORE = {type1=[] , }*/private static void addBook() {System.out.println("===============欢迎您进入添加书本业务=================");System.out.print("请您输入添加书本的栏目:");String type = SYS_SCANNER.nextLine();// 定义一个List集合用于指向栏目的橱柜// 这个橱柜变量要根据栏目是否存在来确定是用已经存在的橱柜,还是创建一个新橱柜!List<Book> books = null ;// 1.判断是否存在该栏目。if(BOOK_STORE.containsKey(type)) {// 3.存在该栏目// 直接得到该栏目存在的橱柜对象books = BOOK_STORE.get(type);}else{// 2.该栏目是第一次添加。// 为该栏目创建一个橱柜对象(List<Book>)books = new ArrayList<>();// 新橱柜和新栏目必须手工加入到图书馆!BOOK_STORE.put(type , books);}System.out.println("请您输入添加书本的名称:");String name = SYS_SCANNER.nextLine();System.out.println("请您输入添加书本的价格:");String price = SYS_SCANNER.nextLine();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 图书馆管理系统相关推荐

  1. 大一java图书馆管理系统课程设计

    大一java图书馆管理系统课程设计 代码仅供参考!!!仅供参考!!! 效果图如下 管理员用户名:123  密码123 密码错误的话进入项目resources文件夹有个LMS数据库,使用数据库客户端打开 ...

  2. 基于Java图书馆管理系统、JAVA图书借阅系统设计与实现 毕业设计开题报告

      本科生毕业论文 基于Java(springboot框架)图书馆管理系统 开题报告 学    院: 专    业: 计算机科学与技术 年    级: 学生姓名: 指导教师:   XXXX大学本科生毕 ...

  3. Java - 图书馆管理系统

    项目介绍:此项目的业务代码方面比较简单,实现的功能也比较简单,只有查找,删除,增加,借阅,归还书籍这些简单的操作.而借阅,归还等等也只是用书籍的一个boolean数据成员来保存.练习此项目的主要目的是 ...

  4. java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?

    前段时间学习完了MySQL和JDBC,想着自己做个东西实战一下,于是写了一个烂大街的图书管理系统...但好歹是自己一个人日夜兼程,硬着头皮做出来的还像样的东西,总结一手吧.看的人欢迎吐槽.我会从以下几 ...

  5. Java 图书馆 管理系统

    图书馆资源管理系统 1.数据模型 图书.光盘.图画 共有属性: 编号.标题.作者.评级(一般.儿童.成人等) 图书:出版社.ISBN.页数.年份 光盘:出品者.出品年份.视频时长 图画:出品国籍.作品 ...

  6. java 图书馆管理系统(超低配版)

    目录 图书管理系统要求 思路 show()方法 add()方法 search方法 delete()方法 代码 接口 Book类 Reader类 User类 Informatica类 BookList类 ...

  7. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java图书馆管理系统z3z90

    做毕业设计一定要选好题目.毕设想简单,其实很简单.这里给几点建议: 1:首先,学会收集整理,年年专业都一样,岁岁毕业人不同.很多人在做毕业设计的时候,都犯了一个错误,那就是不借鉴师兄师姐的经验,前人的 ...

  8. JAVA图书馆管理系统

    系统概述 图书管理是高校内每一个系部或院部都必须切实面对的工作,但一直以来人们使用传统的人工方式管理图书资料.这种方式存在着许多缺点,如效率低.保密性差且较为繁琐.另外,随着图书资料数量的增加,其工作 ...

  9. Java图书馆管理系统毕业设计、JAVA图书借阅系统设计与实现 毕设作品参考

    功能清单 [后台管理员功能] 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信息,支持删除 资讯分类:录入.修改.查看.删除资讯分类 录 ...

最新文章

  1. Java基础(二十七)Java IO(4)字符流(Character Stream)
  2. 为什么机器学习项目非常难管理?
  3. linux下configure命令详解
  4. 嵌入式驱动开发应具备的三大基础
  5. Autodesk Forge Viewer与Forge API Node.js客户端SDK的TypeScript声明文件发布!
  6. 任何抛开业务谈大数据量的sql优化都是瞎扯
  7. win7系统下的打印机不能扫描
  8. React的学习曲线
  9. 发表email所需要
  10. 数值溢出(arithmetic overflow)问题与解决方案
  11. [转]iOS技巧之获取本机通讯录中的内容,解析通讯录源代码
  12. 录计算机,电脑屏幕上的操作怎么录制下来?
  13. 《千字文》 梁•周兴嗣
  14. Spark Streaming 对比 Structured Streaming(及其内部的两种模式 MicroBatch Streaming VS Continous Streaming)
  15. sniperoj-pwn100-shellcode-x86-64
  16. 消息队列KafKa的集群部署
  17. java高并发synchronized学习
  18. GCP认证考试之BigQuery专题
  19. 产生瑞利分布的随机数 C语言实现
  20. 厉害了! 史上最牛的博士论文答辩……

热门文章

  1. Web大文件(视频)上传解决方案
  2. redux之reducer 为什么必须是纯函数?
  3. 软件测试面试题:测试的策略有哪些?
  4. 电子科技大学计算机导师李珂,电子科技大学计算机科学与工程学院导师介绍:宋超...
  5. oracle为表增加索引,【增加Oracle中表的索引】
  6. 如何将.ipynb文件转换为.py文件
  7. 5g信号服务器,5G网络创新论坛5G智能化,DPU如何赋能
  8. window.print打印指定div-打印网页指定区域
  9. 一些JavaScript特性
  10. java类加载器顺序_java中类的加载顺序介绍(ClassLoader)