1.系统介绍

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。

2.系统设计

1.界面设计
采用java的Gui实现简单的界面布局,界面上主要是图片和数据的显示.我大多采用的是BorderLayout布局的方式,然后设置每个方位的大小.界面就很快做出来了.
界面截图:

小票信息截图:

2.后台设计
采用了抽象工厂模式和策略模式设计餐品的创建.

3.主要源代码

主界面:

package view;import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;public class MenuPanel extends JPanel {private JButton button1,button3,sure,canel,select;private JPanel panel01, panel02 ,panel03,panel04,panel05,panel;private JTable table;private JButton []btuIcon= new JButton[8];//充值区域private JLabel name,account,lastmoney,rechange;JTextField namef,accountf, passwordf,rechangef;private JMenuBar menuBar;private   JMenu menu1,menu2,menu3;public static int menuType=1;private Object a[][]=new Object[100][4];private Object th[]={"商品名称","金额","数量","操作"};public MenuPanel(){init();layOut();add();}public void init(){panel02 =new JPanel();panel02.setBorder(new TitledBorder("结算"));panel01 =new JPanel();panel03=new JPanel();panel03.setBorder(new TitledBorder(""));panel04=new JPanel();panel04.setBorder(new TitledBorder(""));panel05=new JPanel();panel05.setBorder(new TitledBorder("充值"));panel=new JPanel();panel.setBorder(new TitledBorder(""));//结算区域table=new JTable(a,th);table.setFont(new Font("Dialog", 1, 20));table.setBounds(0,0,100,100);table.setRowHeight(30);button1=new JButton("结账");button1.setSize(100,60);button1.addActionListener(new SettleCountsListener(table));button3=new JButton("删除");button3.setBounds(300,10,100,50);//菜单栏menuBar=new JMenuBar();menu1=new JMenu("当季主打");menu1.setSelected(true);menu2=new JMenu("童书套餐");menu3=new JMenu("人气明星餐");menu1.addMenuListener(new MenusListener(btuIcon,1));menu2.addMenuListener(new MenusListener(btuIcon,2));menu3.addMenuListener(new MenusListener(btuIcon,3));//套餐区域for(int i=0;i<8;i++) {btuIcon[i]=new JButton("套餐"+(i+1));//添加套餐按钮事件if(menu1.isSelected()){btuIcon[i].addActionListener(new TaocanListener(i,table));}else if(menu2.isSelected()){btuIcon[i].addActionListener(new TaocanListener(i,table));}else if(menu3.isSelected()){btuIcon[i].addActionListener(new TaocanListener(i,table));}ImageIcon icon = new ImageIcon("src/images/d"+(i+1)+".png");btuIcon[i].setIcon(icon);}//充值区域name=new JLabel("姓名:");name.setFont(new Font("Dialog", 1, 20));name.setBounds(50,20,50,50);namef=new JTextField();namef.setBounds(120,30,200,35);account=new JLabel("账号:");account.setFont(new Font("Dialog", 1, 20));account.setBounds(50,70,50,50);accountf=new JTextField();accountf.setBounds(120,80,200,35);lastmoney=new JLabel("密码:");lastmoney.setFont(new Font("Dialog", 1, 20));lastmoney.setBounds(50,120,50,50);passwordf =new JTextField();passwordf.setBounds(120,130,200,35);rechange= new JLabel("充值:");rechange.setFont(new Font("Dialog", 1, 20));rechange.setBounds(50,170,50,50);rechangef=new JTextField("0.0");rechangef.setBounds(120,180,200,35);sure=new JButton("确定充值");sure.setBounds(40,235,100,40);canel=new JButton("取消充值");canel.setBounds(300,235,100,40);select=new JButton("查询余额");select.setBounds(400,150,100,40);sure.addActionListener(new RechangeListener(this,1));canel.addActionListener(new RechangeListener(this,2));select.addActionListener(new RechangeListener(this,3));}public void add(){//添加面板this.add(panel,BorderLayout.CENTER);this.add(panel02,BorderLayout.WEST);//panel02添加组件, 添加table组件(滚动条方式添加),放在panel01的north方位panel02.setLayout(new GridLayout(2,1));//左侧栏添加按钮panel02.add(new JScrollPane(table));panel02.add(panel03);panel03.add(button3);panel03.add(button1);//panel.setLayout(new BorderLayout());menuBar.add(menu1);menuBar.add(menu2);menuBar.add(menu3);panel.add(menuBar,BorderLayout.NORTH);panel.add(panel01,BorderLayout.CENTER);panel01.setLayout(new BorderLayout());panel04.setPreferredSize(new Dimension(225,450));panel01.add(panel04,BorderLayout.NORTH);panel01.add(panel05,BorderLayout.CENTER);//选购区域panel04.setLayout(new GridLayout(2,4));for(int i=0;i<8;i++) {panel04.add(btuIcon[i]);}//充值区域panel05.setLayout(null);panel05.add(name);panel05.add(namef);panel05.add(account);panel05.add(accountf);panel05.add(lastmoney);panel05.add(passwordf);panel05.add(rechange);panel05.add(rechangef);panel05.add(sure);panel05.add(canel);panel05.add(select);}public void layOut(){this.setLayout(new BorderLayout());}
}

