java商品自动贩卖机


前言

1、小商品自动贩卖机程序,要求功能示例:

请输入你要购买的商品:

1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾

1

请输入你需要的面包的信息:1、豆沙,2、抹茶

2

请输入商品数量:

1

你还需要其他商品么:1、继续,2、结算

1

请输入你要购买的商品:

1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(不同的口味),5、纸巾

。。。。

2

您购买了***********,共计10元,请支付多少10元:

5

请继续投币5

100

找你90元,请注意收好购买的产品,谢谢惠顾!

10

请注意收好购买的产品,谢谢惠顾!


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建类: customer , goods , shopping

三个文件:

 1.customer类,主入口函数

import java.util.Scanner;

public class customer {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        shopping shop =new shopping();
        while (true){
            System.out.println();
            System.out.println("*******------*******--------*******------*******------********-------*******-----*");
            System.out.println("-------------------------------欢迎使用购物系统------------------------------------~~");
            System.out.println("请输入你要购买的商品:(按以下序号选择)");
            System.out.println("1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾----6、退出");
            System.out.println("---------------------------------------------------------------------------------");
            int select = scanner.nextInt();
            if (select == 6){
                System.out.println("欢迎下次光临!!再见");
                break;
            }
            else {
                shop.shop(select);
            }

        }



    }
}

 2.goods类 (算作商品父类,子类我也写在里面的)

public class goods {
    String goodsname;
    double price;
    String test;
    public goods(){
 //构造器,初始化商品
    }
    //含参构造器,一次性构造完成
   public goods(String goodsname,double price){
        this.goodsname=goodsname;
        this.price=price;

   }
   public static class  bread extends goods{
        String test1;
        String test2;
        public bread(String goodsname,double price,String test1,String test2){
            this.goodsname=goodsname;
            this.price=price;
            this.test1=test1;
            this.test2=test2;
        }
   }
    // 1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾
    public static class  tea extends goods{
        String test1;
        String test2;
        public tea(String goodsname,double price,String test1,String test2){
            this.goodsname=goodsname;
            this.price=price;
            this.test1=test1;
            this.test2=test2;
        }
    }
    // 1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾
    public static class  gum extends goods{
        String test1;
        String test2;
        public gum(String goodsname,double price,String test1,String test2){
            this.goodsname=goodsname;
            this.price=price;
            this.test1=test1;
            this.test2=test2;
        }
    }


}

3.shopping类,业务逻辑处理

import java.util.*;

public class shopping {

    // 1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾
    goods.bread bread = new goods.bread("面包",10,"豆沙","抹茶");
    goods.tea tea = new goods.tea("茶",5,"红茶","绿茶");
    goods coke = new goods("可乐",3);
    goods.gum gum = new goods.gum("口香糖",4,"西瓜","哈密瓜");
    goods tissue = new goods("纸巾",4);
    Map good =new HashMap<>();
    Map<String, Double> goodsmap=new HashMap<String, Double>();
    String test;
    public void shop(int choose) {


            switch (choose) {

                case 1:
                    System.out.println("【*****请输入你需要的商品信息*****】:");
                    System.out.println("选择口味:" + "1: " + bread.test1 + " 2: " + bread.test2);
                    Scanner scanner = new Scanner(System.in);
                    int num = scanner.nextInt();
                    if (num == 1) {
                         test = bread.test1;
                    } else if (num == 2) {
                         test = bread.test2;
                    } else {
                        System.out.println("请选择已有口味:" + "1:" + bread.test1 + "2:" + bread.test2);
                        scanner = new Scanner(System.in);
                        num = scanner.nextInt();
                        if (num == 1) {
                             test = bread.test1;
                        } else if (num == 2) {
                             test = bread.test2;
                        }
                    }
                    int e = goodnumAdd();

                    goodsmap.put(bread.goodsname,e * bread.price);

                    good =goodsmap;
                    otherneed(goodsmap, test, e * bread.price);
                    break;

                // 1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾
                case 2:
                    System.out.println("【*****请输入你需要的商品信息*****】:");
                    System.out.println("选择口味:" + "1:" + tea.test1 + "2:" + tea.test2);
                    scanner = new Scanner(System.in);
                    num = scanner.nextInt();
                    if (num == 1) {
                         test = tea.test1;
                    } else if (num == 2) {
                         test = tea.test2;
                    } else {
                        System.out.println("请选择已有口味:"+"1:" + tea.test1 + "2:" + tea.test2);
                        scanner = new Scanner(System.in);
                        num = scanner.nextInt();

                        if (num == 1) {
                             test = tea.test1;
                        } else {
                             test = tea.test2;
                        }
                    }
                    int a = goodnumAdd();

                    goodsmap.put(tea.goodsname,a * tea.price);
                    good =goodsmap;
                    otherneed( goodsmap,test ,a * tea.price);
                    break;

                // 1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾
                case 3:
                    int i = goodnumAdd();

                    goodsmap.put(coke.goodsname,i * coke.price);
                    good =goodsmap;
                    otherneed(goodsmap, "原味",i * coke.price);
                    break;

                // 1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾
                case 4:
                    System.out.println("【*****请输入你需要的商品信息*****】:");
                    System.out.println("选择口味:" + "1:" + gum.test1 + "2:" + gum.test2);
                    scanner = new Scanner(System.in);
                    num = scanner.nextInt();
                    if (num == 1) {
                         test = gum.test1;
                    } else if (num == 2) {
                         test = gum.test2;
                    } else {
                        System.out.println("请选择已有口味:" + "1:" + gum.test1 + "2:" + gum.test2);
                        scanner = new Scanner(System.in);
                        num = scanner.nextInt();
                        if (num == 1) {
                             test = gum.test1;
                        } else {
                             test = gum.test2;
                        }
                    }
                    int p = goodnumAdd();
                    goodsmap.put(gum.goodsname,p * gum.price);
                    good =goodsmap;
                    otherneed(goodsmap, test,p * gum.price);
                    break;
                // 1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾
                case 5:
                    int k = goodnumAdd();
                    goodsmap.put(tissue.goodsname,k * tissue.price);
                    good =goodsmap;
                    otherneed(goodsmap, "原味",k * tissue.price);
                    break;
                case 6:
                    System.out.println("欢迎下次光临!!");
                    break;
                default:
                    System.out.println("没有此商品,请重新选择!!");
                    break;
            }
           // System.out.println(goodsmap);


        }

