- CMSC 341: Project 5

Project 5

Assigned Nov. 21, 2000
Due Dec. 11, 2000
Preview Nov. 29, and Nov. 30, 2000


Overview

Your mission in this project is to attempt to reduce end-of-semester and/or holiday-season stress by providing a personal scheduler. For testing purposes, your scheduler will take a stream of events from an input file and construct schedules for each day as it arrives. For extra credit, you could include a manual option which provides interactive assistance.

This project is somewhat less structured than earlier assignments. You will select and design appropriate ADTs to address program requirements. In order to facilite potential reuse, your ADTs should be general-purpose classes which are not specific to this particular application. If you wish to have a specialized class for this application, make it inherit from or include a more general class. There are no required or suggested interfaces for the ADTs, but you will need to be able to discuss and justify the design choices you made.


Objectives

This project will deepen your experience in selecting and designing data structures appropriate to a given task.

What to do

Implement a program which takes a sequence of input events describing obligations, invitations, cancellations, changes of importance, and the passage of time and recommends a schedule for each new day as it arrives. The recommended schedule should contain obligations for no more than eight hours for any day and conform to standard day/night conventions (ie. don't send someone shopping at 2am).

Events
Each event has a timestamp, a type identifier, a name, and some additional item that are specific to that event. Each event will be on its own line in the input file and the fields of the event will be separated by some number of spaces and/or tabs. Your program should be able to process these events: For all events, higher importance values indicate events which are more critical (ie. the higher importance events should be that ones that are sure to be scheduled). Times indicate start times for in invite and deadline times for a todo. Comment fields may include embedded white space and extend to the end of the line.

Malformed events should be discarded and an error message explaining the problem be printed. If two events conflict, the higher importance event should be scheduled and the lower importance truncated to the part that does not conflict. If an event is truncated or cannot be scheduled, a message should be printed.

Grading and Academic Integrity

Project grading is described in the Project Policy handout. Please remember that you must provide good documentation as described in the handout.

Cheating in any form will not be tolerated. Please re-read the Project Policy handout for further details on honesty in doing projects for this course.

Feel free to use code from previous projects or from the book, but remember that everything that you don't write fresh for this assignment should be credited to its source (even if that source was you sometime in the past).

Remember, the due date is firm. Submittals made after midnight of the due date will not be accepted. Do not submit any files after that time.


Files To Be Submitted

You should submit only the files you have written or modified, and a makefile. Include the answers to the written questions, found in /afs/umbc.edu/users/r/h/rheingan/pub/CMSC341/Proj5/341-Fall00-p5-questions.txt and submitted in a file of the same name.

Submit the files using the procedure given to you for your section of the course.


Sample Output

Sample output will be available for your study, sometime before the end of the Thanksgiving Holiday.

A simple sample input file is available at /afs/umbc.edu/users/r/h/rheingan/pub/CMSC341/Proj5/simple.txt

More input files will be available later.