编写一个程序,用于实现某书店图书的管理,具体功能如下定义一个Book类,用于描述图书的静态动态特征;定义一个集合,用于存储书店中所有的图书对象;提供全部图书信息的显示功能;提供根据书名的图书查找功能;提供买书功能,即买书后,集合中相应删除该图书对象;提供新进书功能,即书店购置了新的图书,相应的集合中应增加图书对象。要求:系统有清晰的提示信息便于用户使用;应定义书店类,并恰当设计成员变量与成员方法。提示:同一书名的图书允许有多本,如何进行区分?另,查找时根据书名进行查找,认为相同书名即相同,因此找到,所以Book类的equals方法是否需要重写,重写的话,其内容应是什么。Java
时间: 2024-03-20 15:42:59 浏览: 93
好的,这是一个很好的问题。首先,我们需要定义一个 Book 类,该类用于描述图书的静态和动态特征。我们可以定义 Book 类如下:
```java
public class Book {
private String title; // 书名
private String author; // 作者
private String publisher; // 出版商
private int publishYear; // 出版年份
private double price; // 价格
// 构造函数
public Book(String title, String author, String publisher, int publishYear, double price) {
this.title = title;
this.author = author;
this.publisher = publisher;
this.publishYear = publishYear;
this.price = price;
}
// Getter 和 Setter 方法
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public int getPublishYear() {
return publishYear;
}
public void setPublishYear(int publishYear) {
this.publishYear = publishYear;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
// 重写 equals 方法,判断两个 Book 对象是否相等
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (!(obj instanceof Book)) return false;
Book other = (Book) obj;
return title.equals(other.title);
}
// 重写 toString 方法,返回 Book 对象的字符串表示
@Override
public String toString() {
return "Title: " + title + ", Author: " + author + ", Publisher: " + publisher +
", Publish Year: " + publishYear + ", Price: " + price;
}
}
```
接下来,我们需要定义一个集合,用于存储书店中所有的图书对象。我们可以使用 ArrayList 类来实现这一点。我们可以定义一个 BookStore 类,该类包含一个 ArrayList 对象和一些方法,用于管理图书。BookStore 类可以定义如下:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class BookStore {
private ArrayList<Book> books;
// 构造函数
public BookStore() {
this.books = new ArrayList<Book>();
}
// 添加新的图书
public void addBook(Book book) {
books.add(book);
System.out.println("已添加新的图书:\n" + book);
}
// 显示所有图书信息
public void displayAllBooks() {
if (books.size() == 0) {
System.out.println("书库中没有任何图书。");
} else {
System.out.println("书库中所有图书信息如下:");
for (Book book : books) {
System.out.println(book);
}
}
}
// 根据书名查找图书
public Book findBook(String title) {
for (Book book : books) {
if (book.getTitle().equals(title)) {
return book;
}
}
return null;
}
// 买书功能
public void buyBook(String title) {
Book book = findBook(title);
if (book == null) {
System.out.println("书库中没有这本书。");
} else {
books.remove(book);
System.out.println("已成功购买图书:\n" + book);
}
}
// 新进书功能
public void newBook() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入新书的信息:");
System.out.print("书名:");
String title = scanner.nextLine();
System.out.print("作者:");
String author = scanner.nextLine();
System.out.print("出版商:");
String publisher = scanner.nextLine();
System.out.print("出版年份:");
int publishYear = scanner.nextInt();
System.out.print("价格:");
double price = scanner.nextDouble();
Book book = new Book(title, author, publisher, publishYear, price);
addBook(book);
}
}
```
最后,我们可以编写一个测试类来测试我们的代码。测试类可以定义如下:
```java
import java.util.Scanner;
public class TestBookStore {
public static void main(String[] args) {
// 创建书店对象
BookStore store = new BookStore();
// 添加一些图书
store.addBook(new Book("Java程序设计", "张三", "清华大学出版社", 2019, 99.0));
store.addBook(new Book("Python编程基础", "李四", "人民邮电出版社", 2020, 89.0));
store.addBook(new Book("C++编程思想", "王五", "机械工业出版社", 2018, 109.0));
// 显示所有图书信息
store.displayAllBooks();
// 根据书名查找图书
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要查找的书名:");
String title = scanner.nextLine();
Book book = store.findBook(title);
if (book == null) {
System.out.println("书库中没有这本书。");
} else {
System.out.println("找到了这本书:\n" + book);
}
// 购买图书
System.out.print("请输入要购买的书名:");
title = scanner.nextLine();
store.buyBook(title);
// 添加新的图书
store.newBook();
// 显示所有图书信息
store.displayAllBooks();
}
}
```
这样,我们就完成了一个简单的图书管理系统。
阅读全文