Project Structure¶
System Blueprint
A layered view of entities, utilities, data management, and application flow.
This page provides a high‑level overview of the architecture of the School Enrollment System.
It summarizes the major components, their responsibilities, and how they interact within the application.
Overall Project Structure¶
The system is organized into four main layers:
- Core Entity Classes
- Utility Classes
- Data Management
- Main Application Flow
Each layer contributes to a modular, maintainable, and object‑oriented design.
1. Core Entity Classes¶
These classes represent the main actors and data structures in the system.
User (Abstract Base Class)¶
Defines shared attributes and behaviors for all user types.
Common fields include:
- name
- ID
- password
- phoneNumber
- role
- address
Subclasses:
- Student
- Instructor
- Administrator
Abstract methods:
login()logout()
Student¶
Represents a student in the system.
Responsibilities:
- Enroll in courses
- Drop courses
- View grades
- Track credit limits
- Update personal information
Instructor¶
Represents an instructor in the system.
Responsibilities:
- View enrolled students
- Grade assessments
- Update course information
- Update personal profile
Administrator¶
Represents a system administrator.
Responsibilities:
- Add, remove, and update students and instructors
- Add and manage courses
- Assign instructors to courses
- Close courses
- View system statistics
Course¶
Represents a university course.
Key attributes:
- courseName
- courseCode
- schedule
- description
- creditHours
- capacity
- enrollmentStatus
- instructor
- enrolledStudents
- assessments
Includes validation logic and helper methods such as isFull().
Assessment¶
Represents a single evaluation event (quiz, midterm, final, project).
Attributes:
- studentId
- courseCode
- examType
- score
- assessmentName
Supports grade assignment, grade viewing, and average calculation.
2. Utility Classes¶
Helpers¶
Provides reusable logic used across the entire system.
Includes:
- Input validation
- Safe integer input
- Login workflows
- Role selection
- Profile updating
- Course enrollment and dropping
- Instructor and admin operations
- Statistics and reporting
- Menu display functions
This class centralizes repeated logic and improves maintainability.
3. Data Management Class¶
dataManager¶
Handles all file‑based persistence for the system.
Responsibilities:
- Load and save data for:
- Students
- Instructors
- Administrators
- Courses
-
Assessments
-
CRUD operations for all entities
- Assigning instructors to courses
- Enrolling and dropping students
- Generating reports and statistics
This class ensures that all system data persists across program sessions.
4. Main Application Class¶
SchoolCourseEnrolmentSystem¶
The entry point of the application.
Responsibilities:
- Initialize the data manager
- Load all saved data
- Create a default administrator
- Provide the main role selection loop
- Direct users to:
- Student workflow
- Instructor workflow
- Administrator workflow
- Save all data before exiting
This class coordinates the entire system and manages user interaction.
Summary¶
The project is structured to separate concerns clearly:
- Entity classes model the system’s data
- Helpers provide reusable logic
- dataManager handles persistence
- The main class manages application flow
This modular design supports readability, maintainability, and scalability.