请实现一个简单的图书管理系统,要求如下:
1、 定义图书类Book,具有属性账号id,书名name、作者author 和 价格price,在创建图书对象时要求通过构造器进行创建,一次性将四个属性全部赋值,要求账户属性是int型,名称是String型,作者是String型,价格是double,在录入用户时账户属性值不可以重复。在创建好用户后,书名不能进行更改,只可以进行访问。其他请合理进行封装。
2、 在Book类,添加toString方法,要求返回 图书信息字符串,使用\t隔开各信息
3、 定义管理类Manager,定义添加图书的方法add,按书名修改价格的方法 update,按照账户删除图书的方法delete,按账号查询图书的方法query,要求返回Book类型。按作者查询的图书的方法 query,要求返回Book类型。查询所有图书的方法 showAll,按价格降序排序方法 sort
依次做如下操作:
Ø 将五个图书信息录入到Manager;
Ø 调用修改方法, 好好的奇妙冒险 的价格改为170
Ø 查询李奎 写的图书信息
Ø 删除 好好的奇妙冒险 对应的图书;
Ø 查询书号为1001的图书。
Ø 按价格排序
Ø 打印所有图书信息
首先来完成我们的图书类Book:
public class Book {
private int id; //书号
private String name; //书名
private String author; //作者
private double price; //价格
//有参构造
public Book(int id, String name, String author, double price) {
this.id = id;
this.name = name;
this.author = author;
this.price = price;
}
//getXXX和setXXX
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return 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;
}
/*
重写toString
*/
@Override
public String toString() {
return "Book{" + "书号:" + this.id +
"\t书名=《" +this.name+
"》\t作者='" + this.author+
"'\t单价=$" + this.price +
'}';
}
}
定义管理类Manager1 来定义我们的方法:
public class Manager1 {
//首先我们需要一个集合
List<Book> list=new ArrayList<Book>();
/*
* 增加方法
* Book
* */
public Boolean add(Book book){
return this.list.add(book);
}
/*
* 按书名修改价格的方法 update
* @书名 name
* @价格 price
* */
public Book update(String name,double price){
//遍历集合
for (int i = 0; i < list.size(); i++) {
// 找到相同的书名
Book book = list.get(i);
if (name.equals(book.getName())){
//如果 找到了就赋给价格新值
book.setPrice(price);
//返回 book
return book;
}
}
//否则空
return null;
}
/*
* 按照账户删除图书的方法delete
* @ id
* */
public void delete(int id){
//遍历集合
for (int i = 0; i < list.size(); i++) {
//找到ID
Book book = list.get(i);
if (id== book.getId()){
//删除图书
list.remove(i);
return;
}
}
}
/*
* 按照图书删除图书的方法delete
* @ name
* */
public void delete(String name) {
//遍历集合
for (int i = 0; i < list.size(); i++) {
//找到
Book book = list.get(i);
if (name.equals(book.getName())) {
//删除图书
list.remove(i);
}
}
}
/*
* 按账号查询图书的方法query
* @ id
* */
public Book query(int id){
for (int i = 0; i < list.size(); i++) {
Book book = list.get(i);
if (id==book.getId()){
return book;
}
}
return null;
}
/*
* 按作者查询的图书的方法 query
* @ 作者 author
* */
public ArrayList<Book> query(String author){
ArrayList<Book> books=new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Book book = list.get(i);
if (author.equals(book.getAuthor())){
books.add(book);
return books;
}
}
return null;
}
/*
* 查找所有图书信息
* */
public void showAll(){
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
/*
* 按价格降序排序方法 sort
* Collections
* */
public void sort(){
Collections.sort(this.list, new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
//转型
//(int) (o1.getPrice()-o2.getPrice()) 为升序
return -(int) (o1.getPrice()-o2.getPrice());
}
});
}
}
最后的测试类:
import java.util.ArrayList;
public class BookTest {
public static void main(String[] args) {
//new Manager
Manager1 manager1 = new Manager1();
Book book1= new Book(1001,"红楼梦","曹雪芹",270);
Book book2= new Book(1002,"金瓶梅","兰陵笑笑生",240);
Book book3= new Book(1003,"好好的奇妙冒险","李奎",200);
Book book4= new Book(1004,"张三的奇妙冒险","罗老师",220);
//将五个图书信息录入到Manager
manager1.add(book1);
manager1.add(book2);
manager1.add(book3);
manager1.add(book4);
//调用修改方法, <<好好的奇妙冒险>> 的价格改为170
Book book = manager1.update("好好的奇妙冒险", 170);
System.out.println(book);
//查询李奎 写的图书信息
System.out.println("查询李奎 写的图书信息 :");
ArrayList<Book> author = manager1.query("李奎");
System.out.println(author);
//删除 好好的奇妙冒险 对应的图书;
manager1.delete("好好的奇妙冒险");
System.out.println("删除后: ");
manager1.showAll();
//查询书号为1001的图书
System.out.println("查询书号为1001的图书: ");
Book query = manager1.query(1001);
System.out.println(query);
//按价格排序
System.out.println("按价格排序");
manager1.sort();
manager1.showAll();
}
}