一.题目描述:

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:

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

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

3.使用优惠劵购买餐品结算和找零。

4.可在一定时间段参与店内活动(自行设计或参考官网信息)。

5.模拟打印小票的功能(写到文件中)。

二.程序源代码:

//餐品接口
public interface Food {void printInf();//显示所选餐品结算结果
}
//食物信息父类
public class FoodInf {protected String nam;//食物名称protected double price;//食物价格protected int num; //食物数量public double totalPrice()//餐品总计{return num*price;}
}
import java.io.FileWriter;
import java.io.IOException;
//汉堡包父类
public class Hamburgers extends FoodInf implements Food{@Overridepublic void printInf() {System.out.println("----------------------------------------------------------------------");System.out.println("     "+nam+"                                        "+num+"            "+price+"         "+totalPrice());}public void Write()/*模拟小票写入文件*/{try {FileWriter bw = new FileWriter("Bill.txt",true);bw.write("----------------------------------------------------------------------"+"\r\n");bw.write("     "+nam+"                                        "+num+"            "+price+"         "+totalPrice()+"\r\n");bw.close();}catch(IOException e) {e.printStackTrace();}}
}
public class Hamburger_1 extends Hamburgers{public Hamburger_1(int num) {nam="香辣鸡腿堡";price=10;this.num=num;}
}
public class Hamburger_2 extends Hamburgers{public Hamburger_2(int num) {nam="田园鸡腿堡";price=8;this.num=num;}
}
public class Hamburger_3 extends Hamburgers{public Hamburger_3(int num) {nam="奶油鸡腿堡";price=11;this.num=num;}
}
import java.io.FileWriter;
import java.io.IOException;
//饮品父类
public class Drinkings extends FoodInf implements Food{@Overridepublic void printInf() {System.out.println("----------------------------------------------------------------------");System.out.println("        "+nam+"                                               "+num+"            "+price+"          "+totalPrice());}public void Write()/*模拟小票写入文件*/{try {FileWriter bw = new FileWriter("Bill.txt",true);bw.write("----------------------------------------------------------------------"+"\r\n");bw.write("        "+nam+"                                               "+num+"            "+price+"          "+totalPrice()+"\r\n");bw.close();}catch(IOException e) {e.printStackTrace();}}
}
public class Drinking_1 extends Drinkings{public Drinking_1(int num) {nam="可乐";price=5;this.num=num;}
}
public class Drinking_2 extends Drinkings{public Drinking_2(int num) {nam="奶茶";price=10;this.num=num;}
}
public class Drinking_3 extends Drinkings{public Drinking_3(int num) {nam="橙汁";price=6;this.num=num;}
}
import java.io.FileWriter;
import java.io.IOException;
//炸鸡父类
public class Chickens extends FoodInf implements Food{@Overridepublic void printInf() {System.out.println("----------------------------------------------------------------------");System.out.println("     "+nam+"                                           "+num+"            "+price+"         "+totalPrice());}public void Write()/*模拟小票写入文件*/{try {FileWriter bw = new FileWriter("Bill.txt",true);bw.write("----------------------------------------------------------------------"+"\r\n");bw.write("     "+nam+"                                           "+num+"            "+price+"         "+totalPrice()+"\r\n");bw.close();}catch(IOException e) {e.printStackTrace();}}
}
public class Chicken_1 extends Chickens{public Chicken_1(int num) {nam="香辣炸鸡";price=11;this.num=num;}
}
public class Chicken_2 extends Chickens{public Chicken_2(int num) {nam="原味炸鸡";price=12;this.num=num;}
}
public class Chicken_3 extends Chickens{public Chicken_3(int num) {nam="奶油炸鸡";price=15;this.num=num;}
}
import java.io.FileWriter;
import java.io.IOException;
//套餐父类
public class Combos extends FoodInf implements Food{protected Hamburgers H;protected Drinkings D;protected Chickens C;@Overridepublic void printInf() {System.out.println("----------------------------------------------------------------------");System.out.println("     "+nam+"                "+num+"            "+price+"         "+totalPrice());}public void Write()/*模拟小票写入文件*/{try {FileWriter bw = new FileWriter("Bill.txt",true);bw.write("----------------------------------------------------------------------"+"\r\n");bw.write("     "+nam+"                "+num+"            "+price+"         "+totalPrice()+"\r\n");bw.close();}catch(IOException e) {e.printStackTrace();}}
}
public class Combo_1 extends Combos{public Combo_1(int num) {H=new Hamburger_1(1);D=new Drinking_2(1);C=new Chicken_1(1);price=24;nam=H.nam+"+"+D.nam+"+"+C.nam;this.num=num;}
}
public class Combo_2 extends Combos{public Combo_2(int num) {H=new Hamburger_2(1);D=new Drinking_1(1);C=new Chicken_1(1);price=19;nam=H.nam+"+"+D.nam+"+"+C.nam;this.num=num;}
}
public class Combo_3 extends Combos{public Combo_3(int num) {H=new Hamburger_2(1);D=new Drinking_2(1);C=new Chicken_1(1);price=22;nam=H.nam+"+"+D.nam+"+"+C.nam;this.num=num;}
}
//餐品工厂接口
public interface FoodFactory {Hamburgers creatHamburger(int kind,int num);Drinkings creatDrinking(int kind,int num);Chickens creatChicken(int kind,int num);Combos creatCombo(int kind,int num);
}
//肯德基工厂类
public class KFCFoodFactory implements FoodFactory{public Hamburgers creatHamburger(int kind,int num) {//创建具体的汉堡包对象switch(kind) {case 1:return new Hamburger_1(num);  case 2:return new Hamburger_2(num);default:return new Hamburger_3(num);}}public Drinkings creatDrinking(int kind,int num) {//创建具体的饮品对象switch(kind) {case 1:return new Drinking_1(num);case 2:return new Drinking_2(num);default:return new Drinking_3(num);}}public Chickens creatChicken(int kind,int num) {//创建具体的炸鸡对象switch(kind) {case 1:return new Chicken_1(num);case 2:return new Chicken_2(num);default:return new Chicken_3(num);}}@Overridepublic Combos creatCombo(int kind, int num) {//创建具体的套餐对象switch(kind) {case 1:return new Combo_1(num);case 2:return new Combo_2(num);default:return new Combo_3(num);}}
}
//点餐类
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
import java.util.Scanner;
public class OrderFoods {private int[] num=new int[4];//保存几种餐品的数量信息private int[] kind=new int[4];//保存几种餐品的种类信息private double total;//应付价格private double reduce;//减免去的钱private double money;//支付的钱的面值总和private double money_1;//找零private FoodFactory F=new KFCFoodFactory();class Token{//内部类优惠券类private final double token=5;public void useToken() {reduce=token;} }class TimeDiscount {//内部类时段打折类private final double dis=0.8;public boolean isDiscount() {Calendar calendar=Calendar.getInstance();int date=calendar.get(Calendar.DATE);if(date%5==0) {//每逢5的倍数的日子打折return true;}elsereturn false;}public void discount() {boolean Y=isDiscount();if(Y)reduce=reduce+total-total*dis;}}public void orderHamburgers() {//创造汉堡包对象并实现相应汉堡包结算信息显示和写入文件Hamburgers H=F.creatHamburger(kind[0], num[0]);total=total+H.totalPrice();H.Write();H.printInf();}public void orderDrinkings() {//创造饮品对象并实现相应饮品结算信息显示和写入文件Drinkings D=F.creatDrinking(kind[1], num[1]);total=total+D.totalPrice();D.Write();D.printInf();}public void orderChickens() {//创造炸鸡对象并实现相应炸鸡结算信息显示和写入文件Chickens C=F.creatChicken(kind[2], num[2]);total=total+C.totalPrice();C.Write();C.printInf();}public void orderCombos() {//创造套餐对象并实现相应套餐结算信息显示和写入文件Combos Co=F.creatCombo(kind[3], num[3]);total=total+Co.totalPrice();Co.Write();Co.printInf();}public void set1(int num,int kind) {//为保存所选汉堡包的数量和种类的元素赋值this.num[0]=num;this.kind[0]=kind;}public void set2(int num,int kind) {//为保存所选饮品的数量和种类的元素赋值this.num[1]=num;this.kind[1]=kind;}public void set3(int num,int kind) {//为保存所选炸鸡的数量和种类的元素赋值this.num[2]=num;this.kind[2]=kind;}public void set4(int num,int kind) {//为保存所选套餐的数量和种类的元素赋值this.num[3]=num;this.kind[3]=kind;}public void Write()/*写入顶栏*/{try {FileWriter bw = new FileWriter("Bill.txt",true);bw.write("    餐品名称                                       餐品数量    单价            总计"+"\r\n");bw.close();}catch(IOException e) {e.printStackTrace();}}public void Write_1() {//写入应付和实付信息try {FileWriter bw = new FileWriter("Bill.txt",true);bw.write("应付:"+total+"\r\n");bw.write("实付:"+(total-reduce)+"\r\n");bw.write("支付的钱的面值总和:"+money+"\r\n");bw.write("找零:"+money_1+"\r\n");bw.close();}catch(IOException e) {e.printStackTrace();} }public void showList() {//菜单System.out.println("菜单:");System.out.println("A.汉堡包");System.out.println("1--------------香辣鸡腿堡------10.0");System.out.println("2--------------田园鸡腿堡-------8.0");System.out.println("3--------------奶油鸡腿堡------11.0");System.out.println("B.饮料");System.out.println("1--------------可乐-------------5.0");System.out.println("2--------------奶茶------------10.0");System.out.println("3--------------橙汁-------------6.0");System.out.println("C.炸鸡");System.out.println("1--------------香辣炸鸡--------11.0");System.out.println("2--------------原味炸鸡--------12.0");System.out.println("3--------------奶油炸鸡--------15.0");System.out.println("D.超值套餐");System.out.println("1--------------超值套餐A-------31.0");System.out.println("2--------------超值套餐B-------24.0");System.out.println("3--------------超值套餐C-------29.0");}public void order() {//点餐int num;int kind;Scanner sc=new Scanner(System.in);showList();System.out.println("请依次按照菜单选择您的餐品(非菜单上的数字即为不选此类餐品):");System.out.println("请选择汉堡包的种类:");kind=sc.nextInt();if(kind==1||kind==2||kind==3) {System.out.println("请选择该汉堡包的数量:");num=sc.nextInt();set1(num, kind); }           System.out.println("请选择饮品的种类:");kind=sc.nextInt();if(kind==1||kind==2||kind==3) {System.out.println("请选择该饮品的数量:");num=sc.nextInt();set2(num, kind); }              System.out.println("请选择炸鸡的种类:");kind=sc.nextInt();if(kind==1||kind==2||kind==3) {System.out.println("请选择该炸鸡的数量:");num=sc.nextInt();set3(num, kind);}System.out.println("请选择套餐的种类:");kind=sc.nextInt();if(kind==1||kind==2||kind==3) {System.out.println("请选择该套餐的数量:");num=sc.nextInt();set4(num, kind);}showResult();System.out.println("您是否要使用优惠券?是的话按1,不是则按2");int k;k=sc.nextInt();if(k==1) {Token T=new Token();T.useToken();}TimeDiscount Ti=new TimeDiscount();Ti.discount();System.out.println("应付:"+total);System.out.println("实付:"+(total-reduce));while(true) {System.out.println("请输入您选择支付的钱的面值总和");money=sc.nextInt();if(money<total-reduce) {System.out.println("您所选择的钱的面值过小,请重新选择");}else{money_1=money-(total-reduce);break;}}System.out.println("支付的钱的面值总和:"+money);System.out.println("找零:"+money_1);Write_1();sc.close();}public void showResult() {//显示点餐信息并写入文件Write();System.out.println("    餐品名称                                       餐品数量    单价            总计");if(kind[0]!=0) {orderHamburgers();}if(kind[1]!=0) {orderDrinkings();}if(kind[2]!=0) {orderChickens();}if(kind[3]!=0) {orderCombos();}}
}
//客户端类
public class Client {public static void main(String[] args) {OrderFoods od=new OrderFoods();od.order();}
}

设计模式之Java语言模拟肯德基点餐收银系统相关推荐

