2012-03-24 15 views
0

私はこの小さなプロジェクトをC#でやっていますが、基本的には私の問題はこれです: 私は試験の統計データ構造を作成しようとしています... 多くの科目を持っている と1つの科目は多くの生徒を持つことができます 複雑な部分は、1科目は複数の試験(修得)を持つことができるので、1科目では多くの結果が得られます... Imこの。誰もお勧めできますか?これは私の最初の解決策です:データ構造多対多(3way)関係

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; 
} 

ただし、私がこのようにした場合、各学生は同じ科目の異なるインスタンスを持つことになります。

答えて

2

のような何か

  • 学生
    • 名など
  • 件名
    • コードなど
  • 登録/学生・件名(多対多)
    • 学生参照
    • サブジェクトリファレンス
    • 登録などの日
  • 試験(1対多の登録から)
    • 入学参照
    • 受験の日
    • マーク/グレード

したがって、学生は科目 - >入学に登録します。その後、入学のために、あなたは多くの試験を受験することができます。

+0

ああ、歓声...悪いことをやってみる – Magikarp

1

マイク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; 
} 
0

あなたは、学生に対象レコードを追加することができます。だから、コードは次のようになります。

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; 
} 

あなたが戻って学生にSubject_recordとExam_Recordからリンクしたい場合、あなたはそれらのレコードに学生証を追加することができます。