package com.soft863;
import java.util.Scanner;
public class GoodsService {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = 0;//下标记录添加了多少个商品
while (true) {
System.out.println("欢迎使用超市进销存系统1.0 ");
System.out.print("1.增加商品 ");
System.out.print("2.删除商品 ");
System.out.print("3.修改商品 ");
System.out.print("4.根据商品名称查询商品 ");
System.out.print("5.查询所有商品 ");
System.out.println("0.退出系统");
System.out.print("请选择:");
int choose = sc.nextInt();
switch (choose) {
//实现添加商品功能
case 1:
if (num >= 5) { //判断商品数量是否超过模拟数据库给的最大数量
System.out.println("商品已满无法继续添加");
}
System.out.println("请输入商品名称:");
DateBase.names[num] = sc.next();
System.out.println("请输入商品数量:");
DateBase.numbers[num] = sc.nextInt();
System.out.println("请输入商品价格:");
DateBase.moneys[num] = sc.nextDouble();
num++; //每输入一次商品数量+1
break;
case 2:
System.out.println("请输入需要删除的商品名称:");
String deleteName = sc.next();
boolean deleteFlag = false;
// 找到商品
for (int i = 0; i < DateBase.names.length; i++) {
if (deleteName.equals(DateBase.names[i])) {
deleteFlag = true;
//嵌套for循环 从外层找到对应下标第i位的商品 使j=i 循环使j后的数据往前覆盖 j需要小于数组长度减一 如果不减一推到最后一位就会下标越界
for (int j = i; j < DateBase.names.length - 1; j++) {
DateBase.names[j] = DateBase.names[j + 1];
DateBase.numbers[j] = DateBase.numbers[j + 1];
DateBase.moneys[j] = DateBase.moneys[j + 1];
}
//使数组最后一位的信息赋值为空
DateBase.names[DateBase.names.length - 1] = null;
DateBase.numbers[DateBase.numbers.length - 1] = 0;
DateBase.moneys[DateBase.moneys.length - 1] = 0.0;
System.out.println("删除成功");
num--;//每删除一次商品数量-1
break;
}
}
if (!deleteFlag) {
System.out.println("查无此商品");
}
break;
case 3:
System.out.println("请输入需要修改的商品名称:");
String updateName = sc.next();
boolean updateFlag = false;
int updateNum = 0; //重新定义修改商品的模拟数据库数组下标 从而覆盖原商品信息
//根据商品名称修改 首先通过查询功能查是否存在此商品
for (int i = 0; i < DateBase.names.length; i++) {
if (updateName.equals(DateBase.names[i])) {
updateFlag = true;
updateNum = i;
System.out.println("商品名称\t\t商品数量\t\t商品价格");
System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]);
break;
}
}
if (!updateFlag) {
System.out.println("查无此商品");
}
// 根据重新定义的修改商品的模拟数据库数组下标 输入覆盖原模拟数据库商品信息
System.out.println("请输入商品名称:");
DateBase.names[updateNum] = sc.next();
System.out.println("请输入商品数量:");
DateBase.numbers[updateNum] = sc.nextInt();
System.out.println("请输入商品价格:");
DateBase.moneys[updateNum] = sc.nextDouble();
break;
case 4:
System.out.println("请输入需要查询的商品名称:");
String findName = sc.next();
boolean findFlag = false;
//根据下标循环对比商品名和输入的商品名
for (int i = 0; i < DateBase.names.length; i++) {
if (findName.equals(DateBase.names[i])) {
findFlag = true; // 如果相等把布尔值等于真
System.out.println("商品名称\t\t商品数量\t\t商品价格");
System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]);
break;
}
}
if (!findFlag) { //如果不相等布尔值等于假 判断不相等
System.out.println("查无此商品");
}
break;
case 5:
//实现查询/显示全部商品
System.out.println("商品名称\t\t商品数量\t\t商品价格");
//根据下标循环输出模拟数据库中所有商品信息
for (int i = 0; i < DateBase.names.length && i < DateBase.numbers.length && i < DateBase.moneys.length; i++) {
if (DateBase.names[i] != null) //判断 只输出商品名称不为空的商品信息
System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]);
}
break;
case 0:
return;
}
}
}
}