肯德基收银系统

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
提高要求:
1.实现可视化界面(使用MFC)。
2.实现会员储值卡功能,完成储值卡消费。
3.实现当天营业额和餐品销量计算和统计,用数据库记录。
一、算法设计
主要运用了抽象工厂模式和单例模式的方法,剩下的都是Java的GUI图形用户处理
在这里插入图片描述
在这里插入图片描述
二、主要部分代码
抽象工厂类

public interface IKFCFactory {
	public Staples createStaple(String s);
	public Packages createPackages(String s);
	public Drinks createDrink(String s);
}
public class ChinaKfcFactory implements IKFCFactory{

	public Staples createStaple(String s) {
		if(s.equals(new Staple1().kind)) {
			return new Staple1();
		}else if(s.equals(new Staple2().kind)) {
			return new Staple2();
		}else if(s.equals(new Staple3().kind)) {
			return new Staple3();
		}
		return null;
	}

	public Packages createPackages(String s) {
		if(s.equals(new Package1().kind)) {
			return new Package1();
		}else if(s.equals(new Package2().kind)) {
			return new Package2();
		}else if(s.equals(new Package3().kind)) {
			return new Package3();
		}
		return null;
	}
	public Drinks createDrink(String s) {
		if(s.equals(new Drink1().kind)) {
			return new Drink1();
		}else if(s.equals(new Drink2().kind)) {
			return new Drink2();
		}else if(s.equals(new Drink3().kind)) {
			return new Drink3();
		}
		return null;
	}
}

抽象食物类

public abstract class AbstractFood {
	  // 类别
	  public  String kind;
	  // 价格
	  public float price;
}
public  class Staples extends  AbstractFood{
	public Staples() {
	}
}
public interface StapleList{
	public static String []kinds=new String[]{"香辣鸡腿堡","劲脆鸡腿堡","新奥尔良烤鸡腿堡"};
	public static float []prices={14.5f,14.5f,15f};
}

具体食物类

public class Staple1 extends Staples implements StapleList{
	public Staple1() {
		this.kind=kinds[0];
		this.price=prices[0];
	}
}

主要界面

import java.awt.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import menu.*;
public class CreatePanel{
	 JButton button1,button2,sure,cancel,select;
	 JMenuBar menuBar;
	 JMenu menu1,menu2,menu3;
	 JButton []btuIcon= new JButton[3];
	 static  Object a[][]=new Object[10][4];
	  static Object th[]={"商品名称","单价","数量","价格"};
	 JTable table=new JTable(new DefaultTableModel(a,th));
	  JPanel panel1,panel2,panel3,panel4;
	  JLabel account,password,lastmoney,rechange;
	 JTextField accountf,lastmoneyf,rechangef;
	 JPasswordField passwordf;
	 public CreatePanel(){
		 panel1=new JPanel();
		 panel1.setBorder(new TitledBorder(""));
		 panel2 =new JPanel();
		 panel3=new JPanel();
	     panel3.setBorder(new TitledBorder(""));

	     panel4=new JPanel();
	     panel4.setBorder(new TitledBorder("充值"));
		//结算
		table.setFont(new Font("Dialog", 1, 16));
		table.setRowHeight(40);
		button1=new JButton("结账");
		button1.setSize(10,60);
		
		button2=new JButton("删除");
		button2.setBounds(300,10,100,50);
		//菜单
		menuBar=new JMenuBar();
		menu1=new JMenu("主食");
		menu1.setSelected(true);
		menu2=new JMenu("套餐");
		menu3=new JMenu("饮料和甜点");
		for(int i=0;i<3;i++) {
			  btuIcon[i]=new JButton(StapleList.kinds[i]);
		}
		//充值
	        account=new JLabel("账号:");
	        account.setFont(new Font("Dialog", 1, 16));
	        account.setBounds(50,20,50,50);
	        accountf=new JTextField();
	        accountf.setBounds(120,30,200,35);
	        password=new JLabel("密码:");
	        password.setFont(new Font("Dialog", 1, 16));
	        password.setBounds(50,70,50,50);
	        passwordf =new JPasswordField();
	        passwordf.setBounds(120,80,200,35);
	        lastmoney=new JLabel("余额");
	        lastmoney.setFont(new Font("Dialog", 1, 16));
	        lastmoney.setBounds(50,120,50,50);
	        lastmoneyf=new JTextField("0.0");
	        lastmoneyf.setBounds(120,130,100,35);
	        rechange= new JLabel("充值:");
	        rechange.setFont(new Font("Dialog", 1, 16));
	        rechange.setBounds(50,170,50,50);
	        rechangef=new JTextField("0.0");
	        rechangef.setBounds(120,180,100,35);

	        sure=new JButton("充值");
	        sure.setBounds(40,235,100,40);
	        cancel=new JButton("退出充值");
	        cancel.setBounds(200,235,100,40);
	        select=new JButton("查询余额");
	        select.setBounds(250,120,100,40);
	        
	 }
	public  JPanel left() {
		JPanel panel=new JPanel();
		panel.setBorder(new TitledBorder("结账"));
		
		panel.setLayout(new GridLayout(2,1));
		
		panel.add(new JScrollPane(table));
		panel.add(panel1);
		button1.addActionListener(new SettleCountsListener(table));
		button2.addActionListener(new deleteSelectListener(table));
		panel1.add(button1);
		panel1.add(button2);
		return panel;	
	}

	public  JPanel right() {
		JPanel panel=new JPanel();
		panel.setLayout(new BorderLayout());	
		  menuBar.add(menu1);
		  menuBar.add(menu2);
		  menuBar.add(menu3);
		  menu1.addMenuListener(new MenusListener(this,1));
		  menu2.addMenuListener(new MenusListener(this,2));
		  menu3.addMenuListener(new MenusListener(this,3));
		  panel.add(menuBar,BorderLayout.NORTH);
		  panel.add(panel2,BorderLayout.CENTER);
		  panel2.setLayout(new BorderLayout());
	      panel3.setPreferredSize(new Dimension(0,250));
	      panel2.add(panel3,BorderLayout.NORTH);
	      panel2.add(panel4,BorderLayout.CENTER);
		  //选择按钮
		  panel3.setLayout(new GridLayout(1,3));
		  for(int i=0;i<3;i++) {
			  TaocanListener c=new TaocanListener(this);
			  btuIcon[i].addActionListener(c);
			  panel3.add(btuIcon[i]);
		  }
		  
		  //充值
	        panel4.setLayout(null);
	        panel4.add(account);
	        panel4.add(accountf);
	        panel4.add(password);
	        panel4.add(passwordf);     
	        panel4.add(lastmoney);
	        panel4.add(lastmoneyf);
	        panel4.add(rechange);
	        panel4.add(rechangef);
	        panel4.add(sure);
	        panel4.add(cancel);
	        panel4.add(select); 
	        select.addActionListener(new RechangeListener(this,1));
	        sure.addActionListener(new RechangeListener(this,2));
	        cancel.addActionListener(new RechangeListener(this,3));     
		 return panel;
	}
	
}

四、运行图[
在这里插入图片描述
五、总结
这次的作业说实在有些难,虽然在设计模式上做的比较简单,但做界面上也遇到了各种难题,只是各种组件的之间的响应就花了很长时间,这也让我在GUI方面有了更多的了解,虽然不算熟练,也很熟悉如何能做出来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值