Java基于字符界面的简易收银台
程序员文章站
2022-06-25 09:58:16
用java实现简易收银台,供大家参考,具体内容如下简易收银台的实现并不难,主要实现这几个类: 商品类 goods(将商品根据编号,名称,价格存放) 商品中心类 goodscenter(存放...
用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类实现,代码量不多,简单易懂
- 有弊端存在,就是用数组存放商品,容易出现数组越界异常,而且如果商品多的话用数组存储也是极其不方便的
- 还有就是未使用到数据库,商品信息,订单信息的保存有很多不方便的地方,如果建立连接了数据库,这个问题就解决了
目前能力只能实现到这了,希望可以再努力一下,将数据库加入到项目中,让它的易用性再提升更多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。