Requirement
You will create a text-based university student course scheduler. Each course object will contain information for the course department (a String) (e.g., “CS”; “MATH”; etc), course number (integer) (125; 315), course description (String) (e.g., “Introduction to Computer Science”; “Linear Transformations and Matrices”), starting hour (integer: use 24-hour clock: 0-23), a boolean variable requiredForMajor, an integer indicating the number of credit hours for the course, and days the course meets (an array of chars - ‘M’,’T’,’W’,’R’,’F’).
While the course scheduler program is running, the text-interface should look like this:1
2
3
4
5
6
7
8
9
10Welcome to the Course Scheduler! Select an option below:
1) add an course
2) remove a course
3) display courses alphabetically
4) display courses in major
5) display schedule for day
6) display total number of credit hours
7) quit
Select an option above:
You will maintain a sorted linked list data structure to hold the schedule information.
For extra credit points, your app will be demonstrated and the code reviewed by two peers and one course assistant at the last lab/sections of the semester. Partial credit will be given for non-working code. Important: For maximum credit, in addition to a fully-functioning app, reviewers will be looking for good coding style such as: proper indentation, liberal use of constructors, data encapsulation, a short ‘main’ method and extensive use of subprograms. Use recursive methods whenever possible! Your code must also be checked into your subversion archive.
The following app behaviors will be expected for each option:
- add - The user will be prompted for information for a course to add (dept, number, description, whether it is in the students major, number of credit hours, and the time and days the course meets). The store will add the course in the appropriate location in the linked list, alphabetically sorted (by department and number) course list. For full credit, only add the course to the list provided the course day/time does not conflict with an already existing course. Partial credit will be awarded if you choose to not include this check. If conflict exists, the user will be prompted to enter a different course (call the add method again).
- remove - The user will be shown a list of current courses in the schedule (use method 3 below) and will be prompted to choose a course to remove. The course selected will be removed from the inventory and the linked list correctly updated.
- display courses alphabetically - the student’s courses will be displayed in alphabetical order by course (e.g., CS125 then Math 315 then PSYCH100) - all information for the course will be displayed: courseID, description, days it meets, number of credit hours, time/days it meets and a ‘*’ indicating the course is required for the student’s major.
- display courses in major - only the student’s courses that are required for the major will be displayed in alphabetical order by course (e.g., CS125 then Math 315) - all information for the course will be displayed courseID, description, days it meets, credit hours, date/time it meets.
- display schedule for day - the user will be prompted for a day of the week (MTWRF) and the schedule for the day will be displayed with courses ordered by starting hour.
- display total number of credit hours - the total number of credit hours will be displayed for the current course list.
- quit - the user will receive a prompt (“Are you sure you want to quit? - all your data will be lost.”) If the user replies yes, the app quits.