此功能主要是在eclipse控制台上进行测试和查看,所有我称之为“理论",里面是我按照前几段学习知识点的小总结。简单画了一下大致的功能梳理图
写这个主要目的是巩固以及加深这方面知识的理解,具体代码如下:
package com.myself.studen_manage; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; public class Manage { /* * * 为了方便阅读,全部代码写在一个类中。 * 定义方法都修饰成静态方法,以便main方法方便调用 * 存储的文件为了方法使用,直接放到了项目的根目录下 * 由于技术有限目前只能通过覆盖文件的方式进行数据的增删改 * student类中有四个属性分别为 学生id,学生姓名,学生年龄,学生居住地 */ public static void main(String[] args) throws IOException, InterruptedException { //获取接盘录入 Scanner sc = new Scanner(System.in); //判断集合是否为空 boolean flag = isNull(); //模拟软件的功能 while(true){ System.out.println("--------欢迎来到学生管理系统--------"); System.out.println("1 添加学生信息"); System.out.println("2 修改学生信息"); System.out.println("3 删除学生信息 "); System.out.println("4 查看学生信息 "); System.out.println("5 退出系统"); // String id = sc.next(); switch(id){ case "1": //添加学生信息 addStudent(); break; case "2": //修改学生信息 updateStudent(); break; case "3": //删除学生信息 deleteStudent(); break; case "4": if(flag){ System.out.println("里面空空如也,请添加数据"); break; } System.out.println("请选择你想查询的内容:"); System.out.println("1 查询个人信息"); System.out.println("2 查询全体学生信息"); int num = sc.nextInt(); String name = null; switch(num){ case 1: System.out.println("请输入你想查询的学生姓名:"); name = sc.next(); case 2: //查找学生信息 findStudent(name); break; default: System.out.println("输入无效"); } break; default: System.out.println("请输入正确序号!"); } //获取当前线程(main)并休眠1秒 Thread.currentThread().sleep(1000); } } //查看学生信息 private static void findStudent(String name) throws IOException { ArrayList<Student> list = readDate(); if(name!=null){ for (int i = 0; i < list.size(); i++) { Student s = list.get(i); if(s.getSname().equals(name)){ System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"居住地"); System.out.println(s.getSid()+"\t"+s.getSname()+"\t" +s.getAge()+"\t"+s.getAddress()); } } return; } System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"居住地"); for (int i = 0; i < list.size(); i++) { Student s = list.get(i); System.out.println(s.getSid()+"\t"+s.getSname()+"\t" +s.getAge()+"\t"+s.getAddress()); } } //删除学生信息 private static void deleteStudent() throws IOException { ArrayList<Student> list = readDate(); if(list==null){ return; } System.out.println("请输入想要删除的学生ID:"); Scanner sc = new Scanner(System.in); String id = sc.nextLine(); for (int i = 0; i < list.size(); i++) { Student s = list.get(i); if(s.getSid().equals(id)){ list.remove(i); writeDate(list); System.out.println("学生信息删除成功"); return; } } System.out.println("没有找此ID"); } //修改学生信息 private static void updateStudent() throws IOException { ArrayList<Student> list = readDate(); if(list==null){ return; } System.out.println("请输入想要修改的学生ID:"); Scanner sc = new Scanner(System.in); String id = sc.nextLine(); for (int i = 0; i < list.size(); i++) { Student s = list.get(i); if(s.getSid().equals(id)){ s = writeStudent(); list.add(s); writeDate(list); System.out.println("学生信息修改成功"); return; } } System.out.println("没有找此ID"); } //添加学生信息 private static void addStudent() throws IOException { Student student = writeStudent(); //创建集合对象 ArrayList<Student> list = readDate(); //将student对象存入到集合中 list.add(student);; writeDate(list); System.out.println("添加学生信息完成"); } //从文件中读取到学生信息 private static ArrayList<Student> readDate() throws IOException{ ArrayList<Student> list = new ArrayList<>(); //创建字符缓冲输入流对象 BufferedReader br = new BufferedReader(new FileReader("student.txt")); String str = null; Student s = new Student(); //获取一行数据 while((str = br.readLine())!=null){ //逻辑判断空字符串 if(str.equals("")){ continue; } //拆分字符串 String[] str1 = str.split(","); s.setSid(str1[0]); s.setSname(str1[1]); s.setAge(Integer.parseInt(str1[2])); s.setAddress(str1[3]); list.add(s); } br.close(); //获取集合长度并判断 if(list.size()==0){ System.out.println("里面空空如也,请添加数据"); return null; } return list; } //将集合中的内容写入到文件中 private static void writeDate(ArrayList<Student> list) throws IOException{ //创建字符缓冲输出流对象 BufferedWriter bw = new BufferedWriter(new FileWriter("student.txt")); //创建字符缓冲流对象 StringBuilder sb = new StringBuilder(); for(int i = 0; i<list.size(); i++){ Student s = list.get(i); //字符串拼接 sb = sb.append(s.getSid()).append(",").append(s.getSname()) .append(",").append(s.getAge()).append(",").append(s.getAddress()); //将数据写入 bw.write(sb.toString()); //换行 bw.newLine(); //刷新资源 bw.flush(); } bw.close(); } //便于浏览写学生信息专门放到一个方法里 private static Student writeStudent(){ Scanner sc = new Scanner(System.in); System.out.println("请输入学生学号:"); String sid = sc.nextLine(); System.out.println("请输入学生姓名:"); String sname = sc.nextLine(); System.out.println("请输入学生年龄:"); int age = sc.nextInt(); System.out.println("请输入学生居住地:"); String address = sc.nextLine(); Student student = new Student(sid,sname,age,address); return student; } //判断是否为空 private static boolean isNull() throws IOException{ ArrayList<Student> list = readDate(); if(list==null){ return true; } return false; } }