KIE1004 Assignment 2 (10%) S1 2022/2023
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
KIE1004 Assignment 2 (10%) S1 2022/2023
Assigning a large number of students to classes during university registration process can be a daunting task for an administrator. Most importantly, the administrator needs to ensure that there is no time clashing. The university has hired your team as programmers to author the timetable application. The timetable is as shown below. There are four courses with two groups each. The student only needs to be assigned to one of the groups if they are registered for the course. The program needs to prevent time-clash when assigning the time slot for each student. For example, when the student is already assigned for KIE1003G1, this student must not be assigned for KIE1004G2. A sample test data is provided in “StudentList.csv” . However, the provided data file is just one of the sample test data, other test data will be used as well to evaluate the capability of your application.
|
9am-12pm |
2pm-5pm |
Monday |
KIE1003G1/KIE1004G2 |
KIE1004G1/KIE1003G2 |
Tuesday |
KIE1001G1/KIE1002G2 |
KIE1002G1/KIE1001G2 |
The application has a menu structure as listed below with each menu function as described where the user may select menu at any sequent. You need to print the error message for invalid selection.
|
|
Mark |
Menu 1 |
Run a function to load student list from file (“StudentList.csv”). The file contains the student id and the courses they are registered for. The student id should only consist of alphabets and integers only and error message should be printed if otherwise. |
10 |
Menu 2 |
Run a function to display the student registration record as loaded during ‘Menu 1’ execution. |
5 |
Menu 3 |
Run a function to randomize the student sequent so that they will be randomly assigned to different group of the courses. |
10 |
Menu 4 |
Run a function to assign the timetable to the students: 1) The assigned timeslot must not be clashing. 2) The maximum number of students in each group must be limited to 30. If there is not enough space for a particular course group, an error message should be printed. 3) If the courses the students are registered for is not in the timetable, error message should be printed. |
45 |
Menu 5 |
Run a function to display the assigned timetable for each of the students. |
5 |
Menu 6 |
Run a function to display the number of students in each of the courses group. |
5 |
Menu 7 |
Exit the application |
|
|
|
|
Others: |
Apply good programming practices such as: 1) Commenting to describe the purpose of important code sections 2) Proper use of array, const, local and global variables 3) Print error messages when necessary to alert the user. 4) etc |
20 |
Assumption:
1) Maximum number of students is 100.
2) Maximum number of students in each class group is 30.
3) The maximum number of courses the student might be registered for is 6.
Hint:
1) One way to define the timetable array is as follows:
string timeTable[timetableRow][timetableCol] = {{"KIE1003G1",
"KIE1004G1","KIE1001G1","KIE1002G1"},{"KIE1004G2","KIE1003G2","KIE1002G2","KIE1001 G2"}};
2) .find() or substr() function might be useful.
3) To save time during testing, you may want to disable the menu option and the function sequentially.
4) To save time during testing, you may also want to shorten the list inside “StudentList.csv” .
Submission:
1) This is a group assignment. Discussion between group and shared codes are not allowed. Any copying of a block of code or more than 20% will be penalized or disciplinary action taken.
2) Include the name of group members in the source code.
2) Submission is through Spectrum and will be subjected to Turnitin for checking against plagiarism from internet and among students.
3) You need to upload two documents into spectrum:
i) Summary sheet: Include the source codes (in text format, not image) and printscreen of the important output screens into a single PDF document. Multiple output screens should
be included to show the full capability of your application.
ii) Source code file (just *.cpp, not the whole project folder)
Penalty:
1) Syntax error [50%]: You need to ensure that your source code is free from syntax error and can be compiled. Since you can test the code before submission, no excuse will be accepted for submitting source code that cannot be compiled.
2) Forming group from different occurrence[30%]
3) Plagiarism [0-100%]
Before 20th January 2023 5pm (0% penalty)
Before 21st January 2023 5pm (30% penalty)
Before 22nd January 2023 5pm (60% penalty)
After 22nd January 2023 5pm (100% penalty)
2023-01-17