1. 程式人生 > >KFC點餐系統(Java實現)

KFC點餐系統(Java實現)

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

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

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

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

4.可在一定時間段參與店內活動(自行設計或參考官網資訊)。

5.模擬列印小票的功能(寫到檔案中)。

用時2周。

基本要求:

  1. 程式設計風格良好,控制檯介面友好,最多兩人一組完成任務。
  2. 實現功能測試程式碼,確保程式的健壯性。
  3. 畫出使用的設計模式圖。

提高要求:

  1. 實現視覺化介面。
  2. 實現會員儲值卡功能,完成儲值卡消費。

實現當天營業額和餐品銷量計算和統計,用資料庫記錄。

在這裡實現了基本要求:

廢話不多說,直接上程式碼!

package nanqiao1025;

public class Food {
	//正常購買的食物和價格
	String hambuger="漢堡";
	int h1;//漢堡的數量
	String chips="薯條";
	int c1;//薯條的數量
	String tart="蛋撻";
	int t1;//蛋撻的數量
	String chickenrolls="雞肉卷";
	int CH1;//雞肉卷的數量
	String sundae="聖代";
	int s1;//聖代的數量
	String cola="可樂";
	int c2;//可樂的數量
	String jucie="果汁";
	int j1;//果汁的數量
	String chicken="雞塊";
	int CH2;//雞塊的數量
	//各種食品的價格
	int priceh1=15;//漢堡的價格
	int pricec1=10;//薯條的價格
	int pricet1=8;//蛋撻的價格
	int priceCH1=16;//雞肉卷的價格
	int prices1=7;//聖代的價格
	int pricec2=6;//可樂的價格
	int pricej1=6;//果汁的價格
	int priceCH2=8;//雞塊的價格
	
	//套餐購買
	String SectionA="套餐A";//"漢堡+可樂+薯條";
	String SectionB="套餐B";//"雞肉卷+可樂+薯條";
	String SectionC="套餐C";//"漢堡+雞肉卷+蛋撻";
	String SectionD="套餐D";//"雞肉卷+薯條+果汁";
	int priceA=25;
	int priceB=27;
	int priceC=39;
	int priceD=27;
	
	//定義一個選單
	public void show() {
		System.out.println("漢堡 15元");
		System.out.println("薯條 10元");
		System.out.println("蛋撻 8元");
		System.out.println("雞肉卷 16元");
		System.out.println("聖代 7元");
		System.out.println("可樂 6元");
		System.out.println("果汁 7元");
		System.out.println("雞塊 8元");
	}
}		
package nanqiao1025;

