تفاصيل العمل

This project implements an Examination System in C# that supports multiple types of questions and exams. It is designed with an object-oriented approach, incorporating inheritance, interfaces, generics, and event-driven programming.

Features

Question Types:

True/False

Multiple Choice (Single Answer)

Multiple Choice (Multiple Answers)

Question List Management

Inherits from List<Question>

Overrides Add() method to log questions into a file

Answer List and Management

Exam Base Class

Attributes: Exam time, number of questions, answer dictionary, status (Starting, Queued, Finished)

Implements IClonable, IComparable

Overrides ToString(), Equals(), GetHashCode()

Exam Types:

Practice Exam: Displays the correct answers after submission.

Final Exam: Displays only questions and answers.

Subject Association

Event Notification System

When an exam enters Starting mode, all registered students for that subject are notified.

Class Structure

1. Question (Base Class)

Represents a general question structure with:

Header (title of the question)

Body (question text)

Marks (assigned marks)

Answers (linked to AnswerList)

2. Question Subclasses

TrueFalseQuestion

ChooseOneQuestion

ChooseAllQuestion

3. QuestionList<T>

Inherits from List<T>

Overrides Add() to log questions to a file

4. Answer Class

Represents an answer with its correctness status.

5. AnswerList

Stores multiple answers related to a question.

6. Exam (Base Class)

Attributes: Time, Number of Questions, Question-Answer Dictionary

Methods:

ShowExam() (overridden in subclasses)

Implements IClonable, IComparable

Supports ToString(), Equals(), GetHashCode()

7. PracticeExam (Derived from Exam)

Displays correct answers after the test is completed.

Reads questions dynamically from Questions.txt

Logs results to PracticeExam_1.txt

8. FinalExam (Derived from Exam)

Displays only questions and answers.

Logs results to FinalExam_1.txt

9. Subject

Represents the subject an exam is associated with.

10. Student & Notification System

Implements event-driven notifications when an exam starts.

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
تاريخ الإضافة
تاريخ الإنجاز
المهارات