简陋学生管理操作
【该类只是测试类】
1 //测试类 2 package studenttest; 3 4 import view.View; 5 6 public class Test { 7 public static void main(String[] args) { 8 new View().show(); 9 } 10 }
=================================================================================
【该类为学生信息属性类】
1 //创建学生信息 2 package data; 3 4 public class Student { 5 private int id; 6 private int age; 7 private String name; 8 9 public int getId() { 10 return id; 11 } 12 13 public void setId(int id) { 14 this.id = id; 15 } 16 17 public int getAge() { 18 return age; 19 } 20 21 public void setAge(int age) { 22 this.age = age; 23 } 24 25 public String getName() { 26 return name; 27 } 28 29 public void setName(String name) { 30 this.name = name; 31 } 32 33 @Override
34 public String toString() { 35 return "Student [id=" + id + ", age=" + age + ", name=" + name + "]"; 36 } 37 38 }
=================================================================================
【该类只用于在控制台显示的内容】
1 //学生管理操作_显示 2 package view; 3 4 import java.util.List; 5 import java.util.Scanner; 6 7 import operate.Operate; 8 import data.Student; 9 10 public class View { 11 Scanner sc = new Scanner(System.in); 12 13 public void show() { 14 while (true) { // 无限循环 15 System.out 16 .println("请选择需要的操作:1.添加学生信息;2.查找学生信息;3.删除学生信息;4.查看全部学生信息;5.修改学生信息;6.退出"); 17 int temp = sc.nextInt(); // 对选择的操作进行临时储存 18 switch (temp) { // 进行对应的操作 19 case 1: 20 add(); // 进行添加操作 21 break; 22 case 2: 23 find(); // 进行查找单个学生操作 24 break; 25 case 3: 26 del(); // 进行删除单个学生的操作 27 break; 28 case 4: 29 findAll(); // 进行查看全部信息的操作 30 break; 31 case 5: 32 dataup(); // 进行修改某个学生信息的操作 33 break; 34 case 6: 35 exit(); // 进行退出操作 36 break; 37 38 } 39 } 40 } 41 42 private void exit() { 43 // TODO Auto-generated method stub 44 Operate op = new Operate(); 45 op.exit(); 46 } 47 48 private void dataup() { 49 // TODO Auto-generated method stub 50 System.out.println("请输入要修改学生的id" ); 51 int id = sc.nextInt(); 52 System.out.println("请输入要修改学生的age"); 53 int age = sc.nextInt(); 54 System.out.println("请输入要修改学生的name"); 55 String name = sc.next(); 56 Operate op = new Operate(); 57 Student st = new Student(); 58 st.setId(id); 59 st.setAge(age); 60 st.setName(name); 61 if(op.dataup(st)){ 62 //修改成功 63 System.out.println("修改成功"); 64 }else{ 65 System.out.println("修改失败"); 66 } 67 } 68 69 private void findAll() { 70 // TODO Auto-generated method stub 71 Operate op = new Operate(); 72 // System.out.println(op.findAll() + "\r\n"); //可以打印出,但是不能分行 73 List<Student> l = op.findAll(); 74 for(Student s : l){ 75 System.out.println(s); 76 } 77 } 78 79 private void del() { 80 // TODO Auto-generated method stub 81 System.out.println("请输入要删除的学生id"); 82 int id = sc.nextInt(); 83 Operate op = new Operate(); 84 if (op.del(id)) { 85 // 删除成功 86 System.out.println("删除成功"); 87 } else { 88 System.out.println("删除失败"); 89 } 90 } 91 92 private void find() { 93 // TODO Auto-generated method stub 94 System.out.println("请输入要查找学生的id"); 95 int id = sc.nextInt(); 96 Operate op = new Operate(); 97 if (op.find(id) != null) { 98 System.out.println(op.find(id)); 99 } else { 100 System.out.println("没有该学生"); 101 } 102 } 103 104 private void add() { 105 // TODO Auto-generated method stub 106 System.out.println("请输入要添加的学生id"); 107 int id = sc.nextInt(); 108 System.out.println("请输入要添加学生的age"); 109 int age = sc.nextInt(); 110 System.out.println("请输入要添加的学生name"); 111 String name = sc.next(); 112 Student st = new Student(); 113 st.setId(id); 114 st.setAge(age); 115 st.setName(name); 116 Operate op = new Operate(); 117 if (op.add(st)) { 118 System.out.println("录入成功"); 119 } else { 120 System.out.println("已存在该id"); 121 } 122 } 123 }
=================================================================================
1 //学生管理操作_操作 2 package operate; 3 4 import java.io.BufferedReader; 5 import java.io.BufferedWriter; 6 import java.io.File; 7 import java.io.FileFilter; 8 import java.io.FileNotFoundException; 9 import java.io.FileReader; 10 import java.io.FileWriter; 11 import java.io.IOException; 12 import java.util.ArrayList; 13 import java.util.List; 14 15 import data.Student; 16 17 public class Operate { 18 private File file = new File("StudentData"); // 创建用于存储学生信息的文件夹 19 20 // 查找学生id是否已存在 21 public boolean check(int id) { 22 File f = new File(file, id + ".st"); 23 return f.exists(); // 返回是否已存在该id 24 } 25 26 // 修改某个学生信息 27 public boolean dataup(Student st) { 28 // TODO Auto-generated method stub 29 if (check(st.getId())) { 30 // 学生id存在 31 BufferedWriter bw = null; 32 try { 33 bw = new BufferedWriter(new FileWriter(new File(file, 34 st.getId() + ".st"))); 35 bw.write(String.valueOf(st.getId())); 36 bw.newLine(); 37 bw.write(String.valueOf(st.getAge())); 38 bw.newLine(); 39 bw.write(st.getName()); 40 bw.flush(); 41 42 } catch (IOException e) { 43 // TODO Auto-generated catch block 44 e.printStackTrace(); 45 46 } finally { 47 if (bw != null) { 48 try { 49 bw.close(); 50 } catch (IOException e) { 51 // TODO Auto-generated catch block 52 e.printStackTrace(); 53 } 54 } 55 } 56 return true; 57 } 58 else{ 59 return false; 60 } 61 } 62 63 // 查看全部学生信息 64 public List<Student> findAll() { 65 // TODO Auto-generated method stub 66 // 创建一个Student类型的学生集合 67 List<Student> list = new ArrayList<Student>(); 68 // 筛选要添加到集合中的“.st”文件 69 File[] f = file.listFiles(new FileFilter() { 70 71 @Override 72 public boolean accept(File pathname) { 73 // TODO Auto-generated method stub 74 return pathname.getName().endsWith(".st"); 75 } 76 }); 77 // 遍历File[]并添加到List集合中 78 for (File fs : f) { 79 Student s = new Student();// 要添加到List集合中必须是Student类型 80 BufferedReader br = null; 81 try { 82 br = new BufferedReader(new FileReader(fs)); 83 s.setId(Integer.parseInt(br.readLine()));// 须将“.st”文件中String类型转换成int类型读出 84 s.setAge(Integer.parseInt(br.readLine()));// readLine()为读取一行 85 s.setName(br.readLine()); 86 } catch (NumberFormatException e) { 87 // TODO Auto-generated catch block 88 e.printStackTrace(); 89 } catch (IOException e) { 90 // TODO Auto-generated catch block 91 e.printStackTrace(); 92 } finally { 93 if (br != null) { 94 try { 95 br.close(); 96 } catch (IOException e) { 97 // TODO Auto-generated catch block 98 e.printStackTrace(); 99 } 100 } 101 } 102 list.add(s); 103 } 104 return list; 105 } 106 107 // 删除某个学生 108 public boolean del(int id) { 109 // TODO Auto-generated method stub 110 File f = new File(file, id + ".st"); 111 if (check(id)) { 112 // 存在该学号 113 f.delete(); 114 return true; 115 } else { 116 return false; 117 } 118 } 119 120 // 查找某一个学生信息操作 121 public Student find(int id) { 122 // TODO Auto-generated method stub 123 Student s = new Student(); 124 if (check(id)) { 125 // 该学生存在 126 BufferedReader br = null; 127 try { 128 br = new BufferedReader(new FileReader(new File(file, id 129 + ".st"))); 130 s.setId(Integer.parseInt(br.readLine()));// Integer.parseInt是将字符串变成int 131 s.setAge(Integer.parseInt(br.readLine())); 132 s.setName(br.readLine()); 133 } catch (NumberFormatException e) { 134 // TODO Auto-generated catch block 135 e.printStackTrace(); 136 } catch (IOException e) { 137 // TODO Auto-generated catch block 138 e.printStackTrace(); 139 } finally { 140 try { 141 if (br != null) { 142 br.close(); 143 } 144 } catch (IOException e) { 145 // TODO Auto-generated catch block 146 e.printStackTrace(); 147 } 148 } 149 return s; 150 } else { 151 // 不存在该学生id 152 return null; 153 } 154 } 155 156 // 添加学生信息操作 157 public boolean add(Student st) { 158 // TODO Auto-generated method stub 159 BufferedWriter bw = null;// 包装一个写入流 160 if (!check(st.getId())) {// 检查要添加的学生id是否已经存在 161 // 该学生不存在则可以被添加 162 File f = new File(file, st.getId() + ".st"); // 在StudentDate文件夹中创建一个学生信息文件,并以学生学号+“.st”命名 163 try { 164 bw = new BufferedWriter(new FileWriter(f)); 165 bw.write(String.valueOf(st.getId())); // 向文件中写入学生的学号 166 bw.newLine(); // 写入一个换行 167 bw.write(String.valueOf(st.getAge())); // 向文件中写入学生的年龄 168 bw.newLine(); 169 bw.write(st.getName()); 170 bw.flush(); // 刷新写入后的文件 171 } catch (IOException e) { 172 // TODO Auto-generated catch block 173 e.printStackTrace(); 174 } finally { // 不论执行try还是catch,都执行finally 175 try { 176 if (bw != null) { 177 bw.close(); // 关闭流 178 } 179 } catch (IOException e) { 180 // TODO Auto-generated catch block 181 e.printStackTrace(); 182 } 183 } 184 return true; 185 } else { 186 // 存在该学生id不能创建 187 return false; 188 } 189 } 190 191 //停止操作 192 public void exit() { 193 // TODO Auto-generated method stub 194 System.exit(0); 195 } 196 197 }