通過主菜單對各級子菜單進行控制,并實現添加記錄,查找記錄,刪除記錄,修改記錄,排序記錄,以及退出系統功能的實現。一共六部分的功能模塊。
上面的圖就是每個模塊具有的功能,而且還用到了正則表達式判斷輸入的是否符合規則,這個系統體現了mvc的設計模式,分工調用很清晰。
主要包含了下面幾個類:
app類:程序的主函數類,程序開始的入口
menu類:里面都是簡單頁面顯示的效果,沒有功能的實現。
telnoteregex類:正則表達式,判斷是否輸入合格,都在這個方法中。
operate類:業務邏輯類,全部功能的實現基本都集中在這個類中。
person類:封裝數據。
具體的實現代碼:
app類的實現代碼:
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
|
package com.bjsxt.iphone; public class app { public static void main(string[] args) { new app().start(); } public void start(){ menu m= new menu(); operate o= new operate(); telnoteregex reg= new telnoteregex(); while ( true ){ m.mainmenu(); int key=reg.menuregex( 1 , 6 ); switch (key){ case 1 : o.addlogic(); break ; case 2 : o.searchlogic(); break ; case 3 : o.modifylogiclogic(); break ; case 4 : o.deletelogic(); break ; case 5 : o.orderlogic(); break ; case 6 : system.exit( 0 ); break ; } } } } |
person類具體的實現代碼:
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
|
package com.bjsxt.iphone; public class person { private int id; //用戶id屬性 private string name; //用戶姓名屬性 private string age; //用戶年齡屬性 private string sex; //用戶性別屬性 private string telnum; //用戶電話號碼屬性 private string address; //用戶地址屬性 public person(){} public person( int id,string name,string age,string sex,string telnum,string address){ this .id=id; this .name=name; this .age=age; this .sex=sex; this .telnum=telnum; this .address=address; } public int getid() { return id; } public void setid( int id) { this .id=id; } public string getname() { return name; } public void setname(string name) { this .name = name; } public string getage() { return age; } public void setage(string age) { this .age = age; } public string getsex() { return sex; } public void setsex(string sex) { this .sex = sex; } public string gettelnum() { return telnum; } public void settelnum(string telnum) { this .telnum = telnum; } public string getaddress() { return address; } public void setaddress(string address) { this .address = address; } } |
telnoteregex類具體代碼:
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
|
package com.bjsxt.iphone; import java.util.scanner; public class telnoteregex { //對菜單項校驗 @suppresswarnings ( "resource" ) public int menuregex( int min, int max){ string regex= "[0-9]{1}" ; scanner sc= new scanner(system.in); while ( true ){ string input=sc.nextline(); //根據合法性的校驗 if (input.matches(regex)){ int key=integer.parseint(input); if (key>=min && key<=max){ return key; } else { system.out.println( "輸入的菜單項不符合要求!" ); } } else { system.out.println( "輸入內容不正確!" ); } } } //用戶輸入姓名的驗證 @suppresswarnings ( "resource" ) public string nameregex(string name){ string pattern = "[\\u4e00-\\u9fa5]+" ; string str=name; scanner sc= new scanner(system.in); while ( true ){ if (str.matches(pattern)){ return str; } else { system.out.println( "輸入不合法字符,請重新輸入中文漢字" ); str=sc.nextline(); continue ; } } } //用戶輸入年齡的驗證 @suppresswarnings ( "resource" ) public string ageregex(string age){ string pattern = "^([0-9]|[0-9]{2}|100)$" ; string str=age; scanner sc= new scanner(system.in); while ( true ){ if (str.matches(pattern)){ return str; } else { system.out.println( "輸入不合法字符,請重新輸入數字" ); str=sc.nextline(); continue ; } } } //用戶性別的驗證 @suppresswarnings ( "resource" ) public string sexregex(string sex){ string pattern = "[男女mmff]" ; string str=sex; scanner sc= new scanner(system.in); while ( true ){ if (str.matches(pattern)){ return str; } else { system.out.println( "輸入不合法字符,請重新輸入男女mmff" ); str=sc.nextline(); continue ; } } } //用戶輸入電話號碼的驗證 @suppresswarnings ( "resource" ) public string telnumregex(string telnum){ string pattern = "[0-9]{11}" ; string str=telnum; scanner sc= new scanner(system.in); while ( true ){ if (str.matches(pattern)){ return str; } else { system.out.println( "輸入不合法字符,請重新輸入11位的手機號碼" ); str=sc.nextline(); continue ; } } } //用戶輸入地址的驗證 @suppresswarnings ( "resource" ) public string addressregex(string address){ string pattern = "[a-za-z[0-9]]{1,15}" ; string str=address; scanner sc= new scanner(system.in); while ( true ){ if (str.matches(pattern)){ return str; } else { system.out.println( "輸入不合法字符,請重新輸入1到15個英文大小寫或是數字" ); str=sc.nextline(); continue ; } } } } |
menu類代碼的具體實現:
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
|
package com.bjsxt.iphone; public class menu { //主界面 public void mainmenu() { system.out.println( "*************************" ); system.out.println( "** 1 添加記錄 **" ); system.out.println( "** 2 查找記錄 **" ); system.out.println( "** 3 修改記錄 **" ); system.out.println( "** 4 刪除記錄 **" ); system.out.println( "** 5 排序記錄 **" ); system.out.println( "** 6 退出系統 **" ); system.out.println( "*************************" ); } //添加界面 public void addmenu () { system.out.println( "*************************" ); system.out.println( "** 1 添加新記錄 **" ); system.out.println( "** 2 查看全記錄 **" ); system.out.println( "** 3 返回上一級 **" ); system.out.println( "*************************" ); } //查找界面 public void searchmenu () { system.out.println( "*************************" ); system.out.println( "** 1 按姓名查找 **" ); system.out.println( "** 2 按年齡查找 **" ); system.out.println( "** 3 按性別查找 **" ); system.out.println( "** 4 按號碼查找 **" ); system.out.println( "** 5 按住址查找 **" ); system.out.println( "** 6 查看全記錄 **" ); system.out.println( "** 7 返回上一級 **" ); system.out.println( "*************************" ); } //修改界面 public void modifymenu () { system.out.println( "*************************" ); system.out.println( "** 1 查看全記錄 **" ); system.out.println( "** 2 修改指定記錄 **" ); system.out.println( "** 3 返回上一級 **" ); system.out.println( "*************************" ); } //修改子界面 public void submodifymenu () { system.out.println( "*************************" ); system.out.println( "** 1 修改姓名 **" ); system.out.println( "** 2 修改年齡 **" ); system.out.println( "** 3 修改性別 **" ); system.out.println( "** 4 修改號碼 **" ); system.out.println( "** 5 修改住址 **" ); system.out.println( "** 6 返回上一級 **" ); system.out.println( "*************************" ); } //刪除界面 public void deletemenu () { system.out.println( "*************************" ); system.out.println( "** 1 查看全記錄 **" ); system.out.println( "** 2 刪除指定記錄 **" ); system.out.println( "** 3 刪除全部記錄 **" ); system.out.println( "** 4 返回上一級 **" ); system.out.println( "*************************" ); } //排序界面 public void ordermenu () { system.out.println( "*************************" ); system.out.println( "** 1 按姓名排序 **" ); system.out.println( "** 2 按年齡排序 **" ); system.out.println( "** 3 按性別排序 **" ); system.out.println( "** 4 查看全部記錄 **" ); system.out.println( "** 5 返回上一級 **" ); system.out.println( "*************************" ); } } |
operate類的具體實現:
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
|
package com.bjsxt.iphone; import java.util.arraylist; import java.util.collections; import java.util.comparator; import java.util.iterator; import java.util.list; import java.util.scanner; public class operate{ private list<person> list= new arraylist<person>(); //用戶添加信息業務邏輯控制 public void addlogic(){ menu m= new menu(); telnoteregex reg= new telnoteregex(); while ( true ){ m.addmenu(); int key=reg.menuregex( 1 , 3 ); switch (key){ case 1 : addoperation (); break ; case 2 : showall(); break ; case 3 : return ; } } } //用戶查詢信息業務邏輯控 public void searchlogic(){ menu m= new menu(); telnoteregex reg= new telnoteregex(); while ( true ){ m.searchmenu(); int key=reg.menuregex( 1 , 7 ); switch (key){ case 1 : searchbyname(); break ; case 2 : searchbyage(); break ; case 3 : searchbysex(); break ; case 4 : searchbytelnum(); break ; case 5 : searchbyadd(); break ; case 6 : showall(); break ; case 7 : return ; } } } //修改信息業務邏輯控制 public void modifylogiclogic(){ menu m= new menu(); telnoteregex reg= new telnoteregex(); while ( true ){ m.modifymenu(); int key=reg.menuregex( 1 , 3 ); switch (key){ case 1 : showall(); break ; case 2 : modifylogiclogic1(); break ; case 3 : return ; } } } //修改有三層跳轉 public void modifylogiclogic1(){ menu m= new menu(); telnoteregex reg= new telnoteregex(); while ( true ){ m.submodifymenu(); int key=reg.menuregex( 1 , 6 ); switch (key){ case 1 : namemodify(); break ; case 2 : agemodify(); break ; case 3 : sexmodify(); break ; case 4 : telnummodify(); break ; case 5 : addressmodify(); break ; case 6 : return ; } } } //刪除信息業務邏輯控制 public void deletelogic(){ menu m= new menu(); telnoteregex reg= new telnoteregex(); while ( true ){ m.deletemenu(); int key=reg.menuregex( 1 , 4 ); switch (key){ case 1 : showall(); break ; case 2 : delete(); break ; case 3 : deleteall(); break ; case 4 : return ; } } } //排序信息業務邏輯控制 public void orderlogic(){ menu m= new menu(); telnoteregex reg= new telnoteregex(); while ( true ){ m.ordermenu(); int key=reg.menuregex( 1 , 5 ); switch (key){ case 1 : ordername(); break ; case 2 : orderage(); break ; case 3 : ordersex(); break ; case 4 : showall(); break ; case 5 : return ; } } } //添加新用戶信息 @suppresswarnings ( "resource" ) public void addoperation (){ telnoteregex reg= new telnoteregex(); scanner sc= new scanner(system.in); system.out.println( "請輸入聯系人id:" ); string id=sc.nextline(); system.out.println( "請輸入要添加的姓名:" ); string name=sc.nextline(); name=reg.nameregex(name); system.out.println( "請輸入要添加的年齡:" ); string age=sc.nextline(); age=reg.ageregex(age); system.out.println( "請輸入要添加的性別:" ); string sex=sc.nextline(); sex=reg.sexregex(sex); system.out.println( "請輸入要添加的手機號碼:" ); string telnum=sc.nextline(); telnum=reg.telnumregex(telnum); system.out.println( "請輸入要添加的地址:" ); string address=sc.nextline(); address=reg.addressregex(address); int personid=integer.parseint(id); person p= new person(personid,name,age,sex,telnum,address); list.add(p); } // //判斷序號是否已經存在插入成功失敗 // @suppresswarnings("resource") // public string judgeid(string id){ // scanner sc=new scanner(system.in); // iterator<person> it=list.iterator(); // string newid=id; // while(it.hasnext()){ // person p=(person)it.next(); // if(newid.equals(p.getid())){ // system.out.println("此序號已經存在,請重新輸入序號"); // newid=sc.nextline(); // continue; // }else{ // return newid; // } // } // return id; // } //查詢全部用戶信息 public void showall(){ system.out.println( "序號\t\t" + "姓名\t\t" + "年齡\t\t" + "性別\t\t" + "手機號\t\t" + "地址" ); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } } //按姓名查詢用戶信息 @suppresswarnings ( "resource" ) public void searchbyname(){ telnoteregex reg= new telnoteregex(); system.out.println( "輸入你要查詢的姓名:" ); scanner sc= new scanner(system.in); string name=sc.nextline(); name=reg.nameregex(name); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (name.equals(p.getname())){ system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } } } //按年齡查詢用戶信息 @suppresswarnings ( "resource" ) public void searchbyage(){ telnoteregex reg= new telnoteregex(); system.out.println( "輸入你要查詢的年齡:" ); scanner sc= new scanner(system.in); string age=sc.nextline(); age=reg.ageregex(age); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (age.equals(p.getage())){ system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } } } //按性別查詢用戶信息 @suppresswarnings ( "resource" ) public void searchbysex(){ telnoteregex reg= new telnoteregex(); system.out.println( "輸入你要查詢的性別:" ); scanner sc= new scanner(system.in); string sex=sc.nextline(); sex=reg.sexregex(sex); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (sex.equals(p.getsex())){ system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } } } //按電話號碼查詢用戶信息 @suppresswarnings ( "resource" ) public void searchbytelnum(){ telnoteregex reg= new telnoteregex(); system.out.println( "輸入你要查詢的電話號碼:" ); scanner sc= new scanner(system.in); string telnum=sc.nextline(); telnum=reg.telnumregex(telnum); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (telnum.equals(p.gettelnum())){ system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } } } //按地址查詢用戶信息 @suppresswarnings ( "resource" ) public void searchbyadd(){ telnoteregex reg= new telnoteregex(); system.out.println( "輸入你要查詢的地址:" ); scanner sc= new scanner(system.in); string address=sc.nextline(); address=reg.addressregex(address); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (address.equals(p.getaddress())){ system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } } } // //修改指定記錄信息 // public void modify(){ // system.out.println("請輸入你要修改的信息:"); // // } //修改姓名信息 @suppresswarnings ( "resource" ) public void namemodify(){ telnoteregex reg= new telnoteregex(); system.out.println( "請輸入你要修改的序號:" ); scanner sc= new scanner(system.in); string num=sc.nextline(); int id=integer.parseint(num); system.out.println( "請輸入你要修改的姓名:" ); string name=sc.nextline(); name=reg.nameregex(name); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (id==p.getid()){ p.setname(name); system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } else { system.out.println( "修改失敗,請重試!" ); } } } //修改年齡信息 @suppresswarnings ( "resource" ) public void agemodify(){ telnoteregex reg= new telnoteregex(); system.out.println( "請輸入你要修改的序號:" ); scanner sc= new scanner(system.in); string num=sc.nextline(); int id=integer.parseint(num); system.out.println( "請輸入你要修改的年齡:" ); string age=sc.nextline(); age=reg.ageregex(age); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (id==p.getid()){ p.setage(age); system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } else { system.out.println( "修改失敗,請重試!" ); } } } //修改性別信息 @suppresswarnings ( "resource" ) public void sexmodify(){ telnoteregex reg= new telnoteregex(); system.out.println( "請輸入你要修改的序號:" ); scanner sc= new scanner(system.in); string num=sc.nextline(); int id=integer.parseint(num); system.out.println( "請輸入你要修改的性別:" ); string sex=sc.nextline(); sex=reg.sexregex(sex); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (id==p.getid()){ p.setsex(sex); system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } else { system.out.println( "修改失敗,請重試!" ); } } } //修改號碼信息 @suppresswarnings ( "resource" ) public void telnummodify(){ system.out.println( "請輸入你要修改的序號:" ); scanner sc= new scanner(system.in); string num=sc.nextline(); int id=integer.parseint(num); system.out.println( "請輸入你要修改的電話號碼:" ); string telnum=sc.nextline(); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (id==p.getid()){ p.settelnum(telnum); system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } else { system.out.println( "修改失敗,請重試!" ); } } } //修改地址信息 @suppresswarnings ( "resource" ) public void addressmodify(){ telnoteregex reg= new telnoteregex(); system.out.println( "請輸入你要修改的序號:" ); scanner sc= new scanner(system.in); string num=sc.nextline(); int id=integer.parseint(num); system.out.println( "請輸入你要修改的地址:" ); string address=sc.nextline(); address=reg.addressregex(address); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (id==p.getid()){ p.setaddress(address); system.out.println(p.getid()+ "#" + "\t\t" +p.getname()+ "\t\t" +p.getage()+ "\t\t" +p.getsex()+ "\t\t" +p.gettelnum()+ "\t\t" +p.getaddress()); } else { system.out.println( "修改失敗,請重試!" ); } } } //刪除指定用戶信息 @suppresswarnings ( "resource" ) public void delete(){ system.out.println( "請輸入你要刪除的id:" ); scanner sc= new scanner(system.in); string num=sc.nextline(); int id=integer.parseint(num); iterator<person> it=list.iterator(); while (it.hasnext()){ person p=(person)it.next(); if (id==p.getid()){ list.remove(id); system.out.println( "刪除成功" ); } else { system.out.println( "刪除失敗" ); } } } //刪除全部用戶信息 public void deleteall(){ list.clear(); system.out.println( "刪除成功" ); } //按用戶姓名排序信息 public void ordername(){ comparator<person> comparator= new comparator<person>(){ @override public int compare(person o1, person o2) { return o1.getname().compareto(o2.getname()); } }; collections.sort(list,comparator); showall(); } //按用戶年齡排序信息 public void orderage(){ comparator<person> comparator= new comparator<person>(){ @override public int compare(person o1, person o2) { return o1.getage().compareto(o2.getage()); } }; collections.sort(list,comparator); showall(); } //按用戶性別排序信息 public void ordersex(){ comparator<person> comparator= new comparator<person>(){ @override public int compare(person o1, person o2) { return o1.getsex().compareto(o2.getsex()); } }; collections.sort(list,comparator); showall(); } } |
總結:這個項目讓我很清晰可以明白什么是面向對象,為什么說是java是面向對象的編程語言,程序的代碼都是對象在調用,也明白一個項目應該如何分工明確進行書寫,功能和視圖要分開,每個類都有自己特定的功能,各個類的功能不要相互卸載一起,這樣的代碼基本是復用不高的,如果分開明確,以后再添加功能模塊的時候,只需要增加功能,無需修改之前的代碼,很好的體現了開閉原則,對功能開發,對修改內容關閉,這個項目也體現了mvc的設計模式,對我而言,這個項目讓我受益匪淺。
原文鏈接:http://blog.csdn.net/chai_ge_ge/article/details/77110632