public class demo01 { public static void main(String[] args) { //集合定义 ArrayList<Item> itemList = new ArrayList<>(); //死循环录入功能号码num Scanner sc = new Scanner(System.in); while (true) { System.out.println("购物车:请输入您所需功能"); System.out.print("1.添加--"); System.out.print("2.查询--"); System.out.print("3.修改--"); System.out.print("4.删除\n"); int num = sc.nextInt(); //判断是哪种功能 switch (num){ case 1: System.out.println("---添加功能"); itemList = getAdd(itemList); // getFind(itemList); break; case 2: System.out.println("---查询功能"); getFind(itemList); break; case 3: System.out.println("---修改功能"); itemList = getQuery(itemList); break; case 4: System.out.println("---删除功能"); itemList = getDelete(itemList); break; default: System.out.println("输入有误请重新输入"); break; } } } //删除功能方法 private static ArrayList<Item> getDelete(ArrayList<Item> itemList) { Scanner sc = new Scanner(System.in); System.out.println("请输入需要删除的商品id:"); String id = sc.next(); //根据录入id循环判断要删除的id是否存在集合中,存在删除,循环到最后不存在则继续调用删除方法 for (int i = 0; i < itemList.size(); i++) { if(itemList.get(i).getItemId().equals(id)){ itemList.remove(i); System.out.println("删除成功"); i--; }else if(i == itemList.size()-1){ System.out.println(id+"商品不存在,请重新输入"); getDelete(itemList); } break; } return itemList; } //修改功能方法 private static ArrayList<Item> getQuery(ArrayList<Item> itemList) { Scanner sc = new Scanner(System.in); System.out.println("请输入您要修改的商品id:"); String id = sc.next(); //根据录入循环判断,录入id商品存在购物车则修改信息 for (int i = 0; i < itemList.size(); i++) { if(itemList.get(i).getItemId().equals(id)){ System.out.println("修改商品信息"); System.out.println("商品name:"); String name = sc.next(); System.out.println("商品price:"); double price = sc.nextDouble(); System.out.println("商品num:"); int num = sc.nextInt(); Item item = new Item(id, name, price, num); itemList.set(i,item); System.out.println("修改成功"); break; }else if(i == itemList.size()-1){ System.out.println(id+"商品不存在,请重新输入"); getQuery(itemList); } } return itemList; } //查询功能方法 private static void getFind(ArrayList<Item> itemList) { //没有商品时直接tip if(itemList.isEmpty()){ System.out.println("购物车中没商品"); return; } //有商品时循环遍历输出 for (int i = 0; i < itemList.size(); i++) { Item item = itemList.get(i); System.out.println("----------------------"); System.out.println(item.getItemId()+"\n"+ item.getItemName()+"\n"+ item.getItemPrice()+"\n"+ item.getItemnum()); System.out.println("----------------------"); } } //添加功能方法 private static ArrayList<Item> getAdd(ArrayList<Item> itemList) { Scanner sc = new Scanner(System.in); System.out.println("请输入您要添加的商品信息"); System.out.println("商品id:"); String id = sc.next(); //根据录入的id判断id商品是否已存在,存在则直接return,否则添加id商品信息 for (int i = 0; i < itemList.size(); i++) { if(itemList.get(i).getItemId().equals(id)){ System.out.println("购物车中商品已存在,请重新添加"); getAdd(itemList); return itemList; } } System.out.println("请商品name:"); String name = sc.next(); System.out.println("商品price:"); double price = sc.nextDouble(); System.out.println("商品num:"); int num = sc.nextInt(); Item item = new Item(id, name, price, num); itemList.add(item); System.out.println("添加成功"); return itemList; } } ---------------------------------------------------------------------------------- public class Item { private String itemId; private String itemName; private double itemPrice; private int itemnum; public Item() { } public Item(String itemId, String itemName, double itemPrice, int itemnum) { this.itemId = itemId; this.itemName = itemName; this.itemPrice = itemPrice; this.itemnum = itemnum; } public String getItemId() { return itemId; } public void setItemId(String itemId) { this.itemId = itemId; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public double getItemPrice() { return itemPrice; } public void setItemPrice(double itemPrice) { this.itemPrice = itemPrice; } public int getItemnum() { return itemnum; } public void setItemnum(int itemnum) { this.itemnum = itemnum; } } -------------------------------------------------------------------仅为模拟,未完善
以上为完整模拟,
以下是对于demo1的代码改进
public class demo01 { public static void main(String[] args) { //集合定义 ArrayList<Item> itemList = new ArrayList<>(); //死循环录入功能号码num Scanner sc = new Scanner(System.in); while (true) { System.out.println("购物车:请输入您所需功能"); System.out.print("1.添加--"); System.out.print("2.查询--"); System.out.print("3.修改--"); System.out.print("4.删除--"); System.out.print("5.结算\n"); int num = sc.nextInt(); //判断是哪种功能 switch (num) { case 1: System.out.println("---添加功能"); itemList = getAdd(sc,itemList); // getFind(itemList); break; case 2: System.out.println("---查询功能"); getFind(itemList); break; case 3: System.out.println("---修改功能"); itemList = getQuery(sc,itemList); break; case 4: System.out.println("---删除功能"); itemList = getDelete(sc,itemList); break; case 5: System.out.println("---结算功能"); accountsPayable(sc,itemList); break; default: System.out.println("输入有误请重新输入"); break; } } } private static void accountsPayable(Scanner sc,ArrayList<Item> itemList) { double acountpay = 0; if(itemList.isEmpty()){ System.out.println("购物车为空,请添加后再结算"); return; } // while (true) { // System.out.println("请输入您要结算的商品id"); // String id = sc.next(); // int index = checkItemsId(itemList, id); // if(index==-1){ // System.out.println(id+"商品不在购物车中,请重新选择"); // }else{ // Item item = itemList.get(index); // System.out.println(item.getItemName() + "商品价格是" + item.getItemPrice()+"共添加"+item.getItemnum()+"件"); // acountpay+=item.getItemPrice()*item.getItemnum(); // System.out.println("是否还有其他商品需要结算----1.是/2.否"); // int next = sc.nextInt(); // if(next == 2){ // break; // } // } // } System.out.println("-------------------------------------------------------------"); System.out.println("商品name\t\t\t"+"商品price\t\t"+"商品num\t\t"+"商品acounts"); System.out.println("-------------------------------------------------------------"); for (int i = 0; i < itemList.size(); i++) { Item item = itemList.get(i); double accounts = item.getItemPrice()*item.getItemnum(); System.out.println(item.getItemName()+"\t\t\t"+item.getItemPrice()+"\t\t\t"+item.getItemnum()+"\t\t\t"+accounts); acountpay+=accounts; } System.out.println("-------------------------------------------------------------"); System.out.println("你总共需要支付:"+acountpay); System.out.println("-------------------------------------------------------------"); } //删除功能方法 private static ArrayList<Item> getDelete(Scanner sc,ArrayList<Item> itemList) { System.out.println("请输入需要删除的商品id:"); String id = sc.next(); //根据录入id循环判断要删除的id是否存在集合中,存在删除,循环到最后不存在则继续调用删除方法 int index = checkItemsId(itemList, id); if (index == -1) { System.out.println(id + "商品不存在,请重新输入"); getDelete(sc,itemList); } else { itemList.remove(index); System.out.println("删除成功"); index--; } return itemList; } //修改功能方法 private static ArrayList<Item> getQuery(Scanner sc,ArrayList<Item> itemList) { System.out.println("请输入您要修改的商品id:"); String id = sc.next(); //根据录入循环判断,录入id商品存在购物车则修改信息 int index = checkItemsId(itemList, id); if (index == -1) { System.out.println(id + "商品不存在,请重新输入"); getQuery(sc,itemList); } else { System.out.println("修改商品信息"); Item item = getItem(sc, id); itemList.set(index, item); System.out.println("修改成功"); } return itemList; } //查询功能方法 private static void getFind(ArrayList<Item> itemList) { //没有商品时直接tip if (itemList.isEmpty()) { System.out.println("购物车中没商品"); return; } //有商品时循环遍历输出 for (int i = 0; i < itemList.size(); i++) { Item item = itemList.get(i); System.out.println("----------------------"); System.out.println(item.getItemId() + "\n" + item.getItemName() + "\n" + item.getItemPrice() + "\n" + item.getItemnum()); System.out.println("----------------------"); } } //添加功能方法 private static ArrayList<Item> getAdd(Scanner sc,ArrayList<Item> itemList) { System.out.println("请输入您要添加的商品信息"); System.out.println("商品id:"); String id = sc.next(); //根据录入的id判断id商品是否已存在,存在则直接return,否则添加id商品信息 int index = checkItemsId(itemList, id); if (index == -1) { Item item = getItem(sc,id); itemList.add(item); System.out.println("添加成功"); } else { System.out.println("购物车中商品已存在,请重新添加"); getAdd(sc,itemList); } return itemList; } //检查id是否存在 private static int checkItemsId(ArrayList<Item> itemList, String id) { for (int i = 0; i < itemList.size(); i++) { if (itemList.get(i).getItemId().equals(id)) { return i; } } return -1; } //生成新的商品信息 private static Item getItem(Scanner sc, String id) { System.out.println("商品name:"); String name = sc.next(); System.out.println("商品price:"); double price = sc.nextDouble(); System.out.println("商品num:"); int num = sc.nextInt(); Item item = new Item(id, name, price, num); return item; } }