模擬KFC收銀系統
實現系統的以下功能:
1.正常餐品結算和找零。
2.基本套餐結算和找零。
3.使用優惠劵購買餐品結算和找零。
4.可在一定時間段參與店內活動(自行設計或參考官網資訊)。
5.模擬列印小票的功能(寫到檔案中)。
package domain;
public class KFC { private String name; private int price;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getPrice() { return price; }
public void setPrice(int price) { this.price = price; } } 漢堡包基類
package domain;
public class Humberger extends KFC{ private int price = 15; private String name = "漢堡包";
public int getPrice() { return price; }
public String getName() { return name; } }
薯條基類
package domain;
public class FrenchFries extends KFC { private String name = "薯條"; private int price=10;
public String getName() { return name; }
public int getPrice() { return price; } } 雞翅基類
package domain;
public class ChickenWings extends KFC { private String name = "雞翅"; private int price=15;
public String getName() { return name; }
public int getPrice() { return price; } } 可樂基類
package domain;
public class Beverage extends KFC { private String name = "可樂"; private int price=10;
public String getName() { return name; }
public int getPrice() { return price; } } 套餐1基類
package domain;
public class TC1 extends KFC{ private String name = "套餐1:漢堡+可樂+雞翅"; private int price=35;
public String getName() { return name; }
public int getPrice() { return price; } } 套餐2基類
package domain;
public class TC2 extends KFC{ private String name = "套餐2:漢堡+可樂+薯條:30/份"; private int price=30; public String getName() { return name; }
public int getPrice() { return price; } } 餐飲工廠
package domain;
public class Factory { private Factory() { }
public static KFC creat(String name) { if (name.equals("漢堡包")) { return new Humberger(); } else if(name.equals("雞翅")){ return new ChickenWings(); }else if(name.equals("薯條")){ return new FrenchFries(); }else if(name.equals("可樂")){ return new Beverage(); } else if (name.equals("套餐1")) { return new TC1(); } else if (name.equals("套餐2")) { return new TC2(); } else { return null; } } }
package domain;
import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; import java.util.Scanner;
public class DOS { private ArrayList<KFC> aa = new ArrayList<>(); private int yhq = 0; public DOS() throws IOException, ParseException{ zhuJieMain(); } public void zhuJieMain() throws IOException, ParseException{ System.out.println("=============================="); System.out.println("------------------------------"); System.out.println("***** 歡迎來到肯德基 *****"); System.out.println("***** 1.點餐 *****"); System.out.println("***** 2.領取優惠券 *****"); System.out.println("***** 3.結賬 *****"); System.out.println("------------------------------"); System.out.println("=============================="); System.out.println("請選擇:"); show(); } public void show() throws IOException, ParseException{ Scanner sc = new Scanner(System.in); int x = sc.nextInt(); if(x==1){ diancan(); } else if(x==2){ youhuiquan(); }else if(x==3){ jieZhang(); } else{ System.out.println("輸入錯誤"); } } public void diancan() throws IOException, ParseException{ System.out.println("本店退出以下產品:"); System.out.println("1.漢堡:15/個 2.雞翅:15/個"); System.out.println("3.薯條:10/個 4.可樂:10/個"); System.out.println("5.套餐1:漢堡+可樂+雞翅:35/份"); System.out.println("6.套餐2:漢堡+可樂+薯條:30/份"); System.out.println("請選擇:"); Scanner sc = new Scanner(System.in); int x = sc.nextInt(); xuanze(x); }
private void xuanze(int x) throws IOException, ParseException { KFC a = null; Scanner sc = new Scanner(System.in); while (true) { if (x == 1) { a = Factory.creat("漢堡包"); } else if(x==2){ a = Factory.creat("雞翅"); }else if (x == 3) { a = Factory.creat("薯條"); }else if (x == 4) { a = Factory.creat("可樂"); }else if (x == 5) { a = Factory.creat("套餐1"); } else if (x == 6) { a = Factory.creat("套餐2"); } else { System.out.println("沒有該套餐"); } aa.add(a); System.out.println("繼續y,結賬x,主介面n"); String s = sc.next(); if (s.equals("N")||s.equals("n")){ zhuJieMain(); break; }else if(s.equals("Y")||s.equals("y")){ diancan(); break; }else if (s.equals("X")||s.equals("x")){ jieZhang(); break; } } } public void youhuiquan() throws IOException, ParseException{ System.out.println("============================"); System.out.println("----------------------------"); System.out.println("*********1.滿50減20*********"); System.out.println("*********2.滿100減30********"); System.out.println("============================"); Scanner sc = new Scanner(System.in); System.out.println("請選擇:"); int x = sc.nextInt(); if(x==1){ yhq=50; }else if(x==2){ yhq=100; }else{ System.out.println("沒有該操作"); } System.out.println("領取優惠券"+yhq+"元成功"); System.out.println("返回Y"); String s = sc.next(); if (s.equals("Y")||s.equals("y")){ zhuJieMain(); }else{ System.out.println("你還不想結賬?"); } } public void jieZhang() throws IOException, ParseException{ Scanner sc = new Scanner(System.in); Collect c = new Collect(); c.setKfc(aa); c.setYhq(yhq); c.print(); System.out.println("請付款:"); int x1 = sc.nextInt(); c.setMoney(x1); c.printXiaopiao(); } }
package domain;
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date;
public class Collect { private ArrayList<KFC> aa; private int money; private int yhq = 0;
public Collect() {
}
public void setKfc(ArrayList<KFC> aa) { this.aa = aa; }
public void setYhq(int yhq) { this.yhq = yhq; }
public void setMoney(int money) { this.money = money; }
public float judge() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date start = sdf.parse("2018-10-27 00:00:00"); Date end = sdf.parse("2018-10-28 15:00:00"); Date day=new Date(); float i = 0; float sum = 0; for (KFC kfc : aa) { if(day.equals(start)|| day.after(start) && day.equals(end) || day.before(end)){ sum =(float) ((sum+ kfc.getPrice())*0.8); }else{ sum += kfc.getPrice(); } } if (sum >= 50) { if (yhq == 50) { i = money - sum + 20; } else { i = money - sum; } } else if (sum >= 100) { if (yhq == 50) { i = money - sum + 20; } else if (yhq == 100) { i = money - sum + 30; } else { i = money - sum; } } else { i = money - sum; } System.out.println("找零" + i + "元"); return i; }
public void print() { System.out.println("本次消費如下:"); int sum = 0; StringBuffer s = new StringBuffer(); for (KFC kfc : aa) { sum += kfc.getPrice(); if (aa.indexOf(kfc) != aa.size() - 1) { s.append(kfc.getName() + "---------" + kfc.getPrice() + "\r\n"); } else { s.append(kfc.getName() + "---------" + kfc.getPrice()); } }
System.out.println(s); System.out.println("共消費" + sum + "元"); // System.out.println(); if (sum >= 50) { System.out.println("***您使用了優惠券滿50減20***" + "\r\n"); } else if (sum >= 100) { System.out.println("***您使用了優惠券滿100減30***" + "\r\n"); } else { System.out.println("*** 沒有使用優惠券 ***" + "\r\n"); } }
public void printXiaopiao() throws IOException, ParseException { Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); BufferedWriter br = new BufferedWriter(new FileWriter("xiaopiao.txt")); br.write("=========================" + "\r\n"); br.write("-------------------------" + "\r\n"); br.write("*******歡迎光臨KFC*******" + "\r\n"); br.write("**"+df.format(day)+"**"+"\r\n"); br.write("*******本次消費如下******" + "\r\n"); int sum = 0; for (KFC kfc : aa) { sum += kfc.getPrice(); if (aa.indexOf(kfc) != aa.size() - 1) { br.write("***" + kfc.getName() + "-----------" + kfc.getPrice() + "***" + "\r\n"); } else { br.write("***" + kfc.getName() + "-----------" + kfc.getPrice() + "***" + "\r\n"); } } br.write("***消費" + "-----------" + sum + "元" + "***" + "\r\n"); br.write("***支付" + "-----------" + money + "元" + "***" + "\r\n"); if (sum >= 50) { br.write("***您使用了優惠券滿50減20***" + "\r\n"); } else if (sum >= 100) { br.write("***您使用了優惠券滿100減30***" + "\r\n"); } else { br.write("*** 沒有使用優惠券 ***" + "\r\n"); } br.write("***找零" + "-----------" + judge() + "元" + "***" + "\r\n"); br.write("=========================" + "\r\n"); br.newLine(); br.flush(); br.close(); } }
測試類
package Demo;
import java.io.IOException; import java.text.ParseException;
import domain.DOS;
public class demo { public static void main(String[]args) throws IOException, ParseException{ DOS a= new DOS(); } }