三叶草 发表于 2021-9-16 12:57:14

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

这篇文章主要为大家详细介绍了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("    使用   设置关于退出      ");
      system.out.println("          输入 usaq进行操作          ");
      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(" 查看下单取消浏览   返回");
      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(" 查看上架下架修改返回 ");
      system.out.println("   输入s    a   du   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));
                        if(goods != null){
                            order.add(goods,integer.parseint(infoarray));
                            order.printorder();
                            break;
                        }
                  }
                  system.out.println("请按照格式要求输入信息");
                  break;
                }
                case "d":{
                  system.out.println("请输入取消信息[编号 数量](如下格式:12 ):");
                  string value = scanner.nextline();
                  string[] infoarray = value.split(" ");
                  if (infoarray != null && (infoarray.length == 2)) {
                        goods goods = goodscenter.getgoods(integer.parseint(infoarray));
                        if (goods != null) {
                            order.cance(goods, integer.parseint(infoarray));
                            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), infoarray, double.parsedouble(infoarray));
                return goods;
            }
            if (infoarray.length == 1) {
                goods goods = new goods(integer.parseint(infoarray), "", 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;
      for (int i = 0; i < goodsarray.length; i++) {
            goodsarray = 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;
            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;
            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;
            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;
            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;
            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.getname().equals(placeholder)){
                return false;
            }
      }
      return true;
    }

    public static goods getgoods(int id){
      for(int i = 0;i<goodsarray.length;i++){
            goods temp = goodsarray;
            if(temp.getid() == id && !temp.getname().equals(placeholder)){
                return goodsarray;
            }
      }
      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;
            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;

    //商品名称
    privatestring 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;
      this.itmesnumber = new int;
      this.currentindex = -1;
    }

    public void add(goods goods,int count){
      int index = goods.getindex();
      this.items = goods;
      this.itmesnumber += count;
    }

    public void cance(goods goods,int count){
      int index = goods.getindex();
      int value = this.itmesnumber-count;
      if(value > 0){
            this.itmesnumber = value;
      }else{
            this.items = null;
            this.itmesnumber = 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;
            if(goods != null){
                tatalprivce += (this.itmesnumber * 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;
            if(goods != null){
                int count = this.itmesnumber;
                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类实现,代码量不多,简单易懂
[*]有弊端存在,就是用数组存放商品,容易出现数组越界异常,而且如果商品多的话用数组存储也是极其不方便的
[*]还有就是未使用到数据库,商品信息,订单信息的保存有很多不方便的地方,如果建立连接了数据库,这个问题就解决了
目前能力只能实现到这了,希望可以再努力一下,将数据库加入到项目中,让它的易用性再提升更多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家。
原文链接:https://blog.csdn.net/weixin_43224539/article/details/89855873

http://www.zzvips.com/article/191848.html
页: [1]
查看完整版本: Java基于字符界面的简易收银台