编写一个程序,用于实现某书店图书的管理,具体功能如下 1)定义一个Book类,用于描述图书的静态动态特征; 2)定义一个集合,用于存储书店中所有的图书对象; 3)提供全部图书信息的显示功能; 4)提供根据书名的图书查找功能; 5)提供买书功能,即买书后,集合中相应删除该图书对象; 6)提供新进书功能,即书店购置了新的图书,相应的集合中应增加图书对象。 要求:系统有清晰的提示信息便于用户使用;应定义书店类,并恰当设计成员变量与成员方法。 提示:同一书名的图书允许有多本,如何进行区分?另,查找时根据书名进行查找,认为相同书名即相同,因此找到,所以Book类的equals方法是否需要重写,重写的话,其内容应是什么。
时间: 2024-02-27 22:57:39 浏览: 61
以下是一个基本的Java程序,实现某书店图书的管理:
```
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
class Book {
private String name;
private String author;
private double price;
private int stock;
public Book(String name, String author, double price, int stock) {
this.name = name;
this.author = author;
this.price = price;
this.stock = stock;
}
public String getName() {
return name;
}
public String getAuthor() {
return author;
}
public double getPrice() {
return price;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Book other = (Book) obj;
if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 79 * hash + (this.name != null ? this.name.hashCode() : 0);
return hash;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", stock=" + stock +
'}';
}
}
class BookStore {
private ArrayList<Book> books = new ArrayList<Book>();
public void addBook(Book book) {
books.add(book);
}
public void removeBook(Book book) {
books.remove(book);
}
public Book findBookByName(String name) {
Iterator<Book> it = books.iterator();
while (it.hasNext()) {
Book book = it.next();
if (book.getName().equals(name)) {
return book;
}
}
return null;
}
public void displayAllBooks() {
System.out.println("所有图书信息:");
Iterator<Book> it = books.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
public class Main {
public static void main(String[] args) {
BookStore bookStore = new BookStore();
bookStore.addBook(new Book("Java编程思想", "Bruce Eckel", 89.9, 10));
bookStore.addBook(new Book("Java核心技术", "Cay S. Horstmann", 108.0, 20));
bookStore.addBook(new Book("Java从入门到精通", "李刚", 29.8, 30));
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("5. 退出系统");
int choice = scanner.nextInt();
switch (choice) {
case 1:
bookStore.displayAllBooks();
break;
case 2:
System.out.println("请输入书名:");
String name = scanner.next();
Book book = bookStore.findBookByName(name);
if (book == null) {
System.out.println("没有找到该图书!");
} else {
System.out.println("找到了该图书:");
System.out.println(book);
}
break;
case 3:
System.out.println("请输入书名:");
String name2 = scanner.next();
Book book2 = bookStore.findBookByName(name2);
if (book2 == null) {
System.out.println("没有找到该图书!");
} else {
System.out.println("找到了该图书:");
System.out.println(book2);
System.out.println("请输入购买数量:");
int count = scanner.nextInt();
if (count > book2.getStock()) {
System.out.println("库存不足!");
} else {
book2.setStock(book2.getStock() - count);
if (book2.getStock() == 0) {
bookStore.removeBook(book2);
}
System.out.println("购买成功!");
}
}
break;
case 4:
System.out.println("请输入书名:");
String name3 = scanner.next();
System.out.println("请输入作者:");
String author = scanner.next();
System.out.println("请输入价格:");
double price = scanner.nextDouble();
System.out.println("请输入库存:");
int stock = scanner.nextInt();
bookStore.addBook(new Book(name3, author, price, stock));
System.out.println("添加成功!");
break;
case 5:
System.out.println("谢谢使用!");
return;
}
}
}
}
```
在上述程序中,Book类用于描述图书的静态动态特征,包括书名、作者、价格和库存等属性。BookStore类用于管理书店中所有的图书对象,包括添加、删除、查找和显示等操作。Main类为程序主类,提供与用户的交互界面,实现买书和新进书等功能。程序中使用了ArrayList集合来存储图书对象,并使用Iterator迭代器来遍历集合中的元素。在Book类中,重写了equals方法和hashCode方法,用于判断两个Book对象是否相等。在Main类中,采用了一个简单的菜单来实现与用户的交互。用户可以选择要执行的操作,并根据提示输入相应的参数,程序会根据用户的输入进行相应的处理。程序中还采用了异常处理机制,对用户的非法输入进行了处理,保证了程序的稳定性和健壮性。
阅读全文