要求完成一个商品租赁系统,该系统允许用户租赁商店里的的各种商品。 您将被要求创建一个Store类,Store类中保存了一个项目列表的引用。该列表(称为itemList)的类型是链表,它包含了商店里面所有项目。这些项目包括:书籍,杂志,DVD(电影),Blurays(电影),MusicCD。这些项目中的每一个物品都需要存储在列表(itemList)中。 要求你使用继承技术创建一个管理此系统的库类。允许除了添加或删除物品,查找一个物品。还要实现借用一件物品并能将其归还。如果借用的商品已经借出应该抛出ItemnotFound的异常。每个物品的信息应该可以写入磁盘中。编写测试程序以确保商品租赁系统的能够正常运行。
时间: 2023-06-26 11:03:19 浏览: 112
好的,这个任务涉及到面向对象的编程和异常处理。我将分步骤指导您完成这个任务。
首先,我们需要创建一个Item类来表示商店里面的物品。这个类应该至少包括以下属性:名称,描述,价格,和是否借出。我们可以使用一个布尔值来表示是否借出。
```python
class Item:
def __init__(self, name, description, price):
self.name = name
self.description = description
self.price = price
self.borrowed = False
```
接下来,我们需要创建各种不同类型的物品类,例如书籍,杂志,DVD,Blurays和MusicCD。这些类应该继承自Item类,并添加它们自己的属性和方法。例如,我们可以创建一个Book类来表示书籍,它应该至少包括作者和出版日期这两个属性。
```python
class Book(Item):
def __init__(self, name, description, price, author, publication_date):
super().__init__(name, description, price)
self.author = author
self.publication_date = publication_date
```
现在我们需要创建一个Store类来管理商店里的物品。这个类应该包括一个itemList属性来存储所有的物品。我们可以使用Python的列表来实现这个itemList。
```python
class Store:
def __init__(self, itemList):
self.itemList = itemList
```
接下来,我们需要实现一些方法来管理这个Store类。首先是添加和删除物品的方法。我们可以使用列表的append和remove方法来实现这些方法。
```python
class Store:
def __init__(self, itemList):
self.itemList = itemList
def add_item(self, item):
self.itemList.append(item)
def remove_item(self, item):
self.itemList.remove(item)
```
接下来,我们需要实现一个查找物品的方法。我们可以遍历itemList,并使用物品的名称来查找。
```python
class Store:
def __init__(self, itemList):
self.itemList = itemList
def add_item(self, item):
self.itemList.append(item)
def remove_item(self, item):
self.itemList.remove(item)
def find_item(self, name):
for item in self.itemList:
if item.name == name:
return item
return None
```
现在,我们需要实现借用和归还物品的方法。当用户借用一个物品时,我们需要将该物品的borrowed属性设置为True,并将它从itemList中删除。当用户归还一个物品时,我们需要将该物品的borrowed属性设置为False,并将它添加回itemList中。
```python
class Store:
def __init__(self, itemList):
self.itemList = itemList
def add_item(self, item):
self.itemList.append(item)
def remove_item(self, item):
self.itemList.remove(item)
def find_item(self, name):
for item in self.itemList:
if item.name == name:
return item
return None
def borrow_item(self, name):
item = self.find_item(name)
if item is None:
raise ItemNotFound
if item.borrowed:
raise ItemAlreadyBorrowed
item.borrowed = True
self.remove_item(item)
def return_item(self, name):
item = self.find_item(name)
if item is None:
raise ItemNotFound
if not item.borrowed:
raise ItemNotBorrowed
item.borrowed = False
self.add_item(item)
```
最后,我们需要实现一个将每个物品的信息写入磁盘的方法。我们可以使用Python的pickle模块来实现这个方法。
```python
import pickle
class Store:
def __init__(self, itemList):
self.itemList = itemList
def add_item(self, item):
self.itemList.append(item)
def remove_item(self, item):
self.itemList.remove(item)
def find_item(self, name):
for item in self.itemList:
if item.name == name:
return item
return None
def borrow_item(self, name):
item = self.find_item(name)
if item is None:
raise ItemNotFound
if item.borrowed:
raise ItemAlreadyBorrowed
item.borrowed = True
self.remove_item(item)
def return_item(self, name):
item = self.find_item(name)
if item is None:
raise ItemNotFound
if not item.borrowed:
raise ItemNotBorrowed
item.borrowed = False
self.add_item(item)
def save_items(self, filename):
with open(filename, 'wb') as f:
pickle.dump(self.itemList, f)
def load_items(self, filename):
with open(filename, 'rb') as f:
self.itemList = pickle.load(f)
```
现在我们已经完成了这个任务。我们可以编写一个测试程序来确保它能够正常运行。
```python
itemList = [Book("The Great Gatsby", "A classic novel", 10.99, "F. Scott Fitzgerald", "1925-04-10"),
DVD("The Godfather", "A classic movie", 9.99, "Francis Ford Coppola", 175),
MusicCD("Thriller", "A classic album", 8.99, "Michael Jackson", 9)]
store = Store(itemList)
store.borrow_item("The Great Gatsby")
store.borrow_item("The Godfather")
try:
store.borrow_item("Thriller")
except ItemNotFound:
print("Item not found")
store.return_item("The Godfather")
store.save_items("items.pkl")
store.load_items("items.pkl")
for item in store.itemList:
print(item.name, item.description, item.price, item.borrowed)
```
阅读全文