    private void otherneed(Map goodsname,String test,double goodprice) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("【*******你还需要其它商品吗*******】! 1、继续,2、结算 ");
        int input = scanner.nextInt();
        if(input == 1){
            System.out.println("---------------------------------------------------------------------------------");
            System.out.println("请输入你要购买的商品:(按以下序号选择)");
            System.out.println("1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾----6、退出");
            System.out.println("---------------------------------------------------------------------------------");
            int choose = scanner.nextInt();
            shop(choose);//又跳转到商品购物的界面
        }
        else if(input ==2){
            //success(goodsname,test,goodprice);
            System.out.println("您购买了:"+good.keySet());
            System.out.println("明细:"+good);

            double sum=0.0;
             Object[] obj=good.values().toArray();
             for (int i=0;i<obj.length;i++){
                 Double d=(Double) obj[i];
                 sum+=d;
             }
            System.out.println(sum);
            System.out.println("共计"+sum+"请支付:"+sum+"元");//系统提示语
            Scanner sc = new Scanner(System.in);
            int pay = sc.nextInt();
            System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>");
            if (pay < sum) {
                double money = sum-pay;
                System.out.println("请继续投"+money+"币");
                int cpay =sc.nextInt();
                if (cpay==money){
                    System.out.println("请注意收好购买的产品,谢谢惠顾!");
                    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>");
                }

            }
            else if(pay > sum) {
                double money = pay-sum;
                System.out.println("找你"+money+"元,请注意收好购买的产品,谢谢惠顾!");
                System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
            }
            else {
                System.out.println("请注意收好购买的产品,谢谢惠顾!");
                System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>");
            }
            good.clear();


          }
        else {
            System.out.println("******点错了!!只有两项选择*******: 1、继续,2、结算");
            Scanner sca=new Scanner(System.in);
            int put= sca.nextInt();
            if(put == 1){
                System.out.println("---------------------------------------------------------------------------------");
                System.out.println("请输入你要购买的商品:(按以下序号选择)");
                System.out.println("1、面包(豆沙、抹茶),2、茶(红茶、绿茶),3、可乐,4、口香糖(西瓜、哈密瓜),5、纸巾----6、退出");
                System.out.println("---------------------------------------------------------------------------------");
                int choose = scanner.nextInt();
                shop(choose);//又跳转到商品购物的界面
            }
            else{
                double sum=0.0;
                Object[] obj=good.values().toArray();
                for (int i=0;i<obj.length;i++){
                    Double d=(Double) obj[i];
                    sum+=d;
                }
                //success(goodsname,test,goodprice);
                System.out.println("您购买了:"+good.keySet());
                System.out.println("明细:"+good);
                System.out.println("共计"+sum+"请支付:"+sum+"元");//系统提示语
                Scanner sc = new Scanner(System.in);
                int pay = sc.nextInt();
                System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                if (pay < sum) {
                    double money = sum-pay;
                    System.out.println("请继续投"+money+"币");
                    int cpay =sc.nextInt();
                    if (cpay==money){
                        System.out.println("请注意收好购买的产品,谢谢惠顾!");
                        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>");
                    }

                }
                else if(pay > sum) {
                    double money = pay-sum;
                    System.out.println("找你"+money+"元,请注意收好购买的产品,谢谢惠顾!");
                    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                }
                else {
                    System.out.println("请注意收好购买的产品,谢谢惠顾!");
                    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                }
                good.clear();


            }
        }
        }

    private int goodnumAdd() {

       System.out.println("请输入商品数量:");
       Scanner scanner =new Scanner(System.in);
       int goodsnum = scanner.nextInt();
       return goodsnum;

    }


}

二、功能展示

1.购物


2.结算

 

 


总结

  1. 怎么让系统自动循环

我给入口函数写了一个while循环,布尔条件true,一直为真,一直执行,退出就在循环里再写个判断,如果用户输入6,也就是触发break的if条件,它就退出了。

  1. 怎么把曾选择的商品放入一个容器里,最后结算时从容器里获取要结算的商品名字,价格

我本来一开始是想用数组存,后来换成Map,不仅可以存名字,还可以存价格,

把Map名.put(String,Double)放入每个case条件中,方便一入条件就触发添加。

运行期间,发生map的size始终为1,也就是说出了case它就又重新开始了。我尝试把Map定义为全局的,试来试去,最后的样子是,定义了两个map, map1负责case里添加, map2负责添加map1,要使用的是map2。(理想化是说map2里面是堆叠的每个进入过case的map1)

  1. 怎么把map里的value取出来累加

Map.values()得到商品价格的集合,Map.values().toArray()可以将它转化成数组,但是是Object型的。涉及到取Object型数组元素,进行类型转化,上网查阅,形如Double d=(Double) obj[i];  让单个元素强制转化就好了。累加使用for循环

猜你喜欢

转载自blog.csdn.net/SlinaW/article/details/128032596