要求:
完成以下功能,实现效果如图(要求:1.添加商品编号不能重复2.删除和退出时都应给出提示,用户确定后,再删除3.可借用我们的Utility来优化用户体验)
大概功能:
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1
==========商品库存清单==========
商品编号 商品名称 商品单价
9001 少林寺酥饼核桃 120.0
9002 尚康杂粮牡丹饼 20.0
9003 新疆原产哈蜜瓜 7.0
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
2
请输入新水果的名称:
红心柚子
请输入新水果的编号:
9004
请输入新水果的单价:
16
新商品已添加成功!
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1
==========商品库存清单==========
商品编号 商品名称 商品单价
9001 少林寺酥饼核桃 120.0
9002 尚康杂粮牡丹饼 20.0
9003 新疆原产哈蜜瓜 7.0
9004 红心柚子 16.0
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
3
请输入您要删除的水果编号
9004
你确定要删除该水果吗?(y/n)
Y
水果信息删除完毕!
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1
==========商品库存清单==========
商品编号 商品名称 商品单价
9001 少林寺酥饼核桃 120.0
9002 尚康杂粮牡丹饼 20.0
9003 新疆原产哈蜜瓜 7.0
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
4
请输入您要修改信息的水果编号:
9003
请输入新的水果编号:
9004
请输入新的水果名称:
究极哈密瓜
请输入新的水果单价:
25
水果信息更新完毕!
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1
==========商品库存清单==========
商品编号 商品名称 商品单价
9001 少林寺酥饼核桃 120.0
9002 尚康杂粮牡丹饼 20.0
9004 究极哈密瓜 25.0
==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
5
你确定要退出吗?(y/n)
Y
您已退出系统
在这里因为有增删改查的功能,所以我们先创建一个类,来定义这些属性。
定义类:
public class Pro {
private String num; //商品编号
private String name; //商品名称
private double price; //商品单价
public Pro() {
}
public Pro(String num, String name, double price) {
this.num = num;
this.name = name;
this.price = price;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
创建完定义类后,我们在创建一个java文件用来做测试,在这里我们先定义属性,在构造有参无参方法,在构造get、set方法。
随后我们按照它的要求一步一步的来,首先我们将它要求的基本信息录入,因为在这里这个商品信息是不确定的,所以我们不能有数组来录入它的信息,在这里我们用ArrayList创建集合,因为集合的底层是数组实现的,长度可以变化 。
然后录入:
public static void main(String[] args) {
ArrayList<Pro> array = new ArrayList<>();
Pro p1 = new Pro();
p1.setName("少林寺酥饼核桃");
p1.setNum("9001");
p1.setPrice(120.0);
Pro p2 = new Pro();
p2.setName("尚康杂粮牡丹饼");
p2.setNum("9002");
p2.setPrice(20.0);
Pro p3 = new Pro();
p3.setName("新疆原产哈蜜瓜");
p3.setNum("9003");
p3.setPrice(7.0);
然后将录入的信息添加到集合中去:
array.add(p1);
array.add(p2);
array.add(p3);
之后我们再实现商品查看功能,还有程序选择功能,因为在这里我们要多次进行增删改查功能,所以在这里我们用死循环,先输出程序开始界面,在这里我们在进行选择:
之后通过条件语句Switch,根据用户不同的选择,调用不同的方法从而实现不同的功能,
while (true) {
System.out.println("==========欢迎光临 oracle 超市==========");
System.out.println("1. 货物清单");
System.out.println("2. 添加新货物");
System.out.println("3. 删除货物");
System.out.println("4. 修改货物");
System.out.println("5. 退出系统");
System.out.println("请您输入要操作的功能序号:");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
switch (i) {
case 1:
findarray(array);
break;
case 2:
addarray(array);
break;
case 3:
deletearray(array);
break;
case 4:
updateStudent(array);
break;
case 5:
tui();
}
}
功能1:货物清单。按照要求,将初始页面输出,这里我们通过遍历集合就可以得到集合中的所有数据。
private static void findarray(ArrayList<Pro> array) {
System.out.println("==========商品库存清单==========");
System.out.println("商品编号\t\t\t商品名称\t\t\t\t商品价格");
for (int i = 0; i < array.size(); i++) {
Pro s = array.get(i);
System.out.println(s.getNum() + "\t\t\t" + s.getName() + "\t\t" + s.getPrice());
}
}
功能2:添加新货物。在这里我是用了两个方法,第一个方法是通过创建对象,通过set方法给这个对象赋值,最后天极爱到这个集合中去,而第二个方法就是判断,新添加的商品的编号,是否重复,在这里我们也是通过一个死循环来方便我们的添加。
public static void addarray(ArrayList<Pro> array) {
//键盘录入商品对象所需要的数据,显示提示信息,提示要输入何种信息
Scanner sc = new Scanner(System.in);
String num;
while (true) {
System.out.println("请输入新水果的商品编号:");
num = sc.nextLine();
boolean flag = isUsed(array, num);
if (flag) {
System.out.println("你输入的商品编号已经被占用,请重新输入!");
} else {
break;
}
}
System.out.println("请输入新水果的名称:");
String name = sc.nextLine();
System.out.println("请输入新水果的价格:");
double price = sc.nextDouble();
//创建新的对象,把键盘录入的数据赋值给对象的成员变量
Pro p = new Pro();
p.setName(name);
p.setNum(num);
p.setPrice(price);
array.add(p);
System.out.println("新商品已添加成功!");
}
//定义一个方法,判断商品编号是否被使用
public static boolean isUsed(ArrayList<Pro> array, String num) {
//如果与集合中的某一个商品编号相同,返回true;如果都不相同,返回false
boolean flag = false;
for (int i = 0; i < array.size(); i++) {
Pro s = array.get(i);
if (s.getNum().equals(num)) {
flag = true;
break;
}
}
return flag;
}
功能3:删除货物信息。首先接受要删除的货物编号,通过遍历集合进行寻找,如果找的这个信息,就往下执行,没有就输出编号错误。根据要求,在删除前再次进行删除询问,然后给出提示信息。
public static void deletearray(ArrayList<Pro> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要删除的水果编号:");
String s = sc.nextLine();
int a = -1;
for (int i = 0; i < array.size(); i++) {
Pro p = array.get(i);
if (p.getNum().equals(s)) {
a = i;
break;
}
}
if (a == -1) {
System.out.println("你输入的编号有误!");
return;
}
System.out.println("你确定要删除该水果吗?(y/n)");
String ss = sc.nextLine();
if (ss.equals("y")) {
array.remove(a);
System.out.println("水果信息删除完毕!");
} else {
return;
}
}
功能4:修改货物信息。大体方法一致,首先通过键盘录入接受这些数据,其次创建一个对象,通过set方法进行赋值,在通过遍历寻找要修改的信息再用array.set方法添加到集合中去。
public static void updateStudent(ArrayList<Pro> array) {
Scanner sc = new Scanner(System.in);
//键盘录入要修改的水果编号,显示提示信息
System.out.println("请输入您要修改信息的水果编号:");
String s = sc.nextLine();
//录入修改的信息
System.out.println("请输入新的水果编号:");
String num = sc.nextLine();
System.out.println("请输入新的水果名称:");
String name = sc.nextLine();
System.out.println("请输入新的水果单价:");
double price = sc.nextDouble();
//创建对象
Pro a = new Pro();
a.setNum(num);
a.setName(name);
a.setPrice(price);
for (int i = 0; i < array.size(); i++) {
Pro p = array.get(i);
if (p.getNum().equals(s)) {
array.set(i, a);
}
}
System.out.println("水果信息更新完毕!");
}
功能5:退出系统。在这里根据要求给与相应的提示,通过键盘录入得到结果,而System.exit(0);
是退出JVM的代码,用户确定退出,则输出提示语句,进行退出。
public static void tui() {
Scanner sc = new Scanner(System.in);
System.out.println("你确定要退出吗?(y/n)");
String s = sc.nextLine();
if (s.equals("y")) {
System.out.println("您已退出系统");
System.exit(0);
} else if (s.equals("n")) {
return;
}
}