public interface Buyways{
	public void normal();//正常購買
	public void set();//套餐購買
}
package nanqiao1025;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Main extends Food implements Buyways{
	public static void main(String[] args) {
		Main kfc=new Main();
		kfc.menu();
	}

	@Override//實現正常購買函式
	public void normal() {
		try {
			// TODO Auto-generated method stub	
			System.out.println("請輸入點餐資訊:");
			while(true) {
				Scanner sc=new Scanner(System.in);
				String emmm=sc.nextLine();
				switch(emmm) {
				case"漢堡":
					System.out.println("請輸入漢堡的數量:");
					h1=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"薯條":
					System.out.println("請輸入薯條的數量:");
					c1=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"蛋撻":
					System.out.println("請輸入雞肉卷的數量:");
					t1=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"雞肉卷":
					System.out.println("請輸入雞肉卷的數量:");
					CH1=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"聖代":
					System.out.println("請輸入聖代的數量:");
					s1=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"可樂":
					System.out.println("請輸入可樂的數量:");
					c2=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"果汁":
					System.out.println("請輸入果汁的數量:");
					j1=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"雞塊":
					System.out.println("請輸入雞塊的數量:");
					CH2=sc.nextInt();
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					continue;
				case"finish":	
					SimpleDateFormat df = new SimpleDateFormat("HH:mm");
					Date nowTime =null;
					Date beginTime = null;
					Date endTime = null;
					try {
						nowTime = df.parse(df.format(new Date()));
						beginTime = df.parse("12:00");
						endTime = df.parse("14:00");
					}catch(Exception e) {
						e.printStackTrace();
					}
					boolean flag = belongCalendar(nowTime, beginTime, endTime);
					if(flag) {
						System.out.println("午間用餐 八折優惠");
						double sumprice=(h1*priceh1+c1*pricec1+t1*pricet1+CH1*priceCH1+s1*prices1+c2*pricec2+j1*pricej1+CH2*priceCH2)*0.8;
						System.out.println("應收:"+sumprice);
						int deserveprice=sc.nextInt();
						System.out.println("收款:"+deserveprice);
						System.out.println("找零:"+(deserveprice-sumprice));
						break;
					}else {
						int sumprice=h1*priceh1+c1*pricec1+t1*pricet1+CH1*priceCH1+s1*prices1+c2*pricec2+j1*pricej1+CH2*priceCH2;
						System.out.println("應收:"+sumprice);
						int deserveprice=sc.nextInt();
						System.out.println("收款:"+deserveprice);
						System.out.println("找零:"+(deserveprice-sumprice));
						break;
					}		
				}
				//sc.close();
				System.out.println("----------------------------------------------");
				menu();	//點餐結束 返回選單		
			}	
			
		}catch(InputMismatchException e) {
			System.out.println("輸入異常,請正確輸入");
		}
	
	}
	//用於判斷是否在當前時間段內的函式
	private boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
		// TODO Auto-generated method stub
		Calendar date = Calendar.getInstance();//設定當前時間
	    date.setTime(nowTime);

	    Calendar begin = Calendar.getInstance();//設定開始時間
	    begin.setTime(beginTime);

	    Calendar end = Calendar.getInstance();//設定結束時間
	    end.setTime(endTime);

	    if (date.after(begin) && date.before(end)) {
	        return true;
	    } else {
	        return false;
	    }
	}

	@Override//實現套餐購買函式
	public void set(){
		try {
			// TODO Auto-generated method stub
			System.out.println("歡迎光臨,請選擇你想要的套餐");
			System.out.println("套餐A:漢堡+可樂+薯條");
			System.out.println("套餐B:雞肉卷+可樂+薯條");
			System.out.println("套餐C:漢堡+雞肉卷+蛋撻");
			System.out.println("套餐D:雞肉卷+薯條+果汁");
			
			while(true) {
				Scanner sc1=new Scanner(System.in);
				String emmm1=sc1.nextLine();
				switch(emmm1) {
				case"套餐A":
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					System.out.println("應收:"+priceA);
					int deserveprice=sc1.nextInt();
					System.out.println("收款:"+deserveprice);
					System.out.println("找零:"+(deserveprice-priceA));
					continue;
				case"套餐B":
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					System.out.println("應收:"+priceB);
					int deserveprice1=sc1.nextInt();
					System.out.println("收款:"+deserveprice1);
					System.out.println("找零:"+(deserveprice1-priceB));
					continue;
				case"套餐C":
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					System.out.println("應收:"+priceC);
					int deserveprice2=sc1.nextInt();
					System.out.println("收款:"+deserveprice2);
					System.out.println("找零:"+(deserveprice2-priceC));
					continue;
				case"套餐D":
					System.out.println("請繼續點餐,若結束請輸入finish完成點餐^_^~");
					System.out.println("應收:"+priceD);
					int deserveprice3=sc1.nextInt();
					System.out.println("收款:"+deserveprice3);
					System.out.println("找零:"+(deserveprice3-priceD));
					continue;
				case"finish":
					System.out.println("點餐結束");
					break;
				}
				//sc1.close();
				System.out.println("----------------------------------------------");
				menu();//點餐結束 返回選單
			}
		}catch(InputMismatchException e) {
			System.out.println("輸入異常,請正確輸入");
		}
					
	}
	//選單函式 用於展示選單資訊和選擇購買方式
	public void menu() {
		try {
			System.out.print("歡迎使用KFC點餐系統~    ");
			
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式
			System.out.println(df.format(new Date()));// new Date()為獲取當前系統時間
			
			System.out.println("Good news: 12:00~14:00就餐8折優惠");
			
			show();//呼叫定義在Food類中的顯示函式用於顯示出選單資訊
			System.out.println("1.正常購買\n2.套餐購買");
			Scanner sc2= new Scanner(System.in);
			int order=sc2.nextInt();
			if(order==1) {
				normal();
			}
			if(order==2) {
				set();
			}
			//sc2.close();
		}catch(InputMismatchException e) {
			System.out.println("輸入異常,請正確輸入");
		}
	}

}