Changes are in red.
- To introduce GUI via cgi, and
- To introduce recursion, and
- To introduce sorting.
For this project, I will require:
- Extend Project 4.1's modification of Project 2.
- All commands must be input from the screen via a menu.
- A recursive merge sort algorithm to be implemented for both the DLinkedList of items and students. Some array-based code and demo can be found at the following links.
- http://shell.uriel.net/~mozart/File/Merge1/mergesort.html
- http://www.halcy0n.com/docs/mergesort.html
- I MAY require a design document of the GUI, TBA.
For the first phase of the project, the commands were still read from a file named "commands.data". Phase 2 requires that the commands be read from the screen. When your program starts it should display a menu of the following commands. The layout and format is up to you: you may use buttons, links (as shown in class), which may be horizontal, vertical, in tables, etc. This layout is up to you.
- Print All Students
- Print All Items
- Print One Student
- Add an Item
- Add a Student
- Delete a Student
- Sort Students
- Sort Items
- Quit
Print All Students
- This will redisplay the menu at the top of the page, and then
- Print to the screen all students in the order they are in the Linked List. A single <br> should be added after each student. (Use the same format as in Project 2.)
Print All Items
- This will redisplay the menu at the top of the page, and then
- Print to the screen all items in the order they are in the Linked List. A single <br> should be added after each item. (Use the same format as in Project 2.)
Print One Student
- Will display a textbox with submit button (the forms shown in class) with instructions to the affect of "Enter the student to display" before the textbox. You should also have a "Return to Menu" link that allows the user to change his mind and go back to the main menu.
- When the user presses submit, redisplay the menu at the top of the page, and then
- First print the student's data and then all items s/he has. Do NOT print his/her email address again for each item. A single <br> should be added after the student's data has been written. (Use the same format as in Project 2).
Add an Item
- Will display multiple textboxes with a single submit button (the forms shown in class). There should be a label for each textbox so the user knows what to input in each, and you should display an instructions message at the top to the affect of "Enter the Item's info Below." You should also have a "Return to Menu" link that allows the user to change his mind and go back to the main menu without adding an item.
- The item will be added to the END OF THE LINKED LIST!!!
- Once the user has pressed submit, you should redisplay the menu at the top, and below print a message to the screen indicating success or failure (IE, "Item was successfully added." or not added, etc.) In the case of success, print out the Item below the message with all its fields.
- Note: an item can only be added if a student with that email address exists.
You are guaranteed that it will be tested with an item name.
Add a Student
- Will display multiple textboxes with a single submit button (the forms shown in class). There should be a label for each textbox so the user knows what to input in each, and you should display an instructions message at the top to the affect of "Enter the Student's info Below." You should also have a "Return to Menu" link that allows the user to change his mind and go back to the main menu without adding a student.
- The item will be added to the END OF THE LINKED LIST!!!
- Once the user has pressed submit, you should redisplay the menu at the top, and below print a message to the screen indicating success or failure (IE, "Student was successfully added." or not added, etc.) In the case of success, print out the Student below the message with all its fields.
- Note: a student can only be added if it has an email address (you do NOT have to make sure the email is valid).
Delete a Student
- Will display a textbox with submit button (the forms shown in class) with instructions to the affect of "Enter the student to Remove" before the textbox. You should also have a "Return to Menu" link that allows the user to change his mind and go back to the main menu.
- When the user presses submit, redisplay the menu at the top of the page, and then
- Print a message indicating "email has been removed" or "email does not exist" to the screen depending on the result of the delete, where email is the student email deleted.
Sort Students
- Will sort the DLinkedList of students using a recursive merge sort, then redisplay the menu and then a message to the effect, "Students have been sorted."
Sort Items
- Will sort the DLinkedList of items using a recursive merge sort, then redisplay the menu and then a message to the effect, "Items have been sorted."
Quit
- Writes all the students in the DLinkedList back to the file "students.data" and the items back to "items.data" Display a message to the screen (BUT NOT THE MENU) that says goodbye or the like.
As with all programming projects in this course, please see http://courses.cs.vt.edu/~cs1704/summer2003/standards.htm for a list of requirements that apply to all projects. YOU WILL BE GRADED on these. In addition, include the following pledge at the bottom of your file:
On my honor:
- I have not discussed the C++ language code in my program with anyone other than my instructor or the teaching assistants assigned to this course.
- I have not used C++ language code obtained from another student, or any other unauthorized source, either modified or unmodified.
- If any C++ language code or documentation used in my program was obtained from another source, such as a textbook or course notes, that has been clearly noted with a proper citation in the comments of my program.
- I have not designed this program in such a way as to defeat or interfere with the normal operation of the Curator System.
<Your Name>
This project will be demoed. I will have sign-up sheets available on Tuesday for students to set up times for Tuesday-Friday. I will give a 10% incentive for projects demoed on Tuesday, a 5% extra credit incentive for projects demoed on Wednesday and a -5% negative incentive for projects demoed on Friday. Since I have to submit final grades to the Hokie Spa on Friday, I will absolutely under no circumstances be doing any demos after 3:00 PM on Friday, August 8th. The late penalty is 100% of the weight of the project. More submission details may be added here next week.
If it happens that too many students want to demo on a certain day, I will accept a Floppy disk containing all source code during class with the assumption that even though the project will be demoed on a further date, it was submitted at the earlier time. However, I will NOT allow students to bring out a new version of their code during the demo of they do not like the grade for their code on the Floppy.