对于上次学生成绩管理系统IO流的改进

2021/6/10 10:52:16

本文主要是介绍对于上次学生成绩管理系统IO流的改进,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

上篇文章:<Java>实现学生信息管理系统,涉及简单IO流
本次我会对上篇文章的一些代码做出改进。
先看改进后的存储代码

package saveInformation;
/*汤*/
import java.io.*;
import java.util.Arrays;

import Student.Student;

//保存信息
public class saveTools{
	private static File file=new File("D://stu.txt");

      public static boolean saveInformation(Student[] stu) throws Exception {

		  BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
			for(int i=0;i<stu.length;i++){
				bufferedWriter.write(stu[i].getName()+"/"+stu[i].getNumber()+"/"+stu[i].getAge()+"/"+stu[i].getSex()+"/"+stu[i].getMath()+"/"+stu[i].getEnglish()+"/"+stu[i].getJava()+"\n");
			}
		  bufferedWriter.flush();
		  bufferedWriter.close();
		  System.out.println("文件写入成功!");

		  return true;
	}
      public static Student[] readInformation() throws Exception{
		  Student[] stu = new Student[40];
		  BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
		  String temp = "";
		  int i=0;
		  while((temp = bufferedReader.readLine()) != null){
		  	String[] str = temp.trim().split("/");//trim()去掉首位空格,split()分割String字符串
		  	String name = str[0];
			  String number = str[1];
			  String age = str[2];
			  String sex = str[3];
			  String math = str[4];
			  String english = str[5];
			  String java = str[6];
			  stu[i] = new Student(number,name,sex,Integer.valueOf(age),Integer.valueOf(math),Integer.valueOf(english),Integer.valueOf(java));
			i++;
		  }
		  return stu;
  	}
}

我将上次使用的FileReader/Writer换成了BufferedReader/Writer缓冲流,并且改进加入断点(存入时对每个信息后加上’\'分隔信息,读取时检测断点,每一个信息分成不同的字符串取出),最后通过转换valueOf转换类型再返回整个数组,大功告成!。
这里要说一个注意点:在使用缓冲流时务必加上flush(),否则会出现信息缺失的bug。
其次,为了让项目每次使用都能读入文件内容,并且和新录入的信息一起进行‘增删改查’:
①我在Controller中加入方法

public boolean addStudentAll(Student[] student) {
		if (total < 0 || total > stu.length) {
			return false;
		} else {
			for (Student student1 : student) {
				if (student1 != null) {
					stu[total++] = student1;
				}
			}
			return true;
		}
	}

②将下面代码放到View类的Menu()方法中,这样每次进入界面都会读取数组了

student.addStudentAll(saveTools.readInformation());

结果
在这里插入图片描述

进入直接读取
改进
下次会尝试用集合去改进代码,因为数组的存储空间是有限的。



这篇关于对于上次学生成绩管理系统IO流的改进的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程