一、题目说明
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
二、基本要求
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
三、提高要求
1.实现可视化界面(使用MFC)。
2.实现会员储值卡功能,完成储值卡消费。
3.实现当天营业额和餐品销量计算和统计,用数据库记录。
四、设计模式图
五、实验代码
package 点餐系统;
public abstract class Simplefood implements Food{
public String kind;
public float price;
public int num;
public float totalprice( int num)
{return this.num*this.price;}
public String printmessage() {
return ("**"+this.kind+"\t单价:"+this.price+"\t数量:"+this.num+"\t合计:"+this.totalprice(num));
}
}
package 点餐系统;
public class Hamburg extends Simplefood{
public void show(int num) {
this.kind ="鸡腿堡";
this.price=(float) 9.9;
this.num=num;
}
}
其余类都以Hamburg为例继承Simplefood
private 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折优惠");
printmessage();//调用定义在Food类中的显示函数用于显示出菜单信息
System.out.println("1.正常购买\n2.套餐购买");
Scanner sc2= new Scanner(System.in);
int order=sc2.nextInt();
if(order==1) {
showsingleFoods();
}
if(order==2) {
showsetMeal();
}
//sc2.close();
}catch(InputMismatchException e) {
System.out.println("输入异常,请正确输入");
}
}
}
六、运行截图与结果
调试:
六、实现总结
此次只简单的完成了基本要求,其中还参考了别人的代码,其实对所学的几种设计模式还不是太熟悉,只是明白了大概所以还需要练习。
参考博客:https://blog.csdn.net/qq_18372191/article/details/83476176