Design and implement a single-screen price quoting application used by a houseboat rental reservation system. The rental company operates docks in five towns listed here in the order of river flow: Ankor, Bilk, Calrow, Derrit, Elrose. The quotes are for one-way rentals. This application should feature the most suitable controls for selecting:

  • Number of persons aboard (up to 6);
  • Engine power, expressed as Level (from 1 to 4)
  • Departure town, date and time*
  • Arrival town, date and time*
  • in this app, time should be expressed in hours, without minutes

Price components are listed below. If expressed in %%, use the previous step results as a new base. When calculating, round to the nearest cent at each step.

  • 1. Base $239.99
  • 2. 9% of extra per each step up in Power Level above 1.
  • 3. If the duration is over 22 hours, $12 per each additional hour.
  • 4. Starting with the fourth person aboard, 10.5% per person
  • 5. If arriving to a dock upstream, $35 per segment (defined as covering the distance to the nearest dock in the selected direction).
  • 6. If arriving to a dock downstream, $30 discount per hop.
  • 7. Tax 6.1%

Controls should display choices for selection directly, e.g. the ports should be presented by the town names, not by introducing numeric codes.

Date/Time controls should initially be set to the next exact hour after the current (at run-time) computer system date/time.

A button Calculate Quote should result in displaying the itemized list of pricing components and Grand Total (all formatted like $999.99).

Implement the following rule using Chapter 13 material (events). In case departure or arrival time is selected between 9 PM and 6 AM (inclusive) and/or Power Level 4 is requested, immediately (i.e. before a button Calculate Quote has been hit) display the warning in red: Captain License will be required at the boat pickup.

Clear the warning if the user changes parameters in the way not requiring it anymore. No multiple warnings should be ever displayed. You would have easier time to avoid them if you process them in a single module.

Suggestions and Reminders. Numeric (and other) values should be defined as constants where appropriate, to avoid magic numbers. A smart use of enums and proper use of constants make the project elegant and easy to maintain.

The assignment does not require introducing any custom events.

DateTime class was just briefly introduced in the textbook, so you would need to research, e.g. check MSDN (online VS Help), for the methods most suitable for this task. Employing TimeSpan (a structure closely related to DateTime) may be also very beneficial.

A smart control choice can free you from spending time on creating custom controls. Research whats available within .Net framework. For example, replicating calendar pickers functionality would add plenty of work. .Net controls have very valuable properties, like SelectedIndex, TabIndex.

Do not employ exceptions if you deal with a foreseeable condition that can be programmed using regular constructs.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.