从键盘中输入姓名,语文、英语、数学、历史的成绩然后填充至Student型对象中,单科分数如果未输入以0分计算,姓名未输入提示重新输入姓名,将所输入的信息存入到文件。
文件名称:students.dat
使用的流:ObjectOutputStreamclass Student{
String name;
int[] record=new int[4];
int tatal;
foalt avg;
String grade;
//定义构造函数
//get()、set()方法定义
//定义返回总分,平均分。学分的方法
}90-100 学分:A
80-89 B
70-79 C
60-69 D
0-59 E运行结果提示:
请顺序输入姓名、语文、英语、数学、历史的成绩(end输入完毕)
比如:刘备 100 90 90 89
关羽 90 100 80 90
张飞 90 90 80 98
曹操 80 98 78 90
end文件的内容
Student型对象1(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象2(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象3(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象4(名字,语文,英语,数学,历史,总分,平均分,学分).....
文件名称:students.dat
使用的流:ObjectOutputStreamclass Student{
String name;
int[] record=new int[4];
int tatal;
foalt avg;
String grade;
//定义构造函数
//get()、set()方法定义
//定义返回总分,平均分。学分的方法
}90-100 学分:A
80-89 B
70-79 C
60-69 D
0-59 E运行结果提示:
请顺序输入姓名、语文、英语、数学、历史的成绩(end输入完毕)
比如:刘备 100 90 90 89
关羽 90 100 80 90
张飞 90 90 80 98
曹操 80 98 78 90
end文件的内容
Student型对象1(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象2(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象3(名字,语文,英语,数学,历史,总分,平均分,学分)
Student型对象4(名字,语文,英语,数学,历史,总分,平均分,学分).....
Student[] students = new Student[4];
students[0] = new Student("刘备", new int[] {100, 90, 90, 89});
students[1] = new Student("关羽", new int[] {90, 100, 80, 90});
students[2] = new Student("张飞", new int[] {90, 90, 80, 98});
//另一种方式初始化
students[3] = new Student("曹操");
students[3].setScores(new int[] {80, 98, 78, 90});
//写入文件
ObjectOutputStream data = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("D:/students.dat")));
for (int i = 0; i < students.length; i++)
data.writeObject(students[i]);
data.close();
//读取数据
ObjectInputStream out = new ObjectInputStream(new BufferedInputStream(new FileInputStream("D:/students.dat")));
try {
while(true)
System.out.println((Student)out.readObject());
} catch (EOFException e) {
return;
} catch (Exception e) {
System.out.println("Error occured when reading data.");
} finally {
out.close();
}
}
}class Student implements Serializable { public static final int SUBJECT_COUNT = 4; private String name;
private int[] record = new int[SUBJECT_COUNT]; public Student(String n) {
name = n;
}
public Student(String n, int[] scores) {
this(n);
setScores(scores);
} public void setScores(int[] scores) {
System.arraycopy(scores, 0, record, 0, SUBJECT_COUNT);
} public String getName() {
return name;
} public int[] getScores() {
return record;
} public int getTotal() {
int sum = 0;
for (int i = 0; i < record.length; i++)
sum += record[i];
return sum;
} public int getAverage() {
return getTotal() / SUBJECT_COUNT;
} public char getGrade() {
int avg = getAverage();
if (avg <= 100 && avg >= 90)
return 'A';
else if (avg < 90 && avg >= 80)
return 'B';
else if (avg < 80 && avg >= 70)
return 'C';
else if (avg < 70 && avg >= 60)
return 'D';
else
return 'E';
}
public String toString() {
StringBuffer result = new StringBuffer(getName() + ": ");
for (int i = 0; i < SUBJECT_COUNT; i++) {
if(i > 0) result.append(", ");
result.append(record[i]);
}
result.append(" total: " + getTotal() + " avg: " + getAverage() + " grade: " + getGrade());
return result.toString();
}
}