使用简单的方式,实现控制台输出学生管理系统的增删改查,其中使用到了简单的IO流知识.
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; /* * /* * 这是我的学生管理系统的主类 * * 步骤如下: * A:定义学生类 * B:学生管理系统的主界面的代码编写 * C:学生管理系统的查看所有学生的代码编写 * D:学生管理系统的添加学生的代码编写 * E:学生管理系统的删除学生的代码编写 * F:学生管理系统的修改学生的代码编写 */public class StudentManager { public static void main(String[] args) throws IOException { String fileName="student.txt"; 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 退出"); System.out.println("请输入你的选择:"); //创建键盘录入对象 Scanner sc = new Scanner(System.in); String choiceString = sc.nextLine(); //用switch语句实现选择 switch(choiceString) { case "1": //查看所有学生 findAllStudent(fileName); break; case "2": //添加学生 addStudent(fileName); break; case "3": //删除学生 deleteStudent(fileName); break; case "4": //修改学生 updateStudent(fileName); break; case "5": default: System.out.println("谢谢你的使用"); System.exit(0); //JVM退出 break; } } } //从文件读取数据到存储到集合 public static void readData(String fileName, ArrayList<Student> array) throws IOException{ //创建输入缓冲流对象 BufferedReader br=new BufferedReader(new FileReader(fileName)); String line; //获得每一行的字符串,赋值给line while((line=br.readLine())!=null){ //截取字符数组 String [] str=line.split(","); //创建学生对象接收数据 Student s=new Student(); s.setId(str[0]); s.setName(str[1]); s.setAge(str[2]); s.setAdress(str[3]); //将获取到的数据存储到集合中 array.add(s); } br.close(); } //把集合中的数据存储到文件中 public static void writeData(String fileName, ArrayList<Student> array) throws IOException{ //创建输出缓冲流对象 BufferedWriter bw=new BufferedWriter(new FileWriter(fileName)); //遍历集合,获取到数据 for(int x=0;x<array.size();x++){ //将集合中的每一行数据赋值给学生对象 Student s=array.get(x); //创建StringBuilder对象用来拼接字符串 StringBuilder sb= new StringBuilder(); sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAdress()); //写入文件中 bw.write(sb.toString()); bw.newLine(); bw.flush(); } bw.close(); } //查看所有学生的代码编写 public static void findAllStudent(String fileName) throws IOException{ //首先创建集合对象 ArrayList<Student> array=new ArrayList<>(); //获取到学生信息 readData(fileName,array); //判断是否有数据 if(array.size()==0){ System.out.println("当前没有学生信息,请重新您的选择"); return; } System.out.println("学号\t\t姓名\t年龄\t地址"); //遍历集合获取数据 for(int x=0;x<array.size();x++){ //定义学生对象,用来存储学生信息 Student s=array.get(x); System.out.println(s.getId()+"\t\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAdress()); } } //添加学生代码编码 public static void addStudent(String fileName) throws IOException{ //创建集合对象 ArrayList<Student> array=new ArrayList<>(); //从文件中读取数据 readData(fileName, array); //创建键盘录入对象 Scanner sc= new Scanner(System.in); //定义字符串类型的id,后面也需要使用,所以定义到循环外面 String id; while(true){ System.out.println("请输入新的学生学号:"); id=sc.nextLine(); //定义布尔那类型的变量,用来判断 boolean flag=false; //判断学号是否存在 //遍历集合获取元素 for(int x=0;x<array.size();x++){ //定义学生对象,获取到每一个学生 Student s=array.get(x); //判断这个输入的id在学生对象中是否存在 if(s.getId().equals(id)){ flag=true; break;//跳出for循环 } } if(flag){ System.out.println("学号已存在,请重新您的选择:"); }else{ break; } } System.out.println("请输入新的姓名:"); String name=sc.nextLine(); System.out.println("请输入新的年龄:"); String age=sc.nextLine(); System.out.println("请输入新的地址:"); String address=sc.nextLine(); //创建学生对象存储输入的信息 Student s=new Student(); s.setId(id); s.setName(name); s.setAge(age); s.setAdress(address); //将学生对象存储到集合 array.add(s); //将集合中的重新存储到文件中 writeData(fileName, array); System.out.println("添加成功!"); } //删除学生代码的编写 public static void deleteStudent(String fileName) throws IOException{ //首先定义一个集合 ArrayList<Student> array=new ArrayList<>(); //读取出学生信息 readData(fileName, array); while(true){ //创建键盘录入对象 Scanner sc=new Scanner(System.in); System.out.println("请输入您要删除的学号:"); String id=sc.nextLine(); //定义一个索引 int index=-1; //遍历集合获取到元素 for(int x=0;x<array.size();x++){ Student s=array.get(x); if(s.getId().equals(id)){ index=x; break; } } if(index==-1){ System.out.println("您所需要删除的学员信息不存在,请重新您的选择!"); }else{ array.remove(index); //把集合中的文件重新写回到文件 writeData(fileName, array); System.out.println("删除学生成功!"); break; } } } //修改学生代码的编写 public static void updateStudent(String fileName) throws IOException{ //创建集合对象 ArrayList<Student> array=new ArrayList<>(); //读取文件 readData(fileName, array); //定义索引 int index=-1; //创建键盘输入对象 Scanner sc=new Scanner(System.in); String id; while(true){ System.out.println("请输入您要修改的学生ID:"); id=sc.nextLine(); //遍历集合获取元素 for(int x=0;x<array.size();x++){ Student s=array.get(x); if(s.getId().equals(id)){ index=x; break; } } if(index==-1){ System.out.println("您输入的不存在,请重新您的选择!"); }else{ System.out.println("请输入新的姓名:"); String name=sc.nextLine(); System.out.println("请输入新的年龄:"); String age=sc.nextLine(); System.out.println("请输入新的地址:"); String address=sc.nextLine(); //创建学生对象 Student s=new Student(); s.setId(id); s.setName(name); s.setAge(age); s.setAdress(address); //修改集合中的学生对象 array.set(index, s); //将集合写入到文件中 writeData(fileName, array); //给出提示 System.out.println("修改成功!"); break; } }} }