Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据结构多对多(3路)关系_C#_Data Structures - Fatal编程技术网

C# 数据结构多对多(3路)关系

C# 数据结构多对多(3路)关系,c#,data-structures,C#,Data Structures,我被这个C#的小项目困住了,但基本上我的问题是: 我正在尝试为考试统计创建一个数据结构。。。 因此: 一个学生可以有许多科目 一门学科可以有很多学生 复杂的部分是,一个科目可以有多次考试(重考),因此一个学生在一个科目上会有很多成绩。。。 我有点不知道如何将其正常化。有人能建议吗?这是我的第一个解决方案: class StudentRec { string name; string candidate_number; string student_id; List

我被这个C#的小项目困住了,但基本上我的问题是: 我正在尝试为考试统计创建一个数据结构。。。 因此: 一个学生可以有许多科目 一门学科可以有很多学生 复杂的部分是,一个科目可以有多次考试(重考),因此一个学生在一个科目上会有很多成绩。。。 我有点不知道如何将其正常化。有人能建议吗?这是我的第一个解决方案:

class StudentRec
{
    string name;
    string candidate_number;
    string student_id;
    List<Subject> modules;
}

class Subject_Record
{
    string subject_code;
    Exam_Record first_attempt;
    Exam_Record second_attempt;
    Exam_Record third_attempt;

}

class Exam_Record
{
   string year;
   int mark;
   char grade;
}
class StudentRec
{
字符串名;
字符串候选_编号;
字符串学生id;
列出模块;
}
班级科目记录
{
字符串主语代码;
第一次考试记录;
考试记录第二次尝试;
考试记录第三次尝试;
}
课堂考试记录
{
弦年;
整数标记;
煤焦品位;
}
然而,如果我这样做的话,每个学生都会有一个相同科目的不同实例

  • 学生
    • 姓名等
  • 主题
    • 代码等
  • 入学/学生科目(多对多)
    • 学生参考资料
    • 主题参考
    • 入学日期等
  • 考试(一对多报名)
    • 入学参考
    • 考试日期
    • 分数/等级
因此,学生注册一个科目->注册。然后,对于一次报名,你可以有很多次考试,每次考试一次来处理重考。

类似于

  • 学生
    • 姓名等
  • 主题
    • 代码等
  • 入学/学生科目(多对多)
    • 学生参考资料
    • 主题参考
    • 入学日期等
  • 考试(一对多报名)
    • 入学参考
    • 考试日期
    • 分数/等级

因此,学生注册一个科目->注册。然后,对于一次报名,你可以有很多次考试,每次考试一次来处理重考。

基于Mike Q的答案

class Student
{
    string name;
    string candidate_number;
    string student_id;

    // One to many
    List<Enrollment> modules;
}

class Enrollment
{
    Subject subject;

    // One to many
    List<Exam> exams;
}

class Subject
{
    string subject_code;
}

class Exam
{
    int attempt;
    string year;
    int mark;
    char grade;
}
班级学生
{
字符串名;
字符串候选_编号;
字符串学生id;
//一对多
列出模块;
}
班级注册
{
学科;
//一对多
列出考试;
}
班级科目
{
字符串主语代码;
}
课堂考试
{
智力测验;
弦年;
整数标记;
煤焦品位;
}

基于Mike Q的回答

class Student
{
    string name;
    string candidate_number;
    string student_id;

    // One to many
    List<Enrollment> modules;
}

class Enrollment
{
    Subject subject;

    // One to many
    List<Exam> exams;
}

class Subject
{
    string subject_code;
}

class Exam
{
    int attempt;
    string year;
    int mark;
    char grade;
}
班级学生
{
字符串名;
字符串候选_编号;
字符串学生id;
//一对多
列出模块;
}
班级注册
{
学科;
//一对多
列出考试;
}
班级科目
{
字符串主语代码;
}
课堂考试
{
智力测验;
弦年;
整数标记;
煤焦品位;
}

您可以将科目记录添加到学生中,这样学生就有了他正在学习的科目列表,以及他当前和过去所学习科目的结果列表。因此,代码变成:

  class StudentRec
  {
    string name;
    string candidate_number;
    string student_id;
    List<Subject> modules;
    List<Subject_Record> subject_results;
 }

 class Subject_Record
 {
    string subject_code;
    Exam_Record first_attempt;
    Exam_Record second_attempt;
    Exam_Record third_attempt;   
 }

 class Exam_Record
 {
   string year;
   int mark;
   char grade;
 }
class StudentRec
{
字符串名;
字符串候选_编号;
字符串学生id;
列出模块;
列出受试者的研究结果;
}
班级科目记录
{
字符串主语代码;
第一次考试记录;
考试记录第二次尝试;
考试记录第三次尝试;
}
课堂考试记录
{
弦年;
整数标记;
煤焦品位;
}

如果您想从科目记录和考试记录链接回学生,您可以将学生id添加到这些记录中。

您可以将科目记录添加到学生,这样学生就有了他正在学习的科目列表,他也有了他当前和过去所学科目的结果列表。因此,代码变成:

  class StudentRec
  {
    string name;
    string candidate_number;
    string student_id;
    List<Subject> modules;
    List<Subject_Record> subject_results;
 }

 class Subject_Record
 {
    string subject_code;
    Exam_Record first_attempt;
    Exam_Record second_attempt;
    Exam_Record third_attempt;   
 }

 class Exam_Record
 {
   string year;
   int mark;
   char grade;
 }
class StudentRec
{
字符串名;
字符串候选_编号;
字符串学生id;
列出模块;
列出受试者的研究结果;
}
班级科目记录
{
字符串主语代码;
第一次考试记录;
考试记录第二次尝试;
考试记录第三次尝试;
}
课堂考试记录
{
弦年;
整数标记;
煤焦品位;
}
如果您想从科目记录和考试记录链接回学生,您可以将学生id添加到这些记录中