Java实现自动贩卖机/售货机

简介: Java实现自动贩卖机/售货机

前言

大家好,今天写一个简单的Java课设,题目是“自动售货机系统”,以下是思路,供大家参考。


没有使用图形化界面,所以相对比较简单,适合大学期末课设,大家主要是理清其中的一些逻辑。

效果展示如下:

编辑

目录

项目介绍

总体需求

代码展示

主类:用户类

购物类

商品类

功能测试

项目结构


项目介绍

自动售货机是我们日常生活中常见的简单销售系统,通过程序实现无人售卖的功能,方便了大家的日常生活。本项目基于Java技术,开发了一个模拟自动售货机功能的程序。通过本项目的开发,达到学习和提高编程技能的目的。

总体需求

本程序主要完成自动售货机的简单功能,用户通过命令框完成操作过程。需要满足以下几点要求:

1.实现商品展示功能

2.实现支付购买功能

3.实现商品库存判断

4.程序退出提示功能


代码展示

主类:用户类

import java.util.Scanner;
//用户类
public class User
{
    public static void main(String[] args)//主函数
    {
        Scanner sc = new Scanner(System.in);
        shopping shopping = new shopping();//创建对象
        System.out.println("欢迎使用XX大学饮料自动贩卖机");//系统提示语
        System.out.println("是否进行购物:1、是\t2、否");//系统提示语
        int select = sc.nextInt();//保存客户输入的数字
        if (select == 1)//如果客户输入的是“1”也就是需要进行购物
        {
            shopping.show();//打印商品列表
            System.out.println("请选择相应编号!");//提示用于选择商品
            int choose = sc.nextInt();//保存客户输入的商品编号
            //边界限定
            while (choose > 5 || choose <= 0)
            {
                System.out.println("没有此商品,请重新选择!");//提示用户输入的编码没有对应的商品
                choose = sc.nextInt();//再次保存客户输入的编号
            }
            if(choose == 5)//如果是“5”退出购物
            {
                System.out.println("欢迎您下次光临!");
                return ;
            }
            System.out.println("请输入购买数量!");//提示用户输入需要购买的数量
            int num = sc.nextInt();//保存用户需要购买的数量
            while (true)
            {
                shopping.shop(choose,num);//调用购买函数
                System.out.println();
                shopping.show();//显示购买后的商品列表
                System.out.println("如继续购物,请再次选择相应编号!");
                choose = sc.nextInt();//保存用户输入的商品编号
                //边界限定
                while (choose > 5 || choose <= 0)
                {
                    System.out.println("没有此商品,请重新选择!");
                    choose = sc.nextInt();
                }
                if(choose == 5)
                {
                    System.out.println("欢迎您下次光临!");
                    break;
                }
                System.out.println("请输入购买数量");//提示语
                num = sc.nextInt();//保存客户购买数量
            }
        }
        else//选择“2”不进行购物
        {
            System.out.println("欢迎下次光临!");
        }
    }
}
//购买类
class shopping
{
    //创建商品
    goods beer = new goods("啤酒",3,30);
    goods juice = new goods("汇源橙汁",3,20);
    goods water = new goods("农夫山泉",2,30);
    goods coffee = new goods("雀巢咖啡",5,20);
    //显示函数
    public void show()
    {
        System.out.println("现还有以下商品供您选择:");
        System.out.println("1、"+beer.goodsname+"\t价格:"+beer.price+"\t剩余:"+beer.number);
        System.out.println("2、"+juice.goodsname+"\t价格:"+juice.price+"\t剩余:"+juice.number);
        System.out.println("3、"+water.goodsname+"\t价格:"+water.price+"\t剩余:"+water.number);
        System.out.println("4、"+coffee.goodsname+"\t价格:"+coffee.price+"\t剩余:"+coffee.number);
        System.out.println("5、退出购物");
    }
    //购买函数
    public void shop(int choose,int num)
    {
        switch (choose)
        {
            case 1://如果选择的是商品“1”
                if(beer.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if(num>beer.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    beer.number = beer.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 2://如果选择的是商品“2”
                if(juice.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>juice.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    juice.number = juice.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 3://如果选择的是商品“3”
                if(water.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>water.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    water.number = water.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 4://如果选择的是商品“4”
                if(coffee.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>coffee.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    coffee.number = coffee.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 5://如果输入的是“5”
                System.out.println("欢迎您下次光临!");//提示语
                break;
            default://其他
                System.out.println("没有此商品,请重新选择");//提示语
                break;
        }
    }
    //如果购买成功打印函数内容
    public void success()
    {
        System.out.println("请选择你的支付方式");
        System.out.println("1、扫码支付\t2、投币支付");//系统提示语
        Scanner sc = new Scanner(System.in);
        int select = sc.nextInt();
        if(select == 1)
        {
            System.out.println("请扫屏幕下方的二维码进行支付");
            System.out.println("购买成功!");
        }else if(select==2){
            System.out.println("请投入硬币");
        }
        else
        {
            System.out.println("欢迎您下次光临!");
        }
    }
}
//商品类
class goods
{
    String goodsname;   //商品名称
    double price;       //商品价格
    int number;         //商品剩余数量
    //默认初始化商品函数
    public goods()
    {
    }
    //初始化商品函数
    public goods(String goodsname, double price, int number)
    {
        this.goodsname = goodsname;
        this.price = price;
        this.number = number;
    }
}

购物类

import java.util.Scanner;
//用户类
public class User
{
    public static void main(String[] args)//主函数
    {
        Scanner sc = new Scanner(System.in);
        shopping shopping = new shopping();//创建对象
        System.out.println("欢迎使用XX大学饮料自动贩卖机");//系统提示语
        System.out.println("是否进行购物:1、是\t2、否");//系统提示语
        int select = sc.nextInt();//保存客户输入的数字
        if (select == 1)//如果客户输入的是“1”也就是需要进行购物
        {
            shopping.show();//打印商品列表
            System.out.println("请选择相应编号!");//提示用于选择商品
            int choose = sc.nextInt();//保存客户输入的商品编号
            //边界限定
            while (choose > 5 || choose <= 0)
            {
                System.out.println("没有此商品,请重新选择!");//提示用户输入的编码没有对应的商品
                choose = sc.nextInt();//再次保存客户输入的编号
            }
            if(choose == 5)//如果是“5”退出购物
            {
                System.out.println("欢迎您下次光临!");
                return ;
            }
            System.out.println("请输入购买数量!");//提示用户输入需要购买的数量
            int num = sc.nextInt();//保存用户需要购买的数量
            while (true)
            {
                shopping.shop(choose,num);//调用购买函数
                System.out.println();
                shopping.show();//显示购买后的商品列表
                System.out.println("如继续购物,请再次选择相应编号!");
                choose = sc.nextInt();//保存用户输入的商品编号
                //边界限定
                while (choose > 5 || choose <= 0)
                {
                    System.out.println("没有此商品,请重新选择!");
                    choose = sc.nextInt();
                }
                if(choose == 5)
                {
                    System.out.println("欢迎您下次光临!");
                    break;
                }
                System.out.println("请输入购买数量");//提示语
                num = sc.nextInt();//保存客户购买数量
            }
        }
        else//选择“2”不进行购物
        {
            System.out.println("欢迎下次光临!");
        }
    }
}
//购买类
class shopping
{
    //创建商品
    goods beer = new goods("啤酒",3,30);
    goods juice = new goods("汇源橙汁",3,20);
    goods water = new goods("农夫山泉",2,30);
    goods coffee = new goods("雀巢咖啡",5,20);
    //显示函数
    public void show()
    {
        System.out.println("现还有以下商品供您选择:");
        System.out.println("1、"+beer.goodsname+"\t价格:"+beer.price+"\t剩余:"+beer.number);
        System.out.println("2、"+juice.goodsname+"\t价格:"+juice.price+"\t剩余:"+juice.number);
        System.out.println("3、"+water.goodsname+"\t价格:"+water.price+"\t剩余:"+water.number);
        System.out.println("4、"+coffee.goodsname+"\t价格:"+coffee.price+"\t剩余:"+coffee.number);
        System.out.println("5、退出购物");
    }
    //购买函数
    public void shop(int choose,int num)
    {
        switch (choose)
        {
            case 1://如果选择的是商品“1”
                if(beer.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if(num>beer.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    beer.number = beer.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 2://如果选择的是商品“2”
                if(juice.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>juice.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    juice.number = juice.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 3://如果选择的是商品“3”
                if(water.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>water.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    water.number = water.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 4://如果选择的是商品“4”
                if(coffee.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>coffee.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    coffee.number = coffee.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 5://如果输入的是“5”
                System.out.println("欢迎您下次光临!");//提示语
                break;
            default://其他
                System.out.println("没有此商品,请重新选择");//提示语
                break;
        }
    }
    //如果购买成功打印函数内容
    public void success()
    {
        System.out.println("请选择你的支付方式");
        System.out.println("1、扫码支付\t2、投币支付");//系统提示语
        Scanner sc = new Scanner(System.in);
        int select = sc.nextInt();
        if(select == 1)
        {
            System.out.println("请扫屏幕下方的二维码进行支付");
            System.out.println("购买成功!");
        }else if(select==2){
            System.out.println("请投入硬币");
        }
        else
        {
            System.out.println("欢迎您下次光临!");
        }
    }
}
//商品类
class goods
{
    String goodsname;   //商品名称
    double price;       //商品价格
    int number;         //商品剩余数量
    //默认初始化商品函数
    public goods()
    {
    }
    //初始化商品函数
    public goods(String goodsname, double price, int number)
    {
        this.goodsname = goodsname;
        this.price = price;
        this.number = number;
    }
}

商品类

import java.util.Scanner;
//用户类
public class User
{
    public static void main(String[] args)//主函数
    {
        Scanner sc = new Scanner(System.in);
        shopping shopping = new shopping();//创建对象
        System.out.println("欢迎使用XX大学饮料自动贩卖机");//系统提示语
        System.out.println("是否进行购物:1、是\t2、否");//系统提示语
        int select = sc.nextInt();//保存客户输入的数字
        if (select == 1)//如果客户输入的是“1”也就是需要进行购物
        {
            shopping.show();//打印商品列表
            System.out.println("请选择相应编号!");//提示用于选择商品
            int choose = sc.nextInt();//保存客户输入的商品编号
            //边界限定
            while (choose > 5 || choose <= 0)
            {
                System.out.println("没有此商品,请重新选择!");//提示用户输入的编码没有对应的商品
                choose = sc.nextInt();//再次保存客户输入的编号
            }
            if(choose == 5)//如果是“5”退出购物
            {
                System.out.println("欢迎您下次光临!");
                return ;
            }
            System.out.println("请输入购买数量!");//提示用户输入需要购买的数量
            int num = sc.nextInt();//保存用户需要购买的数量
            while (true)
            {
                shopping.shop(choose,num);//调用购买函数
                System.out.println();
                shopping.show();//显示购买后的商品列表
                System.out.println("如继续购物,请再次选择相应编号!");
                choose = sc.nextInt();//保存用户输入的商品编号
                //边界限定
                while (choose > 5 || choose <= 0)
                {
                    System.out.println("没有此商品,请重新选择!");
                    choose = sc.nextInt();
                }
                if(choose == 5)
                {
                    System.out.println("欢迎您下次光临!");
                    break;
                }
                System.out.println("请输入购买数量");//提示语
                num = sc.nextInt();//保存客户购买数量
            }
        }
        else//选择“2”不进行购物
        {
            System.out.println("欢迎下次光临!");
        }
    }
}
//购买类
class shopping
{
    //创建商品
    goods beer = new goods("啤酒",3,30);
    goods juice = new goods("汇源橙汁",3,20);
    goods water = new goods("农夫山泉",2,30);
    goods coffee = new goods("雀巢咖啡",5,20);
    //显示函数
    public void show()
    {
        System.out.println("现还有以下商品供您选择:");
        System.out.println("1、"+beer.goodsname+"\t价格:"+beer.price+"\t剩余:"+beer.number);
        System.out.println("2、"+juice.goodsname+"\t价格:"+juice.price+"\t剩余:"+juice.number);
        System.out.println("3、"+water.goodsname+"\t价格:"+water.price+"\t剩余:"+water.number);
        System.out.println("4、"+coffee.goodsname+"\t价格:"+coffee.price+"\t剩余:"+coffee.number);
        System.out.println("5、退出购物");
    }
    //购买函数
    public void shop(int choose,int num)
    {
        switch (choose)
        {
            case 1://如果选择的是商品“1”
                if(beer.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if(num>beer.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    beer.number = beer.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 2://如果选择的是商品“2”
                if(juice.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>juice.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    juice.number = juice.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 3://如果选择的是商品“3”
                if(water.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>water.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    water.number = water.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 4://如果选择的是商品“4”
                if(coffee.number == 0)//如果当前的库存为0
                {
                    System.out.println("商品已售完,等待补货!");//提示用户商品已售完
                }
                else if (num>coffee.number)//如果用户需要购买的数量大于库存的数量
                {
                    System.out.println("您需要购买的商品库存不足,请重新选择!");//提示用户当前商品库存不足
                }
                else
                {
                    coffee.number = coffee.number - num;//更改库存数量=购买前的库存数量-用户购买的数量
                    success();//提示用户购买成功
                }
                break;
            case 5://如果输入的是“5”
                System.out.println("欢迎您下次光临!");//提示语
                break;
            default://其他
                System.out.println("没有此商品,请重新选择");//提示语
                break;
        }
    }
    //如果购买成功打印函数内容
    public void success()
    {
        System.out.println("请选择你的支付方式");
        System.out.println("1、扫码支付\t2、投币支付");//系统提示语
        Scanner sc = new Scanner(System.in);
        int select = sc.nextInt();
        if(select == 1)
        {
            System.out.println("请扫屏幕下方的二维码进行支付");
            System.out.println("购买成功!");
        }else if(select==2){
            System.out.println("请投入硬币");
        }
        else
        {
            System.out.println("欢迎您下次光临!");
        }
    }
}
//商品类
class goods
{
    String goodsname;   //商品名称
    double price;       //商品价格
    int number;         //商品剩余数量
    //默认初始化商品函数
    public goods()
    {
    }
    //初始化商品函数
    public goods(String goodsname, double price, int number)
    {
        this.goodsname = goodsname;
        this.price = price;
        this.number = number;
    }
}

功能测试

测试可以从以下方面进行:

①顾客开始使用饮料自助售货机,进入系统主界面,用户可以根据界面提示选择是否开始购物。

②当顾客选择不购物,那么即将退出系统:

③若顾客选择了购物,那么将进入购物界面,系统将展示所有的商品信息,以供选择。在商品信息中,根据商品编号,可以选择自己想要的商品,假设此时用户选择了啤酒,并且购买数量为15瓶。

④购买完之后进行结账,本系统提供两种结账方式,一种是扫码支付,一种是投币支付,假设现在顾客选择了投币支付:

⑤在顾客第一次买完啤酒后,原本库存为30现在减少为15,然后现在库存还剩15,假使此时又有一个顾客需要购买50瓶啤酒,很明显库存不够,那么此时将给出提示,用户无法完成购买:

⑥假如用户在购物时选择了扫码支付,那么系统将提示用户扫支付码完成支付:


项目结构

本程序实现简易,共封装三个类,分别是:主用户User类购物shopping类商品goods类,结构简单,框架明了。

相关文章
|
Java
Java 实现汉字按照首字母分组排序
Java 实现汉字按照首字母分组排序
712 0
|
Java 数据安全/隐私保护
JAVA 实现上传图片添加水印(详细版)(上)
JAVA 实现上传图片添加水印(详细版)
1258 0
JAVA 实现上传图片添加水印(详细版)(上)
|
网络协议 Java
Java网络编程:UDP/TCP实现实时聊天、上传图片、下载资源等
ip地址的分类: 1、ipv4、ipv6 127.0.0.1:4个字节组成,0-255,42亿;30亿都在北美,亚洲就只有4亿 2011年就用尽了。
Java网络编程:UDP/TCP实现实时聊天、上传图片、下载资源等
|
Java
Java实现拼图小游戏(7)——查看完整图片(键盘监听实例2)
由于在移动和图片中我们已经添加了键盘监听,也继承了键盘监听的接口,那么我们只需要在重写方法内输入我们的代码即可
218 0
|
存储 Java
Java实现图书管理系统
本篇文章是对目前Java专栏已有内容的一个总结练习,希望各位小主们在学习完面向对象的知识后,可以阅览本篇文章后,自己也动手实现一个这样的demo来加深总结应用已经学到知识并进行巩固。
417 0
Java实现图书管理系统
|
数据可视化 Java
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
如果要在某一个界面里面添加功能的话,都在一个类中,会显得代码难以阅读,而且修改起来也会很困难,所以我们将游戏主界面、登录界面、以及注册界面都单独编成一个类,每一个类都继承JFrame父类,并且在类中创建方法来来实现页面
536 0
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
|
数据可视化 Java 容器
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
注意由于我们计步功能的步数要在重写方法中用到,所以不能将初始化语句写在方法体内,而是要写在成员位置。在其名字的时候也要做到“见名知意”,所以我们给它起名字为step
322 0
Java实现拼图小游戏(7)—— 计步功能及菜单业务的实现
|
Java
Java实现拼图小游戏(7)—— 作弊码和判断胜利
当我们好不容易把拼图复原了,但是一点提示也没有,完全看不出来是成功了,那么我们就需要有判断胜利的功能去弹出“成功”类的图片,以便于玩家选择是重新开始还是退出小游戏
307 0
Java实现拼图小游戏(7)—— 作弊码和判断胜利
|
Java
Java实现拼图小游戏(6)—— 移动图片(键盘监听实操练习)
当我们实现向上移动图片的时候,其实就是把空图片的下面一张图片往上移动,然后将空图片的下面那张图片设置为空图片,最后再调整初始位置为现在空图片所在位置即可,注意做完这些以后还要再加载图片,否则显示不出来
384 0
Java实现拼图小游戏(6)—— 移动图片(键盘监听实操练习)
|
存储 Java 数据库
JAVA实现网络多线程编程小游戏开发
实验总结:五子棋是一个很简单的游戏,但是如果认真对待,一个代码一个代码的去研究,会收获到很多知识,会打好学习基础。方便以后开发更高、更难的项目时打下稳固的基础。在自己开发的过程中会有各种意想不到的bug,通过查阅资料及询问老师同学进行解决对本身的一个代码能力会有一个质的增长,同时这也是一个非常快乐的过程。有进步,总归是好事。
JAVA实现网络多线程编程小游戏开发