同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
提高要求:
1.实现可视化界面(使用MFC)。
2.实现会员储值卡功能,完成储值卡消费。
3.实现当天营业额和餐品销量计算和统计,用数据库记录。
`package kfc;
public class BeefBurger implements Hamburger{
private double price=10.0;
int num=0;
public void display() {
System.out.println(“至尊牛肉堡 *”+num+" “+price+”/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi=“至尊牛肉堡 *”+num+" “+price+”/份";
return xixi;
}
}
package kfc;
public class BeefBurgerFactory implements HamburgerFactory {
public Hamburger productHamburger() {
return new BeefBurger();
}
}
package kfc;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
public class Client {
public static void main(String[] args) {
int select,choice,H=0,i=0,flag=0;
double price=0.0;
BeefBurgerFactory BeefBurgerF=new BeefBurgerFactory();
WholeShrimpBurgerFactory WholeShrimpBurgerF=new WholeShrimpBurgerFactory();
ZingerBurgerFactory ZingerBurgerF=new ZingerBurgerFactory();
Hamburger H1=BeefBurgerF.productHamburger();
Hamburger H2=WholeShrimpBurgerF.productHamburger();
Hamburger H3=ZingerBurgerF.productHamburger();
SnackFactory TaroDiguaPillsF=new TaroDiguaPillsFactory();//1
SnackFactory CornSaladF=new CornSaladFactory();//2
SnackFactory CrispyMeatStringF=new CrispyMeatStringFactory();//3
SnackFactory HotWingF=new HotWingFactory();//4
SnackFactory PopcornChickenF=new PopcornChickenFactory();//5
SnackFactory FrenchFriesF=new FrenchFriesFactory();//6
Snack S1=TaroDiguaPillsF.productSnack();
Snack S2=CornSaladF.productSnack();
Snack S3=CrispyMeatStringF.productSnack();
Snack S4=HotWingF.productSnack();
Snack S5=PopcornChickenF.productSnack();
Snack S6=FrenchFriesF.productSnack();
SetMeal set=new SetMeal();
DrinkFactory D=new DrinkFactory();
Drinks [] arr=new Drinks [4];
FileWriter fw = null;
try {
//如果文件存在,则追加内容;如果文件不存在,则创建文件
File f=new File("E:\\javaxixi\\KFC\\dd.txt");
fw = new FileWriter(f, true);
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
Scanner in=new Scanner(System.in);
System.out.println(" 欢迎来到KFC,请选择食物 ");
System.out.println(" 汉堡系列 ");
System.out.println("———————————————————————————");
System.out.println("至尊牛肉堡"+" ¥10.0");
System.out.println("至尊鲜虾堡"+" ¥12.0");
System.out.println("香辣鸡腿堡"+" ¥ 9.5");
System.out.println(" ");
System.out.println(" ");
System.out.println(" 小吃系列 ");
System.out.println("———————————————————————————");
System.out.println("香芋地瓜丸"+" ¥ 5.0");
System.out.println("玉米沙拉 "+" ¥ 4.0");
System.out.println("骨肉相连 "+" ¥ 3.0");
System.out.println("香辣鸡翅 "+" ¥ 7.5");
System.out.println("鸡米花 "+" ¥ 7.5");
System.out.println("薯条 "+" ¥ 8.0");
System.out.println(" ");
System.out.println(" ");
System.out.println(" 饮品系列 ");
System.out.println("——————————————————————————");
System.out.println("可口可乐 "+" ¥ 6.0");
System.out.println("热咖啡 "+" ¥ 8.0");
System.out.println("热奶茶 "+" ¥ 7.0");
System.out.println("热牛奶 "+" ¥ 7.0");
System.out.println(" ");
System.out.println(" ");
System.out.println(" 套餐系列 ");
System.out.println("———————————————————————————");
System.out.println("情侣套餐 "+" ¥ 46.6");
System.out.println("请选择要购买的食物: 1.汉堡系列 2.小吃系列3.饮品系列 4套餐系列.");
select=in.nextInt();
while(select!=0) {
if(select==1) {
System.out.println("请选择要购买的汉堡: 1.至尊牛肉堡 2.至尊鲜虾堡 3.香辣鸡腿堡 ");
choice=in.nextInt();
while(choice!=0) {
if(choice==1) {
H1.numplus();
price+=H1.getprice();
}
else if (choice==2 ) {
H2.numplus();
price+=H2.getprice();
}
else if(choice==3) {
H3.numplus();
price+=H3.getprice();
}
System.out.println("添加成功,请继续选择;或者按0返回上一级");
choice=in.nextInt();
}
}
if(select==2) {
System.out.println("请选择要购买的小吃: 1.香芋地瓜丸 2.玉米沙拉 3.骨肉相连 4.香辣鸡翅 5.鸡米花 6.薯条 ");
choice=in.nextInt();
while(choice!=0) {
if(choice==1) {
S1.numplus();
price+=S1.getprice();
}
else if(choice==2) {
S2.numplus();
price+=S2.getprice();
}
else if(choice==3) {
S3.numplus();
price+=S3.getprice();
}
else if(choice==4) {
S4.numplus();
price+=S4.getprice();
}
else if(choice==5) {
S5.numplus();
price+=S5.getprice();
}
else if(choice==6) {
S6.numplus();
price+=S6.getprice();
}
System.out.println("添加成功,请继续选择;或者按0返回上一级");
choice=in.nextInt();
}
}
else if(select==3) {
System.out.println("请选择要购买的饮品: 1.可口可乐(橙汁) 2.热咖啡 3.热奶茶 4.热牛奶 ");
choice=in.nextInt();
while(choice!=0) {
D.fun(choice);
Drinks DR=D.make();
price+=DR.getprice();
arr[choice]=DR;
System.out.println("添加成功,请继续选择;或者按0返回上一级");
choice=in.nextInt();
}
}
else if(select==4) {
System.out.println("请选择要购买的套餐: 1.情侣套餐 或者按0返回上一层");
choice=in.nextInt();
while(choice==1) {
set.numplus();
price+=set.getprice();
flag=1;
System.out.println("添加成功,请继续选择;或者按0返回上一级");
choice=in.nextInt();
}
}
System.out.println("请选择要购买的食物: 1.汉堡系列 2.小吃系列3.饮品系列 4.套餐系列;或者按0退出");
select=in.nextInt();
}
String xixi=new String();
if(H1.getnum()!=0) {
H1.display();
pw.println(H1.getd());
}
if(H2.getnum()!=0) {
H2.display();
pw.println(H2.getd());
}
if(H3.getnum()!=0) {
H3.display();
pw.println(H3.getd());
}
if(S1.getnum()!=0) {
S1.display();
pw.println(S1.getd());
}
if(S2.getnum()!=0) {
S2.display();
pw.println(S1.getd());
}
if(S3.getnum()!=0) {
S3.display();
pw.println(S3.getd());
}
if(S4.getnum()!=0) {
S4.display();
pw.println(S4.getd());
}
if(S5.getnum()!=0) {
S5.display();
pw.println(S5.getd());
}
if(S6.getnum()!=0) {
S6.display();
pw.println(S6.getd());
}
for(int j=0;j<4;j++) {
if(arr[j]!=null) {
arr[j].display();
pw.println(arr[j].getd());
}
}
if(flag!=0) {
set.diplay();
pw.println(set.getd());
}
Date date=new Date();
String week=GetDate.getWeek(date);
if(week.equals("星期六")||week.equalsIgnoreCase("星期日")) {
price*=0.88;
pw.println("周末 0.88折");
}
System.out.println("应付:"+String.format("%.2f", price) +"请输入支付方式:1.使用优惠券 2.直接付款");
choice=in.nextInt();
if(choice==1) {
System.out.println("请选择使用的优惠卷:1.¥3.3元无门槛 2.满20-5");
choice=in.nextInt();
if(choice==1) {
price-=3.3;
}
else {
if(price<20) {
System.out.println("未达到用券门槛,error");
}
}
}
System.out.println("请输入您给的金额");
choice=in.nextInt();
System.out.println("实付:"+choice+"元"+"找零:"+String.format("%.2f", (price-choice)));
System.out.println("—————————————————————————————————————————————");
System.out.println("总价格 ¥ "+String.format("%.2f", price));
pw.println("应付:"+String.format("%.2f", price)+"元 ");
pw.println("实付:"+choice+"元 "+"找零:"+String.format("%.2f", (choice-price)));
pw.println("总价格 ¥ "+String.format("%.2f", price));
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
package kfc;
public class Coffee implements Drinks{
private double price=8.0;
private int num=0;
public void display() {
System.out.println("热咖啡 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="热咖啡 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class Cola implements Drinks{
private double price=6.0;
private int num=0;
public void display() {
System.out.println("可口可乐 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="可口可乐 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class CornSalad implements Snack{
private double price=4.0;
private int num=0;
public void display() {
System.out.println("玉米沙拉 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="玉米沙拉 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class CornSaladFactory implements SnackFactory{
public Snack productSnack() {
return new CornSalad();
}
}
package kfc;
public class CrispyMeatString implements Snack{
private double price=3.0;
private int num=0;
public void display() {
System.out.println("骨肉相连 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="骨肉相连 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class CrispyMeatStringFactory implements SnackFactory {
public Snack productSnack() {
return new CrispyMeatString();
}
}
package kfc;
public class DrinkFactory {
private int choice;
DrinkFactory(int t){
choice =t;
}
DrinkFactory(){
choice=0;
}
public void fun(int i) {
choice=i;
}
public Drinks make() {
if(choice==1) {
return new Cola();
}
else if(choice==2){
return new Coffee();
}
else if(choice==3) {
return new TeaMilk();
}
else if(choice==4){
return new Milk();
}
else {
return null;
}
}
}
package kfc;
public interface Drinks {
public void display();
public void numplus();
public double getprice();
public int getnum() ;
public String getd();
}
package kfc;
public class FrenchFries implements Snack{
private double price=8.0;
private int num=0;
public void display() {
System.out.println("薯条 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="薯条 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class FrenchFriesFactory implements SnackFactory{
public Snack productSnack() {
return new FrenchFries();
}
}
package kfc;
import java.text.SimpleDateFormat;
import java.util.*;
public class GetDate {
public static String getWeek(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
String week = sdf.format(date);
return week;
}
}
package kfc;
public interface Hamburger {
public void display();
public void numplus();
public double getprice();
public int getnum() ;
public String getd();
}
package kfc;
public interface HamburgerFactory {
public Hamburger productHamburger();
}
package kfc;
public class HotWing implements Snack{
private double price=7.5;
private int num=0;
public void display() {
System.out.println("香辣鸡翅 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="香辣鸡翅 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class HotWingFactory implements SnackFactory{
public Snack productSnack() {
return new HotWing();
}
}
package kfc;
public class Milk implements Drinks{
private double price=7.0;
private int num=0;
public void display() {
System.out.println("热牛奶 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="热牛奶 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class PopcornChicken implements Snack{
private double price=7.5;
private int num=0;
public void display() {
System.out.println("鸡米花 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="鸡米花 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class PopcornChickenFactory implements SnackFactory{
public Snack productSnack() {
return new PopcornChicken();
}
}
package kfc;
public class SetMeal {
private double price=46.6;
private int num=0;
public void diplay() {
System.out.println("情侣套餐 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="情侣套餐 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public interface Snack {
public void display();
public void numplus();
public double getprice();
public int getnum();
public String getd();
}
package kfc;
public interface SnackFactory {
public Snack productSnack();
}
package kfc;
public class TaroDiguaPills implements Snack{
private double price=5.0;
private int num=0;
public void display() {
System.out.println("香芋地瓜丸 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="香芋地瓜丸 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class TaroDiguaPillsFactory implements SnackFactory{
public Snack productSnack() {
return new TaroDiguaPills();
}
}
package kfc;
public class TeaMilk implements Drinks{
private double price=7.0;
private int num=0;
public void display() {
System.out.println("热奶茶 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="热奶茶 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class WholeShrimpBurger implements Hamburger{
private double price=12.0;
int num=0;
public void display() {
System.out.println("至尊鲜虾堡 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="至尊鲜虾堡 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class WholeShrimpBurgerFactory implements HamburgerFactory{
public Hamburger productHamburger() {
return new WholeShrimpBurger();
}
}
package kfc;
public class ZingerBurger implements Hamburger{
private double price=9.5;
int num=0;
public void display() {
System.out.println("香辣鸡腿堡 *"+num+" "+price+"/份");
}
public void numplus() {
num++;
}
public double getprice() {
return price;
}
public int getnum() {
return num;
}
public String getd() {
String xixi =new String();
xixi="香辣鸡腿堡 *"+num+" "+price+"/份";
return xixi;
}
}
package kfc;
public class ZingerBurgerFactory implements HamburgerFactory{
public Hamburger productHamburger() {
return new ZingerBurger();
}
}