Assigned | March 28, 2005 |
Design Due | 11:59pm on April 3, 2005 |
Program Due | 11:59pm on April 10, 2005 |
Updates | 27 March 2005
In view of a couple of student questions, the wording in the project 3 design was clarified with respect to an acceptable design of the bi-directional car/customer relationship. |
Car Type | Card Type | Weekly Charge | Daily Charge | Mileage Charge |
---|---|---|---|---|
Economy | GOLD | $90.00 | $20.00 | First 100 miles FREE
$0.20 per mile over 100 miles |
PLATINUM | $80.00 | $15.00 | First 200 miles FREE
$0.12 per mile over 200 miles | |
Mid-Size | GOLD | $150.00 | $30.00 | First 200 miles FREE
$0.20 per mile over 200 miles |
PLATINUM | $100.00 | $20.00 | First 250 miles FREE
$0.12 per mile over 250 miles | |
Luxury | GOLD | $200.00 | $40.00 | First 250 miles FREE
$0.20 per mile over 250 miles |
PLATINUM | $150.00 | $25.00 | First 300 miles FREE
$0.12 per mile over 300 miles |
Car Type | Card Type | Under 25 | 25 and Over | |
---|---|---|---|---|
Economy | GOLD | $12.00 | $9.00 | |
PLATINUM | $6.00 | $4.00 | ||
Mid-Size | GOLD | $15.00 | $12.00 | |
PLATINUM | $8.00 | $6.00 | ||
Luxury | GOLD | $18.00 | $14.00 | |
PLATINUM | $10.00 | $8.00 | ||
Insurance premiums are NOT prorated. |
You will implement C++ class which will be used by the main portion of your program.
Code from project 2 should be reusable in project 3.
These last two requirements are for purely academic reasons -- you need experience writing code that performs dynamic memory management. There is no project functionality that would otherwise require any dynamic memory allocation.
Note that not all of the programming details have been spelled out for you. For example, the project description indicates that a customer balance due the company must be printed, but there's no specification about where that data should be stored. Also, the reservation system must keep track of which car is rented by whom, but there's no indication about how that should be done. This is intentional....you are required to give the project design serious thought before writing code.
You must provide the makefile for this project. Use the makefile you submitted for project 2 and modify it appropriately. If you don't change the names of the files from project 2, the changes will be minimal.
The graders will be typing the command make Proj3 when they grade your project. This command must cause all .cpp files to be compiled and the executable named Proj3 to be created.
The make utility can also be used for compiling a single program without linking. For example, to compile Box.cpp, type make Box.o.
In addition to compiling and linking your files, make can be used for maintaining your directory. Typing make clean will remove any extraneous files in your directory, such as .o files and core files. Typing make cleanest will remove all .o files, core, Proj3, and backup files created by the editor. More information about these commands can be found at the bottom of the makefile.
The grade for this project will be broken down as follows. A more detailed breakdown will be provided in the grade form you receive with your project grade.
You can check to see what files you have submitted by typing
More complete documentation for submit and related commands can be found here.
Remember -- if you make any change to your program, no matter how insignificant it may seem, you should recompile and retest your program before submitting it. Even the smallest typo can cause compiler errors and a reduction in your grade.
Avoid unpleasant surprises!
Be sure to use the submitmake and submitrun utilities provided for you to compile, link and run your program after you've submitted it.