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/ Vue

    4. Hardware Requirements

    Processor: Intel Xeon X3 or better
    Ram: 16 GB or greater
    Disk Space: 1 TB or more
    Network Connection: 15 Mbps or faster

    5. 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<Student> students;
      ArrayList<Faculty> teachers;
      
      public Pair<Integer,Character> getClassroomDetails();
      public ArrayList<Students> getStudents();
      public ArrayList<Faculty> 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