老王悄悄给的文件读写题目 登陆+学生管理系统+文件读写

【管理员登录界面】
-------------------主界面-----------------
1,用户注册
2,用户登录
请输入操作指令:

输入1: 输入用户名和密码,把用户名和密码保存到user.txt文件中
如果用户名重复,则提示用户名重复

输入2: 输入用户名和密码,查找user.txt文件中是否有对应的用户
如果有就登录成功,进入学生管理系统界面。否则登录失败。


【学生管理系统界面】
------------------------学生成绩管理系统菜单---------------------
1添加 2查询 3修改 4删除 5娱乐一下 6统计 7退出
请输入指令:

学生管理系统各部分功能如下
1. 键盘录入添加一个学生信息
2. 显示所有的学生信息在控制台
3. 根据学号删除修改学生信息
4. 根据学号删除学生
5. 从所有学生信息中挑选一个学生人该学生唱歌,歌曲从另一个《歌曲清单.txt》文件中随机挑一个。
6. 统计各个分数段学生的人数
提前准备好:user.ccsoft存储登陆账号信息,stu.ccsoft存储学生信息,歌曲清单.ccsoft存储歌曲信息.

1.创建一个Student类
 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 }

2.创建一个User类
 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 }

3.创建一个测试类
  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 }

 

posted @ 2018-08-24 10:51  ccsoft  阅读(978)  评论(0编辑  收藏  举报