QUIT
Save the updated data to the files, then terminate the program.
Data Structures
You need lists for storing each of the following:
- A list of bookings for each holiday. (You may assume that there are at most ten holidays.) Each
list is the schedule of one holiday. Each list element contains the name of the customer who made the
booking and the name of the magician. Each list should be stored in alphabetical order, using the
customer name as a key.
- A list of bookings for each magician. (You may assume that there are at most ten magicians.)
Each list is the schedule of one magician. Each list element contains the name of the customer who
made the booking and the holiday. Each list should be stored in alphabetical order, using the holiday
name as a key.
- A waiting list. You need to be able to add to either end of the waiting list. You add to the front
of the waiting list if you are rescheduling someone who had a booking, but lost it when a magician quit. You add to the back of the waiting list if someone requests an appointment and there are no free magicians.
Testing
This program is complicated. You must create a test plan and use test drivers (as
is done in the labs). You need to execute
the program more than one time. Make a hard copy of the output file ("Magic.trn") after each test
run, as the program rewrites this file each time it is executed.
Deliverables
- A design. You turn in an initial design on 25 February and you turn in a final
design when you submit the project.
- Listing of the program's source code.
- Source code must be placed in the "project 1" folder on Nova.
- Hard copies of file "Magic.trn" from each of the final test executions.
- Implemented test plan and test drivers. Include both code and copies
of your test plan.
- A 1-2 page paper describing how your program works, what objects
are included in it, and what each person did on the project. Explain what
advanced features are in the application and where you used advanced techniques.
This project must be done in a group of two people. In no
circumstance may more than 2 people work in a group. There are two parts
to the project. Part 1 is the basic program. This is the "C"
level project. Part 2 has advanced features that you can add. Your
grade will depend on how many features you add and how well they are
implemented.
PART 1
Requirements:
- You must turn in a design based on some decomposition design
method. This design
section is due on 25 February . It would be wise to complete
the design before then.
- You must use a dynamic implementations of lists.
- You must use the String class developed in class to store any
strings that you use.
- You do not have to implement the waiting list or associated
functions. If there is no magician available for the holiday requested, print
out an appropriate message.
- You do not have to save the schedule in a file. Every time you
run this program, you will create a new schedule.
- You do not have to store lists in alphabetical order.
- You do not have to save a summary of transactions.
- Every function must have correct pre and post conditions.
PART 2
You must implement everything in part 1.
The features discussed here are optional and provide a
mechanism for improving your grade. You may choose to implement
any number of options in any order. The exact grade you receive
depends on the difficulty of your features as well as the
effectiveness and correctness of your implementation.
- All programs beyond the "C" level must store lists in alphabetical order.
- All programs beyond the "C" level must implement the waiting list.
- Save a file of transactions.
- Implement a "save" command that the user can use to save the schedule.
- Implement a "load" command to allow the user to reload a schedule.
- Automatically save a file when the user uses the QUIT command.
- Allow a customer to specify a magician when they schedule an event. If their
magician is not available, let them try another magician (provide a default magician
that is available).
- Use a binary search when you need to sort a list.
Grading
Regardless of which parts you complete, your project will be graded based
on its design and how well implemented it is. I will examine comments and
programming style. A poorly designed and commented program, even with
advanced features, will receive a poor grade.
Your grade will be determined by the following criteria:
- Did you meet the minimum criteria for your level?
- How well commented is your code? How accurate are your pre/post conditions?
How well formated is your program? Is your program easy to read?
- How complete is your test plan? Does it cover all of the code or input
classes? Does your program pass all of the tests?
- How elegant is your user interface? Is it easy to use?
- How elegant is your design? Do you decompose the problem logically?
Do you have redundant code? Does your class structure make sense?
- How well does your program run. Are there errors or inconsistencies?
Hints
- Start your design by using top-down decomposition as we talked about
in class. Determine what different parts there are in the problem. Then
decompose these into smaller parts, etc.
- Implement and test your ADTs first. Create a test plan for your ADTs
and driver code. Once you know that your ADTs work, then start on the
rest of your project.
Return to Student Pages
Return to John Barr's Home Page
Last Modified: 17 February 2000
THIS PAGE MAINTAINED BY:
John Barr, Ithaca College