利用java实现商品管理系统,主要利用二维动态数组,二维数组里面存空间为4的一维数组的地址值,然后添加商品时扩容,删除商品时候缩容
具有的功能1.添加商品信息2. 查看商品信息3. 最贵商品信息4. 商品进行排序 5.删除商品信息 6.退出管理系统
主要的成员变量有
//静态成员方法属于类的大家都可以用 static Scanner sc = new Scanner(System.in); //定义一个静态二维数组存储商品 //这样每个方法更改后值都是会变的 不是静态则不可 static String[][] arr = new String[0][4]; //记录索引 static int index = 0;
//打印表头信息 private static void print(){ System.out.println("-----------欢迎来到商品管理系统-----------"); System.out.println(" 1:添加商品信息 "); System.out.println(" 2:查看商品信息 "); System.out.println(" 3:最贵商品信息 "); System.out.println(" 4:商品进行排序 "); System.out.println(" 5:删除商品信息 "); System.out.println(" 6:退出管理系统 "); System.out.println("---------------------------------------"); }
//账号密码进行登录 private static void user(){ int count = 3; while(true){ Scanner s = new Scanner(System.in); System.out.println("尊敬的管理员"); System.out.println("请输入你的账号:"); String x = s.nextLine(); System.out.println("请输入你的密码:"); String y = s.nextLine(); if (x.equals("蔡申友") && y.equals("521hx1314")) { break; } else { count--; System.out.println("你输入的账号密码不匹配\t你还有"+count+"次机会"); if (count == 0){ System.exit(0); } } } }
//对二维数组进行扩容 private static void extend(){ String[][] newArr = new String[arr.length + 1][4]; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { //把老数组的数据都给扩容后的数组 newArr[i][j] = arr[i][j]; } } //扩容完成后在还给老数组 arr = newArr; }
//对二维数组进行缩容 private static void shorten(){ String[][] newArr = new String[arr.length - 1][4]; //这里用arr.length就越界了 for (int i = 0; i < newArr.length; i++) { for (int j = 0; j < arr[i].length; j++) { //把老数组的数据都给扩容后的数组 newArr[i][j] = arr[i][j]; } } //缩容完成后在还给老数组 arr = newArr; }
//如果不添加就选其他功能 private static void breakdown(){ while (true) { System.out.println("无商品信息,请先添加商品信息"); System.out.println("请选择是否添加商品信息:"); String choose = sc.next(); switch (choose) { case "是": add(); return; case "否": System.out.println("请你重新选择:"); return; default : System.out.println("你的选择有误\t请用是否进行回答"); } } }
public static void main(String[] args) { user(); while (true) { print(); System.out.println("请选择你要进行的业务:"); String choose = sc.next(); switch (choose) { case "1": System.out.println("-----添加商品信息-----"); add(); break; case "2": System.out.println("-----查看商品信息-----"); query(); break; case "3": System.out.println("-----最贵商品信息-----"); maxGoods(); break; case "4": System.out.println("-----商品进行排序-----"); sort(); break; case "5": System.out.println("-----删除商品信息-----"); delete(); break; case "6": System.out.println("感谢您的使用!"); System.exit(0); default: System.out.println("没有这个选项,请您重新选择"); break; } } }
//添加商品 private static void add() { extend(); System.out.println("请输入商品的编号:"); String id = sc.next(); arr[index][0] = id; System.out.println("请输入商品的名称:"); String name = sc.next(); arr[index][1] = name; System.out.println("请输入商品的数量:"); String number = sc.next(); arr[index][2] = number; System.out.println("请输入商品的单价:"); String price = sc.next(); arr[index][3] = price; //下一个就是存后面一个索引 index++; }
//按商品编号删除商品 private static void delete() { //先判断是否为空 if (arr.length != 0) { System.out.println("请输入你要删除的id:"); String deleteId = sc.next(); for (int i = 0; i < arr.length; i++) { if (deleteId.equals(arr[i][0])){ for (int j = i + 1; j < arr.length; j++) { arr[j - 1] = arr[j]; } shorten(); System.out.println("你的商品删除成功!"); index--; //删除成功就跳出方法 return; } } //删除不成功就执行这一步 System.out.println("对不起,你的id不存在无法删除!"); } else { //空的话提醒先添加 breakdown(); } }
//查询所有商品信息 private static void query() { //先判断是否为空 if (arr.length != 0) { System.out.println("所有商品列表为:"); for (int i = 0; i < arr.length; i++) { System.out.println("编号\t名称\t数量\t单价"); System.out.println(arr[i][0] + "\t" + arr[i][1] + "\t" + arr[i][2] + "\t" + arr[i][3] + "元" ); } } else { //空的话提醒你添加 breakdown(); } }
//商品价格由低到高排序 private static void sort() { //先判断是否为空 if (arr.length != 0) { //冒泡排序进行交换 //定义外层循环 for (int i = 0; i < arr.length - 1; i++) { //定义内层循环 //内循环就是判断这个索引所有比他大的都要和他比 //因为最后一个不需要比所以-1 for (int j = 0; j < arr.length - 1 - i; j++) { //下面的三行代码用于交换俩个元素 //包装类拆箱 int a = Integer.parseInt(arr[j][3]); int b = Integer.parseInt(arr[j + 1][3]); if (a > b) { String[] temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } System.out.println("商品已经为你排序完成,请您查看一下吧!"); }else { //为空提示你先添加 breakdown(); } }
//输出最贵的商品 private static void maxGoods() { //先判断是否为空 if (arr.length != 0) { //拆箱 int max = Integer.parseInt(arr[0][3]); //记录最大值的商品是哪一个 //默认是第一个因为max默认是0 int count = 0; for (int i = 1; i < arr.length; i++) { int newNumber = Integer.parseInt(arr[i][3]); if (max < newNumber){ max = newNumber; //如果哪个数比max大哪个数就被记录 count = i; } } System.out.println("编号\t名称\t数量\t单价"); System.out.println(arr[count][0] + "\t" + arr[count][1] + "\t" + arr[count][2] + "\t" + arr[count][3] + "元"); } else { //空的话提示你添加商品 breakdown(); } }
package HomeWork; import java.util.Scanner; public class Manage { //静态成员方法属于类的大家都可以用 static Scanner sc = new Scanner(System.in); //定义一个静态二维数组存储商品 //这样每个方法更改后值都是会变的 不是静态则不可 static String[][] arr = new String[0][4]; //记录索引 static int index = 0; public static void main(String[] args) { user(); while (true) { print(); System.out.println("请选择你要进行的业务:"); String choose = sc.next(); switch (choose) { case "1": System.out.println("-----添加商品信息-----"); add(); break; case "2": System.out.println("-----查看商品信息-----"); query(); break; case "3": System.out.println("-----最贵商品信息-----"); maxGoods(); break; case "4": System.out.println("-----商品进行排序-----"); sort(); break; case "5": System.out.println("-----删除商品信息-----"); delete(); break; case "6": System.out.println("感谢您的使用!"); System.exit(0); default: System.out.println("没有这个选项,请您重新选择"); break; } } } //账号密码进行登录 private static void user(){ int count = 3; while(true){ Scanner s = new Scanner(System.in); System.out.println("尊敬的管理员"); System.out.println("请输入你的账号:"); String x = s.nextLine(); System.out.println("请输入你的密码:"); String y = s.nextLine(); if (x.equals("蔡申友") && y.equals("521hx1314")) { break; } else { count--; System.out.println("你输入的账号密码不匹配\t你还有"+count+"次机会"); if (count == 0){ System.exit(0); } } } } //打印表头信息 private static void print(){ System.out.println("-----------欢迎来到商品管理系统-----------"); System.out.println(" 1:添加商品信息 "); System.out.println(" 2:查看商品信息 "); System.out.println(" 3:最贵商品信息 "); System.out.println(" 4:商品进行排序 "); System.out.println(" 5:删除商品信息 "); System.out.println(" 6:退出管理系统 "); System.out.println("---------------------------------------"); } //添加商品 private static void add() { extend(); System.out.println("请输入商品的编号:"); String id = sc.next(); arr[index][0] = id; System.out.println("请输入商品的名称:"); String name = sc.next(); arr[index][1] = name; System.out.println("请输入商品的数量:"); String number = sc.next(); arr[index][2] = number; System.out.println("请输入商品的单价:"); String price = sc.next(); arr[index][3] = price; //下一个就是存后面一个索引 index++; } //输出最贵的商品 private static void maxGoods() { //先判断是否为空 if (arr.length != 0) { //拆箱 int max = Integer.parseInt(arr[0][3]); //记录最大值的商品是哪一个 //默认是第一个因为max默认是0 int count = 0; for (int i = 1; i < arr.length; i++) { int newNumber = Integer.parseInt(arr[i][3]); if (max < newNumber){ max = newNumber; //如果哪个数比max大哪个数就被记录 count = i; } } System.out.println("编号\t名称\t数量\t单价"); System.out.println(arr[count][0] + "\t" + arr[count][1] + "\t" + arr[count][2] + "\t" + arr[count][3] + "元"); } else { //空的话提示你添加商品 breakdown(); } } //查询所有商品信息 private static void query() { //先判断是否为空 if (arr.length != 0) { System.out.println("所有商品列表为:"); for (int i = 0; i < arr.length; i++) { System.out.println("编号\t名称\t数量\t单价"); System.out.println(arr[i][0] + "\t" + arr[i][1] + "\t" + arr[i][2] + "\t" + arr[i][3] + "元" ); } } else { //空的话提醒你添加 breakdown(); } } //按商品编号删除商品 private static void delete() { //先判断是否为空 if (arr.length != 0) { System.out.println("请输入你要删除的id:"); String deleteId = sc.next(); for (int i = 0; i < arr.length; i++) { if (deleteId.equals(arr[i][0])){ for (int j = i + 1; j < arr.length; j++) { arr[j - 1] = arr[j]; } shorten(); System.out.println("你的商品删除成功!"); index--; //删除成功就跳出方法 return; } } //删除不成功就执行这一步 System.out.println("对不起,你的id不存在无法删除!"); } else { //空的话提醒先添加 breakdown(); } } //商品价格由低到高排序 private static void sort() { //先判断是否为空 if (arr.length != 0) { //冒泡排序进行交换 //定义外层循环 for (int i = 0; i < arr.length - 1; i++) { //定义内层循环 //内循环就是判断这个索引所有比他大的都要和他比 //因为最后一个不需要比所以-1 for (int j = 0; j < arr.length - 1 - i; j++) { //下面的三行代码用于交换俩个元素 //包装类拆箱 int a = Integer.parseInt(arr[j][3]); int b = Integer.parseInt(arr[j + 1][3]); if (a > b) { String[] temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } System.out.println("商品已经为你排序完成,请您查看一下吧!"); }else { //为空提示你先添加 breakdown(); } } //对二维数组进行扩容 private static void extend(){ String[][] newArr = new String[arr.length + 1][4]; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { //把老数组的数据都给扩容后的数组 newArr[i][j] = arr[i][j]; } } //扩容完成后在还给老数组 arr = newArr; } //对二维数组进行缩容 private static void shorten(){ String[][] newArr = new String[arr.length - 1][4]; //这里用arr.length就越界了 for (int i = 0; i < newArr.length; i++) { for (int j = 0; j < arr[i].length; j++) { //把老数组的数据都给扩容后的数组 newArr[i][j] = arr[i][j]; } } //缩容完成后在还给老数组 arr = newArr; } //如果不添加就选其他功能 private static void breakdown(){ while (true) { System.out.println("无商品信息,请先添加商品信息"); System.out.println("请选择是否添加商品信息:"); String choose = sc.next(); switch (choose) { case "是": add(); return; case "否": System.out.println("请你重新选择:"); return; default : System.out.println("你的选择有误\t请用是否进行回答"); } } } }