KFC收银系统

一.题目及需求分析
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
提高要求:
1.实现可视化界面(使用MFC)。
2.实现会员储值卡功能,完成储值卡消费。
3.实现当天营业额和餐品销量计算和统计,用数据库记录。
二.类图
在这里插入图片描述
三.结果
1.初始界面
在这里插入图片描述
2.选择食物
在这里插入图片描述
3.运行结果
在这里插入图片描述
4.在文件中查看
在这里插入图片描述
四.总结
这一章的作业主要是让我们学会用设计模式来解决实际问题。在KFC收银系统中,我主要实现了顾客的点餐,会员折扣,打印小票以及把小票信息存入文件中去,主要运用了简单工厂模式以及抽象工厂模式。
在这个样例中,肯德基店就是一个具体的工厂,我们就需要一个抽象工厂,在抽象工厂中指明生产各种抽象食物的方法,如生产汉堡、鸡翅等,肯德基店就需要实现这个抽象工厂,生产具体的食品,如生产麻辣鸡腿汉堡、生产奥尔良鸡翅等。当然,这也是一层一层的,比如不同种类的汉堡,他们都有一个共同的父类,就是汉堡。
因为能力有限,很多功能还没有实现,最重要的一个就是界面了,我下去也会再继续探索,慢慢来实现它。
五.源代码

//建立一个KFC的工厂模型
package factory_model;
//抽象食物基础类
public abstract class AbstractBaseFood {
	  // 食物类别
	  protected String kind;
	  // 食物数量
	  protected int num;
	  // 食物价格
	  protected float price;
	  // 合计
	  public float TotalPrice()
	  {
	    return this.num * this.price;
	  }
}



package factory_model;
//种类1:汉堡类
public abstract class Hamburg extends AbstractBaseFood implements IFood{
  //打印购买食物的小票
  public void Message()
  {
    System.out.println(this.kind+"汉堡\t单价:"+this.price + "\t数量:"+this.num + "\t合计:" + this.TotalPrice());
  }
}

package factory_model;

public abstract class FrenchFries extends AbstractBaseFood implements IFood
{
  public void Message()
  {
    System.out.println(this.kind+"薯条\t单价:"+this.price+"     "+"\t数量:"+this.num+ "\t合计:" +this.TotalPrice());
  }
}


package factory_model;
public abstract class Beverage extends AbstractBaseFood implements IFood
{
  public void Message()
  {
    System.out.println(this.kind+"饮料\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.TotalPrice());
  }
}
package factory_model;
public abstract class ChickenWings extends AbstractBaseFood implements IFood
{
  public void Message()
  {
    System.out.println(this.kind + "鸡翅\t单价:" +this.price +"     "+"\t数量:" +this.num + "\t合计:" + this.TotalPrice());
  }
}

具体类

     package factory_model;
    
    public class Orleans_burger extends Hamburg{
    	  public Orleans_burger(int num)
    	  {
    	    this.kind = "奥尔良";
    	    this.price = 14.0f;
    	    this.num = num;
    	  }
    }
    package factory_model;

public class Super_Hamburg extends Hamburg {
	  public Super_Hamburg(int num)
	  {
	    this.kind = "超级大";
	    this.price = 14.0f;
	    this.num = num;
	  }
}
    package factory_model;
import factory_model.ChickenWings;

public class SH_ChickenWings extends ChickenWings
{
  public SH_ChickenWings(int num)
  {
    this.kind = "麻辣";
    this.price = 2.5f;
    this.num = num;
  }
}
package factory_model;
import factory_model.FrenchFries;

public class Big_FrenchFries extends FrenchFries{
	  public Big_FrenchFries(int num)
	  {
	    this.kind = "大份";
	    this.price = 8.0f;
	    this.num = num;
	  }
}
    package factory_model;
import factory_model.Beverage;

public class Cola extends Beverage{
	  public Cola(int num)
	  {
	    this.kind = "可乐";
	    this.price = 10.0f;
	    this.num = num;
	  }
}
package factory_model;
import factory_model.Beverage;

public class Orange_Juice extends Beverage{
	  public Orange_Juice(int num)
	  {
	    this.kind = "橙汁";
	    this.price = 7.0f;
	    this.num = num;
	  }
}
    package factory_model;
import factory_model.Beverage;

public class Sprite extends Beverage{
	  public Sprite(int num)
	  {
	    this.kind = "雪碧";
	    this.price = 6.0f;
	    this.num = num;
	  }
}

IFood接口

package factory_model;

public interface IFood {
	  /**
	   * 打印输出食物信息
	   */
	  void Message();
}
package factory_model;
import factory_model.Beverage;
import factory_model.ChickenWings;
import factory_model.FrenchFries;
import factory_model.Hamburg;

public interface IKfcFactory {
	  // 生产可乐
	  public Beverage Create_Cola(int num);
	  
	  // 生产橙汁
	  public Beverage Create_Orange_Juice(int num);
	  
	  // 生产大份薯条
	  public FrenchFries CreateBig_FrenchFries(int num);
	  
	  // 生产雪碧
	  public Beverage Create_Sprite(int num);
	  
	  // 生产麻辣鸡翅
	  public ChickenWings Create_SH_ChickenWings(int num);
	  
