School Management System

Software Architecture
Feature Mapping to Software Components
Feature Category | Functionality & Integration Notes |
---|---|
Admissions & Assessments | – Application intake with scheduling module – Assessment fee management and refund workflows |
Student Lifecycle Management | – Auto student file creation from applications – Withdrawal & re-registration logic with persistent student IDs |
Fees & Finance | – Deposits, tuition (stage/grade), transport fees – Installment plans with up to 4 payments – Discount rules engine for staff/siblings – Fee receipt & refund transactions – Account statement views (Father/Student) |
Reporting System | – Crystal Reports for document printing (Arabic & English) – Excel export support – MIS dashboards & Ministry compliance reports |
Document Generation | – Notices, certificates, and receipts in pre-printed formats |
Search & Inquiry | – Advanced search filters across modules – Web-based inquiry portal for parents |
Cashier Management | – Real-time cashier dashboard – Unified fee collection interface |
Tuition Configuration | – Define tuition per stage or grade – Link tuition setup to discount and installment logic |
Suggested Architecture Design
Frontend: Angular
- Modular structure (student, finance, reports, etc.)
- Role-based UI views (admin, cashier, parent)
- Forms with validations for scheduling, fee entry
- Data tables with filters, export options
- Multi-language support (Arabic/English)
Backend: ASP.NET Core
- RESTful APIs with Entity Framework
- Authentication: ASP.NET Identity + JWT
- Business logic layers for finance, admissions, reports
- Integration with Crystal Reports runtime
- SQL Server: Relational DB with stored procedures for complex report logic
Reporting: Crystal Report
- Export formats: PDF, Excel
- Bilingual layouts for Arabic/English
- Preprinted layout compatibility for receipt printing
Bonus Highlights
- Re-registration Mechanism: Smart check to retain student ID and historical data
- Discount Engine: Apply based on dynamic rule conditions (e.g. sibling count, staff affiliation)
- Ministry Reports: Predefined template outputs for regulatory compliance
- Parent Portal: Web login for statement inquiries, notifications, and documents
Database Architecture
Admission and application Management
CREATE TABLE Applications (
ApplicationID INT PRIMARY KEY IDENTITY,
FirstName NVARCHAR(100),
LastName NVARCHAR(100),
Gender CHAR(1),
DOB DATE,
StageAppliedFor NVARCHAR(50),
AssessmentDate DATE,
Status NVARCHAR(50), -- e.g., 'Pending', 'Approved', 'Rejected'
ApplicationDate DATETIME DEFAULT GETDATE()
);
CREATE TABLE AssessmentFees (
AssessmentFeeID INT PRIMARY KEY IDENTITY,
ApplicationID INT FOREIGN KEY REFERENCES Applications(ApplicationID),
Amount DECIMAL(10,2),
PaidDate DATETIME,
Refunded BIT DEFAULT 0,
RefundDate DATETIME
);
Student Management
CREATE TABLE Students (
StudentID INT PRIMARY KEY IDENTITY,
ApplicationID INT FOREIGN KEY REFERENCES Applications(ApplicationID),
AdmissionDate DATE,
IsWithdrawn BIT DEFAULT 0,
WithdrawalDate DATE,
ReRegistered BIT DEFAULT 0,
AcademicYear NVARCHAR(10)
);
Fee configuration and discounting
CREATE TABLE TuitionConfigs (
ConfigID INT PRIMARY KEY IDENTITY,
GradeOrStage NVARCHAR(50),
TuitionAmount DECIMAL(10,2),
Installments INT CHECK (Installments BETWEEN 1 AND 4)
);
CREATE TABLE Discounts (
DiscountID INT PRIMARY KEY IDENTITY,
DiscountType NVARCHAR(50), -- 'Sibling', 'Staff'
Percentage DECIMAL(5,2),
IsAutomatic BIT DEFAULT 1
);
CREATE TABLE TransportationFees (
TransportFeeID INT PRIMARY KEY IDENTITY,
StudentID INT FOREIGN KEY REFERENCES Students(StudentID),
Amount DECIMAL(10,2),
AcademicYear NVARCHAR(10)
);
Payments & Refunds
CREATE TABLE PaymentTransactions (
TransactionID INT PRIMARY KEY IDENTITY,
StudentID INT FOREIGN KEY REFERENCES Students(StudentID),
ReceiptNumber NVARCHAR(20),
Amount DECIMAL(10,2),
PaymentDate DATETIME,
Type NVARCHAR(50), -- 'Tuition', 'Transport', 'Other'
);
CREATE TABLE RefundTransactions (
RefundID INT PRIMARY KEY IDENTITY,
PaymentTransactionID INT FOREIGN KEY REFERENCES PaymentTransactions(TransactionID),
RefundAmount DECIMAL(10,2),
RefundDate DATETIME
);
Reporting and Document Generation
While reports are generated dynamically via Crystal Reports, you’ll need data sources:
CREATE TABLE DocumentLogs (
DocumentID INT PRIMARY KEY IDENTITY,
StudentID INT FOREIGN KEY REFERENCES Students(StudentID),
DocumentType NVARCHAR(50), -- 'Notice', 'Transfer Certificate', etc.
GeneratedDate DATETIME
);
Search & Inquiry
Not a schema itself, but indexed columns (like StudentID
, FatherName
, AcademicYear
, etc.) across key tables will optimize searching. You can also create:
CREATE VIEW StudentOverview AS
SELECT
s.StudentID,
a.FirstName,
a.LastName,
s.AcademicYear,
s.IsWithdrawn
FROM Students s
JOIN Applications a ON s.ApplicationID = a.ApplicationID;
Parent web inquiry
CREATE TABLE FatherAccounts (
FatherID INT PRIMARY KEY IDENTITY,
StudentID INT FOREIGN KEY REFERENCES Students(StudentID),
Username NVARCHAR(50),
PasswordHash NVARCHAR(255),
LastLogin DATETIME
);
Ministry reporting and MIS
Design separate views or temporary tables that Crystal Reports can pull from, combining:
- Student status
- Attendance (if tracked)
- Fee payment history
- Academic performance (if needed)
Entity Relationship Diagram

Admission & Accessment
[Applications]───<AssessmentFees>
|
└──────<Students>
- Each Application may result in one Student
- One Application can have one or more AssessmentFees
Student Management
[Students]───>Applications
|
├──────>TransportationFees
└──────>PaymentTransactions
└──────>RefundTransactions
- Each Student is linked to an Application
- Fees and transport are recorded per student
- Payments generate Refunds if applicable
Tuition & Discount
[TuitionConfigs]
↑
|
[Students]
↓
[Discounts] (applied automatically based on conditions)
- Tuition may vary by grade and stage
- Discount are conditionally applied based in student profiles(staff/sibiling)
Document log and reporting
[Students]───<DocumentLogs>
└─────> Crystal Report Sources
- All generated documents (registration, withdrawal, certificates) are logged
- Reports pull from multiple tables, mostly student and finance-related
Father account & inquiry
[FatherAccounts]───>Students
- Each FatherAccount can view one or more Student data through the web portal
Ministry & MIS Reporting
[Students]
├──> Applications
├──> TuitionConfigs
├──> PaymentTransactions
├──> Discounts
└──> DocumentLogs
- Ministry reports synthesize key data such as enrollment, payments, and documents
- MIS reports query across students and financial activities
Note: For demo purpose only. For more information please contact