-
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:
- time -- gives the current date and time (in 24 hour format).
Format:
mm/dd/yy XX:XX time
- invite -- record an invitation to some social event. Format:
mm/dd/yy XX:XX invite event_name date_time duration importance comment
- todo -- indicates some responsibility to be be accomplished.
Large todo items may be split up into smaller pieces to facilitate
scheduling. Format:
mm/dd/yy XX:XX todo event_name due_date hrs_needed importance comment
- cancel -- cancel some obligation or social event. Format:
mm/dd/yy XX:XX cancel event_name
- adjust -- adjusts the importance of some event based on new
information. Format:
mm/dd/yy XX:XX adjust event_name new_importance comment
- quit -- exit the program, printing out a list of unresolved
obligations and invitations. Format:
mm/dd/yy XX:XX quit
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.