1. 程式人生 > >KFC點餐系統

KFC點餐系統

  1. 題目要求 同學們應該都去麥當勞或肯德基吃過快餐吧?請同學們參考肯德基官網的資訊模擬肯德基快餐店的收銀系統,合理使用C++/python/Java,結合設計模式(2種以上)至少實現系統的以下功能:

1.正常餐品結算和找零。

2.基本套餐結算和找零。

3.使用優惠劵購買餐品結算和找零。

4.可在一定時間段參與店內活動。

5.模擬列印小票的功能

  1. 部分程式碼
import java.util.Scanner;
//import KFC.baseStrategy;
//抽象工廠模式,套餐
//工廠模式:正常餐品
//策略模式 ,打折方式(1.不打折,2.優惠券-10元,3.活動期間全場85折,4.活動期間擁有優惠券,先減10元再*0.85)
/*
 1. 1.選擇正常點餐還是選擇套餐
 2. 2.支付選擇正常支付還是折扣支付
 3. 3.看是不是活動時間,活動時間某樣東西有優惠
 4. 4.列印小票(儲存到檔案中) 
 */
public class KfcMain {
	public static void main(String[] args) 
	{
		//檔案輸出採取[Console output redirected to file:D:\eclipse\note.txt]方式
		//檔案儲存在eclipse根目錄下
		int num;
		int a,b,c,m = 0;
		System.out.println("**********歡迎使用肯德基點餐系統***********");
		System.out.println("**********請輸入你需要的點餐方式***********");
		System.out.println("*******1.自主點餐********2.選擇套餐******");
		@SuppressWarnings("resource")
		Scanner s=new Scanner(System.in);
		a=s.nextInt();
		/*
		 * 實體類物件
		 */
		hambuger h1=new hambuger();
		hambuger h2=new hambuger();
		chicken c1=new chicken();
		chicken c2=new chicken();
		french r1=new french();
		french r2=new french();
		breave b1=new breave();
		breave b2=new breave();
		float foodPrice=0f;
		float z=0;//自主點餐的原價
		//建立環境
		MemberStrategy strategy = new Activity();
        //建立價格
        Price price = new Price(strategy);
        MemberStrategy strategy1 = new baseStrategy();
        //建立環境
        Price price1 = new Price(strategy1);
		switch(a) {
		case 1:
			System.out.println("1.漢堡,2.雞翅,3.薯條,4.飲品");
			b=s.nextInt();
			if(b==1) {
				System.out.println("請選擇漢堡種類及數量:1.牛肉漢堡,2.香辣漢堡");
				m=s.nextInt();
				num=s.nextInt();
				switch(m) {
				case 1:
					h1.beelHanburm(num);
					h1.printMessage();
					float f1=price.quote(h1.totalPrice());
					System.out.println("活動期間打折價為:"+f1);
					float f11 = price1.quote(h1.totalPrice());
			        System.out.println("使用優惠券後價格為:"+f11);
			        float f12=price.quote(price1.quote(h1.totalPrice()));
			        System.out.println("優惠券+活動之後的價格為:"+f12);
					break;
				case 2:
					h2.xlHanburm(num);
					h2.printMessage();
					float f2=price.quote(h2.totalPrice());
					System.out.println("活動期間打折價為:"+f2);
					float f21 = price1.quote(h2.totalPrice());
			        System.out.println("使用優惠券後價格為:"+f21);
			        float f22=price.quote(price1.quote(h2.totalPrice()));
			        System.out.println("優惠券+活動之後的價格為:"+f22);
					break;
				}
				z=h1.totalPrice()+h2.totalPrice();
			}
			else if(b==2) {
				System.out.println("請選擇雞翅種類及數量:1.奧爾良雞翅,2.香辣雞翅");
				m=s.nextInt();
				num=s.nextInt();
				switch(m) {
				case 1:
					c1.aoChickenWings(num);
					c1.printMessage();
					float f3=price.quote(c1.totalPrice());
					System.out.println("活動期間打折價為:"+f3);
					float f31 = price1.quote(c1.totalPrice());
			        System.out.println("使用優惠券後價格為:"+f31);
			        float f32=price.quote(price1.quote(c1.totalPrice()));
			        System.out.println("優惠券+活動之後的價格為:"+f32);
					break;
				case 2:
					c2.laChickenWings(num);
					c2.printMessage();
					float f4=price.quote(c2.totalPrice());
					System.out.println("活動期間打折價為:"+f4);
					float f41 = price1.quote(c2.totalPrice());
			        System.out.println("使用優惠券後價格為:"+f41);
			        float f42=price.quote(price1.quote(c2.totalPrice()));
			        System.out.println("優惠券+活動之後的價格為:"+f42);
					break;
				}
				z=c1.totalPrice()+c2.totalPrice();
			}
				else if(b==3) {
					System.out.println("請選擇薯條種類及數量:1.小份,2.大份");
					m=s.nextInt();
					num=s.nextInt();
					switch(m) {
					case 1:
						r1.sFrenchFries(num);
						r1.printMessage();
						float f5=price.quote(r1.totalPrice());
						System.out.println("活動期間打折價為:"+f5);
						float f51 = price1.quote(r1.totalPrice());
				        System.out.println("使用優惠券後價格為:"+f51);
				        float f52=price.quote(price1.quote(r1.totalPrice()));
				        System.out.println("優惠券+活動之後的價格為:"+f52);
						break;
					case 2:
						r2.lFrenchFries(num);
						r2.printMessage();
						float f6=price.quote(r2.totalPrice());
						System.out.println("活動期間打折價為:"+f6);
						float f61 = price1.quote(r2.totalPrice());
				        System.out.println("使用優惠券後價格為:"+f61);
				        float f62=price.quote(price1.quote(r2.totalPrice()));
				        System.out.println("優惠券+活動之後的價格為:"+f62);
						break;
					}
					z=r1.totalPrice()+r2.totalPrice();
			}
				else if(b==4) {
					System.out.println("請選擇飲品種類及數量:1.可樂,2.橙汁");
					m=s.nextInt();
					num=s.nextInt();
					switch(m) {
					case 1:
						b1.cola(num);
						b1.printMessage();
						float f7=price.quote(b1.totalPrice());
						System.out.println("活動期間打折價為:"+f7);
						float f71 = price1.quote(b1.totalPrice());
				        System.out.println("使用優惠券後價格為:"+f71);
				        float f72=price.quote(price1.quote(b1.totalPrice()));
				        System.out.println("優惠券+活動之後的價格為:"+f72);
						break;
					case 2:
						b2.Orange(num);
						b2.printMessage();
						float f8=price.quote(b2.totalPrice());
						System.out.println("活動期間打折價為:"+f8);
						float f81 = price1.quote(b2.totalPrice());
				        System.out.println("使用優惠券後價格為:"+f81);
				        float f82=price.quote(price1.quote(b2.totalPrice()));
				        System.out.println("優惠券+活動之後的價格為:"+f82);
						break;
					}
					z=b1.totalPrice()+b2.totalPrice();//飲品總價格
			}
			break;
		case 2:
			//套餐模式
			//抽象工場模式
			System.out.println("基本套餐為:");
			IKFCFactory kfcFactory=new KfcFactory();
			Hamburg hamburg=kfcFactory.createHamburg(1);
			hamburg.printMessage();
		    ChickenWings wings=kfcFactory.createChickenWings(1);
			wings.printMessage();
			FrenchFires french=kfcFactory.createFrenchFries(1);
			french.printMessage();
			Drink drink=kfcFactory.createBeverage(1);
			drink.printMessage();
			//套餐總價
			foodPrice=hamburg.price+wings.price+french.price+drink.price;
	        //計算價格
	        float quote = price.quote(foodPrice);
	        System.out.println("活動期間打折價為:"+quote);
	        float quote1 = price1.quote(foodPrice);
	        System.out.println("使用優惠券後價格為:"+quote1);
	        float quote2=price.quote(quote1);
	        System.out.println("優惠券+活動之後的價格為:"+quote2);
			break;
		}
		System.out.println("*************請選擇付款方式*************");
		System.out.println("1.正常支付,2.優惠券支付 3.活動期間折扣,4.活動期間使用優惠券");
		c=s.nextInt();//獲取使用者選擇
		float g=0;
		float t=0;
		switch(c)
		{
		case 1:
			if(m==1) {
				System.out.println("總計"+z);
				System.out.println("請付款:");
				g=s.nextFloat();//獲取付款錢數
				t=g-z;
			}
				
			else
			{
				System.out.println("總計"+foodPrice);
				System.out.println("請付款:");
				g=s.nextFloat();//獲取付款錢數
			    t=g-foodPrice;
			}
			if(t>0)
			{
				System.out.println("找零:"+t);
				System.out.println("請收好您的票據,歡迎下次光臨");
			}
			else
			{
				System.out.println("付款數不足,請重新付款");
				while(t>=0) {
					System.out.println("付款成功,請收好您的票據,歡迎下次光臨");
				}
			}
			break;
		case 2:
			if (m==1) {//當選擇自主選餐時
				System.out.println("總計"+price1.quote(z));
				System.out.println("請付款:");
			    g=s.nextFloat();
				t=g-price1.quote(z);//找零方式
				}
			else{//當選擇套餐模式時
				System.out.println("總計"+price1.quote(foodPrice));
				System.out.println("請付款:");
			    g=s.nextFloat();
			   t=g-price1.quote(foodPrice);//找零方式
			}
			if(t>0)
			{
				System.out.println("找零:"+t);
				System.out.println("請收好您的票據,歡迎下次光臨");
			}
			else
			{
				System.out.println("付款數不足,請重新付款");
				while(t>=0) {
					System.out.println("付款成功,請收好您的票據,歡迎下次光臨");
				}
			}
			break;
		case 3:
			if(m==1) {
				System.out.println("總計"+price.quote(z));
				System.out.println("請付款:");
			    g=s.nextFloat();
				t=g-price.quote(z);//找零方式
			}
			else
			{
				System.out.println("總計"+price.quote(foodPrice));
				System.out.println("請付款:");
			    g=s.nextFloat();
			    t=g-price.quote(foodPrice);
			}
			if(t>0)
			{
				System.out.println("找零:"+t);
				System.out.println("請收好您的票據,歡迎下次光臨");
			}
			else
			{
				System.out.println("付款數不足,請重新付款");
				while(t>=0) {
					System.out.println("付款成功,請收好您的票據,歡迎下次光臨");
				}
			}
			break;
		case 4:
			if(m==1) {
				System.out.println("總計"+price.quote(price1.quote(z)));
				System.out.println("請付款:");
			    g=s.nextFloat();
				t=g-price.quote(price1.quote(z));//找零方式
			}
			else
			{
				System.out.println("總計"+price.quote(price1.quote(foodPrice)));
				System.out.println("請付款:");
			    g=s.nextFloat();
			    t=g-price.quote(price1.quote(foodPrice));
			}
			if(t>0)
			{
				System.out.println("找零:"+t);
				System.out.println("請收好您的票據,歡迎下次光臨");
			}
			else
			{
				System.out.println("付款數不足,請重新付款");
				while(t>=0) {
					System.out.println("付款成功,請收好您的票據,歡迎下次光臨");
				}
			}
			break;
		} 
	}
	
	}
  1. 截圖 在這裡插入圖片描述 在這裡插入圖片描述