在Java SE中,对IO流与集合的操作在应用中比较重要。接下来,我以一个小型项目的形式,演示IO流、集合等知识点在实践中的运用。
该项目名称为“员工信息管理系统”(或“员工收录系统”),主要是通过输入员工的id、姓名信息,实现简单的增删改查功能。
该项目主要在DOS窗口的控制台或者Eclipse的控制台上进行操作。操作界面如下:
该项目的文件结构如下:
Step 1:
入口类SystemMain的代码为:
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
|
package empsystem; import java.util.Scanner; /** * 主界面 * 一个Scanner录入对象 * Employ类 * 文件路径 * 查重SearchID * @author 李章勇 * */ public class SystemMain { private Scanner sc= new Scanner(System.in); public SystemMain() { showWelcome(); } public void showWelcome(){ System.out.println( "----员工收录系统" ); System.out.println( "1.增加员工功能" ); System.out.println( "2.查看员工功能" ); System.out.println( "3.修改员工功能" ); System.out.println( "4.删除员工功能" ); System.out.println( "5.退出系统" ); String choice=sc.nextLine(); switch (choice){ case "1" : System.out.println( "您选择了增加用户功能" ); //Add new Add(); break ; case "2" : System.out.println( "您选择了查看用户功能" ); //Search new ShowEmp(); break ; case "3" : System.out.println( "您选择了修改用户功能" ); //Modify new Modify(); break ; case "4" : System.out.println( "您选择了删除用户功能" ); //删除用户Delete new Delete(); break ; case "5" : System.out.println( "您选择了退出系统" ); return ; default : System.out.println( "无此功能" ); break ; } showWelcome(); } public static void main(String[] args) { new SystemMain(); } } |
Step 2:
写文件路径FilePath接口。
1
2
3
4
|
package empsystem; public interface FilePath { public static final String PATH_NAME= "emp.em" ; } |
Step 3:
写员工类Employ。
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
|
package empsystem; import java.io.Serializable; /** * id,name * @author 李章勇 * */ public class Employ implements Serializable{ private int id; private String name; public Employ() { } public Employ( int id, String name) { super (); this .id = id; this .name = name; } 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; } @Override public String toString() { return "Employ [id=" + id + ", name=" + name + "]\n" ; } } |
Step 4:
根据ID查找员工的类SearchID。
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
|
package empsystem; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.ObjectInputStream; import java.util.ArrayList; import java.util.List; /** * 根据Id查找员工 * @author 李章勇 * */ public class SearchID { private SearchID(){} public static Employ searchId( int id){ File file= new File(FilePath.PATH_NAME); if (file.exists()){ try { ObjectInputStream ois= new ObjectInputStream( new FileInputStream(file)); try { ArrayList<Employ> ems=(ArrayList<Employ>) ois.readObject(); ois.close(); for ( int i= 0 ;i<ems.size();i++){ if (id==ems.get(i).getId()){ return ems.get(i); } } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { return null ; } return null ; } } |
Step 5:
接下来是增,查,改,删的类,分别是Add类,ShowEmp类, Modify类,Modify类。
(1)
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
|
package empsystem; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Scanner; /** * 一个输入器对象Scanner * 文件 * 集合对象ArrayList * @author 李章勇 * */ public class Add { private Scanner sc= new Scanner(System.in); private File file= new File(FilePath.PATH_NAME); private ArrayList<Employ> ems; public Add() { if (file.exists()){ try { ObjectInputStream ois= new ObjectInputStream( new FileInputStream(file)); try { ems=(ArrayList<Employ>) ois.readObject(); ois.close(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { ems= new ArrayList<Employ>(); } if (ems!= null ){ add(); } else { System.out.println( "系统内部问题,无法操作" ); return ; } } public boolean checkNum(String idStr){ //检测输入格式 if (idStr== null || idStr.equals( "" )){ System.out.println( "非法输入,重来" ); return false ; } char [] cs=idStr.toCharArray(); for ( int i= 0 ;i<cs.length;i++){ if (cs[i]< '0' || cs[i]> '9' ){ System.out.println( "输入非法,重来" ); return false ; } } return true ; } private String idStr; public int getRightNum(){ idStr=sc.nextLine(); if (!checkNum(idStr)){ getRightNum(); } int id=Integer.parseInt(idStr); return id; } public void askGoOn(){ System.out.println( "请问是否继续录入?Y/N" ); String choice=sc.nextLine(); if ( "Y" .equalsIgnoreCase(choice)){ add(); } else if ( "N" .equalsIgnoreCase(choice)){ //保存到文件 saveToFile(); return ; } else { System.out.println( "无此命令,请重新选择!" ); askGoOn(); } } public void saveToFile(){ try { ObjectOutputStream oos= new ObjectOutputStream( new FileOutputStream(file)); oos.writeObject(ems); oos.close(); //测试打印查看 System.out.println( "添加成功" ); System.out.println(ems); return ; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void add(){ System.out.println( "请输入用户ID:" ); //返回整数 int id=getRightNum(); for ( int i= 0 ;i<ems.size();i++){ if (id==ems.get(i).getId()){ System.out.println( "id已存在,请重新输入" ); add(); } } System.out.println( "请输入员工姓名:" ); String name=sc.nextLine(); Employ em= new Employ(id,name); ems.add(em); //询问是否继续录入 askGoOn(); } } |
(2)
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
|
package empsystem; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.ObjectInputStream; import java.util.ArrayList; import java.util.Scanner; /** * 一个输入器对象Scanner * 文件 * 集合对象ArrayList * @author 李章勇 * */ public class ShowEmp { private Scanner sc= new Scanner(System.in); private File file= new File(FilePath.PATH_NAME); private ArrayList<Employ> ems; public ShowEmp() { if (file.exists()){ try { ObjectInputStream ois= new ObjectInputStream( new FileInputStream(file)); try { ems=(ArrayList<Employ>) ois.readObject(); ois.close(); if (ems!= null ){ show(); } else { System.out.println( "系统内部问题,无法操作" ); return ; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { System.out.println( "数据文件不存在,无法查看" ); return ; } } public boolean checkNum(String idStr){ //检测输入格式 if (idStr== null || idStr.equals( "" )){ System.out.println( "非法输入,重来" ); return false ; } char [] cs=idStr.toCharArray(); for ( int i= 0 ;i<cs.length;i++){ if (cs[i]< '0' || cs[i]> '9' ){ System.out.println( "输入非法,重来" ); return false ; } } return true ; } private String idStr; public int getRightNum(){ idStr=sc.nextLine(); if (!checkNum(idStr)){ getRightNum(); } int id=Integer.parseInt(idStr); return id; } public void show(){ System.out.println( "查看全部员工输入Y,查看单个员工输入N" ); String choice=sc.nextLine(); if ( "Y" .equalsIgnoreCase(choice)){ System.out.println(ems); return ; } else if ( "N" .equalsIgnoreCase(choice)){ System.out.println( "请输入要查询的员ID:" ); int id=getRightNum(); if (SearchID.searchId(id)!= null ){ System.out.println( "您查找的员工信息为:\n" +SearchID.searchId(id)); return ; } else { System.out.println( "无此用户" ); return ; } } else { System.out.println( "无此命令,请重新选择!" ); show(); } } } |
(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
|
package empsystem; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Scanner; /** * 一个输入器对象Scanner * 文件 * 集合对象ArrayList * @author 李章勇 * */ public class Modify { private Scanner sc= new Scanner(System.in); private File file= new File(FilePath.PATH_NAME); private ArrayList<Employ> ems; public Modify() { if (file.exists()){ try { ObjectInputStream ois= new ObjectInputStream( new FileInputStream(file)); try { ems=(ArrayList<Employ>) ois.readObject(); ois.close(); if (ems!= null ){ modify(); } else { System.out.println( "系统内部问题,无法操作" ); return ; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { System.out.println( "数据文件不存在,无法查看" ); return ; } } public boolean checkNum(String idStr){ //检测输入格式 if (idStr== null || idStr.equals( "" )){ System.out.println( "非法输入,重来" ); return false ; } char [] cs=idStr.toCharArray(); for ( int i= 0 ;i<cs.length;i++){ if (cs[i]< '0' || cs[i]> '9' ){ System.out.println( "输入非法,重来" ); return false ; } } return true ; } private String idStr; public int getRightNum(){ idStr=sc.nextLine(); if (!checkNum(idStr)){ getRightNum(); } int id=Integer.parseInt(idStr); return id; } public void saveToFile(){ try { ObjectOutputStream oos= new ObjectOutputStream( new FileOutputStream(file)); oos.writeObject(ems); oos.close(); //测试打印查看 System.out.println( "修改成功" ); System.out.println(ems); return ; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void modify(){ System.out.println( "请输入要修改的用户ID:" ); int id=getRightNum(); if (SearchID.searchId(id)!= null ){ System.out.println( "修改前用户的姓名为:" +SearchID.searchId(id).getName()); System.out.println( "请输入修改后的姓名:" ); String name=sc.nextLine(); for ( int i= 0 ;i<ems.size();i++){ if (id==ems.get(i).getId()){ ems.get(i).setName(name); saveToFile(); } } } else { System.out.println( "无此用户" ); return ; } } } |
(4)
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
|
package empsystem; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; /** * 一个输入器对象Scanner * 文件 * 集合对象ArrayList * @author 李章勇 * */ public class Delete { private Scanner sc= new Scanner(System.in); private File file= new File(FilePath.PATH_NAME); private ArrayList<Employ> ems; public Delete() { if (file.exists()){ try { ObjectInputStream ois= new ObjectInputStream( new FileInputStream(file)); try { ems=(ArrayList<Employ>) ois.readObject(); ois.close(); if (ems!= null ){ delete(); } else { System.out.println( "系统内部问题,无法操作" ); return ; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { System.out.println( "数据文件不存在,无法查看" ); return ; } } public boolean checkNum(String idStr){ //检测输入格式 if (idStr== null || idStr.equals( "" )){ System.out.println( "非法输入,重来" ); return false ; } char [] cs=idStr.toCharArray(); for ( int i= 0 ;i<cs.length;i++){ if (cs[i]< '0' || cs[i]> '9' ){ System.out.println( "输入非法,重来" ); return false ; } } return true ; } private String idStr; public int getRightNum(){ idStr=sc.nextLine(); if (!checkNum(idStr)){ getRightNum(); } int id=Integer.parseInt(idStr); return id; } public void saveToFile(){ try { ObjectOutputStream oos= new ObjectOutputStream( new FileOutputStream(file)); oos.writeObject(ems); oos.close(); System.out.println( "删除成功" ); //测试打印查看 System.out.println(ems); return ; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void delete(){ System.out.println( "请输入要删除的员工ID:" ); int id=getRightNum(); if (SearchID.searchId(id)!= null ){ System.out.println( "删除前用户的姓名为:" +SearchID.searchId(id).getName()); Iterator<Employ> it=ems.iterator(); while (it.hasNext()){ Employ em=it.next(); if (id==em.getId()){ it.remove(); saveToFile(); } } } else { System.out.println( "无此用户" ); return ; } } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_37654790/article/details/85142546