上一次使用的集合只能对学生信息进行临时存储,关闭程序时数据就会消失,这次新增了文件存储,达到对学生信息的永久记录,首先在上次代码的基础上,增加了两个方法,一个是从学生文件读取信息到集合中的方法,另一个是从集合中把学生信息写到文件中,再将增删改查方法中形参换成文件路径名的变量
package StudentManager_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;
/*
* 学生管理系统的测试类
*
* 步骤:
* 1.定义学生类
* 2.学生管理系统的主界面
* 3.学生管理系统的查看学生信息方法
* 4.学生管理系统的添加学生信息方法
* 5.学生管理系统的删除学生信息方法
* 6.学生管理系统的修改学生信息方法
*/
public class StudentManagerTest {
public static void main(String[] args) throws IOException {
//创建集合对象
ArrayList array = new ArrayList();
//定义文件路径
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.退出");
//从键盘输入学生信息
Scanner sc = new Scanner(System.in);
//选择操作
System.out.println("请输入您的选择:");
int choice = sc.nextInt();
switch(choice){
case 1:
//查看所有学生信息
findAllStudent(fileName);
break;
case 2:
//添加学生信息
addStudent(fileName);
break;
case 3:
//删除学生信息
removeStudent(fileName);
break;
case 4:
//修改学生信息
updateStudent(fileName);
break;
case 5:
//退出
System.out.println("谢谢使用");
System.exit(0);//系统退出
default:
System.out.println("您输入的操作有误,请重新输入!");
break;
}
}
}
//查看学生信息的方法
public static void findAllStudent(String fileName) throws IOException{
//创建学生类对象
Student student = new Student();
//创建集合对象
ArrayList array = new ArrayList();
//从文件中读取学生信息到集合中
readFile(fileName,array);
if(array.size()==0){
System.out.println("非常抱歉,当前没有学生信息可供查看!");
}else{
System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"家庭住址");
for(int i=0;iget(i);
System.out.println(student.getId()+"\t"+student.getName()+"\t"+student.getAge()+"\t"+student.getAddress());
}
}
}
//添加学生信息的方法
public static void addStudent(String fileName) throws IOException{
//创建键盘输入对象
Scanner sc = new Scanner(System.in);
//创建集合对象
ArrayList array = new ArrayList();
//从文件中读取学生信息到集合中
readFile(fileName,array);
String id;
while(true){
System.out.println("请输入学生学号:");
id = sc.nextLine();
//判断学号是否重复
boolean flag = false;
for(int i=0;iget(i);
if(student.getId().equals(id)){
flag = true;
break;
//System.out.println("您输入的学号已存在,请重新输入!");
}
}
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 student = new Student();
student.setId(id);
student.setName(name);
student.setAge(age);
student.setAddress(address);
//添加到集合中
array.add(student);
//把集合中学生信息写到文件中
writeFile(fileName,array);
System.out.println("添加学生成功!");
}
//删除学生信息方法
public static void removeStudent(String fileName) throws IOException{
//创建键盘输入对象
Scanner sc = new Scanner(System.in);
//创建集合对象
ArrayList array = new ArrayList();
//从文件中读取学生信息到集合中
readFile(fileName,array);
System.out.println("请输入要删除的学生学号:");
String id = sc.nextLine();
int index = -1;
for(int i=0;iget(i);
if(student.getId().equals(id)){
index = i;
break;
}
}
if(index==-1){
System.out.println("非常抱歉,您要删除的学生不存在,请重新输入!");
}else{
array.remove(index);
//把集合中的学生信息写到文件中
writeFile(fileName,array);
System.out.println("删除学生成功!");
}
}
//修改学生信息方法
public static void updateStudent(String fileName) throws IOException{
//创建键盘输入对象
Scanner sc = new Scanner(System.in);
//创建集合对象
ArrayList array = new ArrayList();
//从文件中读取学生信息到集合中
readFile(fileName,array);
System.out.println("请输入需要修改学生的学号:");
String id = sc.nextLine();
int index = -1;
for(int i=0;iget(i);
if(student.getId().equals(id)){
index = i;
break;
}
}
if(index==-1){
System.out.println("非常抱歉,您要修改的学生信息不存在,请重新输入!");
}else{
//创建学生类对象
Student student = new Student();
System.out.println("请输入新的学生姓名:");
String name = sc.nextLine();
System.out.println("请输入新的学生年龄:");
String age = sc.nextLine();
System.out.println("请输入新的学生家庭住址:");
String address = sc.nextLine();
student.setId(id);
student.setName(name);
student.setAge(age);
student.setAddress(address);
//修改后的学生信息添加到集合中
array.set(index,student);
//把集合中的学生信息写到文件中
writeFile(fileName,array);
System.out.println("恭喜修改成功!");
}
}
//从文件读取数据到集合
public static void readFile(String fileName,ArrayList array) throws IOException{
//创建输入缓冲流对象
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
String line;
while((line=br.readLine()) != null){
String[] datas = line.split(",");
Student student = new Student();
student.setId(datas[0]);
student.setName(datas[1]);
student.setAge(datas[2]);
student.setAddress(datas[3]);
array.add(student);
}
//释放资源
br.close();
}
//把集合中的数据写到文件
public static void writeFile(String fileName,ArrayList array) throws IOException{
//创建输出缓冲流
FileWriter fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
for(int i=0;iget(i);
StringBuilder sb = new StringBuilder();
sb.append(student.getId()).append(",").append(student.getName()).append(",").append(student.getAge()).append(",").append(student.getAddress());
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
}
}
----------
package StudentManager_IO;
/*
* 学生类
*/
public class Student {
//学号
private String id;
//姓名
private String name;
//年龄
private String age;
//家庭住址
private String address;
public Student() {
}
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}