复习简单的图书管理系统小项目

本文详细介绍了如何设计并实现一个图书管理系统,包括定义图书类Book,实现增删查改功能,以及按价格排序等操作。通过具体代码示例,展示了Java面向对象编程的实践应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请实现一个简单的图书管理系统,要求如下:

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();
    }
}

控制台:

在这里插入图片描述

图书管理系统设计” 1、问题描述 定义图类,属性有:名、出版社、ISBN 号、作者、库存量、价格等信息和相关的 对属性做操作的行为。 主要完成对图的销售、统计和图简单管理。 2、功能要求 (1)销售功能。购买籍时,输入相应的 ISBN 号,并在库中查找该的相关信息。 如果有库存量,输入购买的册数,进行相应计算。如果库存量不够,给出提示信息,结束购 买。 (2)图简单管理功能。 添加功能:主要完成图信息的添加,要求 ISBN 号唯一。当添加了重复的编号时,则 提示数据添加重复并取消添加。 查询功能:可按名、ISBN 号、作者、出版社进行查询。若存在相应信息,输出所查 询的信息,若不存在该记录,则提示“该标题不存在! ” 。 修改功能:可根据查询结果对相应的记录进行修改,修改时注意 ISBN 号的唯一性。 删除功能:主要完成图信息的删除。输入要删除的 ISBN 号,根据编号删除该物品的 记录,如果该编号不在物品库中,则提示“该编号不存在” 。 (3)统计功能。 输出当前库中所有图的总数及详细信息;可按的价格、库存量、作者、出版社进 行统计,输出统计信息时,要按从大到小进行排序。 (7)图存盘:将当前程序中的图信息存入文件中。 (8)读出信息:从文件中将图信息读入程序
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值