Course_Management_System

  • Written in Java

  • The code consists of two interfaces: Person and Service. Admin and Student are the two kinds of users in the program. They have been modelled via classes that implement the Person interface. They each contain the respective attributes that define the user (for example, Admin contains attributes like qualifications and research_interest, Student contains attributes like ID) and of course the getter and setter methods for the same.

  • Next, there are AdminService and StudentService classes, which implement the Service interface, as well as extend Admin and Student classes respectively (so that they have access to the necessary attributes). These Service classes contain all the methods that enable the users to perform a variety of functions.

  • The Admin, once logged in, has access to the following functionalities:

    1. View Your Profile
    2. Edit Your Profile
    3. View Course Details
    4. Edit Course Details
    5. View Profile of a Student
    6. Enroll a Student
    7. Unenroll a Student
    8. Insert Marks/Edit Marksheet
    9. View Marksheet
    10. Put up Course Content/Notice/Announcement
    11. Check messages
    12. View all Students currently enrolled
    13. Set up New Password
    14. Check and Take Action on Enrollment Requests
    15. Update Student Records
    16. View Total Students Currently Enrolled
    17. Logout
  • Similarly, a Student can do the following:

    1. Set up New Password
    2. View Marksheet
    3. Unenroll from the Course (A notification will be sent to the Professor)
    4. Send message to Admin
    5. Check Notices/Course Content
    6. View Professor's Profile
    7. View Course Details
    8. View Total Students Currently Enrolled
    9. Logout
  • As you may also tell, it is entirely a menu-driven program.

  • In addition to the above, the code also has a Course class that contains attributes about the course, which are to be entered by the admin during first log-in, and can also be modified later on.

  • Of course, there is also the main class (titled “Course_Management”) that contains the main() method itself. Throughout the project, data has been stored making extensive use of .txt files. What this enables the coder to do is to store multiple, multilined data in pure String format by using Writer and OutputStream classes, and then retrieve them using the Reader, Scanner, and InputStream classes.

  • The files are titled Admin.txt, Course.txt and Students.txt that store the details of the Admin, Course and Students respectively. There are also CourseContent.txt and YourMessages.txt, that contain every notice put up by the Admin and the direct messages sent by the Students respectively, along with their date-time stamps and a “READ”/“UNREAD” or “NEW” tag.

  • Additionally, there is a Marks.txt file that stores the marks of every student in a comma separated row-by-row format. All these files are open to updation (from the code). In fact, all of the methods open one or two of these files and perform CRUD operations on it: Creating, Reading, Updating or Deleting.