使用所学知识编写一个java基于控制台的购书系统,实现购书功能。输出所有图书的信息:包括每本书的编号、书名、单价、库存。 顾客购买书时,根据提示输入图书编号来选购需要的书,并根据提示输入购买书的的数量。 购买完毕后输出顾客的订单信息,包括:订单号、订单明细、订单总额。
时间: 2024-10-14 15:03:38 浏览: 7
好的,我们可以创建一个简单的Java控制台应用来模拟购书系统的功能。首先,我们需要定义一个Book类表示图书,包含编号、书名、单价和库存属性。然后我们创建一个Customer类代表顾客,有订单号和订单明细属性。这里是一个基础的实现:
```java
class Book {
private int bookId;
private String title;
private double price;
private int stock;
public Book(int id, String name, double price, int stock) {
this.bookId = id;
this.title = name;
this.price = price;
this.stock = stock;
}
// getters and setters
@Override
public String toString() {
return "Book{" +
"bookId=" + bookId +
", title='" + title + '\'' +
", price=" + price +
", stock=" + stock +
'}';
}
}
class Customer {
private int orderId;
private Map<Integer, Integer> orderDetails;
public Customer() {
this.orderId = generateOrderId();
this.orderDetails = new HashMap<>();
}
// getters, setters, and methods to add books to the order
private int generateOrderId() {
// Generate a unique order ID (not shown here)
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("Order{\n");
sb.append("\tID: ").append(orderId).append("\n");
for (Map.Entry<Integer, Integer> entry : orderDetails.entrySet()) {
sb.append("\tBook " + entry.getKey() + ": " + entry.getValue() + " copies, Total: $" + (entry.getValue() * entry.getKey()));
sb.append("\n");
}
sb.append("}");
return sb.toString();
}
}
public class Main {
public static void main(String[] args) {
List<Book> books = Arrays.asList(
new Book(1, "Book1", 20.0, 5),
new Book(2, "Book2", 15.0, 10),
// Add more books as needed
);
Customer customer = new Customer();
while (true) {
System.out.println("Books:");
for (Book book : books) {
System.out.println(book);
}
System.out.print("Enter book ID to buy or 'quit' to exit: ");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
if ("quit".equals(input)) {
break;
} else {
try {
int bookId = Integer.parseInt(input);
if (books.stream().anyMatch(book -> book.getBookId() == bookId)) {
System.out.print("Enter quantity to purchase: ");
int quantity = scanner.nextInt();
if (quantity <= books.get(bookId - 1).getStock()) {
books.get(bookId - 1).setStock(books.get(bookId - 1).getStock() - quantity);
customer.addBookToOrder(bookId, quantity);
System.out.println("Purchased successfully.");
} else {
System.out.println("Insufficient stock.");
}
} else {
System.out.println("Invalid book ID.");
}
} catch (NumberFormatException e) {
System.out.println("Invalid input. Please enter a number.");
}
}
}
System.out.println("\nCustomer's Order:\n" + customer);
}
}
```
在这个示例中,`main`函数中有一个无限循环,询问用户是否购买书籍。用户输入书的编号并指定购买数量,如果库存充足则购买成功,否则显示不足。最后,程序会打印出顾客的订单信息。
阅读全文