大家应该都去麦当劳或肯德基吃过快餐,参考肯德基官网的信息模拟肯德基快餐店的收银系统,简单的java gui模拟的肯德基收银系统。
1.系统介绍
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用c++/python/java,结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
2.系统设计
1.界面设计
采用java的gui实现简单的界面布局,界面上主要是图片和数据的显示.我大多采用的是borderlayout布局的方式,然后设置每个方位的大小.界面就很快做出来了.
界面截图:
小票信息截图:
2.后台设计
采用了抽象工厂模式和策略模式设计餐品的创建.
3.主要源代码
主界面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
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点餐链接 ,介绍的很详细。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:https://blog.csdn.net/qq_41094822/article/details/83378149
查看更多关于java Gui实现肯德基点餐收银系统的详细内容...