School Management System

School Management System

Software Architecture

Feature Mapping to Software Components

Feature CategoryFunctionality & 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