	  // 生产麻辣风味鸡腿汉堡
	  public Hamburg Create_Super_Hamburg(int num);
	  
	  // 生产奥尔良汉堡
	  public Hamburg Create_Orleans_burger(int num);
}


   package factory_model;

public class Menu {
	public void menu(){
		System.out.println("     欢迎来到王俊凯KFC点餐系统!                                       ");
	    System.out.println("请选择您要的食物数量:(单位:元)              ");
	    System.out.println("超级大汉堡:14.0                 ");
	    System.out.println("奥尔良汉堡:15.0                 ");
	    System.out.println("麻辣鸡翅:2.5                 ");
	    System.out.println("大份薯条:8.0                  ");
	    System.out.println("可乐:8.0                     ");
	    System.out.println("橙汁:10.0                     ");
	    System.out.println("雪碧:6.0                     ");
	}
}
    package factory_model;
import java.util.Scanner;
import java.lang.management.ManagementFactory;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.NumberFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.ResourceBundle;
import factory_model.Customer;
import factory_model.ChinaKfcFactory;
import factory_model.IKfcFactory;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.io.PrintWriter;
public class KFCAPP
{
  public static void main (String[] args)throws IOException
  {
	  
	  
	  
    IKfcFactory kfcFactory = new ChinaKfcFactory();
    Menu m=new Menu();
    m.menu();
    Customer customer = new Customer(kfcFactory);
    
    //超级大汉堡
    System.out.println("请输入您要的超级大汉堡的数量:");
    Scanner input=new Scanner(System.in);
    int i=input.nextInt();
    
    //奥尔良汉堡
    System.out.println("请输入您要的奥尔良汉堡的数量:");
    Scanner input11=new Scanner(System.in);
    int k=input11.nextInt();
    
    // 麻辣鸡翅
    System.out.println("请输入您要的的麻辣鸡翅数量:");
    Scanner input1=new Scanner(System.in);
    int j=input1.nextInt();
    
    //大份薯条
    System.out.println("请输入您要的的薯条的数量:");
    Scanner input3=new Scanner(System.in);
    int p=input3.nextInt();
    
    //可乐
    System.out.println("请输入您要的可乐的数量:");
    Scanner input4=new Scanner(System.in);
    int q=input4.nextInt();
    
    //雪碧
    System.out.println("请输入您要的雪碧的数量:");
    Scanner input5=new Scanner(System.in);
    int r=input4.nextInt();
    
    //橙汁
    System.out.println("请输入您要的橙汁的数量:");
    Scanner input6=new Scanner(System.in);
    int s=input6.nextInt();
    
    System.out.println("您是否有会员卡?(回复 1:有 2:没有)");
    Scanner input0=new Scanner(System.in);
    int judge=input0.nextInt();
    double total;
    
    if(judge==1){
    System.out.println("------------欢迎光临王俊凯的KFC--------------"); 
    float hamburg1=customer.Order_Super_Hamburg(i);
    float hamburg2=customer.Order_Orleans_burger(k);
    float chickenwings=customer.Order_SH_ChickenWings(j);
    float frenchfries = customer.OrderBig_FrenchFries(p);
    float cola=customer.Order_Cola(q);
    float sprite=customer.Order_Sprite(q);
    float orange=customer.Order_Orange_Juice(s);
    total=hamburg1+hamburg2+chickenwings+frenchfries+sprite+cola+orange;
    System.out.println("订单时间:2018/09/21/08:06");
    System.out.println("当前收银员:TFBOYS的四叶草");
    System.out.println("原价:"+total);
    double cheap=total*0.8;
    System.out.println("尊贵的螃蟹会员,您将优惠八折!");
    System.out.println("您需要支付的费用:"+cheap);
    System.out.println("总计:"+cheap);
    System.out.println("谢谢您的光临,欢迎下次再来!");
    
  }
    else{
    	System.out.println("------------欢迎光临王俊凯的KFC--------------"); 
        float hamburg1=customer.Order_Super_Hamburg(i);
        float hamburg2=customer.Order_Orleans_burger(k);
        float chickenwings=customer.Order_SH_ChickenWings(j);
        float frenchfries = customer.OrderBig_FrenchFries(p);
        float cola=customer.Order_Cola(q);
        float sprite=customer.Order_Sprite(q);
        float orange=customer.Order_Orange_Juice(s);
        total=hamburg1+hamburg2+chickenwings+frenchfries+sprite+cola+orange;
        System.out.println("订单时间:2018/09/21/08:06");
        System.out.println("当前收银员:TFBOYS的四叶草");
        System.out.println("总计:"+total);
        System.out.println("谢谢您的光临,欢迎下次再来!");
    	
    }
    
    File fp = new File("C:\\Users\\asus\\Desktop\\7.txt");
    PrintWriter pw =new PrintWriter(fp);
    pw.println();
    pw.write("                         欢迎光临王俊凯的KFC                                                       ");
    pw.println();
    pw.write("订餐时间:"+"2018/09/21/08:06");
    pw.println();
    pw.write("\t名称"+"\t单价"+"\t数量"+"\t合计");
    pw.println();
    pw.write("总计:"+total);
    pw.println();
    pw.write("当前收银员:TFBOYS的四叶草");
    pw.println();
    pw.write("欢迎下次光临!");
    pw.println();
    pw.close();
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值