二、案例题目描述:
请实现一个简单的图书管理系统,要求如下:
1)定义图书类Book,具有属性账号id,书名name、作者author 和价格price,在创建图书对象时要求通过构造器进行创建,一次性将四个属性全部赋值,要求账户属性是int型,名称是String型,作者是String型,价格是double,请合理进行封装。
2)在Book类,添加toString方法,要求返回 图书信息字符串,使用\t隔开各信息
3)定义管理类Manager,定义添加图书的方法add,按书名修改价格的方法 update,按账号查询图书的方法query,要求返回Book类型。按作者查询的图书的方法 query,要求返回Book类型。查询所有图书的方法 showAll
4)按价格降序排序方法 sort
5)编写Test测试类,图书信息如下:
书号 书名 作者 价格
1001 红楼梦 张三 200
2002 西游记 李四 140.50
3003 三国演义 王五 130
4004 水浒传 赵六 83
5005 三个和尚 李四 50

依次做如下操作:
将五个图书信息录入到Manager;
调用修改方法, 西游记 的价格改为170
查询书号为3003的图书。
查询李四 写的图书信息
按价格排序
打印所有图书信息
1.案例完成思路要求:
(1)完成Book类的编写,进行合理封装。重写toString方法
(2)在Manaer类中定义一个集合对象,可以通过ArrayList进行实例化,此集合是用来存放储户Book对象的,私有此对象,提供setter、getter方法,在定义集合对象时请使用泛型。
(3)完成add\update \query方法
(4)编写测试类得到Manager类中的用户集合,通过迭代器进行遍历,在遍历时可以调用showAll方法进行控制台信息打印。
2.其他

(5)要求代码每个方法都有注释。

package BookCard;/**
*@author ShanHai:
*@version 创建时间:2021年8月19日 上午9:35:26
*/
public class Book implements Comparable<Book> {private int id;private String name;private String author;private double price;public Book(int id, String name, String author, double price) {super();this.id = id;this.name = name;this.author = author;this.price = price;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Book [id=" + id + " name=" + name +"\t"+"author=" + author + "\t"+"price=" + price + "]";}@Overridepublic int compareTo(Book o) {if(this.getPrice()>o.price){return -1;}else if(this.getPrice()<o.price){return 1;}else{return 0;}}}
package BookCard;import java.util.ArrayList;
import java.util.List;/**
*@author ShanHai:
*@version 创建时间:2021年8月19日 上午9:35:43
*/
public class Manager {private static final boolean Book = false;private List<Book> Books=new ArrayList<Book>();/*** 添加图书的方法*/public void add(Book b){Books.add(b);System.out.println("图书‘"+b+"’添加成功");}/*** 按书名修改价格的方法*/public void update(String name,double newPrice){for(int i=0;i<this.Books.size();i++){Book b=this.Books.get(i);if(name.equals(b.getName())){b.setPrice(newPrice);System.out.println("价格修改成功");System.out.println(b);}}}/*** 按编号查询图书*/public Book query(int id){Book e =null;for(Book e1 :this.Books){if(e1.getId()==id){e=e1;System.out.println(e);}}return e;}/*** 按作者查询图书的方法*/public Book query(String author){Book c=null;for (Book c1: this.Books){if(c1.getAuthor().equals(author)){c=c1;System.out.println(c);}}return c;}/*** 查询所有图书的方法*/public List<Book> showAll(){return this.Books;}
}
package BookCard;import java.util.Collections;
import java.util.List;/**
*@author ShanHai:
*@version 创建时间:2021年8月19日 上午9:35:48
*/
public class Tset {public static void main(String[] args) {//实例化Manager对象,对图书进行管理Manager manager =new Manager();//实例化book对象Book b1=new Book(1001, "红楼梦", "张三", 200);Book b2=new Book(2002, "西游记", "李四", 140.50);Book b3=new Book(3003, "三国演义", "王五", 130);Book b4=new Book(4004, "水浒传", "赵六", 83);Book b5=new Book(5005, "三个和尚", "李四", 50);//调用add方法manager.add(b1);manager.add(b2);manager.add(b3);manager.add(b4);manager.add(b5);//调用update方法manager.update("西游记",170);//调用查询价格的方法manager.query(3003);//调用作者查询方法manager.query("李四");//排序前List<Book> books=manager.showAll();manager.showAll();for(Book b:books){System.out.println(b);}//按价格排序System.out.println("*********排序后***********");Collections.sort(books);for ( Book b: books){System.out.println(b);}}
}

2021-08-19集合框架综合案例相关推荐

