📄 student.java
字号:
package GradeManagement.model;
import java.lang.Comparable;
import java.io.RandomAccessFile;
import java.io.IOException;
import GradeManagement.ComputeGrade;
import GradeManagement.Persistent;
// 学生抽象类
public abstract class Student implements Comparable,ComputeGrade,Persistent {
public static int ROLLSTUDENTNUMBER = 0;// 已注册学生数
protected static int MAX_STRING_SIZE = 20;
private String id; // 学号
private String name; // 姓名
CourseGrade [] grades; // 课程成绩
public static RandomAccessFile file;
// 构造方法
public Student(){}
public Student(String id, String name, CourseGrade[] grades) {
setId(id);
setName(name);
setGrades(grades);
}
public Student(Student s) {
setId(s.id);
setName(s.name);
setGrades(s.grades);
}
/*********属性相应的set/get方法*************/
public String getId() {
return id;
}
public String getName() {
return name;
}
public CourseGrade [] getCourseGrade() {
return grades;
}
public void setGrades(CourseGrade [] grades) {
this.grades = null;
this.grades = new CourseGrade[grades.length];
for( int i =0; i<grades.length;i++) {
this.grades[i] = new CourseGrade(grades[i].getId(), grades[i].getGrade());
}
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
// 对象相等比较
public boolean equals(Object x) {
if (this.getClass() != x.getClass()) return false;
Student b = (Student) x;
return (this.getId().trim().equalsIgnoreCase(b.getId().trim()));
}
public String toString() {
String gradestring = "";
for(int i=0; i< grades.length; i++){
gradestring += grades[i] + "\t";
}
return getId() + "\t" + getName() + "\t" + gradestring;
}
// 计算总成绩
public float sum() {
float sum = 0;
for(int i = 0; i < grades.length; i++) {
sum += grades[i].getGrade();
}
return sum ;
}
//第六章新增代码
public boolean readRecord() {
boolean readSucess = true; // 读入成功标志
try {
byte idByte[] = new byte [MAX_STRING_SIZE];
file.readFully(idByte); // 读入学号
id = new String(idByte).trim();
byte nameByte[] = new byte [MAX_STRING_SIZE];
file.readFully(nameByte); // 读入姓名
name = new String(nameByte).trim();
grades = new CourseGrade[getCourseNumbers()];
int courseNumbers = getCourseNumbers();
for( int i=0; i < courseNumbers; i++) { //读入多门课的成绩
grades[i] = new CourseGrade();
grades[i].setId(file.readInt());
grades[i].setGrade(file.readFloat());
}
} catch(IOException e) {
readSucess = false;
}; // 块try/catch结束
return readSucess;
} // 方法readRecord()结束
// 第六章新增代码
public boolean writeRecord() {
boolean writeSucess = true; // 写入成功标志
try{
byte b1[] = process(id);
file.write(b1); // 写入学号
b1 = process(name);
file.write(b1); // 写入姓名
int courseNumbers = getCourseNumbers(); // 取得科目数
for( int i=0; i < courseNumbers; i++) {
file.writeInt(grades[i].getId()); // 写入课程ID
file.writeFloat(grades[i].getGrade()); // 写入课程分数成绩
}
}catch(IOException e){
writeSucess = false;
};
return writeSucess;
} // 方法writeRecord结束
public abstract int getCourseNumbers();
protected byte[] process(String str) {
if(str==null) str=" ";
int i;
byte res[] = new byte[MAX_STRING_SIZE];
byte temp[] = str.getBytes();
for (i = 0; i < str.length();i++)
res[i] = temp[i];
for (i = str.length(); i < MAX_STRING_SIZE; i++)
res[i] = '\0';
return res;
} // 方法process结束
} // 类Student结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -