/**
* @param target
* 要查找的物品
* @return true|false 是否包含该物品 遍历父类链表,若找到该物品,返回真,找不到则返回假
*/
private boolean contains(Item target)
{
for (int i = 0; i < super.size(); i++)
{
Item current = super.get(i);
if (current.getName().equals(target.getName()))
{
return true;
}
}
return false;
}
/**
* @param target
* 要查找位置的物品
* @return position 该物品的位置 遍历父类链表,标记某物品所在的位置
*/
private int position(Item target)
{
for (int position = 0; position < super.size(); position++)
{
Item current = super.get(position);
if (current.getName().equals(target.getName()))
{
return position;
}
}
return -1;
}
/**
* 将物品信息写入 文件
*/
public void writeWords()
{
try
{
File file = new File("Item.txt");
FileWriter newFile = new FileWriter(file, true);
BufferedWriter writer = new BufferedWriter(newFile);
for (int i = 0; i < super.size(); i++)
{
Item temp = super.get(i);
writer.write(temp.getName());
writer.newLine();
writer.flush();
if (temp.isRent())
{
writer.write("rent");
}
else
{
writer.write("unrent");
}
writer.newLine();
writer.flush();
}
writer.close();
}
catch (IOException e)
{
System.out.println(e);
}
}
}
/**
*没有找到物品的异常类,对异常进行处理
*/ @SuppressWarnings("serial")
public class ItemNotFound extends Exception
{
/**
* @param message 没有找到物品异常
* 处理没有找到物品的异常,给出提示
*/
@SuppressWarnings("serial")
public class ItemNotFound extends Exception
{
public ItemNotFound(String message)
{
super(message);
System.out.println("异常!未找到物品");
// throw new IllegalArgumentException("异常!没有找到物品!");
}
}
/**
*对列表进行操作的库类,可通过名称直接对列表中的物品进行操作
*/ @SuppressWarnings("serial")
public class Store extends ItemList
{
/**
* 构造函数,对整个库中的物品赋初值,设定名字并添加
*/
Store()
{
String[] names = { "BOOKS", "MAGAZINES", "DVD", "BLURAYS", "MUSICCDS" };
for (int i = 0; i < names.length; i++)
{
Item item = new Item();
item.setName(names);
super.add(item);
}
}
/**
* @param name
* 要增加的物品的名称 在父类中增加指定名称的物品,将该名称封装在物品中后,调用父类addItem函数
*/
public void addItem(String name)
{
Item target = new Item(name);
super.addItem(target);
}
/**
* @param name
* 要查找的物品的名称
* @return true|false 是否成功找到 在父类中查找指定名称的物品,将该名称封装在物品中后,调用父类 searchItem函数
*/
public boolean searchItem(String name)
{
Item target = new Item(name);
return super.searchItem(target);
}
/**
* @param name
* 要删除的物品的名称 在父类中删除指定名称的物品,将该名称封装在物品中后,调用父类deleteItem函数
*/
public void deleteItem(String name)
{
Item target = new Item(name);
super.deleteItem(target);
}
/**
* @param name
* 要租用的物品的名称
* @return true|false 是否成功租用 租用指定名称的物品,将该名称封装在物品中后,调用父类 rentItem函数
*/
public boolean rentItem(String name)
{
Item target = new Item(name);
return super.rentItem(target);
}
/**
* @param name
* 要查找的物品的名称
* @return true|false 是否成功找到 归还定名称的物品,将该名称封装在物品中后,调用父类 returnItem函数
*/
public boolean returnItem(String name)
{
Item target = new Item(name);
return super.returnItem(target);
}
/**
* 调用父类writeWords函数,将所有商品信息写入文件
*/
public void write()
{
super.writeWords();
}
}
/**
*物品管理测试类,对列表中的每个函数,测试正茬昂和异常情况并输出结果
*/
public class StoreTest
{
public static void main(String[] args)
{
Store myStore = new Store();
myStore.write();
String[] names = { "BOOKS", "MAGAZINES", "DVD", "BLURAYS", "MUSICCDS" };
for (int i = 0; i < names.length; i++)
{
if (myStore.searchItem(names))
{
if (myStore.rentItem(names))
{
System.out.println("租借成功");
}
else
{
System.out.println("已被借用");
}
}
}
for (int i = 0; i < names.length; i++)
{
if (myStore.searchItem(names))
{
if (myStore.rentItem(names))
{
System.out.println("租借成功");
}
else
{
System.out.println("已被借用");
}
}
}
for (int i = 0; i < names.length; i++)
{
if (myStore.searchItem(names))
{
if (myStore.returnItem(names))
{
System.out.println("归还成功");
}
else
{
System.out.println("未成功归还");
}
}
}
for (int i = 0; i < names.length; i++)
{
if (myStore.searchItem(names))
{
System.out.println("找到!");
myStore.deleteItem(names);
}
}
for (int i = 0; i < names.length; i++)
{
if (myStore.searchItem(names))
{
System.out.println("找到!");
myStore.deleteItem(names);
}
else
{
myStore.addItem(names);
}
}
}
}