小程序--简易收银台

这个简易收银台附有上架,查询,更新货物的功能,以及客户下单的等一些简单功能。
首先,一个简易收银台程序代码分为五个版块。
第一个版块的功能就是显示开始和结束页面以及设置主页面按钮的功能。
具体代码如下:

public class BlankGame {
    static void menu() {
        System.out.println("*******************欢迎使用简易收银台******************");
        System.out.println("           [U] 使用 [S] 设置 [A]关于 [Q] 退出          ");
        System.out.println("           输入: U S A Q 进入操作                     ");
        System.out.println("*******************************************************");
    }

    private static void end() {
        System.out.println("*******************************************************");
        System.out.println("                   欢迎使用,下次再见                  ");
        System.out.println("*******************************************************");
    }

    private static void about() {
        System.out.println("**************************关于*************************");
        System.out.println("              名称:简易收银台                         ");
        System.out.println("              功能:基于字符界面的收银台操作系统       ");
        System.out.println("              作者:rookie                             ");
        System.out.println("              版本:v0.0.1                             ");
        System.out.println("              意见反馈:1814203288@qq.com              ");
        System.out.println("*******************************************************");
    }

    static void start(String input) {
        switch (input) {
            case "U": {
                CheckStand checkStand = new CheckStand();
                checkStand.menu();
                break;
            }
            case "S": {
                CheckStand checkStand = new CheckStand();
                checkStand.menus();
                break;
            }
            case "A": {
                about();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                start(str);
                break;
            }
            case "Q":
                end();
                break;
            default: {
                System.out.println("非法输入,请重新输入!");
                menu();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                start(str);
                break;
            }
        }
    }

    public static void main(String[] args) {
        menu();
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();
        start(input);
    }
}

第二板块为货物板块,里面包有货物的名字以及价格。
具体代码如下:

class Goods {
    private String name;
    private double price;

    public Goods(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return
                " name='" + name + '\'' +
                        ", price=" + price;
    }
}

第三个板块是一个客户与货物的一个交互板块,里面包含各种功能的设置代码。
具体代码如下:

class CheckStand {
    private GoodsCenter goodsCenter = GoodsCenter.getInstance();
    private Order order = new Order();

    void menu() {
        System.out.println("***********************买单功能************************");
        System.out.println("        [S]查看 [A]下单 [D]取消 [L]游览 [R]返回        ");
        System.out.println("           输入: S A D L R进入操作                    ");
        System.out.println("*******************************************************");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();
        use(input);
    }

    void menus() {
        System.out.println("***********************设置功能************************");
        System.out.println("        [S]查看 [A]上架 [D]下架 [U]修改 [R]返回        ");
        System.out.println("           输入: S A D U R进入操作                    ");
        System.out.println("*******************************************************");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();
        set(input);
    }

    private void set(String input) {
        switch (input) {
            case "S": {
                goodsCenter.show();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                set(str);
                break;
            }
            case "A": {
                goodsCenter.add();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                set(str);
                break;
            }
            case "D": {
                goodsCenter.delete();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                set(str);
                break;
            }
            case "U": {
                goodsCenter.amend();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                set(str);
                break;
            }
            case "R": {
                BlankGame.menu();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                BlankGame.start(str);
                break;
            }
            default:
                System.out.println("非法输入,请重新输入!");
                menus();
                break;
        }
    }

    private void use(String input) {
        switch (input) {
            case "S": {
                order.show();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                use(str);
                break;
            }
            case "A": {
                order.add();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                use(str);
                break;
            }
            case "D": {
                order.delete();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                use(str);
                break;
            }
            case "L": {
                goodsCenter.show();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                use(str);
                break;
            }
            case "R": {
                BlankGame.menu();
                Scanner scanner = new Scanner(System.in);
                String str = scanner.next();
                BlankGame.start(str);
                break;
            }
            default:
                System.out.println("非法输入,请重新输入!");
                menu();
                break;
        }
    }
}

第四个板块主要实现货物上架等具体功能。
注意:由于上架的货物与下单的货物为同一货物,所以在这里我使用了单例模式来确保此效果。
具体代码如下:

class GoodsCenter {
    Map<Integer, Goods> goodsMap = new HashMap<>();
    private final static GoodsCenter instance = new GoodsCenter();

    private GoodsCenter() {

    }

    public static GoodsCenter getInstance() {
        return instance;
    }

    void add() {
        System.out.println("请输入上架商品信息(如下格式:1 餐巾纸 1.4):");
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        String name = scanner.next();
        double price = scanner.nextDouble();
        goodsMap.put(number, new Goods(name, price));
        show();
    }

