java Gui实现肯德基点餐收银系统

大家应该都去麦当劳或肯德基吃过快餐,参考肯德基官网的信息模拟肯德基快餐店的收银系统,简单的java Gui模拟的肯德基收银系统。

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点餐链接,介绍的很详细。

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java实现微信点餐申请微信退款

    应用场景: 当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退给买家,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家账号上. 注意事项: 1.交易时间超过一年的订单无法提交退款 2.微信支付退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单好和设置不同的退款单号.申请退款总金额不能超过订单金额.一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号. 3.请求频率限制,150qps,即每秒钟正常的申请退

  • Java点餐小程序之黑心商人

    很久以前,有一个女人,开了一家酒店,她的名字叫孙二娘.下面是她找人做的点餐小程序.代码如下: import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.ArrayList; import java.util.Scanner; import java.util.Set; public class MyDianCai { sta

  • java实现KFC点餐小程序

    本文实例为大家分享了java实现KFC点餐系统的具体代码,供大家参考,具体内容如下 package KFC点餐系统; //food 类 public class Kfcfood { private String fname ; private int fnumb=1; private float fPrice; public Kfcfood() { super(); } public Kfcfood(String fname, int fnumb, float fPrice) { super()

  • java实现KFC点餐系统

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

  • java Gui实现肯德基点餐收银系统

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

  • python+pyqt5实现KFC点餐收银系统

    本文实例为大家分享了python实现KFC点餐收银系统的具体代码,供大家参考,具体内容如下 这个kfc收银系统我实现了的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4.可在一定时间段参与店内活动 5.模拟打印小票的功能(写到文件中). 工程文件: 肯德基.py文件实现各功能.kfctip.txt文件用于打印小票.picture文件里存放界面所需的图片.其他四个文件为各界面布局. 主界面: 正常餐品点餐界面: 套餐点餐界面: 活动套餐点餐界面

  • java实现肯德基收银系统

    参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠券购买餐品结算和找零. 4.可在一定时间段参与店内活动(自行设计或参考官网信息). 5.模拟打印小票的功能(写到文件中). 小票信息保存 class print{ String s=""; //存订单信息 } 食物工厂 interface FoodFactory{ public Hambu

  • 前端开发之便利店收银系统代码

    1+X前端初级JQ 社区便利店收银系统代码 <body> <input type="text" id="t" value="" disabled="disabled" /> <form id="main" action="" method=""> <span>4.5</span> <input type

  • C#实现简单超市收银系统

    本文实例为大家分享了C#实现简单超市收银系统的具体代码,供大家参考,具体内容如下 今天使用一直学习的抽象类等做了个简单的超市收银系统,不难,不过里面的逻辑要理清楚. 首先我们要知道我们要实现的功能. 超市一般有仓库,有收银台,有各种各样的商品,每一个商品都有Name,Price,Count等属性.我们可以写一个抽象父类,这样我们才能将每件商品属性设置一样.新建一个ProduckFather类作为商品的父类 并将属性和构造函数写好,每次新建商品时写好参数就会方便很多 abstract class

  • java实现可视化界面肯德基(KFC)点餐系统代码实例

    一.题目 使用java实现可视化KFC点餐系统. 二.题目分析 根据java中的用户图形界面包中的各个类设计界面.利用JFrame提供最大的容器,然后设计各个面板,各个面板中添加所需要的组件,本程序中需要对按钮组件添加监听者,当按下按钮之后做出相应的相应. 对于程序运行显示的第一个界面由一个继承于JFrame的类run类在构造函数中设计并通过函数setVisible(true)显示在界面上,界面上有一个按钮"点餐饮",当此按钮按下时触发响应函数,进入点餐界面,然后通过点击点餐界面各食物

  • Java实战之超市收银管理系统的实现

    目录 一.项目简述 二.项目运行 三.效果图 四.核心代码 品类信息控制层 用户信息控制层 商品信息控制层 一.项目简述 本系统主要实现的功能有:收银.报表.用户管理.商品管理.销售管理.进货退货管理.仓库管 理等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: Spring+ SpringMVC + MyBatis + ThymeLeaf

  • Java使用抽象工厂模式实现的肯德基消费案例详解

    本文实例讲述了Java使用抽象工厂模式实现的肯德基消费案例.分享给大家供大家参考,具体如下: 一.模式定义 抽象工厂模式提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类. 抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品. 二.模式举例 1 模式分析 我们借用爸爸和儿子到肯德基店消费这一场景来说明这一模式,进行抽象分析后的截图如下 2 抽象工厂模式的静态建模 3 代码示例 3

  • Vue实战教程之仿肯德基宅急送App

    Vue学习有一段时间了,就想着用Vue来写个项目练练手,弄了半个月,到今天为止也算勉强能看了. 由于不知道怎么拿手机App的接口,并且KFC电脑端官网真的...一言难尽,所以项目所有数据都是我截图然后写在EasyMock里的,有需要的同学可以自取 首页 商品页 外卖页 技术栈 vue + webpack + vuex + axios 文件目录 │ App.vue │ main.js │ ├─assets │ logo.png │ ├─components │ │ cartcontrol.vue

  • java GUI实现ATM机系统(3.0版)

    写个小项目了解一下GUI.用java GUI实现银行ATM自动取款机,实现登录界面.登录成功界面.各个操作功能实现界面. 用java GUI实现一个ATM机系统(3.0版) 设计思路 设计两个包(bank包,atmJFrame包) 1.bank包: (1).ATM类:实现用户各种操作; (2).Data类:从user文件中获取所有用户信息,并返回要找的用户,再将修改完之后的用户信息写入user文件中: (3).user文件储存所有用户信息. 2.atmJFrame包: (1).MyJFrame类

随机推荐