  1. 使用java来简单模拟肯德基快餐店的收银系统实现一些功能

    一.题目要求 请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算 ...

  2. 用java实现KFC收银:请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统

    一.题目要求: 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: ...

  3. Java模拟肯德基快餐店的收银系统

    1.题目名称 模拟肯德基快餐店的收银系统 要求:结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4.可在一定时 ...

  4. 模拟肯德基KFC快餐店收银系统

    本系统完整代码已上传到本博客附下载链接: 下载链接:KFC肯德基收银系统 一. 题目要求` 模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下 ...

  5. 肯德基点餐收银系统(java GUI实现)

    1.系统介绍 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: ...

  6. 模拟肯德基快餐店的收银系统

    题目要求 模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品 ...

  7. java实现肯德基快餐店的收银系统

    注:本文仅用于程序设计作业记录,如有错误欢迎指正,代码太多了,不想往里面写了,还要排版 其实我只是想要本文一个博客链接而已 题目内容 模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的 ...

  8. 肯德基快餐店的收银系统

    同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结 ...

  9. 基于MFC的肯德基快餐店的收银系统

    基于MFC的肯德基点餐收银系统 同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现 ...

最新文章

  1. 查看和设置mysql字符集
  2. springboot jwt token前后端分离_「转」七个开源的 Spring Boot 前后端分离项目,建议收藏加转载...
  3. RecyclerView.ItemDecoration 间隔线
  4. Javascript数组操作
  5. 代码分享:php对二维数组进行排序
  6. idea切换工作空间_IDEA在一个工作空间中管理多个项目的详细步骤
  7. 网游活动策划经验指南
  8. 在Windows下安装Vim编辑器
  9. Redis的基本操作--Redis的常用语句
  10. 计算机网络 英文笔记本,笔记本的英文是什么
  11. 03-Java核心类库_设计模式【未完待续】
  12. oracle 同义词 synonym 创建与删除表
  13. k8s中部署jira-8.1.0
  14. hadoop查看默认的配置文件
  15. 二叉树 递归 java_递归实现二叉树 JAVA
  16. 钢琴的音色特点用matlab描述6,如何使用matlab模拟钢琴音色?
  17. oracle中删除yuj_oracle如何删除数据库?
  18. 队列模板简单应用算法设计:士兵队列训练
  19. JFreeChart 制作柱状图并填充到excel上
  20. dw边框弧度设置_笔记整理1 -- HTML基础知识与DW简单使用

热门文章

  1. AVR(Mega32)读写内部EEPROM
  2. 谁是 AR 消费应用创新能手?Google ARCore 和京东 AR 开发者大赛决赛出炉
  3. 企业申请增值电信业务许可证icp许可证应具备哪些条件
  4. 为什么测试环境测试通过,线上还会有bug?
  5. Android 点击键盘外的区域收起键盘
  6. 3.3.14 电压-电流转换电路
  7. tomcat四大容器
  8. 计算机学院创新基金项目题目,硕士研究生创新基金资助项目管理办法
  9. 致大学计算机老师的一封信,致大学思修老师的一封信
  10. 记录学习Android基础的心得08:常用控件(中级篇)P1