抽象工厂:
参考这个java抽象工厂实现kfc点餐链接,介绍的很详细.

肯德基点餐收银系统(java GUI实现)相关推荐

  1. 设计模式之Java语言模拟肯德基点餐收银系统

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Groovy基本句法
  2. JSP 九大内置对象
  3. 2003服务器系统屏蔽广告,电脑总是乱弹广告弹窗?教你彻底关闭
  4. pycharm工程中的pip用不了怎么办?
  5. 【Java 并发编程】线程池机制 ( 线程池状态分析 | 线程池状态转换 | RUNNING | SHUTDOWN | STOP | TIDYING | TERMINATED )
  6. DedeCms织梦发布文章时输入Tag标签逗号自动变成英文标点的方法
  7. JAVA中类的访问修饰符的作用范围
  8. 百联OJ:2723:不吉利日期
  9. 女人,向《奋斗》中的夏琳米莱们学习什么
  10. Node 实现 AES 加密,结果输出为“byte”。
  11. 日本富士通正考虑将PC业务并入联想
  12. oracle 表名拼接_Oracle之3种表连接方式(排序合并连接、嵌套循环、哈希连接)...
  13. python字典嵌套列表怎么访问值的某个元素_python – 访问嵌套在字典中的值
  14. 在vs中使用cvQueryHistValue_1D时,报错,无法识别
  15. java day40【会话技术:Cookie 、会话技术:Session 、JSP:入门学习】
  16. Linux驱动设置log打印开关
  17. STM32 HAL SPI读取MPU6500的设备ID异常
  18. jquery queue ajax,插件 jQuery ajaxQueue 中文API文档
  19. python3自动化软件发布系统pdf_Python 3自动化软件发布系统 -Django 2实战
  20. 大数据工程师必备之数据可视化技术

热门文章

  1. 用计算机进行图片处理教案,用图形计算器进行函数教学的课例
  2. 使用ash分析ORA-01652问题(r4笔记第36天)
  3. 【微信小程序】从入门到放弃
  4. 如何将fb2格式转换成mobi格式的文件
  5. 分布式服务框架——Dubbo
  6. 海里的鱼虾什么的,再也不要带回家了
  7. java怎么调epass3003,Snooper.Spec-003-apdu脚本_taoism版.pdf
  8. 通联ipay_通联ipay app下载-通联ipay助手下载 苹果版v2.4.1-PC6苹果网
  9. java 通过 SmbFile 类操作共享文件夹(1)
  10. 想开了,神马都是浮云