CourseBid it’s a fair system for registering students into courses.
Few weeks before academic year (school year) starts, secretary publishes date in which all students that are listed to the upcoming academic year will be able to insert requests to register to one of the courses using one of the stands spread in the campus. Students will be able to get the results of their requests the day after the registration end date has arrived.
Spreading the stands over the campus is executed by technicians before the first registration date.
Secretary office updates the list of the courses with the registered students in the “CourseBid” system using special secretary stand.
For each course the following entities defined: Id, name, description, studying hours, must have pre courses (in order for the student to suit the course demands), max number of students.
To each student the following entities defined: ID, Name, list of courses student finished
Furthermore, the system allocates to each student certain amount of points the student is allowed to use while registering to courses.
NOTICE: the amount of points each student gets is a result of an equation, taking in consideration the amount of courses the student already finished (the equation will be an arithmetic expression using plus, minus, divide and double). The parameters will be all of type INT (positive and negative). The expression will contain special parameter @, which represents the amount of courses student already finished.
Example for this kind of expression: 2*@+100. (Students who have finished 5 courses will get 110 points and a new student will get 100 points).
Before first day for registration arrived, the system allows to add, remove and edit courses list, students list and to insert the equation to calculate the amount of points each student will get. Deletion of a course which is a Prerequisite to other courses won’t be allowed.
Deletion of a course which appears as accomplished in one of the students list of courses won’t be allowed.
Adding a course as a Prerequisite will be prohibited if it creates circulation with other courses.
In the first registration date, each student should approach to one of the stands spread in the campus, and identify itself using the ID he/she got from the secretary. If identification generated an error 3 times in a row the system will be locked and student won’t be able to log in.
*unlock will be able only threw the secretary stand.
After identification, the system will present/print to the student all of the available courses (student has enough points and finished all of the Prerequisite courses). The system will present the amount of points the student has. In order to register to the courses, the student
Needs to divide the points he got from the secretary between all courses he wishes to list for.
After registration period, the system assigns students to requested courses by the following criteria’s:
1) System shouldn’t assign to a course, more students than the maximal capacity of the course defined by the secretary
2) If spare places are left in course C (example), each student that allocated more than 0 points – will be listed to the course
3) if a student that allocated X points to course C is listed to this course, each student that allocated more than X points in order to register to the course will be registered as well.
4) “Burned” points are points that a student allocated to courses to which is not listed. Between all solutions that fulfill 1, 2 and 3
The chosen solution should be the one that will cause the least amount of “Burned” points.
Day after the registration period ends, the secretary stand will be able to provide the list of all students registered to each course and list of all courses each student is registered to.
Day after the registration period ends, every student will be able to identify itself in one of the registration stands around the campus, same as in the beginning registration period. After identification, the system will print to the student the list of courses is registered to and list of courses he asked to register to but didn’t. Next to each course will be printed minimal amount of points allocated by students who registered to the course.
In the registration date the stands will be tested by technicians in every round hour.
#Project should be written in C++
#calculation of the equation should use the C++ “lemon” library
#code would be clean, clear and with comments
#IMPORTANT: UML of the system should be handed as well!