• Java案例:超市库存管理系统


    案例介绍:

      模拟真实的库存管理逻辑,完成超市管理系统的日常功能实现,见下图

                      

    案例需求分析:

    根据案例介绍,我们进行分析,首先需要一个功能菜单,然后输入功能序号后,调用序号对应的功能方法,实现想要的操作。分析步骤如下

     1.完成超市商品初始化。创建商品,将商品添加到集合

     2.显示来到超市能做的操作,也就是显示主菜单

     3.根据接收到的功能选项,执行对应的功能

       3.1.库存货物查询

       3.2.添加新货物

       3.3.删除货物

       3.4.修改货物

       3.5.退出系统,结束main方法的运行

     4.循环,回到 2.显示主菜单

    实现代码步骤:

      每种库存商品都拥有多项商品信息,为了方便管理每种商品的信息,我们对商品信息进行封装,编写FruitItem.java文件

    public class FruitItem {
    
        int ID;            //商品编号
    
        String name;        //商品名称
    
        double price;        //商品单价
    
    }

      上述代码中,对商品信息(编号、名称、单价、数量、金额)进行了封装。这样做的好处在于以后只要找到这个商品,就能够知道该商品的每项信息了。

      编写FruitStore.java,完成如下功能:

          //编写main主方法

      public static void main(String[] args) { //定义数组,记录每个商品信息 ArrayList<FruitItem> list = new ArrayList<FruitItem>(); /* * 1.超市商品初始化 */ init(list); while(true){ /* * 2.显示主菜单 */ mainMenu(); /* * 3.根据接收到的功能选项,执行对应的功能 */ chooseFunction(list); } }

      上述代码中,通过while(true)循环,完成用户调用不同功能。实现重复功能选择操作。

     

      1.超市商品初始化,创建商品,将商品添加到集合

    public static void init(ArrayList<FruitItem> list) {
    
            FruitItem item = new FruitItem();
    
            item.name = "少林寺酥饼核桃";
    
            item.ID = 9001;
    
            item.price = 120.0;
    
            
    
            FruitItem item2 = new FruitItem();
    
            item2.name = "尚康杂粮牡丹饼";
    
            item2.ID = 9002;
    
            item2.price = 20.0;
    
            
    
            FruitItem item3 = new FruitItem();
    
            item3.name = "新疆原产哈密瓜";
    
            item3.ID = 9003;
    
            item3.price = 7.0;
    
            
    
            list.add(item);
    
            list.add(item2);
    
            list.add(item3);
    
        }

      上述代码中,完成商品集合的初始化操作,添加了3件商品。

      2.显示来到超市能做的操作,也就是显示主菜单

       public static void mainMenu() {
    
             System.out.println("=========================欢迎光临itcast超市=========================");
    
             System.out.println("1:查询货物 2:添加新货物 3:删除货物 4:修改货物");
    
             System.out.println("5:退出系统");
    
        }

      上述代码,用来完成用户操作界面的显示。

      3.根据接收到的功能选项,执行对应的功能

       public static void chooseFunction(ArrayList<FruitItem> list) {
    
            System.out.println("请您输入要操作的功能序号:");
    
            Scanner sc = new Scanner(System.in);//键盘输入对象
    
            String choose = sc.next();
    
            //根据接收到的选择,执行对应的功能
    
            switch (choose) {
    
            case "1": //3.1.库存货物查询
    
                showFruitList(list);
    
                break;
    
            case "2": //3.2.添加新货物
    
                addFruitItem(list);
    
                break;
    
            case "3": //3.3.删除货物
    
                delFruitItem(list);
    
                break;
    
            case "4": //3.4.修改货物
    
                updateFruitItem(list);
    
                break;
    
            case "5": //3.5.退出系统,退出JVM
    
                System.out.println("退出系统");
    
                return;
    
            default:
    
                System.out.println("对不起,没有您输入的功能,请重新选择");
    
                break;
    
            }
    
        }

      上述代码中,参数list为库存商品集合。当键盘输入功能序号后,通过switch语句匹配后,调用对应的方法完成对应功能的实现。

      3.1.库存货物查询

       public static void showFruitList(ArrayList<FruitItem> list) {
    
            System.out.println("=======================商品库存清单=======================");
    
            System.out.println("商品编号	商品名称		商品单价");
    
            //查询每种库存商品信息
    
            for (int i = 0; i < list.size(); i++) {
    
                FruitItem item = list.get(i);
    
                System.out.println(item.ID + "	" + item.name + "	" + item.price);
    
            }
    
        }

       上述代码中,用来查询所有库存商品信息。

     

      3.2.添加新货物

      public static void addFruitItem(ArrayList<FruitItem> list) {
    
            
    
            //创建新获取对象
    
            FruitItem newItem = new FruitItem();
    
            Scanner sc = new Scanner(System.in);//键盘输入对象
    
            //提示输入信息
    
            System.out.print("请输入新水果的名称:");
    
            newItem.name = sc.next();
    
            System.out.print("请输入新水果的编号:");
    
            newItem.ID = sc.nextInt();
    
            System.out.print("请输入新水果单价:");
    
            newItem.price = sc.nextDouble();
    
            
    
            //向货物集合中添加新的物品项
    
            list.add(newItem);
    
        }

      上述代码中,通过键盘录入,将录入的商品信息存储到库存商品集合中。

      3.3.删除货物

       public static void delFruitItem(ArrayList<FruitItem> list) {
    
            System.out.print("请输入您要删除的水果编号:");
    
            Scanner sc = new Scanner(System.in);//键盘输入对象
    
            int fruitID = sc.nextInt();
    
            //删除集合元素
    
            for (int i = 0; i < list.size(); i++) {
    
                FruitItem thisItem = list.get(i);
    
                if(thisItem.ID == fruitID) {
    
                    list.remove(thisItem);
    
                    System.out.println("水果信息删除完毕!");
    
                    return;
    
                }
    
            }
    
            System.out.println("对不起,没有这个编号的水果!");
    
        }

      上述代码中,通过键盘录入,在库存集合中查找对应的商品编号,如果找到该商品,将该商品删除,否则,提示没有这个编号的商品。

      3.4.修改货物

       public static void updateFruitItem(ArrayList<FruitItem> list) {
    
            
    
            System.out.println();
    
            System.out.print("请输入您要修改信息的水果编号:");
    
            
    
            Scanner sc = new Scanner(System.in);//键盘输入对象
    
            int fruitID = sc.nextInt();
    
            
    
            //更新集合元素
    
            for (int i = 0; i < list.size(); i++) {
    
                
    
                FruitItem thisItem = list.get(i);
    
                if(thisItem.ID == fruitID) {
    
                    System.out.print("请输入新的水果ID:");
    
                    thisItem.ID = sc.nextInt();
    
                    System.out.print("请输入新的水果名称:");
    
                    thisItem.name = sc.next();
    
                    System.out.print("请输入新的水果单价:");
    
                    thisItem.price = sc.nextDouble();
    
                    System.out.println("水果信息更新完毕!");
    
                    return;
    
                }
    
            }
    
            System.out.println("对不起,没有这个编号的水果!");
    
        }

      上述代码中,通过键盘录入,在库存集合中查找对应的商品编号,如果找到该商品,则键盘录入修改商品信息,否则,提示没有这个编号的商品。

  • 相关阅读:
    docker 打包镜像并传输
    bytes函数——字节
    python——多线程
    Golang基础——随机数rand.Seed
    Golang基础——数据类型:数组
    property 和 setter 装饰器
    qrc文件使用
    SQL优化——索引
    mysql结构及存储引擎
    css样式重置以及定位
  • 原文地址:https://www.cnblogs.com/qq1312583369/p/10027015.html
Copyright © 2020-2023  润新知