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

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

以上是 java Gui实现肯德基点餐收银系统 的全部内容, 来源链接: utcz.com/z/349577.html

回到顶部