大家应该都去麦当劳或肯德基吃过快餐,参考肯德基官网的信息模拟肯德基快餐店的收银系统,简单的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