用java编写一个程序,用于实现某书店图书的管理,具体功能如下定义一个Book类,用于描述图书的静态动态特征;定义一个集合,用于存储书店中所有的图书对象;提供全部图书信息的显示功能;提供根据书名的图书查找功能;提供买书功能,即买书后,集合中相应删除该图书对象;提供新进书功能,即书店购置了新的图书,相应的集合中应增加图书对象。要求:系统有清晰的提示信息便于用户使用;应定义书店类,并恰当设计成员变量与成员方法。提示:同一书名的图书允许有多本,如何进行区分?另,查找时根据书名进行查找,认为相同书名即相同,因此找到,所以Book类的equals方法是否需要重写,重写的话,其内容应是什么。
时间: 2024-03-17 15:40:34 浏览: 57
好的,下面是一个示例程序的实现过程:
Book类:
```java
public class Book {
private String bookName; // 书名
private String author; // 作者
private String publisher; // 出版社
private double price; // 价格
private int bookId; // 书籍编号,用于区分不同的图书对象
public Book(String bookName, String author, String publisher, double price, int bookId) {
this.bookName = bookName;
this.author = author;
this.publisher = publisher;
this.price = price;
this.bookId = bookId;
}
// getters and setters
// ...
// 重写equals方法,判断两个Book对象是否相等,这里只比较书名是否相等
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Book)) {
return false;
}
Book other = (Book) obj;
return Objects.equals(this.bookName, other.bookName);
}
@Override
public String toString() {
return "书名:" + bookName + ",作者:" + author + ",出版社:" + publisher + ",价格:" + price + "元,编号:" + bookId;
}
}
```
BookStore类:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class BookStore {
private List<Book> books; // 存储所有图书对象
public BookStore() {
books = new ArrayList<>();
}
// 显示全部图书信息
public void showAllBooks() {
if (books.isEmpty()) {
System.out.println("暂无图书信息!");
} else {
System.out.println("所有图书信息如下:");
for (Book book : books) {
System.out.println(book);
}
}
}
// 根据书名查找图书
public void findBookByName(String bookName) {
boolean found = false;
for (Book book : books) {
if (book.getBookName().equals(bookName)) {
System.out.println("查找成功!");
System.out.println(book);
found = true;
}
}
if (!found) {
System.out.println("未找到相应图书!");
}
}
// 买书
public void buyBook(String bookName) {
boolean found = false;
for (Book book : books) {
if (book.getBookName().equals(bookName)) {
books.remove(book);
System.out.println("购买成功!");
found = true;
break;
}
}
if (!found) {
System.out.println("未找到相应图书!");
}
}
// 新进书
public void addBook(Book book) {
books.add(book);
System.out.println("新进书成功!");
}
// 主程序,提供用户操作界面
public static void main(String[] args) {
BookStore bookStore = new BookStore();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 显示全部图书信息");
System.out.println("2. 根据书名查找图书");
System.out.println("3. 购买图书");
System.out.println("4. 新进图书");
System.out.println("0. 退出");
int choice = scanner.nextInt();
switch (choice) {
case 1:
bookStore.showAllBooks();
break;
case 2:
System.out.println("请输入书名:");
String bookName = scanner.next();
bookStore.findBookByName(bookName);
break;
case 3:
System.out.println("请输入要购买的书名:");
String bookNameToBuy = scanner.next();
bookStore.buyBook(bookNameToBuy);
break;
case 4:
System.out.println("请输入书名、作者、出版社、价格、编号(用空格分隔):");
String bookInfo = scanner.nextLine(); // 先读入空行
bookInfo = scanner.nextLine();
String[] bookInfoArray = bookInfo.split(" ");
Book newBook = new Book(bookInfoArray[0], bookInfoArray[1], bookInfoArray[2],
Double.parseDouble(bookInfoArray[3]), Integer.parseInt(bookInfoArray[4]));
bookStore.addBook(newBook);
break;
case 0:
System.out.println("退出系统!");
System.exit(0);
default:
System.out.println("无效操作,请重新选择!");
break;
}
}
}
}
```
这个示例程序实现了图书的管理,包括显示全部图书信息、根据书名查找图书、购买图书和新进图书等功能。在Book类中,重写了equals方法和toString方法,以便于后续的操作。在BookStore类中,使用List集合存储所有图书对象,并提供相应的操作方法。在主程序中,提供了用户操作界面,方便用户进行操作。
阅读全文