这篇文章主要为大家详细介绍了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点餐链接,介绍的很详细。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家。
原文链接:https://blog.csdn.net/qq_41094822/article/details/83378149
|