大家應(yīng)該都去麥當勞或肯德基吃過快餐,參考肯德基官網(wǎng)的信息模擬肯德基快餐店的收銀系統(tǒng),簡單的java gui模擬的肯德基收銀系統(tǒng)。
1.系統(tǒng)介紹
同學們應(yīng)該都去麥當勞或肯德基吃過快餐吧?請同學們參考肯德基官網(wǎng)的信息模擬肯德基快餐店的收銀系統(tǒng),合理使用c++/python/java,結(jié)合設(shè)計模式(2種以上)至少實現(xiàn)系統(tǒng)的以下功能:
1.正常餐品結(jié)算和找零。
2.基本套餐結(jié)算和找零。
3.使用優(yōu)惠劵購買餐品結(jié)算和找零。
4.可在一定時間段參與店內(nèi)活動(自行設(shè)計或參考官網(wǎng)信息)。
5.模擬打印小票的功能(寫到文件中)。
2.系統(tǒng)設(shè)計
1.界面設(shè)計
采用java的gui實現(xiàn)簡單的界面布局,界面上主要是圖片和數(shù)據(jù)的顯示.我大多采用的是borderlayout布局的方式,然后設(shè)置每個方位的大小.界面就很快做出來了.
界面截圖:
小票信息截圖:
2.后臺設(shè)計
采用了抽象工廠模式和策略模式設(shè)計餐品的創(chuàng)建.
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 ]; //充值區(qū)域 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[]={ "商品名稱" , "金額" , "數(shù)量" , "操作" }; public menupanel(){ init(); layout(); add(); } public void init(){ panel02 = new jpanel(); panel02.setborder( new titledborder( "結(jié)算" )); 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( "" )); //結(jié)算區(qū)域 table= new jtable(a,th); table.setfont( new font( "dialog" , 1 , 20 )); table.setbounds( 0 , 0 , 100 , 100 ); table.setrowheight( 30 ); button1= new jbutton( "結(jié)賬" ); 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 )); //套餐區(qū)域 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); } //充值區(qū)域 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 )); //左側(cè)欄添加按鈕 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); //選購區(qū)域 panel04.setlayout( new gridlayout( 2 , 4 )); for ( int i= 0 ;i< 8 ;i++) { panel04.add(btuicon[i]); } //充值區(qū)域 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抽象工廠實現(xiàn)kfc點餐鏈接,介紹的很詳細。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/qq_41094822/article/details/83378149