1 public class Student /* extends User*/{
2 private String name;
3 private String num;
4 private double score;
5 //空参构造
6
7 public Student() {
8 }
9
10 //全参构造
11
12 public Student(String name, String num, double score) {
13 this.name = name;
14 this.num = num;
15 this.score = score;
16 }
17
18 //getter and Setter
19
20 public String getName() {
21 return name;
22 }
23
24 public void setName(String name) {
25 this.name = name;
26 }
27
28 public String getNum() {
29 return num;
30 }
31
32 public void setNum(String num) {
33 this.num = num;
34 }
35
36 public double getScore() {
37 return score;
38 }
39
40 public void setScore(double score) {
41 this.score = score;
42 }
43
44 //toString
45
46 @Override
47 public String toString() {
48 return "Student{" +
49 "name='" + name + '\'' +
50 ", num='" + num + '\'' +
51 ", score='" + score + '\'' +
52 '}';
53 }
54 }
1 public class User {
2 private String usesrname;
3 private String passwd;
4
5 public User() {
6 }
7
8 public User(String usesrname, String passwd) {
9 this.usesrname = usesrname;
10 this.passwd = passwd;
11 }
12
13 public String getUsesrname() {
14 return usesrname;
15 }
16
17 public void setUsesrname(String usesrname) {
18 this.usesrname = usesrname;
19 }
20
21 public String getPasswd() {
22 return passwd;
23 }
24
25 public void setPasswd(String passwd) {
26 this.passwd = passwd;
27 }
28
29 @Override
30 public String toString() {
31 return "User{" +
32 "usesrname='" + usesrname + '\'' +
33 ", passwd='" + passwd + '\'' +
34 '}';
35 }
36 }
1 import java.io.*;
2 import java.util.ArrayList;
3 import java.util.Random;
4 import java.util.Scanner;
5
6
7 /*
8 *
9
10 输入1: 输入用户名和密码,把用户名和密码保存到user.txt文件中
11 如果用户名重复,则提示用户名重复
12
13 输入2: 输入用户名和密码,查找user.txt文件中是否有对应的用户
14 如果有就登录成功,进入学生管理系统界面。否则登录失败。
15
16
17 【学生管理系统界面】
18 ------------------------学生成绩管理系统菜单---------------------
19 1添加 2查询 3修改 4删除 5娱乐一下 6统计 7退出
20 请输入指令:
21
22 学生管理系统各部分功能如下
23 1. 键盘录入添加一个学生信息
24 2. 显示所有的学生信息在控制台
25 3. 根据学号删除修改学生信息
26 4. 根据学号删除学生
27 5. 从所有学生信息中挑选一个学生人该学生唱歌,歌曲从另一个《歌曲清单.ccsoft》文件中随机挑一个。
28 6. 统计各个分数段学生的人数
29
30 学生具备的属性 :姓名 / 学号 /成绩
31 * */
32 public class StuManageSystem {
33 public static void main(String[] args) throws IOException {
34
35
36 boolean flag = false;
37 Scanner sc = new Scanner(System.in);
38 while (true){
39 //showMainMenu();显示主目录
40 showMainMenu();
41 int inputNum = sc.nextInt();
42 if (inputNum==1){
43 //userRegister();用户注册
44 userRegister();
45 }
46 else if(inputNum==2){
47 //boolean returnflag = userLogin();用户登陆
48 flag=userLogin();
49 if(flag==true){
50 System.out.println("登陆成功");
51 break;
52 }
53 else{
54 System.out.println("登陆失败,请重新登陆!");
55 }
56 }
57 else if(inputNum==3) {
58 System.out.println("正在退出!");
59 System.exit(0);
60 }
61 else{
62 System.out.println("非法输入,请重新尝试");
63 }
64
65 }
66
67 //showStuManagerSystemMenu();显示学生管理系统主界面
68 for(;;){
69 showStuManagerSystemMenu();
70 int secondeInptuNum = sc.nextInt();
71 if(secondeInptuNum==1) {
72 //1.addStu(); 添加学生信息
73 addStu();
74 }
75 else if(secondeInptuNum==2){
76 //2.searchStu();查询学生信息
77 searchStu();
78 }
79 else if (secondeInptuNum==3){
80 //modifyStu();修改学生信息
81 modifyStu();
82 }
83 else if (secondeInptuNum==4){
84 //4.deleteStu();删除学生信息
85 delseteStu();
86 }
87 else if(secondeInptuNum ==5){
88 //5.letsPlay();娱乐一下
89 letsPlay();
90 }
91 else if(secondeInptuNum==6){
92 //6.staStuInfo();统计每个分数段学生的人数
93 staStuInfo();
94 }
95 else if(secondeInptuNum==7){
96 System.out.println("正在退出");
97 System.exit(0);
98 }
99 else
100 {
101 System.out.println("输入不正确,请重新输入!");
102 }
103 }
104
105
106 }
107 /*
108 * 方法名:staStuInfo()
109 * 功能: 中的内容,加载到一个List集合中,统计每个分数段学生的人数
110 * 统计学生的信息
111 * */
112 private static void staStuInfo() throws IOException {
113 //1.读取所有的学生信息到stuList中,方便以后需的遍历操作.
114 ArrayList<Student> stuList = new ArrayList<>();
115 //2.定义BufferReader指向一个等待读取的文件
116 BufferedReader br = new BufferedReader(
117 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft")
118 );
119 //3.遍历文件中的每一行,按照,进行分割,存储早stuList中
120 String line;
121 while((line=br.readLine())!=null){
122 String[] array = line.split(",");
123 stuList.add(new Student(array[0],array[1],Double.parseDouble(array[2])));
124 }
125 int section=0,section1=0,section2=0,section3=0,section4=0;
126 ArrayList<Student> arrBujige = new ArrayList<>();
127 for (int i = 0; i < stuList.size(); i++) {
128 if (stuList.get(i).getScore()<60){
129 section++;
130 arrBujige.add(stuList.get(i));
131 }
132 else if (stuList.get(i).getScore()>60 && stuList.get(i).getScore()<70){
133 section1++;
134 }
135 else if (stuList.get(i).getScore()>70 && stuList.get(i).getScore()<80){
136 section2++;
137 }
138 else if (stuList.get(i).getScore()>80 && stuList.get(i).getScore()<90){
139 section3++;
140 }
141 else {
142 section4++;
143 }
144 }
145 System.out.printf("60-70分的人数为%d\n" +
146 "70-80分的人数为%d\n" +
147 "80分-90分的人数为%d\n" +
148 "90-100分的人数为%d\n",section1,section2,section3,section4);
149 //找到不及格的人数 ,并显示成员
150 System.out.println("不及格的人数为:"+section);
151 System.out.println("不及格的人详细信息:");
152 System.out.println(arrBujige);
153
154 }
155
156 /*
157 * 方法名:letsPlay()
158 * 功能:读取 中的内容,加载到一个List集合中
159 * 从所有学生信息中挑选一个学生人该学生唱歌,歌曲从另一个《歌曲清单.ccsoft》文件中随机挑一个。
160 * 学生具备的三种属性: 姓名,
161 * */
162 private static void letsPlay() throws IOException {
163 //1.读取所有的学生信息到stuList中,方便以后需的遍历操作.
164 ArrayList<Student> stuList = new ArrayList<>();
165 //2.定义BufferReader指向一个等待读取的文件
166 BufferedReader br = new BufferedReader(
167 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft")
168 );
169 //3.遍历文件中的每一行,按照,进行分割,存储早stuList中
170 String line;
171 while((line=br.readLine())!=null){
172 String[] array = line.split(",");
173 stuList.add(new Student(array[0],array[1],Double.parseDouble(array[2])));
174 }
175 //4.读取所有的歌曲信息到musicList集合中
176 ArrayList<String> musicList = new ArrayList<>();
177 //5.定义BufferedReader指向歌曲文件
178 BufferedReader brMusic = new BufferedReader(
179 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\歌曲清单.ccsoft")
180 );
181 String lineMusic;
182 while((lineMusic=brMusic.readLine())!=null){
183 musicList.add(lineMusic);
184 }
185
186 //6.随机产生一个索引值,从stuList中get()该索引,找到一个学生
187 System.out.println("开始随机抽取一个学生!\n这位天选之子是:");
188 Random ra = new Random();
189 int luckeyBoy = ra.nextInt(stuList.size());
190 System.out.printf("%d号的%s",luckeyBoy,stuList.get(luckeyBoy).getName());
191 //7.随机产生一个索引值,从musicList中get()该索引,找到一首歌
192 System.out.println("下面将为其随机生成一首歌:");
193 int luckyMusic = ra.nextInt(musicList.size());
194 System.out.println("歌曲是:"+musicList.get(luckyMusic));
195 //8.让该学生唱这首歌
196 System.out.printf("有请%s的学生唱名称为:%s的歌\n",stuList.get(luckeyBoy).getName(),musicList.get(luckyMusic));
197
198 }
199
200 /*
201 * 方法名:delseteStu()
202 * 功能:读取中的内容,加载到一个List集合中,然后删除,显示查询学生的信息,然后删除,保存到该文件中
203 * 学生具备的三种属性: 姓名,
204 * */
205 private static void delseteStu() throws IOException {
206 //1.读取所有的学生信息到stuList中,方便以后需的遍历操作.
207 ArrayList<Student> stuList = new ArrayList<>();
208 //2.定义BufferReader指向一个等待读取的文件
209 BufferedReader br = new BufferedReader(
210 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft")
211 );
212 //3.遍历文件中的每一行,按照,进行分割,存储早stuList中
213 String line;
214 while((line=br.readLine())!=null){
215 String[] array = line.split(",");
216 stuList.add(new Student(array[0],array[1],Double.parseDouble(array[2])));
217 }
218
219 //4.提示用户输入需要修改的学生学号,
220 System.out.println("请输入需要修改的学号:");
221 Scanner sc =new Scanner(System.in);
222 String inputNuum = sc.nextLine();
223 //5.遍历比对,找到了就删除
224 for (int i = 0; i < stuList.size(); i++) {
225 if (stuList.get(i).getNum().equals(inputNuum)){
226 stuList.remove(i);
227 System.out.println("删除成功!");
228 }
229 }
230 //6.重新写入文件
231 //指向文件
232 BufferedWriter bw = new BufferedWriter(
233 new FileWriter("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft")
234 );
235 //开始覆写
236 for (Student student : stuList) {
237 bw.write(student.getName()+","+student.getNum()+","+student.getScore()+"\r\n");
238 }
239 //闭流
240 bw.close();
241 }
242
243 /*
244 * 方法名:modifyStu()
245 * 功能:读取 中的内容,加载到一个List集合中,然后修改,显示查询学生的信息,保存到该文件中
246 * 学生具备的三种属性: 姓名,
247 * */
248 private static void modifyStu() throws IOException {
249 //1.读取文件中所有的学生信息到stuList中,方便后续的遍历操作.
250 ArrayList<Student> stuList = new ArrayList<>();
251 //从哪读取内容
252 BufferedReader br = new BufferedReader(
253 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft")
254 );
255 String line;
256 /*一次读文件中的一行*/
257 while ((line=br.readLine())!=null){
258 /*读到的每一行,按 逗号 进行拆分 成为String[] array 数组*/
259 String[] array = line.split(",");
260 /* new 一个User对象当做参数,使用全参构造传递账户名 和 密码
261 * 将该对象添加进userList中.
262 */
263
264 stuList.add(new Student(array[0],array[1],Double.parseDouble(array[2])));
265 }
266 // System.out.println(stuList);
267 // 请输入需要修改的学生的学号
268 System.out.println("请输入需要修改的学生的学号!");
269 Scanner sc = new Scanner(System.in);
270 String inputNum = sc.nextLine();
271 int flag =0;
272 //遍历比对,找到了重新设置改元素
273 for (int i = 0; i < stuList.size(); i++) {
274 if (stuList.get(i).getNum().equals(inputNum)){
275 flag=1;
276 System.out.println("找到了!");
277 System.out.println("请重新设置该学生的姓名:");
278 String inputStr = sc.nextLine();
279 System.out.println("请重新设置该学生的成绩:");
280 double inputScore = sc.nextDouble();
281 stuList.set(i,new Student(inputStr,inputNum,inputScore));
282 //提示
283 System.out.println("重新设置该学生信息成功!");
284 }
285 }
286 if (flag==0){
287 System.out.println("查无此人!");
288 }
289 //指向文件
290 BufferedWriter bw = new BufferedWriter(
291 new FileWriter("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft")
292 );
293 //开始覆写
294 for (Student student : stuList) {
295 bw.write(student.getName()+","+student.getNum()+","+student.getScore()+"\r\n");
296 }
297 //闭流
298 bw.close();
299 }
300
301 /*
302 * 方法名:searchStu()
303 * 功能:读取中的内容,加载到一个List集合中,然后查询,显示查询学生的信息
304 * 学生具备的三种属性: 姓名,
305 * */
306 private static void searchStu() throws IOException {
307 //1.读取文件中所有的学生信息到stuList中,方便后续的遍历操作.
308 ArrayList<Student> stuList = new ArrayList<>();
309 //从哪读取内容
310 BufferedReader br = new BufferedReader(
311 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft")
312 );
313 String line;
314 /*一次读文件中的一行*/
315 while ((line=br.readLine())!=null){
316 /*读到的每一行,按 逗号 进行拆分 成为String[] array 数组*/
317 String[] array = line.split(",");
318 /* new 一个User对象当做参数,使用全参构造传递账户名 和 密码
319 * 将该对象添加进userList中.
320 */
321
322 stuList.add(new Student(array[0],array[1],Double.parseDouble(array[2])));
323 }
324 // System.out.println(stuList);
325 //请选择
326 System.out.println("输入1,按照姓名查询\n输入2,按照学号查询");
327 Scanner sc = new Scanner(System.in);
328 String strInput = sc.nextLine();
329 /*如果输入的是1 ,则调用searchStuName()方法*/
330 if ("1".equals(strInput)){
331 System.out.println("请输入姓名:");
332 String inputName = sc.nextLine();
333 searchStuName(stuList,inputName);
334 }
335 /*如果是输入的是2,则调用searchStuNum()方法*/
336 else if("2".equals(strInput)){
337 System.out.println("请输入学号:");
338 String inputNum = sc.nextLine();
339 searchStuNum(stuList,inputNum);
340 }
341 else{
342 System.out.println("无效输入!");
343 }
344
345 }
346 /*方法名:searchStuName 按照名字进行查询*/
347 private static void searchStuName(ArrayList<Student> list,String inputName){
348 int flag =0;
349 for (Student student : list) {
350 if (student.getName().equals(inputName)){
351 System.out.println("找到此人!");
352 System.out.println(student);
353 flag=1;
354 break;
355 }
356
357 }
358 if (flag==0){
359 System.out.println("查无此人!");
360 }
361 }
362 /*方法名:searchStuNum 按照学号进行查询*/
363 private static void searchStuNum(ArrayList<Student> list,String inpuNum){
364 int flag=0;
365 for (Student student : list) {
366 if (student.getNum().equals(inpuNum)){
367 System.out.println("找到此人!");
368 System.out.println(student);
369 flag=1;
370 break;
371 }
372 }
373 if (flag==0){
374 System.out.println("查无此人!");
375 }
376 }
377
378 /*
379 * 方法名:addStu()
380 * 功能:添加学生信息到
381 * 学生具备的三种属性: name , num , score
382 * */
383 private static void addStu() throws IOException {
384 //1.使用BuferWriter指向一个文件
385 BufferedWriter bw = new BufferedWriter(new FileWriter(
386 "C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\stu.ccsoft",true
387 ));
388 //2.请求输入学生的信息
389 Scanner sc = new Scanner(System.in);
390 System.out.println("请输入学生的姓名:");
391 String name = sc.nextLine();
392 System.out.println("请输入学生的学号:");
393 String num = sc.nextLine();
394 System.out.println("请输入学生的成绩:");
395 double score = sc.nextDouble();
396 //3.将学生信息添加到文件中.
397 /* 打印的格式 :陈醇,888,80*/
398 bw.write(name+","+num+","+score+"\r\n");
399
400 //4.闭流
401 bw.close();
402 System.out.println("录入学生信息成功!");
403
404 }
405
406 /*
407 * 方法名:showStuManagerSystemMenu()
408 * 功能:显示学生管理系统界面,提供用户选择
409 *------------------------学生成绩管理系统菜单---------------------
410 1添加 2查询 3修改 4删除 5娱乐一下 6统计 7退出
411 * */
412 private static void showStuManagerSystemMenu() {
413 System.out.println("=====================主界面===================");
414 System.out.println("╬ 1.添加学生 ");
415 System.out.println("╬ 2.查询学生 ");
416 System.out.println("╬ 3.修改学生 ");
417 System.out.println("╬ 4.删除学生 ");
418 System.out.println("╬ 5.娱乐一下 ");
419 System.out.println("╬ 6.统计学生 ");
420 System.out.println("╬ 7.退 出 ");
421 System.out.println("=============================================");
422 System.out.println("请输入操作指令:");
423
424 }
425 /*
426 * 方法名:userRegister();
427 * 方法功能:用来注册一个用户,将用户写入到user.ccsoft"中
428 * */
429 private static void userRegister() throws IOException {
430 //请输入用户名:
431 System.out.println("请输入用户名:");
432 Scanner sc = new Scanner(System.in);
433 String inputUser = sc.nextLine();
434 String passwd="";
435
436 //判断用户是否存在,定义一个User类型的ArrayList集合,从文件中读取出来,保存到ArrayList<User>中
437 ArrayList<User> userList = new ArrayList<>();
438 //从哪读取内容
439 BufferedReader br = new BufferedReader(
440 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\user.ccsoft")
441 );
442 String line;
443 /*一次读文件中的一行*/
444 while ((line=br.readLine())!=null){
445 /*读到的每一行,按 逗号 进行拆分 成为String[] array 数组*/
446 String[] array = line.split(",");
447 /* new 一个User对象当做参数,使用全参构造传递账户名 和 密码
448 * 将该对象添加进userList中.
449 */
450 userList.add(new User(array[0],array[1]));
451 }
452 // System.out.println(userList);
453 /*
454 * 全部添加进userList数组后, 用循环遍历的方式跟用户输入的账户名inputUser进行比对
455 * 如果比对成功:提示该用户已经存在.
456 * 如果比对不成功:请求用户输入密码
457 * */
458 int flag =0;
459 for (User user : userList) {
460 if(user.getUsesrname().equals(inputUser)){
461 flag=1;
462
463 }
464 }
465 if(flag==1)
466 {
467 System.out.println("用户名已经被注册!");
468 }
469 else{
470 System.out.println("请输入密码");
471 passwd=sc.nextLine();
472 //将新的用户 和 密码添加进userList中
473 userList.add(new User(inputUser,passwd));
474
475
476 //将userList覆写进 User.ccsoft文件
477 //写到哪里去
478 BufferedWriter bw = new BufferedWriter(
479 new FileWriter("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\user.ccsoft")
480 );
481 //遍历写入
482 for (User user : userList) {
483 bw.write(user.getUsesrname()+","+user.getPasswd()+"\r\n");
484 }
485 System.out.println("注册成功!");
486 bw.close();
487 }
488
489 }
490
491 /*
492 * 方法名:showMainMenu()
493 * 功能:显示主界面,让用户选择注册,或者登陆
494 *
495 * */
496 private static void showMainMenu() {
497 System.out.println("=====================主界面===================");
498 System.out.println("╬ 1.用户注册 ");
499 System.out.println("╬ 2.用户登录 ");
500 System.out.println("╬ 3.退 出 ");
501 System.out.println("=============================================");
502 System.out.println("请输入操作指令:");
503
504 }
505 /*
506 * 方法名:userLogin()
507 * 功能:用户登陆功能
508 * 类型:boolean类型,返回的如果是true 说明登陆成功
509 * 返回的如果是false,说明明登陆失败.
510 * */
511 private static boolean userLogin() throws IOException {
512 //1.请求用户输入账户名
513 System.out.println("请输入账户名:");
514 Scanner sc = new Scanner(System.in);
515 String username = sc.nextLine();
516 //2.请求用户输入密码
517 System.out.println("请输入密码:");
518 String passwd = sc.nextLine();
519 //3.将得到的账户名 和 密码 与 userList中的值进行比较
520 //如果比较相同则登陆成功返回true
521 //如果比较不相同则登陆失败返回false
522 //判断用户是否存在,定义一个User类型的ArrayList集合,从文件中读取出来,保存到ArrayList<User>中
523 ArrayList<User> userList = new ArrayList<>();
524 //从哪读取内容
525 BufferedReader br = new BufferedReader(
526 new FileReader("C:\\ideaProjects\\job-code\\day10\\src\\老王的题\\user.ccsoft")
527 );
528 String line;
529 /*一次读文件中的一行*/
530 while ((line=br.readLine())!=null){
531 /*读到的每一行,按 逗号 进行拆分 成为String[] array 数组*/
532 String[] array = line.split(",");
533 /* new 一个User对象当做参数,使用全参构造传递账户名 和 密码
534 * 将该对象添加进userList中.
535 */
536 userList.add(new User(array[0],array[1]));
537 }
538 // System.out.println(userList);
539 //遍历UserList集合查找是否匹配输入的用户名和密码
540 int flag=0;
541 for (int i = 0; i < userList.size(); i++) {
542 if (userList.get(i).getUsesrname().equals(username)){
543 if (userList.get(i).getPasswd().equals(passwd)){
544 flag=1;
545
546 return true;
547 }
548
549 }
550 }
551 return false;
552 }
553
554 }