您好,登錄后才能下訂單哦!
本篇內容主要講解“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(" [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用字符界面實現的簡易收銀臺”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。