KFC點餐系統(Java實現)
阿新 • • 發佈:2018-12-18
同學們應該都去麥當勞或肯德基吃過快餐吧?請同學們參考肯德基官網的資訊模擬肯德基快餐店的收銀系統,合理使用C++/python/Java,結合設計模式(2種以上)至少實現系統的以下功能:
1.正常餐品結算和找零。
2.基本套餐結算和找零。
3.使用優惠劵購買餐品結算和找零。
4.可在一定時間段參與店內活動(自行設計或參考官網資訊)。
5.模擬列印小票的功能(寫到檔案中)。
用時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("輸入異常,請正確輸入"); } } }