Applications / School Management / System Design
System Design
-
Code
1. Functional Requirements
At the basic, every school management system must provide features like,
1 Allow adding and removing teachers/staff details
2 Allow adding and removing student details
3 Manage payment of student fees and salary for faculty
4 Get reports of student activities and faculty performance
5 Allow adding of marks and attendance by faculty members
A better understanding of the functional requirements can be gained from the use-case diagram below.
2. Non - Functional Requirements
Security:
Only authorized users must be able to access the system and view and modify the data.User Friendly:
The system should provide an interactive user-friendly interface that is easily understandable for all users.Dependability:
The system should provide consistent performance with easy tracking of records and updating of records.Maintainability:
The system should be easily maintainable and adding and removing new features must be very easy.3. Software Requirements
Platform: Windows Server/ Linux
Language: Java/ C++/ Python/ any multithreading capable OOP based language
Database : Relational DBMS like MySQL/ PostgreSQL
Front-end Frameworks : Angular/ React/ Vue4. Hardware Requirements
Processor: Intel Xeon X3 or better
Ram: 16 GB or greater
Disk Space: 1 TB or more
Network Connection: 15 Mbps or faster5. Architecture of the System
6. Subsystem Decomposition
Decomposing the system into smaller units called subsystems will help reduce the complexity of the system. Subsystems are just packages holding related classes. Our school management system is also decomposed into subsystems as follows. The major subsystems are 'Enrollment', 'Authentication', 'Assessment', 'Timetable', 'Attendance' and 'Report' systems.
7. Low-Level Design
The following code shows some of the classes involved in School Management System Software.
class Person { String name; Integer age; String sex; String address; Double phone; } class User extends Person { Integer uid; String email; String role; String password; public void login(mail, passwd); public void logout(); } class Admin extends User { public void addCourse(id, details); public String removeCourse(id); public void addFaculty(id, name, details); public void modifyFaculty(id, field ,newValue); public void addStudent(id, name, details); public void modifyStudent(id, field ,newValue); public void manageAttendance(); } class Student extends User { String grade; Character section; public void applyLeave(date); public void checkMarks(); public void payFees(amount); public void checkAttendance(); public void checkTimeTable(); public void raiseIssue(); } class Faculty extends User { String subjects[]; String grade; public void addMarks(studentId, subjectId, assesmentId, marks); public void addAttendance(studentId, isPresent, date); public void addTimetable(); public void generateReports(studentId); } class Subject { Integer sid; String name; public void displaySubject(); } class Classroom { Integer grade; Character section; ArrayList students; ArrayList teachers; public Pair getClassroomDetails(); public ArrayList getStudents(); public ArrayList getFaculty(); } class Mark { Subject s; Student n; Integer mark; } class Exam { Integer Id; Name String; Mark m; public Integer getmark(Student); } class Issues { Integer issueID; String type; String description; public void resoveIssue(); } 8. Database Design