1. 程式人生 > >用java實現基於字元的簡易收銀臺系統

用java實現基於字元的簡易收銀臺系統

從整體上來說,這個簡易系統分為以下四個部分:店主、顧客、關於、退出。各部分應該實現的功能如下圖:

在這裡插入圖片描述


整體框架程式碼

public  static Scanner reader = new Scanner(System.in);
public static void main(String[] args) {
    Boolean condi = true;
    GoodsCenter.initGoodsArray();
    while (condi) {
        beginMune();
        System.out.println("請選擇您的操作:"
); String id = reader.nextLine(); switch (id) { case "S": //店主操作 case "s": { owner(); continue; } case "C": //顧客操作 case "c": { customer(); break; } case
"A": //關於 case "a": { abort(); break; } case "Q": //退出系統 case "q": { quitMenu(); condi = false; break; } default: { System.out.println
("輸入有誤,請重新輸入:"); break; } } } reader.close(); }

框架很簡單,有了框架之後,接著實現各個介面的工作就可以了。


開始、退出、關於選單

//開始選單
public static void beginMune() {
    System.out.println("*********************************");
    System.out.println("******welcome to the market******");
    System.out.println("*********************************");
    System.out.println("*********************************");
    System.out.println("*****[S]店主         [C]顧客*****");
    System.out.println("*****[A]關於         [Q]退出*****");
    System.out.printf("*********************************\n\n");
}

//退出選單
public static void quitMenu() {
    System.out.println("*********************************");
    System.out.println("***********歡迎下次光臨**********");
    System.out.printf("*********************************\n\n");
}

//關於
public static void abort(){
    System.out.println("*********************************");
    System.out.println("****    author:cottonrose    ****");
    System.out.println("****e-mail:[email protected]****");
    System.out.println("****      version:1.1.0      ****");
    System.out.println("****     date:2018-12-01     ****");
    System.out.printf("*********************************\n\n");
}

讀取輸入流資訊

在java中,讀取輸入流的資訊需要通過Scanner來實現,通過Scanner讀取控制檯使用者輸入的一行資訊,將該資訊轉換為商品型別,並存放入物件中,來實現對商品的控制。程式碼如下:

public static Goods readGoods(){

    while(true){
        String goods = reader.nextLine();  //讀取一行資訊存入到goods中
        goods = goods.trim();  //將資訊中的前後空格去掉
        String[] goodInfo = goods.split(" ");  //以資訊中空格為界限,將資訊存入一個字串陣列中
        if(goodInfo!=null && goodInfo.length==6 || goodInfo.length==2){ //當字元陣列中有6個或2個元素時,執行以下程式碼
            if(goodInfo.length==6) {  //建立一個商品類物件,內容是使用者輸入的商品資訊
                Goods good = new Goods(
                        Integer.parseInt(goodInfo[0]),
                        goodInfo[1],
                        Float.parseFloat(goodInfo[2]),
                        Integer.parseInt(goodInfo[3]),
                        LocalDate.parse(goodInfo[4].subSequence(0,goodInfo[4].length())),
                        LocalDate.parse(goodInfo[5].subSequence(0,goodInfo[5].length())),
                        LocalDate.now()
                );
                return good; //返回該商品
            }
            if(goodInfo.length==2){
                Goods good = new Goods(Integer.parseInt(goodInfo[0]),goodInfo[1]);
                return good;
            }
        }else{
            System.out.println("格式有誤,請重新輸入");
        }
    }
}

店主操作

public static void owner() {
    boolean con = true;
    while (con){
        ownerMenu(); //列印店主操作選單
        int num = GoodsCenter.isToTime(); //判斷商品是否到期
        if(num!=0){
            System.out.printf("上架商品中出現過期商品共"+num+"件,請及時下架!\n");
        }
        System.out.println("請選擇您的操作:");
        String op = reader.nextLine();
        switch (op) {
            case "P":  //商品上架
            case "p": {
                GoodsCenter.printGoods();
                System.out.println("請輸入上架商品資訊:格式如下:(不用填寫上架日期)");
                System.out.println("1 麵包 5 20 2018-02-03 2018-11-15");
                Goods goods = readGoods();
                GoodsCenter.addGood(goods);
                GoodsCenter.printGoods();
                break;
            }
            case "D":  //商品下架
            case "d": {
                GoodsCenter.printGoods();
                System.out.println("請輸入下架商品編號及商品名稱:格式如下:");
                System.out.println("1 麵包");
                Goods goods = readGoods();
                GoodsCenter.deleteGood(goods);
                GoodsCenter.printGoods();
                break;
            }
            case "M":  //修改商品資訊
            case "m": {
                GoodsCenter.printGoods();
                System.out.println("請輸入要修改的商品編號及商品名稱:格式如下:");
                System.out.println("1 麵包");
                Goods goods = readGoods();
                GoodsCenter.modifyGood(goods);
                GoodsCenter.printGoods();
                break;
            }
            case "Q":  //退出店主模組
            case "q": {
                con = false;
                break;
            }
            default: {
                System.out.println("輸入有誤,請重新輸入:");
                break;
            }
        }
    }
}