    void amend() {
        System.out.println("请输入修改商品信息(如下格式:1 餐巾纸 1.4 ):");
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        String name = scanner.next();
        double price = scanner.nextDouble();
        if (!goodsMap.containsKey(number)) {
            System.out.println("请选择上架的商品编号,当前修改商品未设置");
        } else {
            goodsMap.put(number, new Goods(name, price));
            show();
        }
    }

    void delete() {
        System.out.println("请输入下架商品信息编号(如下格式:1 ):");
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        if (!goodsMap.containsKey(number)) {
            System.out.println("请选择上架的商品编号,当前下架商品未设置");
        } else {
            goodsMap.remove(number);
        }
        show();
    }

    void show() {
        System.out.println("***********************货品清单************************");
        System.out.println("           编号        产品名称          单价          ");
        Set<Integer> set = goodsMap.keySet();
        for (Integer number : set) {
            String str = goodsMap.get(number).getName();
            double price = goodsMap.get(number).getPrice();
            System.out.println("           " + number + "           " + str + "             " + price + "          ");
        }
        System.out.println("*******************************************************");
    }
}

第五个板块主要实现客户下单等功能。
具体代码如下:

class Order {
    private GoodsCenter goodsCenter = GoodsCenter.getInstance();
    private Map<Integer, Integer> orderMap = new HashMap<>();
    private Set<Integer> orderSet = orderMap.keySet();

    void add() {
        System.out.println("请输入下单信息[编号 数量](如下格式:1  2 ):");
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        int mount = scanner.nextInt();
        if (!goodsCenter.goodsMap.containsKey(number)) {
            System.out.println("输入编号有误,请选择已上架的商品编号");
        } else {
            orderMap.put(number, mount);
            show();
        }
    }

    void delete() {
        System.out.println("请输入下单信息[编号 数量](如下格式:1  2 ):");
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        int mount = scanner.nextInt();
        if (!orderMap.containsKey(number)) {
            System.out.println("输入编号有误,请选择已上架的商品编号");
        } else {
            if (mount >= orderMap.get(number)) {
                orderMap.remove(number);
            } else {
                orderMap.put(number, orderMap.get(number) - mount);
            }
            show();
        }
    }

    private double compute() {
        double amount = 0;
        for (Integer tmp : orderSet) {
            amount += orderMap.get(tmp) * goodsCenter.goodsMap.get(tmp).getPrice();
        }
        return amount;
    }

    void show() {
        System.out.println("******************* 订单发票 ********************");
        System.out.println("打印时间:" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        System.out.println("=================================================");
        System.out.println("编号          名称             数量          单价");
        Set<Integer> set = orderMap.keySet();
        for (Integer number : set) {
            int mount = orderMap.get(number);
            String name = goodsCenter.goodsMap.get(number).getName();
            double price = goodsCenter.goodsMap.get(number).getPrice();
            System.out.println(number + "            " + name + "              " + mount + "           " + price);
        }
        System.out.println("=================================================");
        System.out.println("总价:" + compute());
        System.out.println("*************************************************");
    }
}

到此,一个简易的收银台程序就实现了,如读者有兴趣可以自行添加一些新的功能使其功能变得更加强大。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个基于Java的开源框架,用于快速构建独立的、可部署的、自包含的应用程序。收银台程序是指用于处理支付和结算的系统,其功能包括生成订单、接收支付请求、完成支付、生成结算报表等。 使用Spring Boot来开发收银台程序具有以下优势: 1. 快速搭建:Spring Boot提供了自动配置的特性,可以快速搭建一个可用的基础应用程序。通过简化了繁琐的配置过程,开发人员可以更快地启动和调试程序。 2. 简化开发:Spring Boot集成了许多常用的开发框架和工具,如Spring MVC、Spring Data、MyBatis等,可以方便地进行数据库操作、RESTful API开发等常用功能的实现。 3. 高度可扩展:Spring Boot采用模块化的设计,可以根据实际需求选择不同的模块进行集成,从而实现自定义的功能。另外,Spring Boot还支持热更新特性,可以在运行时动态地加载和卸载模块,大大提高了系统的可扩展性。 4. 简化部署:Spring Boot打包成可执行的jar包,可以方便地部署到各种环境中,不需要依赖外部的Web容器。同时,Spring Boot还支持Docker容器化部署,可以进一步简化部署流程。 在开发收银台程序时,我们可以使用Spring Boot的相关模块来实现以下功能: 1. 订单管理:通过Spring Boot的数据访问模块,可以方便地进行数据库操作,实现订单的增删改查等功能。 2. 支付处理:可以使用Spring Boot的Web模块,接收支付请求,并调用支付接口完成支付操作。 3. 结算报表生成:可以使用Spring Boot的定时任务模块,在指定的时间生成结算报表并保存到指定位置。 总之,Spring Boot作为一个快速、简化开发的框架,在收银台程序的开发中具有很大的优势,可以帮助开发人员快速构建高效、可靠的收银台系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值