- Download the zip folder provided and extract all files.
- In IntelliJ, open a New Project, set it up.
- Replace the
src
directory in this project with the above downloadedsrc
directory. - Compile and run the
Main
class.
- All admins have the same password, i.e.,
admin@123
. - Login can only be done if an account already exists, and the password matches the one in record.
- If a course is deleted by Admin, it is also dropped for all students who have registered for that course in the current semester.
- If a Professor or Admin assigns a grade to a student, they have to ensure that the grade has not been assigned earlier for that course.
- In complaints, local date-time of the system will be used for sorting.
- When adding a course, the semester provided is valid, and the credit provided is 2 or 4.
- Default enrollment limit is 600.
- A Professor will only add grades for his/her own Course and Students.
- No field called "roll number" for a Student; it is contained in the email itself.
- Only valid emails are signed up (no separate checking).
- Student's semester is between 1 and 8.
- A student can only drop a Course if a grade has not been assigned yet.
- After 8 semesters, the student becomes frozen so no new semester can be added.
- A student will not register for the same course multiple times in the same semester.
- A student can register for any course in a previous or earlier semester.
- A student will not drop a course once a grade is added for any other course as well.
- EmailID for each person is unique, and each person will sign up only once; otherwise, the previous entry is overwritten.
- Professor and Admin will always enter valid email IDs of each other and students when performing tasks (equivalent to dropdown menus where typos are not possible).
- Admin should not delete a course for which a grade has been assigned to any student in the current semester.
- To keep it simple, logging activities like timestamp of signup, login, sign-out, etc., are not maintained.
- Other basic logical assumptions like students cannot change their semester, etc., are applicable.
- Students should register after the professor has been assigned. In case a student registers for a course before a professor is assigned, previous standing prerequisites and other course details will be followed.
- It makes sense for the student to give feedback on the course that is currently being studied, so feedback is only allowed for current courses.
Note: In UML (Compact) version, +
, -
symbols are used as bullet points and do not convey their actual meaning. Getters and setters methods of all classes are omitted to enhance readability. In the UML (Expanded) version, private attributes are omitted, as per convention (courtesy: IntelliJ).
- Class
- Defined multiple classes like
Complaint
,Contact
,User
,Student
, etc.
- Defined multiple classes like
- Interface
- Defined an interface
Page
, which is implemented byHome
,Login
, andsignUP
pages.
- Defined an interface
- Polymorphism
- In
Complaint
class implementation,sender
is declared asUser
(can be either Professor or Student) and its attributeemail
is used (which is inUser
class, so both Professor and Student have it).
- In
- Abstraction
- Using driver function, available functionalities are provided as a menu.
- Encapsulation
- All attributes are made either private or protected so that they cannot be accessed outside the package.
- Inheritance
Admin
,Student
, andProfessor
inherit functionalities fromUser
(use ofsuper()
as well).
- Overloading
- Used in
User
to eitheraddContactInfo
as name, number, address or only name;ShowComplaint
based on date or status.
- Used in
- Static
- Used in most classes to define a static list of all the instantiations done. Used in
Admin
,Student
, andProfessor
to keep a list of emails and passwords. Used inCourse
,Complaint
to keep track of all instances.
- Used in most classes to define a static list of all the instantiations done. Used in
- Abstract
User
is an abstract class, because it doesn't need to be instantiated.
- Final
Complaint
list declared as final, so it cannot be reassigned but can be mutable.
- Access Modifiers
- Public, private, protected, and default used as needed.
- Dependency
Login
,signUP
classes depend on theDataBase
class as they request login/signup services from it.
- Association
Student
andComplaint
have association;Professor
andCourse
have association; all compositions are associations (aggregation).
- Composition
User
is composed ofContact
;Course
is composed ofTimeTable
.
- Generic
- Used to define a
Pair
class which has the first value asString
and the second as a generic type (declared upon instantiation).
- Used to define a
- Object
- Methods like
toString
,compareTo
, etc., are used.
- Methods like
- Overriding
- Methods like
toString
, etc., are overridden fromObject
.
- Methods like
- A class for
FeedBack
has been created. - It can store both Integer Ratings and String Comments in the same variable depending on its initialization.
- Students are tasked with providing feedback and can choose between Rating or Comment.
- Also records the type of feedback and the student who submitted it.
- Students can give feedback for currently registered courses.
- Added a role of
TA
. - A student, while signing up, can register as a
TA-cum-Student
. - TA can apply for
TAShip
in any course. - Professor of a course can accept, reject, or remove TAs from the course.
- Once accepted, TAs can add and view a student's grade for their course.
InvalidLoginException
thrown and caught in the login page if a user gives an incorrect username or password.CourseFullException
thrown and caught in the course registration method ofStudent
if the enrollment limit has been reached.DropDeadlinePassedException
thrown and caught in the drop course method ofStudent
, and delete course method ofAdmin
, if the pre-fixed drop deadline has passed.IOExceptions
collectively handled on the home page.