//店主選單
public static void ownerMenu() {
    System.out.println("*********************************");
    System.out.println("*****          店主         *****");
    System.out.println("*********************************");
    System.out.println("*****[P]上架         [D]下架*****");
    System.out.println("*****[M]修改         [Q]退出*****");
    System.out.printf("*********************************\n\n");
}

顧客操作

public static void customer(){
    boolean con = true;
    Order order = new Order(); //建立一個訂單物件,將顧客選購的商品放入該物件中
    while(con){
        Scanner input = new Scanner(System.in);
        customerMenu(); //列印顧客操作選單
        switch (input.nextLine()){
            case"A":  //顧客選購商品
            case"a":{
                GoodsCenter.printGoods();
                System.out.println("請選擇要購買的商品:格式如下:");
                System.out.println("1 2 (商品編號 數量)");
                String[] info = input.nextLine().split(" ");
                if(info!=null && info.length==2){
                    Goods goods = GoodsCenter.getGood(Integer.parseInt(info[0]));
                    if(goods!=null){
                        order.add(Integer.parseInt(info[0]),Integer.parseInt(info[1]));
                        order.printOrder();
                    }else{
                        System.out.println("商品不存在,請重新選擇");
                        continue;
                    }
                }else{
                    System.out.println("輸入格式有誤,請重新輸入");
                    continue;
                }
                break;
            }
            case"S":  //列印訂單
            case"s":{
                order.printOrder();
                break;
            }
            case"M":  //修改商品訂單
            case"m":{
                System.out.println("請選擇需要修改的商品:格式如下:");
                System.out.println("1 2 (商品編號 要減少的數量)");
                String[] info = input.nextLine().split(" ");
                if(info!=null && info.length==2){
                    if(order.isInOrder(Integer.parseInt(info[0]))){
                        order.modify(Integer.parseInt(info[0]),Integer.parseInt(info[1]));
                        order.printOrder();
                    }else{
                        System.out.println("該商品目前不在商品訂單中,請重新輸入");
                        continue;
                    }
                }else{
                    System.out.println("輸入格式有誤,請重新輸入");
                    continue;
                }

                break;
            }
            case"Q": //退出顧客操作模組
            case"q":{
                con = false;
                break;
            }
            default:{
                System.out.println("輸入有誤,請重新輸入");
            }
        }
        input.close();
    }
}

//顧客選單
public static void customerMenu(){
    System.out.println("*********************************");
    System.out.println("*****          顧客         *****");
    System.out.println("*********************************");
    System.out.println("*****[A]選購         [S]結算*****");
    System.out.println("*****[M]修改         [Q]退出*****");
    System.out.printf("*********************************\n\n");
}

商品資訊類

通過建立一個商品資訊類,來實現對商品資訊的控制。程式碼如下:

class Goods{
    private int no; //商品貨號
    private String name; //商品名稱
    private float price; //商品價格
    private int num; //商品數量
    private LocalDate toTime; //截止日期
    private LocalDate proTime; //生產日期
    private LocalDate upTime; //上架日期
    //構造方法
    public Goods(int no, String name, float price, int num, LocalDate proTime, LocalDate toTime, LocalDate upTime) {
        this.no = no;
        this.name = name;
        this.price = price;
        this.num = num;
        this.proTime = proTime;
        this.toTime = toTime;
        this.upTime = upTime;
    }
    public Goods(int no,String name){
        this.no = no;
        this.name = name;
    }

    public int getNo() {

        return this.no;
    }

    public String getName() {

        return this.name;
    }

    public float getPrice() {

        return this.price;
    }

    public int getNum() {

        return this.num;
    }

    public LocalDate getUpTime() {

        return this.upTime;
    }

    public LocalDate getProTime() {

        return this.proTime;
    }

    public LocalDate getToTime() {

        return this.toTime;
    }

    public void setNo(int no) {

        this.no = no;
    }

    public void setName(String name) {

        this.name = name;
    }

