Unit 3 Project Complete Solution
- Note that each customer should own one boat (i.e. the ID number of the boat they own in the Customer instance should be associated with a valid boat identification number in the Boat instance). Also note that each customer will rent one slip (i.e. their slip rental number in the Customer instance should be associated with a valid slip identification number in the Slip instance). You may want to make sure the size of the boat will fit in the size of the slip; that will become an issue as this project progresses.
- Assumption: each customer will only be owner of one boat and will only rent one slip.
- As mentioned in previous Units, in a production program you would need robust error checking and user input validation, to provide your user with a complete menu system, and to make sure that there were no conditions in which your program would end unexpectedly (i.e. you would want to catch and handle all error conditions). However, this program is a prototype of various tasks, not a production program. At this point I do not expect advanced error checking, complicated menus, etc.; just carry out the tasks asked of you, based on the requirements of the program.
- You are expected to follow the "General Directions" found in the "Course Project Instructions" link on our course page.
· (1) Create Classes for each of the object types that need to be stored, as indicated above. (See Note #3 in Programming Notes below.)
· (2) Create an array of Customer objects. You should populate the array with 4 to 6 customers, entering information into all fields of the Customer object. Again they should be created in "non-alphabetical" and "non-numeric" order as far concerns their last name and customer ID. . (Again, see Note #3 in Programming Notes below to understand how to populate Objects with data.)
· Display the total number of customers that exist.
· Print Customer information about each customer. You can either print all information (fields), or print customer ID, last name, first name, boat number, and slip number (excluding address and phone number).(See Notes #4 and #5 in Programming Notes below.)
· (3) Create an array of Boat objects. You should populate the array with as many boats as you have customers (since we assume one boat per customer), entering information into all fields of the Boat object. (The boat numbers in the Customer and Boat objects should match.)
· Present the "total" value of all boats moored at HVM as a sum (in dollar amount, formatted properly).
· (4) Create an array of Slip objects. You should populate the array with 10 slips, entering information into all fields of the Slip object. (Make sure that all customers have a valid slip number in their information, and mark that slip as rented.)
· Display the total number of slips that exist.
· Print out all information for the slips that are currently rented (only).
Unit 3 Programming Notes:
1. Even though you will be submitting four separate .cs files (one for each class object and one "driver/test" program), it is suggested that you create them all as one Visual Studio Project, if that is what you are using for your C# programming.
2. See this diagram of the objects in this project and their relationships: U3-Object-Diagram.png. However, please note that in this example we are *not* doing a relational database query (like an SQL statement) as we would if this were a true database implementation. We have not yet learned the features of C# (such as LINQ) that will allow us to easily do this. Therefore, in this assignment, do not try to tie together the Boat_Number or SlipID in the Customer object, with the Boat_Number or SlipID in the Boat and Slip objects.
3. See the discussion on pages 269 through 274 to understand how Constructors are used to populate Objects with data. Also see "Create-Populate-Class-Object.txt", which is a file containing two separate .cs files, showing an example of how to create and populate a class object without creating getters/setters for each element; this is not real clear in chapter 7 of your textbook.
4. For printing elements of an object (or an entire object), you can either print the elements in the process shown on page 289, or you could override the ToString (as shown in Chapter 8).
5. In order to access elements of an object individually, you will need to assign "getters" and "setters", and set their protection levels properly. Consider using the auto-implemented property as explained on pp. 256-259.
Unit 3 Deliverables:
· A Customer Class file.
· A Boat Class file
· A Slip Class file.
· A C# test program that carries out the processes indicated above.