  1. java面向对象各章节教程_第二部分java面向对象编程第08章集合框架List1章节.ppt...

    如何使用无线网络 第8章 集合框架(1) 本章目标 掌握集合框架包含的内容 掌握ArrayList和LinkedList的使用 掌握HashMap的使用 掌握Iterator的使用 掌握泛型集合的使用 ...

  2. 2021/03/09~2021/08/19 统计

    1.流程类 1.上架流程: 确定包名(有申请第三方的app_name参数需要统一).创建项目: 格式化文件路径及命名:icon.svg/png(应用图标)像素文件夹.string(应用名称/布局链接) ...

  3. OPPO|后端工程师|一面 二面| 远程牛客面试 | 凉经 (2021/08/19 | 2021/09/01)

    一面: 自我介绍 为什么不投算法相关岗位 http协议状态码 http请求网页过程 应用层协议 微服务调用用了哪些协议 nacos担任了什么角色 请求转发策略,你会怎么实现 http协议头包含的字段, ...

  4. 27-集合进阶综合案例

    集合进阶综合案例 一.小案例:自动点名器 1.点名器:简单的随机点名 需求 班级里有N个学生,实现随机点名器. 测试类 package com.app.demo32_sets_test;import ...

  5. 第19章 集合框架(3)-Map接口

    第19章 集合框架(3)-Map接口 1.Map接口概述 Map是一种映射关系,那么什么是映射关系呢? 映射的数学解释 设A,B是两个非空集合,如果存在一个法则,使得对A中的每一个元素a,按法则f,在 ...

  6. Java集合之Collection集合、泛型 【集合综合案例:赌神、赌侠、赌神斗地主】

    第一章. Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. ...

  7. 2021年大数据Hive(十二):Hive综合案例!!!

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive综合案例 一.需求描述 二.项目表的字段 三.进 ...

  8. Python Appium自动化测试框架 综合实践案例(中)

    Time will tell. 本篇章紧接上一篇继续来分享关于 Appium 自动化测试框架综合实践案例代码.框架所需要的代码实现都已基本完成. data数据封装 1.使用背景 在实际项目过程中,我们 ...

  9. java项目斗地主介绍_详解java_ 集合综合案例:斗地主

    案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 案例分析 1.准备牌: 牌可以设计为一个Array ...

最新文章

  1. Go 语言编程 — go mod 依赖包管理
  2. 【Matlab 控制】利用 XY Graph 画图
  3. 计算机是如何启动的?从未上电到操作系统启动
  4. HBase基本概念与基本使用
  5. 哭!有人偷了我的漏洞报告,还冒领了奖金!
  6. 图解操作系统系列-概述
  7. 太实用了!Schedule模块, Python 周期任务神器!
  8. VBS好玩的整人小程序
  9. STM32 硬件IIC OLED
  10. 微信小程序入门4-扫普通二维码进入小程序、打开短链接进入小程序
  11. Hive 安全模式下 Prepare Plan 的时间分析
  12. 《实变函数简明教程》,P115,第14题(利用Lebesgue控制收敛定理求函数列Lebesgue积分的极限)
  13. 《Unity Shader入门精要》彩图版免费分享~~~~~
  14. 【转载】Microsoft 365 E5邮件API调用自动订阅无限续订服务
  15. 【终端快捷键】Linux terminal 终端常用快捷键
  16. 数据库设计-SQL Server开发实现学习
  17. form表单AJAX提交
  18. 【计算机二级等级考试】公共基础知识-学习笔记
  19. 仪表盘故障图像识别_仪表自动识别方法汇总
  20. 【官网原文】Android 7.0 行为变更

热门文章

  1. idea中配置rust遇到No Cargo projects found解决方案
  2. 用matlab实现女声变男声步骤,数字信号处理大作业——基于matlab R2019a的男声变女声资料汇总与代码...
  3. 【SMS】SMS协议介绍之IP-SM-GW
  4. Android里面的settext作用,android TextView setText无效
  5. java double 取余_java中double除法和取余的若干注意
  6. Ps 首选项设置建议
  7. 各种手机处理器排行榜_求手机处理器排行表,有哪些比较推荐?
  8. 5. java语言中对构造函数有哪些语法要求?_.在Java语言中,下面关于构造函数的描述正确的是()。...
  9. 我的世界无限钻石大陆服务器,我的世界有钻石大陆服务器的ip | 手游网游页游攻略大全...
  10. 阿里云ECS搭建ESP32开发环境