A console-based Examination Management System built in C# demonstrating core OOP concepts, generics, events & delegates, and file I/O.
This project simulates a real-world examination platform with multiple question types, automatic grading, and student notifications.
-
Supports multiple question types:
- True/False
- Choose One
- Choose All
-
Handles Practice Exams and Final Exams
-
Automatic Exam Correction
-
File Logging: Questions and exam results are saved to files
-
Student Notification System: Implemented using events & delegates
-
Designed using OOP principles:
- Inheritance
- Polymorphism
- Interfaces (
ICloneable,IComparable) - Abstract classes & virtual methods
-
Generics: Used for repository management
-
Fully extensible: Easily add new question types or exam behaviors
- C# (.NET 7)
- Console Application
- File I/O (
StreamWriter) - Arrays & Generics
- Delegates & Events
- .NET SDK (6.0 / 7.0) installed
- IDE: Visual Studio or VS Code
- Clone the repository:
git clone https://github.com//ExaminationSystem.git
Follow these steps to run and interact with the Examination Management System:
-
Create a Subject
-
Create Students and enroll them in the subject
-
Create Exams:
- One Practice Exam
- One Final Exam
-
Add Questions to exams
-
Select Exam Type:
1– Practice2– Final
-
Start Exam – triggers notifications automatically
-
Answer Questions
-
Finish Exam – results are automatically persisted to a file: _Results.txt
- Abstract Base Classes (Question, Exam) provide extensibility
- Events & Delegates notify students automatically when exams start
- AnswerList uses arrays internally to follow project requirements
- Cloneable implemented for Question and Exam to allow deep copying
- File Logging ensures a permanent record of questions and exam results
--- Practice Exam: Programming 101 ---
Q1: C# is a statically typed language? (Marks: 5)
Student Answer: True
Correct Answer: True
Marks Earned: 5
Q1: Which Language developed By Microsoft? (Marks: 5)
Student Answer: C#
Correct Answer: C#
Marks Earned: 5
Final Grade: 10 / 10
Results saved to Programming101_Results.txt
--- Practice Exam: Programming 101 ---
Q1: C# is a statically typed language? (Marks: 5)
- True
- False Enter Answer Id: 1
Q2: Which language is primarily used for Android development? (Marks: 5)
- C#
- Java
- Python Enter Answer Id: 2
Q3: Which are programming languages? (Marks: 5)
- Python
- HTML
- Java
- CSS Enter Answer Ids separated by comma: 1,3