    public void setPrice(float price) {

        this.price = price;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public void setUpTime(LocalDate upTime) {

        this.upTime = upTime;
    }

    public void setProTime(LocalDate proTime) {

        this.proTime = proTime;
    }

    public void setToTime(LocalDate toTime) {

        this.toTime = toTime;
    }
}

商品位類(貨架)

建立一個可以存放商品的類,相當於貨架,控制商品的上架、下架、修改等操作。程式碼如下:

class GoodsCenter{
    private static int maxGoods = 10; //最大容量
    private static Goods[] goodsArray; //商品資訊陣列
    //初始化商品儲存容器
    public static void initGoodsArray(){
        goodsArray = new Goods[maxGoods];
        int i = 0;
        while(i<goodsArray.length){
            goodsArray[i] = new Goods(i+1
            
           

相關推薦

java實現基於字元簡易收銀臺系統

從整體上來說,這個簡易系統分為以下四個部分:店主、顧客、關於、退出。各部分應該實現的功能如下圖: 整體框架程式碼 public static Scanner reader = new Scanner(System.in); public static void main

java實現一個簡易編譯器1-詞法解析入門

new 概念 自加 我們 sta 數字 獲得 () 操作系統 本文對應代碼下載地址為: http://download.csdn.net/detail/tyler_download/9435103 視頻地址: http://v.youku.com/v_show/id_XMT

java實現簡易加密和解密

實現原理:               通過位運算的異或運算子“^”把字串與一個指定的值進行異或運算,從而改變字串中的每個字元的值,這樣就可以得到一個加密後的字串。傳送後再將加密後的字串通過源程式實現解

(2) java實現一個簡易編譯器1-詞法解析入門

轉載地址 : http://blog.csdn.net/tyler_download/article/details/50668983/ 視訊地址 : http://study.163.com/course/courseLearn.htm?courseId=10028300

Java 實現簡單的推薦系統

例子: package recommender; import java.util.Arrays; /**  * Created by legotime  */ public class r

java實現一個簡單的學生管理系統

用Java如何實現一個用陣列作為儲存結構的簡易的學生管理系統? 首先,我們定義一個student類,在其中新增私有化的成員變數,通過getter和setter方法進行呼叫 public class Students { // 學號,姓名,性別,年

【20171210】java實現簡易貪吃蛇

一、各個類之間的關係 之前學軟體工程不努力,現在徒傷悲啊,不會用visio畫類圖…大致的類、方法之間的關係就是這樣。 二、遊戲介面 三、具體實現: 1.遊戲視窗 要考慮的問題有

利用java實現基於文字的圖書管理系統(有介面)

我覺得最難的一部分就是如何實現實現增刪改查 增加:使用write直接向檔案寫入資料即可 刪除:例如通過圖書號(x)找到圖書資料,刪除圖書資料。要想實現此功能,利用一個字元陣列(Arraylist)儲存文字每行資料,分割文字每一行資料(每一行分割成書號,書名,價格等資訊等等,

init.rc文件中面啟動c++程序,通過jni調java實現

mini val sni ril urn runtime sport mco env </pre><p>註:假設是自己的myself.jar包,還要修改例如以下:</p><p>target/product/core_bas

再談java實現Smtp發送郵件之Socket編程

~~ 成功 剛才 還要 登陸 computer and ont sys 很多其它內容歡迎訪問個人站點 http://icodeyou.com 前幾天利用Socket實現了用java語言搭建webserver,全程下來應該會對Socket這

java實現一個簡單的單戶登陸功能的思路

get 單用戶 這樣的 簡單的 lock ref 數據庫 清除 一個 引用 所謂“單用戶單賬戶登錄”是指:在同一系統中,一個用戶名不能在兩個地方同時登錄。 我們參照 QQ 實現效果:當某賬號在 A 處登錄後,在未退出的情況下,如果再到 B 處登錄,那麽,系統會擠下 A 處

java實現的strstr函數的一些問題

符號 clas bsp 問題: pub spa 操作 記錄 位置 用java實現過程如下: 1 public static int strstr(char[] cArray1,char[] cArray2){ 2 if(cArray1!=null &&

Java實現的選擇排序和冒泡排序

auth main sta -i str public java index 選擇 選擇排序 package cn.hxd.sort; /** * 選擇排序 * @author Administrator * */ public class SelectionSo

Java實現字母排列的三角形

int true bst 字母 main println logs abcd rgs public class HomeWork03 { public static void main(String[] args) { String st

java實現從命令行接收多個數字,求和之後輸出結果

system 程序流程圖 sta num 思想 pri for循環 含義 自動 1.設計思想 首先要了解從命令行輸入數字的含義,不需要在程序中自己定義。需要定義int類的num和sum。之後利用num=Integer.parseInt(arg);將String型轉化為int

數據結構(三) java實現七種排序算法。

得到 最簡 上傳 根節點 位置 中間 log 說明 堆排序       很多時候,聽別人在討論快速排序,選擇排序,冒泡排序等,都覺得很牛逼,心想,臥槽,排序也分那麽多種,就覺得別人很牛逼呀,其實不然,當我們自己去了解學習後發現,並沒有想象中那麽難,今天就一起總結一下各種排序

Java實現AES加密(轉)

密鑰 工具 mex 嚴格 keys 生產 ner for 創建 一)什麽是AES? 高級加密標準(英語:Advanced Encryption Standard,縮寫:AES),是一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。 那麽為什麽

java算法面試題:排序都有哪幾種方法?請列舉。JAVA實現一個快速排序。選擇冒泡快速集合至少4種方法排序

算法 err div println rda print 算法面試 ++ 快速排序 package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util

java實現類似於中原六仔源碼搭建

void class a 分別是 super util ava 數據 import count() 由於是用Java實現的所以圖形顯示界面是通過java的GUI實現中原六仔源碼搭建的。企 娥:217 1793 408 首先先來介紹一下我們的最終成果。寫了四個類文件分

Python實現簡單的名片管理系統

rem 代碼 card 刪除 import val 字典 fin pytho 首先新建項目,包含主程序cards_main和工具庫cards_tools: 如下:main函數主主要使用while和if實現4功能切換,切換的具體操作由cards_tools中的函數執行。不說了