CIS 254 – Data Structures Klinger
This project is due in two weeks.
You are to create an application that keeps track of a person's to-do list. IMPORTANT: you may not use the Java List class, you must design and create your own list class. Users should be able to do the following:
1. Input a work item with an estimated time to complete it. The item and time estimate should be inserted into a list of work items to complete.
2. Push a button to get a display of all the items and their times.
3. Find a specific work item and display out its estimated time for completion.
4. Remove an item completely from the work list.
5. Change the time estimate for an item.
6. Push a button to display the number of work items and the total estimated time of completion.
7. Push a button to clear all the work items.
8. Some other function of your choice and design.
All items are worth 11 points.
9. Honors Option. Have your application keep track of work items with separate work items lists for every day of the year. There may not be separate input fields for each day. The list for a particular day may be specified by a number (1-365) or you may implement drop-down lists of months and days, or some other similar approach. All the functions above must work for whatever day is selected. NOTE: You must have separate lists for each day. You may not have a single list where the day is a member of the list item. Using an array is a fine idea. When in doubt, ask. Think about this before you start to implement it.
You are to create a class for a linked list data structure and a class for the items you put in the list. You will also have a driver program (i.e. application) that takes user input and displays output. The driver should be written as a Java application with buttons and text input and output.
One way to do this is to have two text fields for input and then have buttons that say “add to to-do list,” “print to-do's,” etc. Think about your design and draw it out before you write the code. Also, draw your data structures before you write any code. Think about what goes in your application and each class before you write any code.
Another suggestion. Implement 1 and 2 before writing any code for the others. You may find 2 useful in debugging. Another acceptable approach is to have a text area that always displays the current contents of your to-do list. That can also be useful in debugging.
One more suggestion. I have seen several of you struggling with debugging problems. I suggest you put in a boolean debug flag that you can turn on and off. When it is on, have it print out internal variables, such as counters and pointers, so that you can watch what your program is doing. When your program is working, just set debug = false. Besides, it is fun to watch this stuff in action.
Deliverables:
1. source code for the linked list class, the item class, and driver(application). i.e. all your source code to make this work
2. O( ) analysis for each of your items 1-8 above
3. test output
4. bring your code to class