1. 程式人生 > >Java 小程式:實現一個購物流程的功能(2)

Java 小程式:實現一個購物流程的功能(2)

/**
 *@ author  黃偉
 *@ version V1.00
 *@ date     2014/4/6
 *@ time     15:08
 */
import java.util.Scanner;
public class Shopping2 {
	public static void main(String[] args) {
		/*
		 * 需求:使用者輸入登入,如果登入失敗,繼續重新登入,失敗次數超過三次,退出系統
		 */

		int loginIndex = 0;// 定義一個變數,存放使用者登入失敗的次數
		Scanner input = new Scanner(System.in);
		while (true) {
			// 展示登入選單
			System.out.println("\t\t歡迎使用我行我素購物管理系統1.0版\n");
			System.out.print("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
			System.out.println("");
			System.out.println("\t\t\t1. 登入系統\n");
			System.out.println("\t\t\t2. 退出系統\n");
			System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");

			// 提示使用者輸入選項
			System.out.print("請輸入您的選項:");

			int choice1 = input.nextInt();

			// 判斷使用者輸入選項是否正確
			if (choice1 == 1) {/* 登入系統 */

				// 登入系統要實現的功能:提示使用者輸入使用者名稱和密碼
				System.out.print("請輸入使用者名稱:");
				String username = input.next();
				System.out.print("請輸入密碼:");
				String password = input.next();

				// 判斷使用者輸入的使用者名稱是否為admin,密碼是否為1111
				/* 整數判斷可以用==;字串是否相等判斷,用equals方法 */
				if ("admin".equals(username) && "1111".equals(password)) {
					System.out.println("登入成功!");
					// 登入成功之後,展示購物系統頁面
					while (true) {
						System.out.println("\t\t    歡迎使用我行我素購物管理系統\n");
						System.out.print("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
						System.out.println("");
						System.out.println("\t\t\t1. 客 戶 信 息 管 理\n");
						System.out.println("\t\t\t2. 購 物 結 算\n");
						System.out.println("\t\t\t3. 真 情 回 饋\n");
						System.out.println("\t\t\t4. 返回上一級\n");
						System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");

						//輸入相應選項,實現各自功能
						System.out.println("請輸入你的選擇:");
						int choice2 = input.nextInt();
						if (choice2 == 1) {
							while (true) {// 輸入1,展示客戶資訊管理
								System.out.println("我行我素購物管理系統 > 客戶資訊管理\n");
								System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
								System.out.println("");
								System.out.println("\t\t\t1. 顯 示 所 有 客 戶 信 息\n");
								System.out.println("\t\t\t2. 添 加 客 戶 信 息\n");
								System.out.println("\t\t\t3. 修 改 客 戶 信 息\n");
								System.out.println("\t\t\t4. 查 詢 客 戶 信 息\n");
								System.out.println("\t\t\t5. 返回上一級\n");
								System.out.print("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
								System.out.println("");

								// 根據客戶資訊管理頁面,再實現顯示客戶資訊功能,新增、修改、查詢等功能後期完善
								System.out.println("請輸入你的選擇:");
								int choice3 = input.nextInt();
								if (choice3 == 1) {//顯示所有客戶資訊
									System.out.println("客戶編號\t\t客戶姓名\t\t客戶生日\t\t客戶積分");
									System.out.println("1001\t\t\t小貓\t\t\t1992-7-10\t\t20000");
									System.out.println("1002\t\t\t小狗\t\t\t1992-6-17\t\t25000");
									System.out.println("1003\t\t\t小馬\t\t\t1992-7-10\t\t30000");
									System.out.println("1004\t\t\t小狐狸\t\t\t1992-11-1\t\t10000");
									System.out.println("1005\t\t\t大象\t\t\t1992-11-17\t\t10000");
									System.out.println("請按任意鍵繼續!");
									String str1 = input.next();
									if (str1 != "\0") {//if語句表示只要輸入的字串不是回車,繼續執行迴圈語句
										continue;
									}
								}
								
								//因部分實現功能的程式碼出現問題,這段先註釋掉,以後再修改

								/*else if (choice3 == 2) {
									System.out.println("歡迎新增客戶!");
									System.out.println("請輸入新的客戶名稱(2-8個字元):");
									// String name=input.next();
									System.out
											.println("請輸入新客戶的生日(格式:YYYY-MM-DD):");
									// int yy=input.nextInt();
									// int mm=input.nextInt();
									// int dd=input.nextInt();
								
									 * if((mm<1||mm>12)){
									 * System.out.println("新的客戶生日輸入異常,新增失敗");
									 * System.out.println("請按任意鍵繼續!"); String
									 * str2 = input.next(); if(str2 != "\0"){
									 * continue; } }
					
									System.out.println("請輸入新客戶的積分:");
									// long score=input.nextLong();
									System.out.println("恭喜,客戶新增成功!");
									System.out.println("請按任意鍵繼續!");
									String str3 = input.next();
									if (str3 != "\0") {
										continue;
									}
								} else if (choice3 == 3) {
									System.out.println("請輸入您想要修改的客戶編號:");
									// long number=input.nextLong();
									System.out
											.println("客戶編號\t\t客戶姓名\t\t客戶生日\t\t客戶積分\n");
									// System.out.println(number+"\t\t"+a+"\t\t"+b+"\t\t"+c+"\n");
									System.out
											.println("請選擇你要修改的內容:1. 姓名     2.生日	");
									System.out.println("請輸入您的選擇:");
									int cho = input.nextInt();
									if (cho == 1) {
										System.out
												.println("請輸入新的客戶姓名(2-8個字串):");
										String str = input.next();
										if (str.length() > 1
												&& str.length() < 9) {
											System.out.println("修改成功!");
											System.out.println("請按任意鍵繼續!");
												String str0 = input.next();
												if (str0 != "\0") {
													continue;
												}

										} else {
											System.out
													.println("請輸入新的客戶生日(格式:YYYY-MM-DD):");
											// int yy1=input.nextInt();
											int mm1 = input.nextInt();
											// int dd1=input.nextInt();
											if ((mm1 < 1 || mm1 > 12)) {
												System.out
														.println("新的客戶生日輸入異常,新增失敗");
												System.out.println("請按任意鍵繼續!");
												String str4 = input.next();
												if (str4 != "\0") {
													continue;
												}
											}
											System.out.println("修改成功!");
											System.out.println("請按任意鍵繼續!");
											String str5 = input.next();
											if (str5 != "\0") {
												continue;
											}
										}
									}
								} else if (choice3 == 4) {
									System.out.println("請輸入你要查詢的客戶編號:");
									// long number2=input.nextLong();
									System.out
											.println("客戶編號\t\t客戶姓名\t\t客戶生日\t\t客戶積分\n");
									// System.out.println(number+"\t\t"+a+"\t\t"+b+"\t\t"+c+"\n");
									System.out.println("請按任意鍵繼續!");
									String str6 = input.next();
									if (str6 != "\0") {
										continue;
									}
								}*/ 
								else {
									break;
								}
								continue;
							}
						} 
							
							// 顯示購物結算頁面
							else if (choice2 == 2) {
								System.out.println("歡迎進入購物系統!");
								System.out.println("現有商品如下:");
								System.out.println("商品編號\t商品名稱\t\t商品價格 ");
								System.out.println("1\t\t雲南白藥\t\t¥18.00");
								System.out.println("2\t\t小米手機\t\t¥1998.00");
								System.out.println("3\t\t小黑\t\t\t¥4998.00");
								System.out.println("4\t\t拖鞋\t\t\t¥25.80");
								System.out.println("5\t\t醬油\t\t\t¥5.60 ");
								System.out.println("6\t\t汽車模型\t\t¥350.00");
								System.out.println("7\t\t坦克模型\t\t¥400.00");
								System.out.println("8\t\t玩具槍\t\t\t¥99.80");
								System.out.println("請輸入你要購買的產品編號: ");
								int number = input.nextInt();
								System.out.println("請輸入你要購買的產品數量: ");
								int count = input.nextInt();
								String GoodsName = "";  
								double price = 0;
								double totalPrice = 0;    
								// 以下的Switch語句主要實現使用者購買的何種商品以及它的數量
								switch (number) {
									case 1:
										GoodsName = "雲南白藥";
										price = 18.00;
										totalPrice = count * price;
										break;
									case 2:
										GoodsName = "小米手機";
										price = 1998.00;
										totalPrice = count * price;
										break;
									case 3:
										GoodsName = "小黑";
										price = 4998.00;
										totalPrice = count * price;
										break;
									case 4:
										GoodsName = "拖鞋";
										price = 25.00;
										totalPrice = count * price;
										break;
									case 5:
										GoodsName = "醬油";
										price = 5.60;
										totalPrice = count * price;
										break;
									case 6:
										GoodsName = "汽車模型";
										price = 350.00;
										totalPrice = count * price;
										break;
									case 7:
										GoodsName = "坦克模型";
										price = 400.00;
										totalPrice = count * price;
										break;
									case 8:
										GoodsName = "玩具槍";
										price = 99.80;
										totalPrice = count * price;
										break;
									default:
										System.out.println("對不起,沒有你需要的商品。");
										break;
								}

								//顯示使用者購買的商品資訊以及付款情況
								System.out.println("尊敬的使用者:小貓");
								System.out.println("產品名稱\t產品單價\t產品數量\t產品總價");
								System.out.println(GoodsName	+ "\t\t¥"	+ price+ "\t\t"	+ count	+ "\t\t¥"	+(float)(totalPrice));		
								System.out.println("您購買的商品總價為:"+ (float)(totalPrice));
								System.out.println("按您當前的積分,您的折扣為:0.85");							
								double pay = totalPrice * 0.85;	
								
								//提示使用者付款,付款不夠,繼續付款
								System.out.println("您的應付款為:"+(float)(pay));					
								System.out.print("請付款:");
								while(true){
									double money = input.nextDouble();					
									if (money >= pay) {
										System.out.println("付款成功!");
										System.out.println("找零:"+ (float)(money - pay));							
										System.out.println("歡迎下次光臨!");
										break;
									} else {//付款不足,執行迴圈結構
										System.out.println("您付款金額不足,請重新付款:");								
										continue;
									}
								}
								System.out.println("請按任意鍵繼續!");
										String str11 = input.next();
										if (str11 != "\0") {
											continue;
										}
								
							} 
							
							// 顯示真情回饋頁面
							else if (choice2 == 3) {
								while (true) {
									System.out.println("我行我素購物管理系統 > 真情回饋\n");
									System.out.print("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
									System.out.println("");
									System.out.println("\t\t\t1. 幸 運 大 放 送\n");
									System.out.println("\t\t\t2. 幸 運 抽 獎\n");
									System.out.println("\t\t\t3. 生 日 問 候\n");
									System.out.println("\t\t\t4. 返 回 上 一 級\n");
									System.out.print("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
									System.out.println("");
									
									//按頁面所示,輸入相應選項
									System.out.println("請輸入您的選擇:");
									int cho1 = input.nextInt();
									if (cho1 == 1) {
										System.out.println("積分最高的客戶是:");
										System.out.println("客戶編號\t\t客戶姓名\t\t客戶生日 ");
										System.out.println(" ");
										System.out.println("恭喜以上使用者,獲得一個價值¥50.00的話費充值卡");
										System.out.println("請按任意鍵繼續!");
										String str6 = input.next();
										if (str6 != "\0") {
											continue;
										}
									} else if (cho1 == 2) {
										System.out.println("幸運客戶是:");
										System.out.println("客戶編號\t\t客戶姓名\t\t客戶生日 ");
										System.out.println(" ");
										System.out
												.println("恭喜以上使用者,獲得一個價值¥13.50的黑人牙膏");
										System.out.println("請按任意鍵繼續!");
										String str7 = input.next();
										if (str7 != "\0") {
											continue;
										}
									} else if (cho1 == 3) {
										System.out.println("對不起,今天沒有過生日的客戶!");
										System.out.println("請按任意鍵繼續!");
										String str8 = input.next();
										if (str8 != "\0") {
											continue;
										}
									} else {
										break;
									}
									continue;
								}
								
							}
							else {
								break;
							}
							continue;
						}
					} else {
						loginIndex++;
						if (loginIndex > 2) {
							System.out.println("輸入錯誤次數已經超過限制,傻逼,警察叔叔來找你了。。。");
							System.exit(1);
						}
						System.out.println("呀咩碟,大傻逼啊,使用者名稱或者密碼有誤,請重新登入");
						continue;
					}
				} else if (choice1 == 2) {/* 退出系統 */
					System.out.println("哈大喜哇,下次光臨");
					System.exit(1);// 系統退出
				} else {/* 大傻逼啊,沒有這個選項 */
					System.out.println("呀咩碟,大傻逼啊,沒有這個選項,請重新登入");
					continue;
				}
			}
		}
	}
	


			

	

關於此段程式碼,是對上次的補充,如果看過我上次寫的程式碼,你會發現出現最大的不同是迴圈結構的語句全部換成while語句了,上次寫的for語句,另外對於返回上一級的程式碼用到了break語句和continue語句,前者是執行跳出迴圈動作,而後者則是結束當前語句,從迴圈開始語句開始執行。

    程式中用到了很多if-else-else if 語句,應注意條件判斷的依據,熟悉箇中關係.

     最後,還得說聲抱歉,因部分知識掌握不深,購物功能尚有部分未實現,在下次寫的部落格-實現購物功能(3)中全部實現,盡請各位期待。

以下是程式執行的介面:

1.登入系統,設使用者名稱和密碼分別為admin和1111 。


2 . 選擇顯示所有客戶資訊,其他功能下次再實現(抱歉啊!)


3. 選擇2,實現購物結算:


4. 選擇3,實現真情回饋(關於使用者資訊未打印出,後期改善)


5.實現返回上一級功能:


6. 返回上一級並退出系統: