Java-成绩文件处理
设计学生类Student,属性:学号(整型);姓名(字符串),选修课程(名称)及课程成绩(整型)。编写一个控制台程序,能够实现Student信息的保存、读取。具体要求:(1)提供Student信息的保存功能:通过控制台输入若干个学生的学号、姓名以及每个学生所修课程的课程名和成绩,将其信息保存到data.dat中;(2)数据读取显示:能够从data.dat文件中读取学生及其课程成绩并显示于控制台。(要求,学号和课程成绩按照整数形式(而非字符串形式)存储)
设计学生类Student,属性:学号(整型);姓名(字符串),选修课程(名称)及课程成绩(整型)。编写一个控制台程序,能够实现Student信息的保存、读取。具体要求:(1)提供Student信息的保存功能:通过控制台输入若干个学生的学号、姓名以及每个学生所修课程的课程名和成绩,将其信息保存到data.dat中;(2)数据读取显示:能够从data.dat文件中读取学生及其课程成绩并显示于控制台。(要求,学号和课程成绩按照整数形式(而非字符串形式)存储)
/**
* @ author ichihtc
* @ 2022.5.20
* 新建学生列表,将学生放入列表中,将列表写入文件,读取文件中的列表,然后返回列表
*/
import java.io.*;
import java.util.*;
public class ReadObject
{
public static void ReadStudent()
{
ObjectInputStream oi=null;
try
{
oi=new ObjectInputStream(new FileInputStream("d:\\data.dat"));
LinkedList<Student> l=(LinkedList<Student>)oi.readObject();
Iterator<Student> lnum=l.iterator();
Iterator<Student> lname=l.iterator();
Iterator<Student> lmajor=l.iterator();
Iterator<Student> lscore=l.iterator();
while(lnum.hasNext()||lname.hasNext()||lmajor.hasNext()||lscore.hasNext())
{
System.out.println(lnum.next().getNum());
System.out.println(lname.next().getName());
System.out.println(lmajor.next().getMajor());
System.out.println(lscore.next().getScore());
}
}
catch(IOException e)
{
System.out.println("读取学生列表失败");
}
catch (ClassNotFoundException e)
{
System.out.println("读取学生列表对象失败");
}
finally
{
try
{
oi.close();
}
catch(IOException e)
{
System.out.println("输入流关闭失败");
}
}
}
public static void WriteStudent(LinkedList<Student> l)
{
ObjectOutputStream ob=null;
try
{
ob=new ObjectOutputStream(new FileOutputStream("d:\\data.dat"));
ob.writeObject(l);
}
catch(IOException e)
{
System.out.println("写学生列表失败");
}
finally
{
try
{
ob.close();
}
catch(IOException e)
{
System.out.println("关闭流失败");
}
}
}
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
System.out.println("是否继续录入学生的信息");
String s;
LinkedList<Student> l=new LinkedList<Student>();
while((s=scan.next()).equals("yes"))
{
System.out.println("请输入学生学号");
int num=scan.nextInt();
System.out.println("请输入学生姓名");
String name=scan.next();
System.out.println("请输入学生课程");
String course=scan.next();
System.out.println("请输入学生成绩");
int score=scan.nextInt();
l.add(new Student(num,name,course,score));
System.out.println("是否继续录入学生信息");
}
WriteStudent(l);
ReadStudent();
}
}
class Student implements Serializable
{
private int num;
private String name;
private String major;
private int score;
public Student(int num,String name,String major,int score)
{
this.num=num;this.name=name;this.major=major;this.score=score;
}
public int getNum() {
return num;
}
public String getName() {
return name;
}
public String getMajor() {
return major;
}
public int getScore() {
return score;
}
}
//输入
是否继续录入学生的信息
yes
请输入学生学号
001
请输入学生姓名
ichihtc
请输入学生课程
IT
请输入学生成绩
100
是否继续录入学生信息
no
//输出
1
ichihtc
IT
100
修改了部分代码,有错之处希望各位大佬指教