使用面向对象的知识开发基于控制台的购书系统(BuyBookSys)。具体要求如下: (1)输出所有图书的信息:包括每本图书的图书编号、图书名称、图书单价和库存数量。 (2)顾客购买图书:根据提示输入图书编号来购买图书,并根据提示输入购买图书数量(用户必须连续购书三次)。 (3)购书完毕后输出顾客的订单信息:包括订单号、订单明细、订单总额和订单日期。
时间: 2023-12-05 20:03:28 浏览: 24
好的,根据您的要求,我可以给您提供一个基于控制台的购书系统的代码示例,代码如下:
```python
import random
import datetime
class Book:
def __init__(self, id, name, price, stock):
self.id = id
self.name = name
self.price = price
self.stock = stock
class Order:
def __init__(self, order_id, order_items, total_price):
self.order_id = order_id
self.order_items = order_items
self.total_price = total_price
self.order_date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
class BuyBookSys:
def __init__(self):
self.books = []
self.orders = []
self.order_id = 1001
self.customer_id = 1
self.current_customer_orders = []
self.total_price = 0
def add_book(self, book):
self.books.append(book)
def show_books(self):
print("图书编号\t图书名称\t图书单价\t库存数量")
for book in self.books:
print(f"{book.id}\t\t{book.name}\t{book.price}\t\t{book.stock}")
def buy_book(self):
book_id = input("请输入图书编号:")
book = self.find_book_by_id(book_id)
if book == None:
print("输入的图书编号不存在,请重新输入!")
return
quantity = int(input("请输入购买数量:"))
if quantity > book.stock:
print("库存不足,请重新输入!")
return
order_item = {"book_id": book.id, "book_name": book.name, "quantity": quantity, "price": book.price}
self.current_customer_orders.append(order_item)
self.total_price += quantity * book.price
book.stock -= quantity
print("购买成功!")
def find_book_by_id(self, book_id):
for book in self.books:
if book.id == book_id:
return book
return None
def checkout(self):
if len(self.current_customer_orders) < 3:
print("购买次数不足,无法结账!")
return
order = Order(self.order_id, self.current_customer_orders, self.total_price)
self.orders.append(order)
self.order_id += 1
print(f"订单号:{order.order_id}")
for item in order.order_items:
print(f"{item['book_name']}\t{item['quantity']}\t{item['price']}")
print(f"订单总额:{order.total_price}")
print(f"订单日期:{order.order_date}")
self.current_customer_orders = []
self.total_price = 0
def run(self):
while True:
print("欢迎使用购书系统!")
print("1.查看所有图书信息")
print("2.购买图书")
print("3.结账")
print("4.退出系统")
choice = input("请选择操作:")
if choice == "1":
self.show_books()
elif choice == "2":
self.buy_book()
elif choice == "3":
self.checkout()
elif choice == "4":
print("感谢使用购书系统,再见!")
break
else:
print("输入有误,请重新输入!")
if __name__ == '__main__':
book_sys = BuyBookSys()
book_sys.add_book(Book("001", "Python程序设计", 68.0, 50))
book_sys.add_book(Book("002", "Java程序设计", 78.0, 30))
book_sys.add_book(Book("003", "C++程序设计", 88.0, 20))
book_sys.run()
```
这个购书系统使用了面向对象的思想,将图书和订单分别封装成了类。其中,Book类表示图书,包括图书编号、图书名称、图书单价和库存数量;Order类表示订单,包括订单号、订单明细、订单总额和订单日期。BuyBookSys类表示购书系统,包括添加图书、显示所有图书信息、购买图书、结账等功能。在购买图书时,用户必须连续购书三次才能结账。
您可以运行这个购书系统的代码示例,体验一下它的功能。希望能对您有所帮助!