超市库存管理系统

一、案例介绍

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

超市库存管理系统_第1张图片

二、案例需求分析

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

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;      //商品单价

    double  number;     //商品数量

    double  money;      //商品金额

}

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

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

编写main主方法

    public static void main(String[] args) {

        //定义数组,记录每个商品信息

        ArrayList list = new ArrayList();

        /*

         * 1.超市商品初始化

         */

        init(list);      

        while(true){

            /*

             * 2.显示主菜单

             */

            mainMenu();

            /*

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

             */

            chooseFunction(list);

        }

    }

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

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

    public static void init(ArrayList list) {

        FruitItem item = new FruitItem();

        item.name = "少林寺酥饼核桃";

        item.ID = 9001;

        item.price = 120;

       

        FruitItem item2 = new FruitItem();

        item2.name = "尚康杂粮牡丹饼";

        item2.ID = 9002;

        item2.price = 20;

       

        FruitItem item3 = new FruitItem();

        item3.name = "新疆原产哈密瓜";

        item3.ID = 3;

        item3.price = 9007;

       

        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 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 list) {

        System.out.println("=======================商品库存清单=======================");

        System.out.println("商品编号\t商品名称\t\t商品单价");

        //查询每种库存商品信息

        for (int i = 0; i < list.size(); i++) {

            FruitItem item = list.get(i);

            System.out.println(item.ID + "\t" + item.name + "\t" + item.price);

        }

    }

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

 

3.2.添加新货物 

    public static void addFruitItem(ArrayList 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 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 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("对不起,没有这个编号的水果!");

    }

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

 

你可能感兴趣的:(#,day08)