App.java
1 package com.yunruo.test;
2
3 /**
4 * 这是一个测试类
5 * 该类中无成员属性
6 * 该类有两个方法
7 * 一个main方法
8 * 该方法是一个主方法,用来测试
9 * 一个start方法
10 * 该方法直接调用Menu类中的主菜单
11 * @author Administrator
12 *
13 */
14
15 public class App {
16
17 public static void main(String[] args)
18 {
19 App p = new App();
20
21 p.start();
22 }
23
24 public void start()
25 {
26 try
27 {
28 Menu a = new Menu();
29
30 a.mainMenu();
31 }
32 catch (Exception e)
33 {
34 System.out.println("输入有误!!!");
35 }
36 }
37
38 }
Menu.java
package com.yunruo.test;
import java.util.List;
import java.util.Scanner;
/**
* 这是一个菜单类
* 该类中无成员属性
* 给类主要实现:
* 主菜单
* 该方法用来调用下面的子菜单方法
* 添加用户菜单
* 查找用户菜单
* 修改用户信息主菜单
* 修改用户信息子菜单
* 删除用户信息菜单
* 排序用户信息菜单
* @author Administrator
*
*/
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("********************");
System.out.println("请输入正确的数字;最小是1,最大是6。");
while(true)
{
switch(new TelNoteRegex().menuRegex(1,6))
{
case -1 :
System.out.println("您输入的数字超出范围!!!");
System.out.println("请重新选择要执行的功能。");
continue;
case 0 :
System.out.println("只能输入数字!");
System.out.println("请重新选择要执行的功能。");
case 1 :
addMenu();
break;
case 2 :
searchMenu();
break;
case 3 :
modifyMenu();
break;
case 4 :
deleteMenu();
break;
case 5 :
orderMenu();
break;
case 6 :
System.out.println("closing ------>>>>>");
break;
}
}
}
public void addMenu() //添加用户
{
System.out.println("**********************");
System.out.println("*** 1.添加新记录 ***");
System.out.println("*** 2.查看新记录 ***");
System.out.println("*** 3.返回上一级 ***");
System.out.println("**********************");
System.out.println("请输入正确的数字;最小为1,最大为3");
new Operate().addLogic();
}
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("**********************");
System.out.println("请输入正确的数字,最大是:7 最小是:1");
new Operate().searchLogic();
}
public void modifyMenu() //修改用户信息主菜单
{
System.out.println("*************************");
System.out.println("** 1.查看全纪录 **");
System.out.println("** 2.修改指定纪录 **");
System.out.println("** 3.返回上一级 **");
System.out.println("*************************");
System.out.println("请输入正确的数字,最大是:3 最小是:1");
switch(new TelNoteRegex().menuRegex(1, 3))
{
case -1 :
System.out.println("您输入的数字超出范围!");
new Menu().modifyMenu() ;
break ;
case 0 :
System.out.println("只能输入数字!");
new Menu().modifyMenu() ;
break ;
case 1 :
//查看全部用户
List<Person> list = new Operate().showAll() ;
for(Person p : list)
{
System.out.println(p);
}
new Menu().modifyMenu() ;
break ;
case 2 :
subModifyMenu() ;
break ;
case 3 :
mainMenu() ;
break ;
}
}
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("** 7.返回上级 **");
System.out.println("*******************");
System.out.println("请输入正确的数字,最大是:7 最小是:1");
new Operate().modifyLogicLogic();
}
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("**************************");
System.out.println("请输入正确的数字,最大是:4 最小是:1");
new Operate().deleteLogic();
}
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("**********************");
System.out.println("请输入正确的数字,最大是:5 最小是:1");
new Operate().orderLogic() ;
}
}
Operate.java
1 package com.yunruo.test;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.sql.Statement;
8 import java.util.ArrayList;
9 import java.util.List;
10 import java.util.Scanner;
11
12 import com.mchange.v2.c3p0.ComboPooledDataSource;
13
14 /**
15 * 这是一个功能类
16 * 该类中没有成员属性
17 * 该类主要实现:
18 * 用户添加信息业务逻辑控制
19 * 用户查询信息业务逻辑控制
20 * 修改信息业务逻辑控制
21 * 删除信息业务逻辑控制
22 * 排序信息业务逻辑控制
23 * 添加新用户信息
24 * 查询全部用户信息
25 * 按姓名查询用户信息
26 * 按年龄查询用户信息
27 * 按性别查询用户信息
28 * 按电话号码查询用户信息
29 * 按地址查询用户信息
30 * 修改指定记录信息
31 * 删除指定用户信息
32 * 删除全部用户信息
33 * 按用户姓名排序信息
34 * 按用户年龄排序信息
35 * 按用户性别排序信息
36 * @author Administrator
37 *
38 */
39
40 public class Operate {
41
42 private List<Person> list ; //集合
43
44 public void addLogic() //用户添加信息业务逻辑控制
45 {
46 while(true)
47 {
48 switch(new TelNoteRegex().menuRegex(1,3))
49 {
50 case -1 :
51 System.out.println("您输入的数字超出范围!");
52 new Menu().addMenu() ;
53 break ;
54 case 0 :
55 System.out.println("只能输入数字!");
56 new Menu().addMenu() ;
57 break ;
58 case 1 :
59 addOperation(new TelNoteRegex().nameRegex(), new TelNoteRegex().ageRegex(), new TelNoteRegex().sexRegex(), new TelNoteRegex().telNumRegex(), new TelNoteRegex().addressRegex()) ;
60 new Menu().addMenu();
61 break ;
62 case 2 :
63 //查看全部用户
64 list = new Operate().showAll() ;
65
66 for(Person p : list)
67 {
68 System.out.println(p);
69 }
70 new Menu().addMenu() ;
71 break ;
72 case 3 :
73 new Menu().mainMenu();
74 break ;//返回上一级
75
76 }
77 break ;
78 }
79 }
80
81
82 public void searchLogic() //用户查询信息业务逻辑控制
83 {
84 while(true)
85 {
86 switch(new TelNoteRegex().menuRegex(1, 7))
87 {
88 case -1 :
89 System.out.println("您输入的数字超出范围!");
90 new Menu().searchMenu();
91 break ;
92 case 0 :
93 System.out.println("只能输入数字!");
94 new Menu().searchMenu();
95 break ;
96 case 1 :
97 list = new Operate().searchByName(new TelNoteRegex().nameRegex()) ;
98
99 for(Person p : list)
100 {
101 System.out.println(p);
102 }
103 new Menu().searchMenu();
104 break ;
105 case 2 :
106 list = new Operate().searchByAge(new TelNoteRegex().ageRegex()) ;
107
108 for(Person p : list)
109 {
110 System.out.println(p);
111 }
112 new Menu().searchMenu();
113 break ;
114 case 3 :
115 list = new Operate().searchBySex(new TelNoteRegex().sexRegex()) ;
116
117 for(Person p : list)
118 {
119 System.out.println(p);
120 }
121 new Menu().searchMenu();
122 break ;
123 case 4 :
124 list = new Operate().searchByTelNum(new TelNoteRegex().telNumRegex()) ;
125
126 for(Person p : list)
127 {
128 System.out.println(p);
129 }
130 new Menu().searchMenu();
131 break ;
132 case 5 :
133 list = new Operate().searchByAdd(new TelNoteRegex().addressRegex()) ;
134
135 for(Person p : list)
136 {
137 System.out.println(p);
138 }
139 new Menu().searchMenu();
140 break ;
141 case 6 :
142 //查看全部用户
143 list = new Operate().showAll() ;
144
145 for(Person p : list)
146 {
147 System.out.println(p);
148 }
149 new Menu().searchMenu();
150 break ;
151 case 7 :
152 new Menu().mainMenu();
153 break ; //返回上一层
154 }
155 break ;
156 }
157 }
158
159 public void modifyLogicLogic() //修改信息业务逻辑控制
160 {
161 while(true)
162 {
163 try
164 {
165 switch(new TelNoteRegex().menuRegex(1, 7))
166 {
167 case -1 :
168 System.out.println("您输入的数字超出范围!");
169 new Menu().subModifyMenu();
170 break ;
171 case 0 :
172 System.out.println("只能输入数字!");
173 new Menu().subModifyMenu();
174 break ;
175 case 1 :
176 System.out.println("请输入指定ID:");
177
178 Scanner sc = new Scanner(System.in) ;
179
180 int id = sc.nextInt() ;
181
182 String name = new TelNoteRegex().nameRegex() ;
183
184 modifyName(id, name) ;
185 new Menu().subModifyMenu();
186 break ;
187 case 2 :
188 System.out.println("请输入指定ID:");
189
190 Scanner sc2 = new Scanner(System.in) ;
191
192 int id2 = sc2.nextInt() ;
193
194 int age = new TelNoteRegex().ageRegex() ;
195
196 modifyAge(id2, age) ;
197 new Menu().subModifyMenu();
198 break ;
199 case 3 :
200 System.out.println("请输入指定ID:");
201
202 Scanner sc4 = new Scanner(System.in) ;
203
204 int id3 = sc4.nextInt() ;
205
206 String sex = new TelNoteRegex().sexRegex() ;
207
208 modifySex(id3, sex) ;
209 new Menu().subModifyMenu();
210 break ;
211 case 4 :
212 System.out.println("请输入指定ID:");
213
214 Scanner sc6 = new Scanner(System.in) ;
215
216 int id4 = sc6.nextInt() ;
217
218 String telNum = new TelNoteRegex().telNumRegex() ;
219
220 modifyTelNum(id4, telNum) ;
221 new Menu().subModifyMenu();
222 break ;
223 case 5 :
224 System.out.println("请输入指定ID:");
225
226 Scanner sc8 = new Scanner(System.in) ;
227
228 int id5 = sc8.nextInt() ;
229
230 String address = new TelNoteRegex().addressRegex() ;
231
232 modifyAddress(id5, address) ;
233 new Menu().subModifyMenu();
234 break ;
235 case 6 :
236 //查看全部用户
237 list = new Operate().showAll() ;
238
239 for(Person p : list)
240 {
241 System.out.println(p);
242 }
243 new Menu().subModifyMenu();
244 break ;
245 case 7 :
246 new Menu().mainMenu();
247 break ; //返回上一层
248 }
249 }
250 catch(Exception e)
251 {
252 System.out.println("请输入数字");
253 new Menu().subModifyMenu();
254 }
255 break ;
256 }
257 }
258
259
260 public void deleteLogic() //删除信息业务逻辑控制
261 {
262 while(true)
263 {
264 switch(new TelNoteRegex().menuRegex(1, 4))
265 {
266 case -1 :
267 System.out.println("您输入的数字超出范围!");
268 new Menu().deleteMenu();
269 break ;
270 case 0 :
271 System.out.println("只能输入数字!");
272 new Menu().deleteMenu();
273 break ;
274 case 1 :
275 //查看全部用户
276 list = new Operate().showAll() ;
277
278 for(Person p : list)
279 {
280 System.out.println(p);
281 }
282 new Menu().deleteMenu();
283 break ;
284 case 2 :
285 System.out.println("请输入记录序号:");
286
287 Scanner sc = new Scanner(System.in) ;
288
289 int id = sc.nextInt() ;
290
291 System.out.println("是否确认删除:yes or no ");
292
293 Scanner sc1 = new Scanner(System.in) ;
294
295 String pan = sc1.nextLine() ;
296
297 if(pan.equals("yes"))
298 {
299 delete(id) ;
300 new Menu().deleteMenu() ;
301 break ;
302 }
303 else if(pan.equals("no"))
304 {
305 System.out.println("返回上一级");
306 new Menu().deleteMenu() ;
307 break ;
308 }
309 else
310 {
311 System.out.println("输入有误!") ;
312 new Menu().deleteMenu() ;
313 break ;
314 }
315 case 3 :
316 System.out.println("是否确认全部删除:yes or no ");
317
318 Scanner sc2 = new Scanner(System.in) ;
319
320 String panduan = sc2.nextLine() ;
321
322 if(panduan.equals("yes"))
323 {
324 deleteAll() ;
325 new Menu().deleteMenu() ;
326 break ;
327 }
328 else if(panduan.equals("no"))
329 {
330 System.out.println("返回上一级");
331 new Menu().deleteMenu() ;
332 break ;
333 }
334 else
335 {
336 System.out.println("输入有误!") ;
337 new Menu().deleteMenu() ;
338 break ;
339 }
340 case 4 :
341 new Menu().mainMenu();
342 break ; //返回上级
343 }
344 break ;
345 }
346 }
347
348
349 public void orderLogic() //排序信息业务逻辑控制
350 {
351 while(true)
352 {
353 switch(new TelNoteRegex().menuRegex(1, 5))
354 {
355 case -1 :
356 System.out.println("您输入的数字超出范围!");
357 new Menu().orderMenu();
358 break ;
359 case 0 :
360 System.out.println("只能输入数字!");
361 new Menu().orderMenu();
362 break ;
363 case 1 :
364 list = new Operate().orderName() ;
365
366 for(Person p : list)
367 {
368 System.out.println(p);
369 }
370 new Menu().orderMenu();
371 break ;
372 case 2 :
373 list = new Operate().orderAge() ;
374
375 for(Person p : list)
376 {
377 System.out.println(p);
378 }
379 new Menu().orderMenu();
380 break ;
381 case 3 :
382 list = new Operate().orderSex() ;
383
384 for(Person p : list)
385 {
386 System.out.println(p);
387 }
388 new Menu().orderMenu();
389 break ;
390 case 4 :
391 //查看全部用户
392 list = new Operate().showAll() ;
393
394 for(Person p : list)
395 {
396 System.out.println(p);
397 }
398 new Menu().orderMenu();
399 break ;
400 case 5 :
401 new Menu().mainMenu();
402 break ;
403 }
404 break ;
405 }
406 }
407 public boolean addOperation(String name, int age, String sex, String telNum, String address) //添加新用户信息
408 {
409 boolean rtn = false ;
410
411 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0"); //配置连接池
412 Connection conn = null ;
413 PreparedStatement ps = null ;
414 try
415 {
416 conn = cp.getConnection() ;//获得连接
417
418 String sql = "insert into person values(test_seq.nextval,?,?,?,?,?)" ;
419
420 ps = conn.prepareStatement(sql) ; //预编译SQL语句
421
422 ps.setString(1, name);
423 ps.setInt(2, age);
424 ps.setString(3, sex);
425 ps.setString(4, telNum);
426 ps.setString(5, address);
427
428 rtn = ps.executeUpdate() == 1 ;
429
430 System.out.println("添加联系人成功!");
431 }
432 catch (Exception e)
433 {
434 System.out.println("联系人添加失败!");
435 //e.printStackTrace();
436 }
437 finally
438 {
439 try {
440 ps.close();
441 } catch (SQLException e) {
442 // TODO 自动生成的 catch 块
443 e.printStackTrace();
444 }
445 try {
446 conn.close();
447 } catch (SQLException e) {
448 // TODO 自动生成的 catch 块
449 e.printStackTrace();
450 }
451 cp.close();
452 }
453 return rtn;
454 }
455 public List<Person> showAll()//查询全部用户信息
456 {
457 list = new ArrayList<>() ;
458
459 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
460
461 Connection conn = null ;
462
463 Statement ps = null ;
464
465 ResultSet rs = null ;
466 try
467 {
468 conn = cp.getConnection() ;
469
470 String sql = "select * from person" ;
471
472 ps = conn.createStatement() ;
473
474 rs = ps.executeQuery(sql) ;
475
476 while(rs.next())
477 {
478 Person p = new Person() ;
479
480 p.setId(rs.getInt("id"));
481 p.setName(rs.getString("name"));
482 p.setAge(rs.getString("age"));
483 p.setSex(rs.getString("sex"));
484 p.setTelNum(rs.getString("telnum"));
485 p.setAddress(rs.getString("address"));
486
487 list.add(p) ;
488 }
489 }
490 catch (SQLException e)
491 {
492 // TODO 自动生成的 catch 块
493 e.printStackTrace();
494 }
495 finally
496 {
497 try {
498 rs.close();
499 } catch (SQLException e) {
500 // TODO 自动生成的 catch 块
501 e.printStackTrace();
502 }
503 try {
504 ps.close();
505 } catch (SQLException e) {
506 // TODO 自动生成的 catch 块
507 e.printStackTrace();
508 }
509 try {
510 conn.close();
511 } catch (SQLException e) {
512 // TODO 自动生成的 catch 块
513 e.printStackTrace();
514 }
515 cp.close();
516 }
517 return list;
518 }
519 public List<Person> searchByName(String name) //按姓名查询用户信息
520 {
521 list = new ArrayList<>() ;
522
523 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
524
525 Connection conn = null ;
526
527 try {
528 conn = cp.getConnection();
529
530 String sql = "select * from person where name = ? " ;
531
532 PreparedStatement pt = conn.prepareStatement(sql) ;
533
534 pt.setString(1, name);
535
536 ResultSet rt = pt.executeQuery() ;
537
538 if(!rt.next())
539 {
540 System.out.println("联系人不存在!");
541 }
542 else
543 {
544 rt = pt.executeQuery() ;
545
546 while(rt.next())
547 {
548 Person p = new Person() ;
549
550 p.setId(rt.getInt("id"));
551 p.setName(rt.getString("name"));
552 p.setAge(rt.getString("age"));
553 p.setSex(rt.getString("sex"));
554 p.setTelNum(rt.getString("telnum"));
555 p.setAddress(rt.getString("address"));
556
557 list.add(p) ;
558 }
559 }
560
561 rt.close();
562 pt.close();
563 conn.close();
564 cp.close();
565
566 } catch (SQLException e) {
567 // TODO 自动生成的 catch 块
568 e.printStackTrace();
569 }
570
571 return list ;
572
573 }
574 public List<Person> searchByAge(int age) //按年龄查询用户信息
575 {
576 list = new ArrayList<>() ;
577
578 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
579
580 Connection conn = null ;
581
582 try {
583 conn = cp.getConnection();
584
585 String sql = "select * from person where age = ? " ;
586
587 PreparedStatement pt = conn.prepareStatement(sql) ;
588
589 pt.setInt(1, age);
590
591 ResultSet rt = pt.executeQuery() ;
592
593 if(!rt.next())
594 {
595 System.out.println("未找到该联系人!");
596 }
597 else
598 {
599 rt = pt.executeQuery() ;
600
601 while(rt.next())
602 {
603 Person p = new Person() ;
604
605 p.setId(rt.getInt("id"));
606 p.setName(rt.getString("name"));
607 p.setAge(rt.getString("age"));
608 p.setSex(rt.getString("sex"));
609 p.setTelNum(rt.getString("telnum"));
610 p.setAddress(rt.getString("address"));
611
612 list.add(p) ;
613 }
614 }
615
616 rt.close();
617 pt.close();
618 conn.close();
619 cp.close();
620
621 } catch (SQLException e) {
622 // TODO 自动生成的 catch 块
623 e.printStackTrace();
624 }
625
626 return list ;
627
628 }
629 public List<Person> searchBySex(String sex) //按性别查询用户信息
630 {
631 list = new ArrayList<>() ;
632
633 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
634
635 Connection conn = null ;
636
637 try {
638 conn = cp.getConnection();
639
640 String sql = "select * from person where sex = ? " ;
641
642 PreparedStatement pt = conn.prepareStatement(sql) ;
643
644 pt.setString(1, sex);
645
646 ResultSet rt = pt.executeQuery() ;
647
648 if(!rt.next())
649 {
650 System.out.println("未找到该联系人!");
651 }
652 else
653 {
654 rt = pt.executeQuery() ;
655
656 while(rt.next())
657 {
658 Person p = new Person() ;
659
660 p.setId(rt.getInt("id"));
661 p.setName(rt.getString("name"));
662 p.setAge(rt.getString("age"));
663 p.setSex(rt.getString("sex"));
664 p.setTelNum(rt.getString("telnum"));
665 p.setAddress(rt.getString("address"));
666
667 list.add(p) ;
668 }
669 }
670
671 rt.close();
672 pt.close();
673 conn.close();
674 cp.close();
675
676 } catch (SQLException e) {
677 // TODO 自动生成的 catch 块
678 e.printStackTrace();
679 }
680
681 return list ;
682
683 }
684 public List<Person> searchByTelNum(String telNum) //按电话号码查询用户信息
685 {
686 list = new ArrayList<>() ;
687
688 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
689
690 Connection conn = null ;
691
692 try {
693 conn = cp.getConnection();
694
695 String sql = "select * from person where telNum = ? " ;
696
697 PreparedStatement pt = conn.prepareStatement(sql) ;
698
699 pt.setString(1, telNum);
700
701 ResultSet rt = pt.executeQuery() ;
702
703 if(!rt.next())
704 {
705 System.out.println("未找到该联系人!");
706 }
707 else
708 {
709 rt = pt.executeQuery() ;
710
711 while(rt.next())
712 {
713 Person p = new Person() ;
714
715 p.setId(rt.getInt("id"));
716 p.setName(rt.getString("name"));
717 p.setAge(rt.getString("age"));
718 p.setSex(rt.getString("sex"));
719 p.setTelNum(rt.getString("telnum"));
720 p.setAddress(rt.getString("address"));
721
722 list.add(p) ;
723 }
724 }
725
726 rt.close();
727 pt.close();
728 conn.close();
729 cp.close();
730
731 } catch (SQLException e) {
732 // TODO 自动生成的 catch 块
733 e.printStackTrace();
734 }
735
736 return list ;
737
738 }
739
740
741 public List<Person> searchByAdd(String address) //按地址查询用户信息
742 {
743 list = new ArrayList<>() ;
744
745 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
746
747 Connection conn = null ;
748
749 try {
750 conn = cp.getConnection();
751
752 String sql = "select * from person where address = ? " ;
753
754 PreparedStatement pt = conn.prepareStatement(sql) ;
755
756 pt.setString(1, address);
757
758 ResultSet rt = pt.executeQuery() ;
759
760 if(!rt.next())
761 {
762 System.out.println("未找到该联系人!");
763 }
764 else
765 {
766 rt = pt.executeQuery() ;
767
768 while(rt.next())
769 {
770 Person p = new Person() ;
771
772 p.setId(rt.getInt("id"));
773 p.setName(rt.getString("name"));
774 p.setAge(rt.getString("age"));
775 p.setSex(rt.getString("sex"));
776 p.setTelNum(rt.getString("telnum"));
777 p.setAddress(rt.getString("address"));
778
779 list.add(p) ;
780 }
781 }
782
783 rt.close();
784 pt.close();
785 conn.close();
786 cp.close();
787
788 } catch (SQLException e) {
789 // TODO 自动生成的 catch 块
790 e.printStackTrace();
791 }
792
793 return list ;
794
795 }
796 public void modifyName(int id,String name) //修改指定记录姓名信息
797 {
798 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
799
800 Connection conn = null ;
801
802 try {
803 conn = cp.getConnection();
804
805 String sql = "update Person set name =? where id=?" ;
806
807
808 PreparedStatement pt = conn.prepareStatement(sql) ;
809
810 pt.setString(1, name);
811 pt.setInt(2, id);
812
813 int rs = pt.executeUpdate() ;
814
815 if(rs==1)
816 {
817 System.out.println("修改成功,请继续操作!");
818 }
819 else
820 {
821 System.out.println("要修改的ID不存在!");
822 }
823 pt.close();
824 conn.close();
825 cp.close();
826 }
827 catch (SQLException e)
828 {
829 // TODO 自动生成的 catch 块
830 e.printStackTrace();
831 }
832
833 }
834 public void modifyAge(int id,int age) //修改指定记录年龄信息
835 {
836 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
837
838 Connection conn = null ;
839
840 try {
841 conn = cp.getConnection();
842
843 String sql = "update Person set age =? where id=?" ;
844
845
846 PreparedStatement pt = conn.prepareStatement(sql) ;
847
848 pt.setInt(1, age);
849 pt.setInt(2, id);
850
851 int rs = pt.executeUpdate() ;
852
853 if(rs==1)
854 {
855 System.out.println("修改成功,请继续操作!");
856 }
857 else
858 {
859 System.out.println("要修改的ID不存在!");
860 }
861 pt.close();
862 conn.close();
863 cp.close();
864 }
865 catch (SQLException e)
866 {
867 // TODO 自动生成的 catch 块
868 e.printStackTrace();
869 }
870
871 }
872 public void modifySex(int id,String sex) //修改指定记录性别信息
873 {
874 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
875
876 Connection conn = null ;
877
878 try {
879 conn = cp.getConnection();
880
881 String sql = "update Person set sex =? where id=?" ;
882
883
884 PreparedStatement pt = conn.prepareStatement(sql) ;
885
886 pt.setString(1, sex);
887 pt.setInt(2, id);
888
889 int rs = pt.executeUpdate() ;
890
891 if(rs==1)
892 {
893 System.out.println("修改成功,请继续操作!");
894 }
895 else
896 {
897 System.out.println("要修改的ID不存在!");
898 }
899 pt.close();
900 conn.close();
901 cp.close();
902 }
903 catch (SQLException e)
904 {
905 // TODO 自动生成的 catch 块
906 e.printStackTrace();
907 }
908
909 }
910 public void modifyTelNum(int id,String telNum) //修改指定记录电话信息
911 {
912 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
913
914 Connection conn = null ;
915
916 try {
917 conn = cp.getConnection();
918
919 String sql = "update Person set telNum =? where id=?" ;
920
921
922 PreparedStatement pt = conn.prepareStatement(sql) ;
923
924 pt.setString(1, telNum);
925 pt.setInt(2, id);
926
927 int rs = pt.executeUpdate() ;
928
929 if(rs==1)
930 {
931 System.out.println("修改成功,请继续操作!");
932 }
933 else
934 {
935 System.out.println("要修改的ID不存在!");
936 }
937 pt.close();
938 conn.close();
939 cp.close();
940 }
941 catch (SQLException e)
942 {
943 // TODO 自动生成的 catch 块
944 e.printStackTrace();
945 }
946
947 }
948 public void modifyAddress(int id,String address) //修改指定记录地址信息
949 {
950 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
951
952 Connection conn = null ;
953
954 try {
955 conn = cp.getConnection();
956
957 String sql = "update Person set address=? where id=?" ;
958
959
960 PreparedStatement pt = conn.prepareStatement(sql) ;
961
962 pt.setString(1, address);
963 pt.setInt(2, id);
964
965 int rs = pt.executeUpdate() ;
966
967 if(rs==1)
968 {
969 System.out.println("修改成功,请继续操作!");
970 }
971 else
972 {
973 System.out.println("要修改的ID不存在!");
974 }
975 pt.close();
976 conn.close();
977 cp.close();
978 }
979 catch (SQLException e)
980 {
981 // TODO 自动生成的 catch 块
982 e.printStackTrace();
983 }
984
985 }
986 public void delete(int id) //删除指定用户信息
987 {
988 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
989
990 Connection conn = null ;
991
992 try {
993 conn = cp.getConnection();
994
995 String sql = "delete person where id = ? " ;
996
997 PreparedStatement pt = conn.prepareStatement(sql) ;
998
999 pt.setInt(1, id);
1000
1001 int rs = pt.executeUpdate() ;
1002
1003 if(rs==1)
1004 {
1005 System.out.println("删除成功,请继续操作!");
1006 }
1007 else
1008 {
1009 System.out.println("要删除的ID不存在!");
1010 }
1011 pt.close();
1012 conn.close();
1013 cp.close();
1014
1015 } catch (SQLException e) {
1016 // TODO 自动生成的 catch 块
1017 e.printStackTrace();
1018 }
1019 }
1020 public void deleteAll() //删除全部用户信息
1021 {
1022 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
1023
1024 Connection conn = null ;
1025
1026 try {
1027 conn = cp.getConnection();
1028
1029 String sql = "truncate table person " ;
1030
1031 PreparedStatement pt = conn.prepareStatement(sql) ;
1032
1033 int rs = pt.executeUpdate() ;
1034
1035 System.out.println("电话本内容已清空,请继续操作!");
1036
1037 pt.close();
1038 conn.close();
1039 cp.close();
1040
1041 } catch (SQLException e) {
1042 // TODO 自动生成的 catch 块
1043 e.printStackTrace();
1044 }
1045 }
1046 public List<Person> orderName() //按用户姓名排序信息
1047 {
1048 list = new ArrayList<>() ;
1049
1050 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
1051
1052 Connection conn = null ;
1053
1054 try {
1055 conn = cp.getConnection();
1056
1057 String sql = "select * from person order by name " ;
1058
1059 PreparedStatement pt = conn.prepareStatement(sql) ;
1060
1061 ResultSet rt = pt.executeQuery() ;
1062
1063 while(rt.next())
1064 {
1065 Person p = new Person() ;
1066
1067 p.setId(rt.getInt("id"));
1068 p.setName(rt.getString("name"));
1069 p.setAge(rt.getString("age"));
1070 p.setSex(rt.getString("sex"));
1071 p.setTelNum(rt.getString("telnum"));
1072 p.setAddress(rt.getString("address"));
1073
1074 list.add(p) ;
1075 }
1076 rt.close();
1077 pt.close();
1078 conn.close();
1079 cp.close();
1080
1081 } catch (SQLException e) {
1082 // TODO 自动生成的 catch 块
1083 e.printStackTrace();
1084 }
1085 return list;
1086 }
1087 public List<Person> orderAge() //按用户年龄排序信息
1088 {
1089 list = new ArrayList<>() ;
1090
1091 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
1092
1093 Connection conn = null ;
1094
1095 try {
1096 conn = cp.getConnection();
1097
1098 String sql = "select * from person order by age " ;
1099
1100 PreparedStatement pt = conn.prepareStatement(sql) ;
1101
1102 ResultSet rt = pt.executeQuery() ;
1103
1104 while(rt.next())
1105 {
1106 Person p = new Person() ;
1107
1108 p.setId(rt.getInt("id"));
1109 p.setName(rt.getString("name"));
1110 p.setAge(rt.getString("age"));
1111 p.setSex(rt.getString("sex"));
1112 p.setTelNum(rt.getString("telnum"));
1113 p.setAddress(rt.getString("address"));
1114
1115 list.add(p) ;
1116 }
1117 rt.close();
1118 pt.close();
1119 conn.close();
1120 cp.close();
1121
1122 } catch (SQLException e) {
1123 // TODO 自动生成的 catch 块
1124 e.printStackTrace();
1125 }
1126 return list;
1127 }
1128
1129
1130 public List<Person> orderSex() //按用户性别排序信息
1131 {
1132 list = new ArrayList<>() ;
1133
1134 ComboPooledDataSource cp = new ComboPooledDataSource("helloc3p0") ;
1135
1136 Connection conn = null ;
1137
1138 try {
1139 conn = cp.getConnection();
1140
1141 String sql = "select * from person order by sex " ;
1142
1143 PreparedStatement pt = conn.prepareStatement(sql) ;
1144
1145 ResultSet rt = pt.executeQuery() ;
1146
1147 while(rt.next())
1148 {
1149 Person p = new Person() ;
1150
1151 p.setId(rt.getInt("id"));
1152 p.setName(rt.getString("name"));
1153 p.setAge(rt.getString("age"));
1154 p.setSex(rt.getString("sex"));
1155 p.setTelNum(rt.getString("telnum"));
1156 p.setAddress(rt.getString("address"));
1157
1158 list.add(p) ;
1159 }
1160 rt.close();
1161 pt.close();
1162 conn.close();
1163 cp.close();
1164
1165 } catch (SQLException e) {
1166 // TODO 自动生成的 catch 块
1167 e.printStackTrace();
1168 }
1169 return list;
1170 }
1171
1172 }
pack-age.java
/**
*
*/
/**
* @author Administrator
*
*/
package sql;
Person,java
1 package com.yunruo.test;
2
3 /**
4 * 这是一个用户信息的实体类
5 * 该类有用户ID、姓名、年龄、性别、电话、地址成员属性
6 * 包含无参和有参构造方法
7 * 包含 toString() 方法
8 * 包含 setting 、getting
9 * @author Administrator
10 *
11 */
12
13
14 public class Person {
15
16 //属性
17 private int id; //用户ID 属性
18 private String name; //用户姓名属性
19 private String age; //用户年龄属性
20 private String sex; //用户性别属性
21 private String telNum; //用户电话号码属性
22 private String address; //用户地址属性
23
24 public Person() //无参构造
25 {
26 super();
27 }
28
29 Person(String name, String age, String sex, String telNum, String address) //有参数构造
30 {
31 this.name = name ;
32 this.age = age ;
33 this.sex = sex ;
34 this.telNum = telNum ;
35 this.address = address ;
36 }
37
38 public void setId(int id) {
39 this.id = id;
40 }
41
42 public void setName(String name) {
43 this.name = name;
44 }
45
46 public void setAge(String age) {
47 this.age = age;
48 }
49
50 public void setSex(String sex) {
51 this.sex = sex;
52 }
53
54 public void setTelNum(String telNum) {
55 this.telNum = telNum;
56 }
57
58 public void setAddress(String address) {
59 this.address = address;
60 }
61
62 public int getId() {
63 return id;
64 }
65
66 public String getName() {
67 return name;
68 }
69
70 public String getAge() {
71 return age;
72 }
73
74 public String getSex() {
75 return sex;
76 }
77
78 public String getTelNum() {
79 return telNum;
80 }
81
82 public String getAddress() {
83 return address;
84 }
85
86 @Override
87 public String toString() {
88 return "Person [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", telNum=" + telNum
89 + ", address=" + address + "]";
90 }
91
92
93 }
TelNoteRegex.java
package com.yunruo.test;
import java.util.Scanner;
/**
* 这是一个用户输入信息是否合法的验证类
* 该类中没有成员属性
* 该类主要实现:
* 对菜单输入选项的验证
* 对用户输入姓名的验证
* 对用户输入年龄的验证
* 对用户输入性别的验证
* 对用户输入电话号码的验证
* 对用户输入地址的验证
* @author Administrator
*
*/
public class TelNoteRegex {
public int menuRegex(int min, int max ) //对菜单输入选项的验证
{
Scanner sc = new Scanner(System.in) ;
int a= 0 ;
try
{
a = sc.nextInt() ;
}
catch(Exception e)
{
return 0 ;
}
if(a<=max && a >= min)
{
return a ;
}
else
{
return -1 ;
}
}
public String nameRegex( ) //对用户输入姓名的验证
{
String name ;
while(true)
{
System.out.println("请输入姓名: 字母或数字");
Scanner sc = new Scanner(System.in) ;
name = sc.nextLine() ;
if(name.matches("^[A-Za-z0-9]+$")) //正则表达式比较
{
System.out.println(name);
break ;
}
else
{
System.out.println("姓名格式不对!");
}
}
return name ;
}
public int ageRegex( ) //对用户输入年龄的验证
{
int age ;
while(true)
{
System.out.println("请输入年龄: 1-120整数");
Scanner sc = new Scanner(System.in) ;
try
{
age = sc.nextInt() ;
if(age>=1 && age<=120)
{
break ;
}
else
{
System.out.println("请输入正确的年龄!"); ;
}
}
catch (Exception e)
{
System.out.println("请输入整数!");
}
}
return age ;
}
public String sexRegex () //对用户输入性别的验证
{
String sex ;
while(true)
{
System.out.println("请输入性别: 男用M或m,女用W或w");
Scanner sc = new Scanner(System.in) ;
sex = sc.nextLine() ;
if(sex.equals("M")||sex.equals("m")||sex.equals("W")||sex.equals("w"))
{
System.out.println(sex);
break ;
}
else
{
System.out.println("性别格式不对!");
}
}
return sex ;
}
public String telNumRegex () //对用户输入电话号码的验证
{
String telNum ;
while(true)
{
System.out.println("请输入号码: 7-11位数字");
Scanner sc = new Scanner(System.in) ;
telNum = sc.nextLine() ;
if(telNum.matches("[0-9]{7,11}"))
{
System.out.println(telNum);
break ;
}
else
{
System.out.println("号码格式不对!");
}
}
return telNum ;
}
public String addressRegex () //对用户输入地址的验证
{
String address ;
while(true)
{
System.out.println("请输入地址: 字母或数字");
Scanner sc = new Scanner(System.in) ;
address = sc.nextLine() ;
if(address.matches("^[A-Za-z0-9]+$")) //正则表达式比较
{
System.out.println(address);
break ;
}
else
{
System.out.println("地址格式不对!");
}
}
return address ;
}
}
1 项目描述
该项目是用于日常生活中记录联系人信息的一款小工具。
实现了对联系人的姓名、年龄、性别、电话号码、住址的添加及修改、查找、删除、排序等功能。该项目是以windows控制台为运行平台,所有的操作都应在控制台上进行。
1.1 编写目的
1. 该项目编写的主要目的使学员对以往所学过的知识点做一个统一的复习,将平时所学的内容综合到一起并运用到实际代码编写中。
2. 该项目能够充分的体现出一些简单的业务流程处理,能够使学员掌握基本的业务流程控制。
1.2 实训范围
Java基础部分
2项目流程图
2.1业务流程结构图
2.2基本操作流程图
2.2.1当运行主程序后可在控制台显示主菜单,用户可选择菜单中的选项进行相应的操作如用户输入的菜单选项超出当前菜单所规定的范围外,程序不予以执行,并返回当前菜单,用户需要重新输入。见(图表1)
2.2.2用户选折1 可进入添加记录的下级子菜单见(图表2)
2.2.3当进入下级子菜单后,用户可根据提示进行用户的添加见(图表3)
2.2.4在添加新联系人时应对所添加的选项进行验证,如果有输入错误应提示见(图表4)
2.2.5添加完毕后可查看电话薄内的全部记录见(图表5)
2.2.6选择返回选项时,可返回上级主菜单见(图表6)
2.2.7选择2进入查找记录子菜单见(图表7)
2.2.8用户可根据具体内容进行相关查询见(图表8)
2.2.9选择3进入修改记录子菜单见(图表9)
2.2.10通过查看全记录,找到要修改联系的ID号对联系人的内容进行相应的修改见(图表10,11)
2.2.11选择4进入删除记录子菜单见(图表12)。
2.2.12删除共分为删除指定记录和删除全部两种操作。删除指定记录时需要输入被删除
人的ID号。删除成功后可继续操作见(图表13,14)
2.2.13删除全部用户。选择该选项可将电话薄清空见(图表15)
2.2.14用户可选择不同的选项对电话薄内的信息进行任意排序见(图表16,17,18,19)
按姓名排序结果
按年龄排序结果
按性别排序结果
2.3基本设计流程图
2.4类设计流程图
3类名,方法名及变量名的定义
要遵循下列设计要求进行代码编写,仅允许细微调整。
3.1类名:
App 对应 Application(程序入口函数)
Menu 对应 Menu (菜单类)
Operate 对应 Operate (业务处理类)
Person 对应 Person (实体类)
3.2方法名:
App类中方法(无成员变量):
main() 程序入口函数
start() 主菜单控制
Operate类中方法及成员变量
private List<Person>list 集合
addLogic() 用户添加信息业务逻辑控制
searchLogic() 用户查询信息业务逻辑控制
modifyLogicLogic() 修改信息业务逻辑控制
deleteLogic() 删除信息业务逻辑控制
orderLogic() 排序信息业务逻辑控制
addOperation () 添加新用户信息
showAll() 查询全部用户信息
searchByName() 按姓名查询用户信息
searchByAge() 按年龄查询用户信息
searchBySex() 按性别查询用户信息
searchByTelNum() 按电话号码查询用户信息
searchByAdd() 按地址查询用户信息
modify() 修改指定记录信息
delete() 删除指定用户信息
deleteAll() 删除全部用户信息
orderName() 按用户姓名排序信息
orderAge() 按用户年龄排序信息
orderSex() 按用户性别排序信息
TelNoteRegex类中方法(无成员变量)
menuRegex (int min, int max ) 对菜单输入选项的验证
nameRegex ( ) 对用户输入姓名的验证
ageRegex ( ) 对用户输入年龄的验证
sexRegex ( ) 对用户输入性别的验证
telNumRegex ( ) 对用户输入电话号码的验证
addressRegex ( ) 对用户输入地址的验证
Menu类中的方法(无成员变量)
mainMenu() 主菜单
addMenu () 添加用户菜单
searchMenu () 查找用户菜单
modifyMenu () 修改用户信息主菜单
subModifyMenu () 修改用户信息子菜单
deleteMenu () 删除用户信息菜单
orderMenu () 排序用户信息菜单
Person类中的方法及成员变量
privateintid; 用户ID 属性
private String name; 用户姓名属性
private String age; 用户年龄属性
private String sex; 用户性别属性
private String telNum; 用户电话号码属性
private String address; 用户地址属性
Person() 无参数构造方法
Person(String name, String age, String sex, String telNum, String address) 有参数构造方法
getName() 读取用户名
setName(String name) 设置用户名
getAge() 读取用户年龄
setAge(String age) 设置用户年龄
getSex() 读取用户性别
setSex(String sex) 设置用户性别
getTelNum() 读取用户电话号码
setTelNum (String telNum) 设置用户电话号码
getAddress() 读取用户地址
setAddress(String address) 设置用户地址
getID () 读取用户ID号
setID (int ID) 设置用户ID号
toString() 连接字符串方法
4.数据结构
id | ID号 |
name | 姓名 |
age | 年龄 |
sex | 性别 |
telNum | 电话号码 |
address | 住址 |
Person类数据结构
英文名称 中文名称
6 运行环境
JDK版本为1.5以上,数据库为Oracle11g以上
操作系统控制台或Eclipse开发工具
7 要求
该项目应个人独立完成,代码编写期间不得抄袭代码。
时间需求:3天
进度要求:
第一天要求能够通过主菜单对各级子菜单进行控制,并实现添加记录。
第二天要求能够实现查找记录,删除记录二个模块。
第三天要求能够实现修改记录,排序记录,以及退出系统功能。