1. 程式人生 > >JAVA簡單專案"購物系統"的整個開發過程詳解(內含原始碼和註釋)

JAVA簡單專案"購物系統"的整個開發過程詳解(內含原始碼和註釋)

package cn.itcast;

import java.util.Scanner;

/**
 * 選單類,用於顯示所有級選單供使用者選擇
 * 
 * @author
 * 
 */
public class Menu {

	/**
	 * 空構造方法
	 * 
	 */
	public Menu() {
	}

	/**
	 * 設定選單類中的資料資訊
	 * 
	 * @param as
	 * @param ad
	 * @param ai
	 * @param as1
	 * @param ai1
	 */
	public void setData(String as[], double ad[], int ai[], String as1[], int ai1[]) {
		goodsName 	= as;
		goodsPrice 	= ad;
		custNo 		= ai;
		custBirth 	= as1;
		custScore 	= ai1;
	}

	/**
	 * 顯示一級選單,即登入介面
	 * 
	 */
	public void showLoginMenu() {
		System.out.println("\n\n\t\t\t    歡迎使用itcast購物管理系統1.0版\n\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		System.out.println("\t\t\t\t 1. 登 錄 系 統\n\n");
		System.out.println("\t\t\t\t 2. 更 改 管 理 員 信 息\n\n");
		System.out.println("\t\t\t\t 3. 退 出\n\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		System.out.print("請選擇,輸入數字:");
	}

	/**
	 * 顯示二級選單,即系統的主選單,這個方法裡面包含了對這個選單處理的所有流程
	 * 
	 */
	public void showMainMenu() {
		
		// 顯示二級選單,即系統的主選單
		System.out.println("\n\n\t\t\t\t歡迎使用購物管理系統\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		System.out.println("\t\t\t\t 1. 客 戶 信 息 管 理\n");
		System.out.println("\t\t\t\t 2. 購 物 結 算\n");
		System.out.println("\t\t\t\t 3. 真 情 回 饋\n");
		System.out.println("\t\t\t\t 4. 注 銷\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		
		// 使用者選擇服務專案
		System.out.print("請選擇,輸入數字:");
		Scanner scanner = new Scanner(System.in);
		
		// 設定標誌用於控制迴圈
		boolean flag = false;
		do {
			String s = scanner.next();
			
			// 使用者選擇"客戶資訊管理"
			if (s.equals("1")) {
				// 顯示客戶資訊管理選單並處理這個選單的整個流程,當這個流程處理完
				showCustMMenu();
				break;
			}
			
			// 使用者選擇"購物結算"
			if (s.equals("2")) {
				// 定義購物結算類的物件,並處理整個購物結算的流程
				Pay pay = new Pay();
				pay.setData(goodsName, goodsPrice, custNo, custBirth, custScore);
				pay.calcPrice();
				break;
			}
			
			// 使用者選擇"真情回饋"
			if (s.equals("3")) {
				// 處理真情回饋的整個處理流程
				showSendGMenu();
				break;
			}
			
			// 使用者選擇"登出"
			if (s.equals("4")) {
				// 顯示一級選單,此時會返回至StartSMS類中的一級選單處理流程
				showLoginMenu();
				break;
			}
			
			System.out.print("輸入錯誤,請重新輸入數字:");
			flag = false;
		} while (!flag);
	}

	/**
	 * 顯示三級選單-客戶資訊管理,並處理所有客戶資訊管理的流程
	 * 
	 */
	public void showCustMMenu() {
		System.out.println("購物管理系統 > 客戶資訊管理\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		System.out.println("\t\t\t\t 1. 顯 示 所 有 客 戶 信 息\n");
		System.out.println("\t\t\t\t 2. 添 加 客 戶 信 息\n");
		System.out.println("\t\t\t\t 3. 修 改 客 戶 信 息\n");
		System.out.println("\t\t\t\t 4. 查 詢 客 戶 信 息\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		System.out.print("請選擇,輸入數字或按'n'返回上一級選單:");
		Scanner scanner = new Scanner(System.in);
		
		boolean flag = true;
		do {
			// 建立客戶資訊管理物件,並設定資料,這裡的資料還是原始的那些資料
			CustManagement custmanagement = new CustManagement();
			custmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore);
			
			String s = scanner.next();
			
			// 客戶選擇"顯示所有客戶資訊"
			if (s.equals("1")) {
				custmanagement.show();
				break;
			}
			
			// 客戶選擇"新增客戶資訊"
			if (s.equals("2")) {
				custmanagement.add();
				break;
			}
			
			// 客戶選擇"修改客戶資訊"
			if (s.equals("3")) {
				custmanagement.modify();
				break;
			}
			
			// 客戶選擇"查詢客戶資訊"
			if (s.equals("4")) {
				custmanagement.search();
				break;
			}
			
			// 客戶選擇"返回上一級選單"
			if (s.equals("n")) {
				showMainMenu();
				break;
			}
			
			System.out.println("輸入錯誤, 請重新輸入數字:");
			flag = false;
		} while (!flag);
	}

	/**
	 * 顯示三級選單-真情回饋,並處理所有真情回饋的流程
	 * 
	 */
	public void showSendGMenu() {
		System.out.println("購物管理系統 > 真情回饋\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		System.out.println("\t\t\t\t 1. 幸 運 大 放 送\n");
		System.out.println("\t\t\t\t 2. 幸 運 抽 獎\n");
		System.out.println("\t\t\t\t 3. 生 日 問 候\n");
		System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
		System.out.print("請選擇,輸入數字或按'n'返回上一級選單:");
		Scanner scanner = new Scanner(System.in);
		
		// 建立禮物管理物件,並設定資料,這裡的資料還是原始的那些資料
		GiftManagement giftmanagement = new GiftManagement();
		giftmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore);
		
		boolean flag = true;
		do {
			String s = scanner.next();
			
			// 客戶選擇"幸運大放送"
			if (s.equals("1")) {
				giftmanagement.sendGoldenCust();
				break;
			}
			
			// 客戶選擇"幸運抽獎"
			if (s.equals("2")) {
				giftmanagement.sendLuckyCust();
				break;
			}
			
			// 客戶選擇"生日問候"
			if (s.equals("3")) {
				giftmanagement.sendBirthCust();
				break;
			}
			
			// 客戶選擇"返回上一級選單"
			if (s.equals("n")) {
				showMainMenu();
				break;
			}
			
			System.out.println("輸入錯誤, 請重新輸入數字:");
			flag = false;
		} while (!flag);
	}

	/*====================定義該類所擁有的變數====================*/
	public String 	goodsName [];	// 商品的名稱
	public double 	goodsPrice[];	// 商品的價格
	public int 	custNo	  [];	// 顧客的會員號
	public String 	custBirth [];	// 顧客的生日
	public int 	custScore [];	// 顧客的積分
}