Task description is given
Assessment Details A local real estate agency has contacted you to ask for some software to be developed to be used in their office to assist with the process of managing house sales for their clients. The following is a brief overview of what happens when the agency sells properties: it begins when a homeowner comes to the agency asking the agency to sell the house for them. The first step is the real-estate agent needs to conduct a valuation of the house, to determine the price range that they believe it can sell for. Then a photographer needs to take photos which are used to produce advertisements and brochures. Then there needs to be inspections timetabled where prospective buyers can visit the house to look at it (sometimes called “open for inspection”). After the inspections, some of the people that attended the inspection will place offers to buy the house. The agent then needs to negotiate between the prospective buyers and the home owners, until an agreement is reached with a particular buyer and this allows a contract to be signed. The specific things which the program needs to allow are provided in the section “Functional Requirements Page 2 of 8 Functional Requirements The following are the Functional Requirements (FR) that the program must achieve. FR-1: The program must be a text-console menu-based system The program needs to allow the user flexibility in what actions they perform, and so you should be designing the user interaction to make use of menus, that is, you display to the user a list of the actions that they can perform as a numbered list, and the user selects the desired action by entering the corresponding number. Some actions available in the top-level menu may lead into a period of being in a sub-menu which has a task-specific set of actions that could be done – if so, there needs to be a way to ‘exit’ back to the main/top-level menu. There should be an option to exit/end the program. FR-2: Allow the user to add a new property/seller One of the menu options of the top-level menu, should be to allow the user to enter information about another property to be sold through this real estate agency. The information that is required to be recorded in the system about each House is the address (street name, street number, and suburb/town) and the name and phone number of the owner (only one person’s details per house). After the House’s details have been obtained, it must be possible to retrieve that House’s details at any time in the future while the program is still running. You will need to ensure that the objects recording their details are stored in a manner that allows retrieval later on and it needs to integrate with the requirements of other FRs. You should assume the maximum number of houses the system can have during run-time is 15. FR-3: Allow the user to get a list of the Houses which need to have valuations Another one of the menu options of the top-level menu, should be to allow the user to receive a list of all the newly recorded houses that are yet to have someone go to them to value them. The list should just show the full address of the houses, for example: 321 Abc road, Xyz FR-4: Allow the user to record the valuation of a specific house There must be a way that the user is able to enter the valuation of the price of a house that does not yet have any valuation (i.e. recently added houses). These are in the form of a price range, for example: $450,000-$490,000 might be one house’s valuation. Once the valuation is recorded for a house, it would no longer appear in the list reported by FR-3. FR-5: Allow the user to obtain a list of houses requiring photos Another one of the menu options of the top-level menu, should be to allow the user to receive a list of all the houses that are yet to have a photographer go to them to take photos. The list should just show the full address of the houses and should list only those houses that have not yet had photographs, but which do already have a valuation. (If they have not yet had an evaluation, they are not to be included in this list). FR-6: Allow the user to record a house as ready for inspection There must be a way that the user is able to indicate to the system that a particular house has now had its photographs taken and the advertising/brochure materials produced, which enables that house to be made available for people to inspect it. Once this status-change is done for a house, it will no longer appear in the list of houses reported by FR-5. FR-7: Allow the user to schedule a house “open for inspection” time There must be a way to allow the user to schedule a particular house as being open for inspection at a particular time. Timeslots for a house to be opened for inspection are from the O’clock until quarter-past the hour, and from half-past of an hour until quarter-to of the next hour, over the period of a few hours. On Thursday and Friday, the hours are 2:00pm until 5:45pm, and on Saturday the hours are 9:00 until 12:45pm – so each day has 8 timeslots available. In a given timeslot on a particular day, only 2 different houses can be open – so for example, at 9:30-9:45pm on Saturday, only 2 houses can be open for inspection. However, a given house can be open for inspection in multiple timeslots (e.g. maybe the house at “7 Ronne Rd, Ringwood” will have an open for inspection at 4:00-4:15 on Thursday, and again at 10:30-10:45 on Saturday. FR-8: Allow the user to cancel a scheduled “open for inspection” for a house To aid in being flexible, the user must be able to cancel a previously schedule time for a particular house to be open for inspection, perhaps because the timeslot will be needed for some other house to instead be scheduled at the time. E.g. maybe the 10:30 timeslot needs to be cancelled for the property mentioned in the example in FR-7, so that another property can be scheduled at 10:30. FR-9: Allow the user to see a list of the scheduled inspections for a given day Every week, the agency needs to print a list of the scheduled inspections, to provide to the local newspaper to be included in the housing section of the newspaper. It also needs the list for its staff (to know where they should be going). Selecting this option from the main menu should ask the user which day they want to see the report for (Thursday, Friday or Saturday) and then should display a list showing the times in one column, and the addresses of the one or two houses that are open in that timeslot shown beside it. If there is no house scheduled for that timeslot, the time should still be shown but no house address will appear in that row. FR-10: Allow the user to record/update an offer for buying a house by a potential buyer After the inspections occur, buyers will (hopefully) make offers to buy the houses. Although a house may have been advertised at a particular price, the buyer will usually make an offer that is different, e.g. it may be a few thousand below, or even above, the advertised price. (For a property advertised as being about $460,000, there may be offers that are $440,000 for example). The seller may have a specific amount that they are hoping to get (e.g. maybe this same house, the buyers are happy with anything above $450,000). So there is often a need for the agent to negotiate on the seller’s behalf, with the potential buyers (to try to encourage them to pay a higher amount). Note that all money amounts are recorded in dollars only (no cents). The system should allow the user to record the offers made by up to 4 separate potential buyers. These offers should be able to be adjusted any time until the house becomes “contracted for sale”. For example, perhaps Donald Duck makes an offer of $440,000 for a property initially, and Mickey Mouse makes an offer of $445,000 for the same house. After the agent talks to Donald Duck (and lets them know that “someone else” has made a higher offer), Donald Duck might decide to change his offer to $448,000. But the owners are hoping for higher, and in the mean time Bart Simpson makes an offer of $449,000. So now there are three potential buyers. Note that a house can still be scheduled for future “open for inspections” even if an offer has been made by someone. (e.g. maybe an inspection was on Thursday, and some offers are received on the Friday, but they are too low, so another inspection is scheduled for the Saturday). FR-11: Allow the user to see a list of all the current offers by potential buyers for a given house There must be a menu option to allow the user to see a list of all the offers that have been made for some particular house. Preferably (i.e. to get full marks), this list should be displayed in a descending order from highest-amount offered down to lowest-amount offered, showing the amount offered and the name of the person who made the offer. FR-12: Allow the user to mark a house as contracted for sale The system must allow the user to indicate that the current highest offer made for a given house, will be accepted by the seller. The house will then no longer be able to be scheduled for future inspections, and no one will be able to make or adjust offers to purchase it. FR-13: Allow the user to see a list of all houses that have been contracted for sale The system must allow the user to be able to see a list of all the houses where an offer to purchase the house was accepted by the seller. This list should show the addresses of the house, the amount of the offer for it that was accepted, and who the successful buyer was. NOTE: There is no need to be able to remember any data between separate runs of the program. Other Requirements: These are other things you must address or consider in developing your solution. See also the marking guide at the back. OR-1: Code constructs/elements/techniques that must be used You are expected to make use of the following at appropriate places in the code: · Use selection/decision constructs (and form suitable relational expressions) · Use repetition constructs · Implement aggregation in appropriate places · Use arrays in appropriate places in your work. (Some people may know about ArrayList, but this is not required to be used for this task so you should try avoiding using that.) · Use the Scanner class for