Episode-6 做一个商品管理系统!【2】
在上一篇文章中,我们搭建了一个完成了一个简单的Java商品管理系统,并使用它进行了简单的商品查询和添加。现在,我们将继续完善这个系统,实现一些更高级的功能。
本期学习所需的前置知识
- 知道ArrayList是一个大类,里面提供了多种操作方法
- 知道如何使用remove方法删除数据
- 结合上一篇文章定义的javabean,理解修改数据的过程
先准备一个find方法
接下来的操作将会多次涉及到商品序号的查找,因此我们有必要写一个find方法,用于判断用户输入的序号是否合法,并返回ArrayList内部存储商品的序号,用于进一步的处理:
public static int find(ArrayList<item> items, int id){
int result = -1;
if (id > 0 && id < (items.size()+1)){
result = id - 1;
}
return result;
}
}
实现删除商品
我们已经介绍过ArrayList类,现在我们来尝试一下使用ArrayList里的remove方法。
ArrayList的remove方法可以有两种重载形式:一种是remove(int index),用于删除指定位置的元素,并返回被删除的元素;另一种是remove(Object o),用于删除列表中首次出现的指定元素(如果存在),并返回一个布尔值,表示元素是否存在于列表中并被成功删除。
而我们今天需要使用的,则是第一种形式。
public static void del(ArrayList<item> items){
System.out.println("请输入需要删除的商品的序号");
Scanner delin = new Scanner(System.in);
int id = delin.nextInt();
int index = find(items, id);
if (index >= 0){
item del = items.remove(index);
System.out.println("已经删除商品:" + del.getName() + ",该商品的价格为:" + del.getPrice() + " 元.");
} else {
System.out.println("删除失败,原因:需要操作的商品不存在.");
}
System.out.println();
}
使用第一种形式的remove方法,不仅能成功删除想要删除的数据,还能用一个临时的item容器将被删除的数据暂时存储起来,用以提示用户。
实现修改商品
实际上,ArrayList提供了一个用于修改元素的方法,即set()
方法,但这个方法只适用于元素只有单个属性的情况。然而,我们的商品“item”具有两个属性:商品名“name”和价格“price”。那么,要如何修改我们的商品呢?这个时候让我们回顾一下上一篇文章中,我们定义的item类:
package Item;
public class item{
private String name;
private int price;
public item(String name, int price){
this.name = name;
this.price = price;
}
public item(){
}
public String getName(){
return name;
}
public int getPrice(){
return price;
}
public void setName(String name){
this.name = name;
}
public void setPrice(int price){
this.price=price;
}
}
可以看到,我们早在刚刚开始的时候,就已经把获取和修改商品属性的方法写好了。
我们可以使用ArrayList里的get()
方法获取需要修改的商品,再调用我们自己定义的setName()
方法和getPrice()
方法来修改商品的属性。
具体的实现如下:
public static void set(ArrayList<item> items){
System.out.println("请输入需要修改的商品的序号");
Scanner setItem = new Scanner(System.in);
int id = setItem.nextInt();
setItem.nextLine();
int index = find(items, id);
if (index >= 0){
item operating = items.get(index);
System.out.println("正在操作的商品名:" + operating.getName() + ",该商品的价格为:" + operating.getPrice() + " 元.");
System.out.println("请输入新的商品名");
String newName = setItem.nextLine();
operating.setName(newName);
System.out.println("请输入新的价格");
int newPrice = setItem.nextInt();
operating.setPrice(newPrice);
System.out.println("修改成功,新的商品名:" + operating.getName() + ",新的价格为:" + operating.getPrice() + " 元.");
} else {
System.out.println("修改失败,原因:需要操作的商品不存在.");
}
System.out.println();
}
到了这一步,我们的商品管理系统的操作部分可以说是初步完成了。
接下来,我们需要再搭建一个用户界面,用于实现人机交互。
搭建一个用户界面
这一步比较简单,先打印一个简单的操作界面,再根据用户的输入调用相应的操作方法即可。
package User;
import java.util.Scanner;
import java.util.ArrayList;
import operation.Operation;
import Item.item;
public class user{
public static void main(String[] args){
ArrayList<item> items = new ArrayList<>();
while (true){
System.out.println("——————————欢迎使用商品管理系统!——————————");
System.out.println("1.查询当前商品");
System.out.println("2.增加商品");
System.out.println("3.删除商品");
System.out.println("4.修改商品");
System.out.println("5.退出系统");
int input = 0;
Scanner get = new Scanner(System.in);
input = get.nextInt();
switch (input){
case 1 :
Operation.query(items);
break;
case 2 :
Operation.add(items);
break;
case 3 :
Operation.del(items);
break;
case 4 :
Operation.set(items);
break;
case 5 :
System.out.println("已退出购买系统,欢迎下次光临!");
return;
default:
System.out.println("无效的操作编号");
System.out.println();
break;
}
}
}
}
至此,一个简单的商品管理系统大功告成!我们可以简单地使用命令行编译和运行这个简易的商品管理系统:
完整的代码可以从这里下载:商品管理系统完整代码