1 public class StudentManager {
2 public static String SCHOOL = "heima";
3 public static int sn;
4 public static Scanner sc = new Scanner(System.in);
5 public static String filename = "day11_smIO\\st.txt";
6 public static String snPath = "day11_smIO\\sn.txt";
7
8 public static void main(String[] args) throws IOException {
9 ArrayList<Student> al = new ArrayList<Student>();
10
11 String op = "0";
12 while (true) {
13 // Runtime.getInstance().exec("cls");
14 System.out.println("----------学生管理系统----------");
15 System.out.println("1,查看全部学生信息");
16 System.out.println("2,添加学生信息");
17 System.out.println("3,删除学生信息");
18 System.out.println("4,修改学生信息");
19 System.out.println("5,查看某个学生");
20 System.out.println("6,退出程序");
21 System.out.print("选择相应操作: ");
22 op = sc.nextLine().trim();
23 switch (op) {
24 case "1": // 查看全部学生信息
25 selectAllStudent(al);
26 break;
27 case "2": // 添加学生信息
28 addStudent(al);
29 break;
30 case "3": // 删除学生信息
31 delStudent(al);
32 break;
33 case "4": // 修改学生信息
34 updateStudent(al);
35 break;
36 case "5": // 查看某个学生
37 selectStudent(al);
38 break;
39 case "6": // 退出程序
40 System.out.println("欢迎使用");
41 System.exit(0);
42 break;
43 default:
44 System.out.println("选择错误");
45 break;
46 }
47 }
48
49 } // main over
50
51 // 初始化sn
52 public static int getSN(String snPath) throws IOException{
53 BufferedReader br = new BufferedReader(new FileReader(snPath));
54 String tmp = br.readLine().trim();
55 int sn = Integer.parseInt(tmp);
56 br.close();
57 return sn;
58 }
59
60 // 保存sn
61 public static void setSN(int sn, String snPath) throws IOException{
62 BufferedWriter bw = new BufferedWriter(new FileWriter(snPath));
63 bw.write(String.valueOf(sn));
64
65 bw.flush();
66 bw.close();
67 }
68
69 // 初始化集合
70 public static void readFile(String filename, ArrayList<Student> al) throws IOException {
71 al.clear();
72
73 BufferedReader br = new BufferedReader(new FileReader(filename));
74 String[] tmp;
75 Student stu;
76 ;
77 String line;
78 while ((line = br.readLine()) != null) {
79 tmp = line.split(",");
80 // stu = new Student(sid, name, age, priv)
81 stu = new Student(tmp[0].trim(), tmp[1].trim(), tmp[2].trim(), tmp[3].trim());
82 al.add(stu);
83 }
84
85 br.close();
86 }
87
88 // 集合信息存盘
89 public static void writeFile(String filename, ArrayList<Student> al) throws IOException {
90 BufferedWriter bw = new BufferedWriter(new FileWriter(filename));
91 StringBuilder tmp = new StringBuilder("");
92 for (int i = 0; i < al.size(); i++) {
93 tmp.append(al.get(i).getSid()).append(", ");
94 tmp.append(al.get(i).getName()).append(", ");
95 tmp.append(al.get(i).getAge()).append(", ");
96 tmp.append(al.get(i).getPriv());
97 bw.write(tmp.toString());
98 bw.newLine();
99 bw.flush();
100 tmp.delete(0, tmp.length());
101 }
102
103 bw.close();
104 }
105
106 // print student
107 public static void printStudent(int i, ArrayList<Student> al) {
108 String name = al.get(i).getName();
109 String age = al.get(i).getAge();
110 String sid = al.get(i).getSid();
111 String priv = al.get(i).getPriv();
112
113 System.out.println(name + "\t" + age + "\t" + sid + "\t\t" + priv);
114 }
115
116 // 添加学生
117 public static void addStudent(ArrayList<Student> al) throws IOException {
118 // 初始化集合
119 readFile(filename, al);
120
121 System.out.print("姓名: ");
122 String name = sc.nextLine().trim();
123 System.out.print("年龄: ");
124 String age = sc.nextLine().trim();
125 System.out.print("籍贯: ");
126 String priv = sc.nextLine().trim();
127
128 // 初始化sn
129 sn = getSN(snPath);
130 sn++;
131 String sid = SCHOOL + sn;
132 sid = sid.replace("heima25", "heima00");
133
134 Student ss = new Student(sid, name, age, priv);
135 al.add(ss);
136
137 System.out.println("当前系统中学生总数: " + al.size() + " ,新添加学生编号 " + sid);
138 // 保存sn
139 setSN(sn, snPath);
140 writeFile(filename, al);
141 }
142
143 // 删除学生
144 public static void delStudent(ArrayList<Student> al) throws IOException {
145 // 初始化集合
146 readFile(filename, al);
147
148 System.out.print("输入需要删除的学生编号:");
149 String sid = sc.nextLine().trim();
150 for (int i = 0; i < al.size(); i++) {
151 if (al.get(i).getSid().equalsIgnoreCase(sid)) {
152 System.out.println("即将删除学生信息,编号 " + al.get(i).getSid());
153 al.remove(i);
154 System.out.println("删除学生信息: 编号" + sid + ",已清除");
155
156 // 存盘
157 writeFile(filename, al);
158 return;
159 }
160 }
161
162 System.out.println(sid + "没有找到。");
163 }
164
165 // 修改学生信息
166 public static void updateStudent(ArrayList<Student> al) throws IOException {
167 // 初始化集合
168 readFile(filename, al);
169
170 System.out.print("输入即将修改的学生编号: ");
171 String sid = sc.nextLine().trim();
172 int i;
173 for (i = 0; i < al.size(); i++) {
174 if (al.get(i).getSid().equalsIgnoreCase(sid)) {
175 break;
176 }
177 if (al.size() - 1 == i) {
178 System.out.println("输入的学生编号不存在!");
179 return;
180 }
181 }
182
183 String op = "";
184 System.out.println("选择修改的范围:");
185 System.out.println("\t1,修改姓名");
186 System.out.println("\t2,修改年龄");
187 System.out.println("\t3,修改籍贯");
188 System.out.println("\t4,以上全部修改");
189 System.out.println("\t5,放弃修改");
190 System.out.print("选择操作的序号:");
191 op = sc.nextLine().trim();
192
193 String name = null;
194 String age = null;
195 String pri = null;
196 switch (op) {
197 case "1": // 修改姓名
198 System.out.print("新的姓名");
199 name = sc.nextLine().trim();
200 break;
201 case "2": // 修改年龄
202 System.out.print("新的年龄");
203 age = sc.nextLine().trim();
204 break;
205 case "3": // 修改籍贯
206 System.out.print("新的籍贯");
207 pri = sc.nextLine().trim();
208 break;
209 case "4": // 全部修改
210 System.out.print("新的姓名");
211 name = sc.nextLine().trim();
212 System.out.print("新的年龄");
213 age = sc.nextLine().trim();
214 System.out.print("新的籍贯");
215 pri = sc.nextLine().trim();
216 break;
217 case "5": // 放弃修改
218 System.out.println("退出修改");
219 break;
220 default:
221 System.out.println("选择错误");
222 break;
223 }
224
225 if (null != name) {
226 al.get(i).setName(name);
227 }
228 if (null != age) {
229 al.get(i).setAge(age);
230 }
231 if (null != pri) {
232 al.get(i).setPriv(pri);
233 }
234
235 // 存盘
236 writeFile(filename, al);
237 }
238
239 // 选择一个学生
240 public static void selectStudent(ArrayList<Student> al) throws IOException {
241 // 初始化集合
242 readFile(filename, al);
243
244 System.out.print("输入学生编号: ");
245 String sid = sc.nextLine().trim();
246 int i = 0;
247
248 for (i = 0; i < al.size(); i++) {
249 if (al.get(i).getSid().equalsIgnoreCase(sid)) {
250 printStudent(i, al);
251 return;
252 }
253 }
254
255 System.out.println(sid + " 学生编号没有找到");
256 }
257 // 查看所有学生
258 public static void selectAllStudent(ArrayList<Student> al) throws IOException {
259 // 选择所有学生,打印输出
260 readFile(filename, al);
261
262 if (0 == al.size()) {
263 System.out.println("当前系统保存的学生总数: " + al.size());
264 return;
265 }
266
267 System.out.println("姓名\t年龄\t编号\t\t\t籍贯");
268 for (int i = 0; i < al.size(); i++) {
269 printStudent(i, al);
270 }
271 }
272 }