1. 程式人生 > 實用技巧 >Java Day15-超市進銷存專案開發流程

Java Day15-超市進銷存專案開發流程

超市進銷存專案開發流程

1.建立DateBase類

/**
 * 模擬資料庫,資料要唯一
 * 儲存資料的地方
 * 商品名稱 = String[] names
 * 商品數量 = int[] numbers
 * 商品價格 = double[] moneys
 */
public class DateBase {
    //模擬資料庫  儲存 商品名  商品數量  商品價格
    static String [] names = new String[5];
    static int [] numbers = new int[5];
    static double [] moneys = new double[5];
}

2.建立GoodsService類

package com.soft863;

import java.util.Scanner;

public class GoodsService {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = 0;//下標記錄添加了多少個商品

        while (true) {
            System.out.println("歡迎使用超市進銷存系統1.0   ");
            System.out.print("1.增加商品  ");
            System.out.print("2.刪除商品  ");
            System.out.print("3.修改商品  ");
            System.out.print("4.根據商品名稱查詢商品  ");
            System.out.print("5.查詢所有商品  ");
            System.out.println("0.退出系統");
            System.out.print("請選擇:");
            int choose = sc.nextInt();

            switch (choose) {
                //實現新增商品功能
                case 1:
                    if (num >= 5) {  //判斷商品數量是否超過模擬資料庫給的最大數量
                        System.out.println("商品已滿無法繼續新增");
                    }
                    System.out.println("請輸入商品名稱:");
                    DateBase.names[num] = sc.next();
                    System.out.println("請輸入商品數量:");
                    DateBase.numbers[num] = sc.nextInt();
                    System.out.println("請輸入商品價格:");
                    DateBase.moneys[num] = sc.nextDouble();
                    num++;  //每輸入一次商品數量+1
                    break;
                case 2:
                    System.out.println("請輸入需要刪除的商品名稱:");
                    String deleteName = sc.next();
                    boolean deleteFlag = false;
                    // 找到商品
                    for (int i = 0; i < DateBase.names.length; i++) {
                        if (deleteName.equals(DateBase.names[i])) {
                            deleteFlag = true;
                            //巢狀for迴圈 從外層找到對應下標第i位的商品 使j=i 迴圈使j後的資料往前覆蓋 j需要小於陣列長度減一 如果不減一推到最後一位就會下標越界
                            for (int j = i; j < DateBase.names.length - 1; j++) {
                                DateBase.names[j] = DateBase.names[j + 1];
                                DateBase.numbers[j] = DateBase.numbers[j + 1];
                                DateBase.moneys[j] = DateBase.moneys[j + 1];
                            }
                            //使陣列最後一位的資訊賦值為空
                            DateBase.names[DateBase.names.length - 1] = null;
                            DateBase.numbers[DateBase.numbers.length - 1] = 0;
                            DateBase.moneys[DateBase.moneys.length - 1] = 0.0;
                            System.out.println("刪除成功");
                            num--;//每刪除一次商品數量-1
                            break;
                        }
                    }
                    if (!deleteFlag) {
                        System.out.println("查無此商品");
                    }
                    break;
                case 3:
                    System.out.println("請輸入需要修改的商品名稱:");
                    String updateName = sc.next();
                    boolean updateFlag = false;
                    int updateNum = 0; //重新定義修改商品的模擬資料庫陣列下標 從而覆蓋原商品資訊
                    //根據商品名稱修改  首先通過查詢功能查是否存在此商品
                    for (int i = 0; i < DateBase.names.length; i++) {
                        if (updateName.equals(DateBase.names[i])) {
                            updateFlag = true;
                            updateNum = i;
                            System.out.println("商品名稱\t\t商品數量\t\t商品價格");
                            System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]);
                            break;
                        }
                    }
                    if (!updateFlag) {
                        System.out.println("查無此商品");
                    }
                    // 根據重新定義的修改商品的模擬資料庫陣列下標 輸入覆蓋原模擬資料庫商品資訊
                    System.out.println("請輸入商品名稱:");
                    DateBase.names[updateNum] = sc.next();
                    System.out.println("請輸入商品數量:");
                    DateBase.numbers[updateNum] = sc.nextInt();
                    System.out.println("請輸入商品價格:");
                    DateBase.moneys[updateNum] = sc.nextDouble();
                    break;
                case 4:
                    System.out.println("請輸入需要查詢的商品名稱:");
                    String findName = sc.next();
                    boolean findFlag = false;
                    //根據下標迴圈對比商品名和輸入的商品名
                    for (int i = 0; i < DateBase.names.length; i++) {
                        if (findName.equals(DateBase.names[i])) {
                            findFlag = true; // 如果相等把布林值等於真
                            System.out.println("商品名稱\t\t商品數量\t\t商品價格");
                            System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]);
                            break;
                        }
                    }
                    if (!findFlag) { //如果不相等布林值等於假  判斷不相等
                        System.out.println("查無此商品");
                    }
                    break;
                case 5:
                    //實現查詢/顯示全部商品
                    System.out.println("商品名稱\t\t商品數量\t\t商品價格");
                    //根據下標迴圈輸出模擬資料庫中所有商品資訊
                    for (int i = 0; i < DateBase.names.length && i < DateBase.numbers.length && i < DateBase.moneys.length; i++) {
                        if (DateBase.names[i] != null) //判斷  只輸出商品名稱不為空的商品資訊
                            System.out.println(DateBase.names[i] + "\t" + DateBase.numbers[i] + "\t" + DateBase.moneys[i]);
                    }
                    break;
                case 0:
                    return;
            }
        }
    }
}