package studentsystem
import std.convert.*
/**
* 成绩 类
*
* 仅保存学生学号(studentId)与课程 ID(courseId)两个"外键式"标识字段,
* 以及成绩数值(value),体现模块间低耦合的设计思想。
*/
public class Score <: ToString {
/**
* 主构造函数
*
* @param studentId 学生学号
* @param courseId 课程 ID
* @param value 成绩(0 ~ 100)
*/
public Score(
private let studentId: UInt32,
private let courseId: UInt32,
private var value: Float32
) {}
// 成员属性 propStudentId(只读)
prop propStudentId: UInt32 {
get() {
studentId
}
}
// 成员属性 propCourseId(只读)
prop propCourseId: UInt32 {
get() {
courseId
}
}
// 成员属性 propValue(可读写)
mut prop propValue: Float32 {
get() {
value
}
set(value) {
this.value = value
}
}
/**
* 输出成绩信息(ToString 接口定义的转换字符串的函数)
*/
public func toString() {
"学号: ${studentId} 课程ID: ${courseId} 成绩: ${value.format(".1")}"
}
/**
* 输出详细成绩信息(含学生姓名和课程名,需传入查找结果)
*
* @param studentName 学生姓名(从 StudentManager 查找得到)
* @param courseName 课程名称(从 CourseManager 查找得到)
*/
func toDetailString(studentName: String, courseName: String)
{
"学号: ${studentId}(${studentName}) 课程: ${courseId}(${courseName}) 成绩: ${value.format(".1")}"
}
}