Java基于字符界面的简易收银台

用Java实现简易收银台,供大家参考,具体内容如下

简易收银台的实现并不难,主要实现这几个类:

商品类 Goods(将商品根据编号,名称,价格存放) 商品中心类 GoodsCenter(存放商品,可以添加商品,下架商品,修改商品信息,判断商品是否存在或者货架已满,打印商品等功能) 订单类 Order(处理订单,主要实现买单功能,下单,计算总价) 功能实现

初始化界面

商品上架

修改商品信息

下架商品

返回并进入买单功能

选择商品及数量进行买单

取消订单

查看订单

返回并退出

功能分析

代码展示

package com.bittech; import java.time.LocalDate;import java.util.Scanner; /** * Author:weiwei * description: * Creat:2019/5/5 **/public class CheckStand {     public static Scanner scanner = new Scanner(System.in);     public static void helpInfo() {        System.out.println("==============欢迎使用简易收银台=============");        System.out.println("    [U]使用   [S]设置  [A]关于  [Q]退出      ");        System.out.println("          输入 U  S  A  Q  进行操作          ");        System.out.println("============================================");    }     public static void quit() {        System.out.println("===========================================");        System.out.println("                欢迎下次使用                ");        System.out.println("===========================================");        System.exit(0);    }     public static void usageInfo() {        System.out.println("================买单功能====================");        System.out.println(" [S]查看  [A]下单  [D]取消  [L]浏览   [R]返回");        System.out.println("      输入 S   A   D   L   R   进行操作     ");        System.out.println("===========================================");     }     public static void about() {        System.out.println("==================关于=====================");        System.out.println("          名称:简易收银台                   ");        System.out.println("          功能:基于字符界面的收银台操作       ");        System.out.println("          作者:weiwei                      ");        System.out.println("          版本:v0.0.1                      ");        System.out.println("          意见反馈:liusz0501@163.com       ");        System.out.println("==========================================");      }     public static void settingInfo() {        System.out.println("=================设置功能==================");        System.out.println(" [S]查看  [A]上架  [D]下架  [U]修改  [R]返回 ");        System.out.println("     输入  S    A   D  U   R 进行操作       ");        System.out.println("===========================================");    }     public static void usage() {        usageInfo();        GoodsCenter.printGoods();        Order order = new Order();        while(true){            String line = scanner.nextLine();            switch(line.trim()){                case "S":{                    order.printOrder();                    break;                }                case "A":{                    System.out.println("请输入下单信息[编号][数量] (格式如:1 2 ):");                    String value = scanner.nextLine();                    String[] infoArray = value.split(" ");                    if(infoArray != null && (infoArray.length == 2)){                        Goods goods = GoodsCenter.getGoods(Integer.parseInt(infoArray[0]));                        if(goods != null){                            order.add(goods,Integer.parseInt(infoArray[1]));                            order.printOrder();                            break;                        }                    }                    System.out.println("请按照格式要求输入信息");                    break;                }                case "D":{                    System.out.println("请输入取消信息[编号 数量](如下格式:1  2 ):");                    String value = scanner.nextLine();                    String[] infoArray = value.split(" ");                    if (infoArray != null && (infoArray.length == 2)) {                        Goods goods = GoodsCenter.getGoods(Integer.parseInt(infoArray[0]));                        if (goods != null) {                            order.cance(goods, Integer.parseInt(infoArray[1]));                            order.printOrder();                            break;                        }                    }                    System.out.println("请按照格式要求输入信息");                    break;                }                case "L": {                    GoodsCenter.printGoods();                    break;                }                case "R": {                    return;                }                default: {                    usageInfo();                }            }        }     }         public static void setting() {        settingInfo();        if (GoodsCenter.isFull()) {            System.out.println("!当前商品货架已经满了,如果要进行添加请下降部分商品");        }        while (true) {            String line = scanner.nextLine();            switch (line.toUpperCase()) {                case "S": {                    GoodsCenter.printGoods();                    break;                }                case "A": {                    System.out.println("请输入上架商品信息(如下格式:1 餐巾纸 1.4):");                    Goods goods = readGoods();                    if (goods == null) {                        System.out.println("!请按照格式要求输入信息");                        break;                    }                    if (GoodsCenter.isFull()) {                        System.out.println("!当前商品货架已经满了,如果要进行添加请下降部分商品");                    } else if (GoodsCenter.isExist(goods)) {                        System.out.println("!上架商品已经存在,注意编号不能重复");                    } else {                        GoodsCenter.addGoods(goods);                        GoodsCenter.printGoods();                    }                    break;                }                case "D": {                    System.out.println("请输入下架商品信息编号(如下格式:1 ):");                    Goods goods = readGoods();                    if (goods == null) {                        System.out.println("请按照格式要求输入信息");                        break;                    }                    if (GoodsCenter.isPutaway(goods)) {                        GoodsCenter.soldOutGoods(goods);                        GoodsCenter.printGoods();                    } else {                        System.out.println("请选择上架的商品编号,当前下架商品未设置");                    }                    break;                }                case "U": {                    System.out.println("请输入修改商品信息(如下格式:1 餐巾纸 1.4 )");                    Goods goods = readGoods();                    if (goods == null) {                        System.out.println("请按照格式要求输入信息");                        break;                    }                    if (GoodsCenter.isPutaway(goods)) {                        GoodsCenter.modifyGoods(goods);                        GoodsCenter.printGoods();                    } else {                        System.out.println("请选择上架的商品编号,当前修改商品未设置");                    }                    break;                }                case "R": {                    return;                }                default: {                    settingInfo();                }            }        }    }     public static Goods readGoods() {        String value = scanner.nextLine();        String[] infoArray = value.split(" ");        if (infoArray != null && (infoArray.length == 3 || infoArray.length == 1)) {            if (infoArray.length == 3) {                Goods goods = new Goods(Integer.parseInt(infoArray[0]), infoArray[1], Double.parseDouble(infoArray[2]));                return goods;            }            if (infoArray.length == 1) {                Goods goods = new Goods(Integer.parseInt(infoArray[0]), "", 0.0D);                return goods;            }        }        return null;    }     public static void main(String[] args) {        helpInfo();        while (true) {            String line = scanner.nextLine();            switch (line.trim().toUpperCase()) {                case "U":                    usage();                    helpInfo();                    break;                case "S":                    setting();                    helpInfo();                    break;                case "A":                    about();                    break;                case "Q":                    quit();                    break;                default:                    helpInfo();            }        }    }}

GoodsCenter类

class GoodsCenter {    //商品占位符    private static String placeholder = "--";     //最大商品数量    private static int maxGoods = 10;     //商品容器    private static Goods[] goodsArray;     //初始化商品容器    static {        goodsArray = new Goods[maxGoods];        for (int i = 0; i < goodsArray.length; i++) {            goodsArray[i] = new Goods(i + 1, "--", 0.0D);        }    }     private GoodsCenter() {     }     public static int getMaxGoods() {        return maxGoods;    }     //添加商品    public static void addGoods(Goods goods) {        for (int i = 0; i < goodsArray.length; i++) {            Goods temp = goodsArray[i];            if (temp.getId() == goods.getId()) {                temp.setName(goods.getName());                temp.setPrice(goods.getPrice());                break;            }        }    }     //下架商品    public static void soldOutGoods(Goods goods) {        for (int i = 0; i < goodsArray.length; i++) {            Goods temp = goodsArray[i];            if (temp.getId() == goods.getId()) {                temp.setName(placeholder);                temp.setPrice(0.0D);                break;            }        }    }     //修改商品    public static void modifyGoods(Goods goods) {        for (int i = 0; i < goodsArray.length; i++) {            Goods temp = goodsArray[i];            if (temp.getId() == goods.getId()) {                temp.setName(goods.getName());                temp.setPrice(goods.getPrice());                break;            }        }    }     //商品是否存在    public static boolean isExist(Goods goods) {        for (int i = 0; i < goodsArray.length; i++) {            Goods temp = goodsArray[i];            if (temp.getId() == goods.getId() && temp.getName().equals(goods.getName())) {                return true;            }        }        return false;    }     //商品位是否存在商品    public static boolean isPutaway(Goods goods) {        for (int i = 0; i < goodsArray.length; i++) {            Goods temp = goodsArray[i];            if (temp.getId() == goods.getId() && !temp.getName().equals(placeholder)) {                return true;            }        }        return false;    }     //商品已满    public static boolean isFull(){        for(int i =0;i<goodsArray.length;i++){            if(goodsArray[i].getName().equals(placeholder)){                return false;            }        }        return true;    }     public static Goods getGoods(int id){        for(int i = 0;i<goodsArray.length;i++){            Goods temp = goodsArray[i];            if(temp.getId() == id && !temp.getName().equals(placeholder)){                return goodsArray[i];            }        }        return null;    }     //打印商品    public static void printGoods(){        System.out.println("=============商品清单================");        System.out.println("\t" + "编号" + "\t" +"产品名称" + "\t" + "单价");        for(int i = 0;i<goodsArray.length;i++){            Goods temp = goodsArray[i];            String name = temp.getName();            if(name.equals(placeholder)){                name = name + "[未上架]";            }            System.out.println("\t" + temp.getId() + "\t" + temp.getName() + "\t" + temp.getPrice());        }        System.out.println("=========================================");    }}

Goods类

class Goods{    //商品编号    private int id;     //商品名称    private  String name;     //商品价格    private double price;     public Goods(int id,String name,double price){        this.id = id;        this.name = name;        this.price = price;    }    public int getId(){        return this.id;    }     public int getIndex(){        return this.getId()-1;    }    public String getName(){        return this.name;    }     public void setName(String name) {        this.name = name;    }    public double getPrice(){        return this.price;    }     public void setPrice(double price) {        this.price = price;    }    @Override    public String toString(){        return String.format("[%2d] %s %.2f",this.getId(),this.getName(),this.getPrice());    }}

Order类

class Order{    private static int orderId = 0;     private int id;     private Goods[] items;     private int[] itmesNumber;     private int currentIndex;     public Order(){        this.id = ++orderId;        this.items = new Goods[GoodsCenter.getMaxGoods()];        this.itmesNumber = new int[GoodsCenter.getMaxGoods()];        this.currentIndex = -1;    }     public void add(Goods goods,int count){        int index = goods.getIndex();        this.items[index] = goods;        this.itmesNumber[index] += count;    }     public void cance(Goods goods,int count){        int index = goods.getIndex();        int value = this.itmesNumber[index]-count;        if(value > 0){            this.itmesNumber[index] = value;        }else{            this.items[index] = null;            this.itmesNumber[index] = 0;        }    }    public int getSize(){        return this.currentIndex+1;    }     public double getTotalPrice(){        double tatalPrivce = 0;        for(int i =0;i<this.items.length;i++){            Goods goods = this.items[i];            if(goods != null){                tatalPrivce += (this.itmesNumber[goods.getIndex()] * goods.getPrice());            }        }        return tatalPrivce;    }     public int getId(){        return this.id;    }     public void printOrder(){        System.out.println("========================");        System.out.println("编号" + this.getId()     );        System.out.println("打印时间" + LocalDate.now().toString());        System.out.println("========================");        System.out.println("编号   名称    数量   单价");        for(int i = 0;i<this.items.length;i++){            Goods goods = this.items[i];            if(goods != null){                int count = this.itmesNumber[goods.getIndex()];                if(count <= 0){                    continue;                }                System.out.println(String.format("%2d\t%s\t%d\t%.2f",goods.getId(),goods.getName(),count,goods.getPrice() ));            }        }        System.out.println("=========================");        System.out.println(String.format("总价:%2f",this.getTotalPrice()));        System.out.println("=========================");    }}

项目总结 用常用String类,Scanner类实现,代码量不多,简单易懂 有弊端存在,就是用数组存放商品,容易出现数组越界异常,而且如果商品多的话用数组存储也是极其不方便的 还有就是未使用到数据库,商品信息,订单信息的保存有很多不方便的地方,如果建立连接了数据库,这个问题就解决了

目前能力只能实现到这了,希望可以再努力一下,将数据库加入到项目中,让它的易用性再提升更多。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

在人生的大海中,我们虽然不能把握风的大小,却可以调整帆的方向。

Java基于字符界面的简易收银台

相关文章:

你感兴趣的文章:

标签云: