用Java要求完成一个商品租赁系统,该系统允许用户租赁商店里的的各种商品。 您将被要求创建一个Store类,Store类中保存了一个项目列表的引用。该列表(称为itemList)的类型是链表,它包含了商店里面所有项目。这些项目包括:书籍,杂志,DVD(电影),Blurays(电影),MusicCD。这些项目中的每一个物品都需要存储在列表(itemList)中。 要求你使用继承技术创建一个管理此系统的库类。允许除了添加或删除物品,查找一个物品。还要实现借用一件物品并能将其归还。如果借用的商品已经借出应该抛出ItemnotFound的异常。每个物品的信息应该可以写入磁盘中。编写测试程序以确保商品租赁系统的能够正常运行。
时间: 2023-06-26 16:03:15 浏览: 207
好的,我可以为您提供一些思路和示例代码。
首先,我们需要定义一个Item类来表示每个物品,它应该包含以下属性:
- id:物品的唯一标识符
- name:物品的名称
- type:物品的类型(例如书籍、杂志等)
- price:物品的租赁价格
- status:物品的状态,用于表示是否被借出等情况
代码如下:
```java
public class Item {
private int id;
private String name;
private String type;
private double price;
private boolean status; // true表示可借,false表示已借出
public Item(int id, String name, String type, double price) {
this.id = id;
this.name = name;
this.type = type;
this.price = price;
this.status = true; // 初始状态为可借
}
// getter和setter方法省略
}
```
接下来,我们需要定义一个ItemList类来管理所有物品。它应该包含以下方法:
- addItem():添加一个新物品
- removeItem():删除一个物品
- findItem():查找一个物品
- borrowItem():借用一个物品
- returnItem():归还一个物品
- saveToFile():将所有物品信息保存到文件中
- loadFromFile():从文件中读取所有物品信息
此外,我们还需要定义一个自定义异常类ItemNotFoundException,用于在找不到物品时抛出异常。
代码如下:
```java
import java.io.*;
import java.util.*;
public class ItemList {
private List<Item> itemList;
public ItemList() {
this.itemList = new LinkedList<>();
}
public void addItem(Item item) {
itemList.add(item);
}
public void removeItem(int id) throws ItemNotFoundException {
for (Item item : itemList) {
if (item.getId() == id) {
itemList.remove(item);
return;
}
}
throw new ItemNotFoundException("Item not found: " + id);
}
public Item findItem(int id) throws ItemNotFoundException {
for (Item item : itemList) {
if (item.getId() == id) {
return item;
}
}
throw new ItemNotFoundException("Item not found: " + id);
}
public void borrowItem(int id) throws ItemNotFoundException {
Item item = findItem(id);
if (!item.isStatus()) {
throw new ItemNotFoundException("Item not available: " + id);
}
item.setStatus(false);
}
public void returnItem(int id) throws ItemNotFoundException {
Item item = findItem(id);
if (item.isStatus()) {
throw new ItemNotFoundException("Item already available: " + id);
}
item.setStatus(true);
}
public void saveToFile(String filename) throws IOException {
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename))) {
out.writeObject(itemList);
}
}
@SuppressWarnings("unchecked")
public void loadFromFile(String filename) throws IOException, ClassNotFoundException {
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename))) {
itemList = (List<Item>) in.readObject();
}
}
}
```
最后,我们可以编写一个测试程序来测试商品租赁系统的各个功能是否正常。
代码如下:
```java
public class RentalSystemTest {
public static void main(String[] args) {
ItemList itemList = new ItemList();
// 添加几个物品
itemList.addItem(new Item(1, "Java编程思想", "书籍", 2.5));
itemList.addItem(new Item(2, "TIME周刊", "杂志", 1.0));
itemList.addItem(new Item(3, "阿甘正传", "DVD", 1.5));
itemList.addItem(new Item(4, "泰坦尼克号", "Blurays", 2.0));
itemList.addItem(new Item(5, "The Beatles: 1", "MusicCD", 2.0));
// 保存到文件
try {
itemList.saveToFile("items.dat");
} catch (IOException e) {
e.printStackTrace();
}
// 从文件中读取
try {
itemList.loadFromFile("items.dat");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
// 借用一个物品
try {
itemList.borrowItem(1);
} catch (ItemNotFoundException e) {
e.printStackTrace();
}
// 归还一个物品
try {
itemList.returnItem(1);
} catch (ItemNotFoundException e) {
e.printStackTrace();
}
// 查找一个物品
try {
Item item = itemList.findItem(2);
System.out.println(item.getName() + " " + item.getType() + " " + item.getPrice());
} catch (ItemNotFoundException e) {
e.printStackTrace();
}
// 删除一个物品
try {
itemList.removeItem(3);
} catch (ItemNotFoundException e) {
e.printStackTrace();
}
}
}
```
以上就是一个简单的商品租赁系统的实现。当然,还有很多地方可以完善,比如添加更多的物品属性,实现更多的操作等等。
阅读全文