CPSC 451 Formal Proposal Document March 5, 1996

The Virtual Realty Database System TM
Version 1.0



Created exclusively for PowerMax Realty by


Tuesday March 5, 1996



Table of Contents Homepage

1.0 Introduction


1.1 Purpose

The system is a real estate catalogue. It will keep track of a large number of property listings. The system will provide users with a convenient way to display information about listings, and give real-time exposure of listings to the whole market. A listing contains the following information:

Fig 1. Main Screen

1.2 Users

The system is designed with four different types of users in mind: Customers, Realtors, and Administrators. Corresponding to these are three user modes, `Buyer Mode', `Realtor Mode', and `Administrator Mode'. The mode the system is in depends on the status of the user. This information is stored with the user's `Login Name' and `Password'. The `Login Name' `guest' is reserved for `Buyer Mode'.

1.2.1 `Buyer Mode'

Fig 2. Buyer Search Screen

Customers are potential buyers or sellers of properties, and they use the system in `Buyer Mode'. They can display all information on a listing with the exception of the owners' info, the listing agent's comments and the offers made. The ability to search the data base for all listings that satisfy given requirements is vital. For example, a customer might want to view all listings that are between $100,000 and $150,000; are in the North West; and have an attached garage.

1.2.2 `Realtor Mode'

Fig 3. Realtor Search Screen

In terms of searching the catalogue, realtors have the same needs as customers. Realtors also can modify their own personal information, which includes:

Finally, realtors can enter new listings into the database, modify their own listings, view all their own listings, and make offers on listings.

1.2.3 `Administrator Mode'

The administrator maintains the system. This involves the ability to enter, view, change and delete all information on the system including listing information, agent information, and seller information, as well as the ability to back up and restore information to and from long-term secondary storage.

Fig 4. Administrater Search Screen

1.3 Hardware Requirements

The system will include a network of personal computers connected to one or more servers. Colour scanners, a colour laser printer, and an exabyte tape streamer.


2.0 User Interaction


2.1 Login

Fig 5. Login Screen

2.1.1 Purpose:

2.1.1.1 `Login' allows users to log in to the system.

2.1.2 Sample Call:

2.1.2.1 Jill, a realtor, wants to log in to the system. She launches the application by double clicking on the icon representing the program in the Windows Program Manager. A login dialog is automatically presented. She enters her `Login Name', her `Password', and presses 'OK'. The login window is replaced by the main window, with the system in realtor mode.

2.1.3 Inputs:

2.1.3.1 The user must enter a `Login Name' and a `Password'. The system is placed in the mode appropriate for the user that has logged in (Realtor, Administrator). Buyers could log in as user 'guest' and be placed in Buyer mode (no password is required when logging in as 'guest'). It is possible to avoid having the login screen appear at all by including a login name (and password, if necessary) in the command line used to launch the program. `Command Line' is a property of Windows Program Manager icons. This feature is most useful when used to launch the program with the user "guest". In such a circumstance the program would automatically be brought up in Buyer mode with no login screen appearing. Alternatively, a similar command line could be placed in a computer's AUTOEXEC.BAT file (which is run when the computer is first turned on) so that the program is loaded and brought up in Buyer mode whenever the computer is booted.

2.1.5 Subroutines Called:

2.1.5.1 User verification is handled by the Access database.

2.1.6 Preconditions/Assumptions:

2.1.6.1 None.

2.1.7 Algorithm:

    Display Login Window
    while (NOT Cancel OR OK)
      Enter in UserName and Password
      if Valid UserName and Password
        show main form
      else
        display error
2.1.10 Called By:

2.1.10.1Automatically called at program launch.

2.1.11 Limitations:

2.1.11.1 None.


2.2 Search:

2.2.1 Overview:

2.2.1.1 Our system will have three different modes of access:

  1. Buyer Mode
  2. Realtor Mode
  3. Administrator Mode
2.2.1.2 Buyer Mode consists of a search function, which is the main task of the system. It allows the user to search the company's database for listings that conform to the user's specified preferences. This search function is available to all users with any level of access. When initiated with a realtor or administrator level of access, the screen includes pull-down menus in the upper left corner containing further functionality inherent with their needs.

2.2.1.3 Regardless of the user's access level, there is dynamic help available at all times. Whenever the pointer moves over a region of the screen associated with some function of the program, a description of its functionality is displayed in the help area set aside at the bottom of the screen. Sample screens and flowcharts illustrate the layout and functionality of each task involved in a search.


2.2.2 Adjust Search Parameters:

2.2.2.1 Purpose:

2.2.2.1.1 The system is designed to provide the user with all of the tools needed for a comprehensive search on a single screen.

2.2.2.2 Sample Call:

2.2.2.2.1 The user is presented with search options that can be set to query the PowerMax Realty Database for houses on the basis of :

2.2.2.2.2 The user can either readjust the options or click on `Search'. The search options become deactivated, yet visible. A set of listings appear in the upper right scroll box.

2.2.2.2.3 Roger and Beth are planning to be married in a few months. They have come to PowerMax Realty to help them get a great start on their new life together with a new home. They know nothing about buying houses, but they do know what they want in a house. Beth sees the Buyer's Search Screen and immediately understands that they can search for a house with exactly the requirements they want. Roger points out that they should get a home in the SE, so Beth quickly clicks on the SE check box. He then suggests that they adjust the search to include a two-car garage, for when they have a bigger family (he grins at her). She then sets the number of bedrooms to three in anticipation of a bigger family. The rest of the options they leave at the default settings. Beth clicks on the `Search' button on the right of the screen. The happy couple are pleased to see that fifteen listings are returned.

2.2.2.3 Input:

2.2.2.3.1 Each of the search options have designated default settings. The buyer can change these settings by manipulating the controls in the options box at the top left of the screen. Pull-down menus allow for a choice of the ranges of price, square footage, style, number of bedrooms, basement, garage, age, and lot size. `Rent' and `Buy' are chosen as search parameters by selecting radio buttons. The four quadrants of the city (NE, SE, NW, SW) are each represented by a check box. The scope of the search can be widened or narrowed by selecting any, or all, of these buttons. A user can enter a house reference number in the field provided, and if he should do so, all of the other options fields become unavailable, because at that point, they are superfluous.

2.2.2.3.2 Clicking on the `Search' button, which is located prominently in the Search Options pane, initiates the search.

2.2.2.3.3 Realtors and Administrators may limit the results of their searches by means of the `Own' and `All' radio buttons located above the `Search Results' list box. If the `All' button is selected, all properties matching the criteria in the `Search Options' area will be displayed in the list box. If the `Own' button is selected, only those listings entered into the database by the particular user of the program will be displayed.

2.2.2.4 Output:

2.2.2.4.1 The results of the search are listed in the scroll box on the upper right of the screen. The listings are displayed in alphabetical order according to the region or community within each of the chosen quadrants. The search options which are manipulated by pull-down menus and check boxes are left visible to the user while viewing search results. A new search is not initiated until the `Search' button is again pressed.

2.2.2.4.1 The results of the search can be limited by realtors or administrators by means of the current selection of the `Own' and `All' radio buttons. If the `Own' button is selected, only those listings matching the search options that entered by the current user will be displayed, otherwise all matching listings will be displayed.

Fig. 6 - Flowchart outlining Basic Search function

2.2.2.5 Preconditions/Assumptions:

2.2.2.5.1 By default, it is assumed that if a user does not specify a value or range for a search option, then all listings will be accepted -- e.g. if no choice is made for the price fields, then properties of all values will be displayed after a search.

2.2.2.6 Post Condition:

2.2.2.6.1 All listings meeting the given criteria are listed in the search result pane.

2.2.2.7 Error Handling:

2.2.2.7.1 If no listings are found that satisfy the current search conditions, a pop-up box displays a "Sorry, No Listings Found" message.

2.2.2.8 Limitations:

2.2.2.8.1 Dynamic searching is unavailable. The user must hit the `Search' button each time he or she wishes to make a new search. 2.2.2.8.2 Searching by reference number is only possible for realtors and administrators since it is to be assumed at least initially that terminals dedicated to buyer use have no keyboard. Sample Dialogue:


2.2.3 View/Print a Listing

2.2.3.1 Purpose:

2.2.3.1.1 When a buyer is interested in a listing that was found during a query, clicking on it within the listbox brings up detailed information about that particular listing and a picture of the property, displayed at the bottom of the screen. The details of the listing, such as the asking price/rent, size of the lot/property, the parameters involved in the search, as well as other amenities that were not specified in the search are also displayed.

2.2.3.2 Sample Call:

2.2.3.2.1 Mr. Yamaguchi, the big boss, is searching for a property for one of his customers. The customer desires a bungalow for purchase between 190000 and 260000 dollars, 3 bedrooms and an attached two-car garage, but is uninterested in the age of the house or the area of the city. Mr. Yamaguchi smiles to himself at the commission he expects and enters the fields into the Search Options pane of the window. Only two properties meet the customer's specifications, however, so Mr. Yamaguchi has some hard selling to do.

Fig. 7 - Flowchart outlining View/Print function

2.2.3.3 Input:

2.2.3.3.1 Options for the search are entered by means of selecting choices from the pull-down lists in the Search Options pane, with the exception of the reference number, which must be entered from a keyboard. Once the search options are specified, the `Search' button must be pressed.

2.2.3.3.2 If a user clicks on one of the listings in the `Search Results' list box, that listing will be displayed at the bottom of the program window.

2.2.3.3.3 The `Print' button is used to generate a hard copy of the window as it is currently displayed on the screen.

2.2.3.3.4 If the user is an administrator or the realtor who owns the displayed listing, he or she may click on the picture of the listing to display the private information for that listing to which he has access, e.g. the offers made or the lister's comments. If the user then clicks on the private information, the picture is redisplayed.

2.2.3.4 Output:

2.2.3.4.1 If there were no properties which match a set of search options, a pop-up box is displayed for the user stating that fact.

2.2.3.4.2 If there were properties that matched the options, then they are listed in the `Search Results' list box.

2.2.3.4.3 If the user clicked on a listing in the `Search Results' list box, then that listing's information is displayed in the lower left of the window and a picture of the listing is displayed in the lower right.

2.2.3.4.4 If the user pressed the `Print' button, then a paper copy of the window is produced on the printer.

2.2.3.5 Preconditions/Assumptions:

2.2.3.5.1 The information that appears for a listing is modified for different access levels. Regular users, in buyer mode, are presented with general information about the listing that basically correspond with the search options. Realtor level access, and higher, have additional information displayed with each listing. This is private information, such as offers made, listing realtor comments, and owner information.

2.2.3.6 Post Condition:

2.2.3.6.1 After a search is made, users may display information on the results of the search or make a new search. Realtors and administrators can view more information than general users.

2.2.3.7 Error Handling:

2.2.3.7.1 If a search returned no successful matches, a dialog box is displayed.

2.2.3.8 Limitations:

2.2.3.8.1 Cannot view more than one listing at the same time. A set of listings cannot be selected for a batch printing job. Each individual listing must currently be in the View/Print window in order to produce a hardcopy.


2.2.4 Clear Search Options / Start New Search

2.2.4.1 Purpose:

2.2.4.1.1 The user invokes the Clear Options function in order to begin a completely new search.

2.2.4.2 Sample Call:

2.2.4.2.1 Roger and Beth click on the `Clear' button and approach Mr. Yamaguchi about their house. Meanwhile, a young man named Bill approaches the terminal and sees the screen. While he waits for a realtor to free up he decides to search for a nice little condo on the computer. He has no experience with computers at all, and has always felt overwhelmed by some of the complicated programs he has seen. Until seeing this screen, he has not even considered the aid computers could be in anyone finding a new home. The settings are at default, so Bill begins his search unhindered by choices. When he sees a listing he likes, Bill clicks on it. The information on the property appears at the bottom of the screen, exhibiting the most beautiful condo Bill had ever seen.

2.2.4.3 Input:

2.2.4.3.1 The user presses the `Clear' button.

2.2.4.4 Output:

2.2.4.4.1 All of the option fields in the `Search Options' area are reset to their default values.

Fig. 8 - `Clear' Function Flowchart

2.2.4.5 Preconditions/Assumptions:

2.2.4.5.1 There are no preconditions to the use of this facility.

2.2.4.5 Post Condition:

2.2.4.5.1 The resulting state of the system is always the initial start state, with the 'Welcome to PowerMax' Screen in the bottom window, and all of the search options set to default values.

2.2.4.6 Error Handling:

2.2.4.6.1 There are theoretically no errors possible.

2.2.4.7 Limitations: 2.2.4.7.1 There are theoretically no limitations to a user's fun with this button.


2.3 Make an Offer

2.3.1 Purpose:

2.3.1.1 `Make Offer' allows the listing realtor of a property to enter an offer for that property.

2.3.2 Sample Call:

2.3.2.1 Jack, a realtor, is going to make an offer the house with property reference number 1234 for one of his clients. He enters the reference number 1234 in the reference number field and presses the `Search' button, causing information on that property to be shown. He chooses `Make Offer' from the Realtor pulldown menu to enter the offer.

Fig. 9 - `Make Offer' Function Screen Snapshot

2.3.3 Inputs:

2.3.3.1 Once the listing realtor selects `Make Offer' from the pulldown menu, a popup screen appears which displays the reference number of the listing for which to make the offer. The listing realtor can then enter the offer for listing and press the `OK' button to store the it in the database, or press the `Cancel' button to exit without entering an offer. An offer must be a positive integer number of dollars.

2.3.4 Outputs:

2.3.4.1 Unless there is an error, there are no outputs visible to the user.

2.3.5 Subroutines Called:

2.3.5.1 This function will call a subroutine to generate the popup screen. When the user presses `OK', a subroutine is called to validate the offer. A final subroutine is then called to enter the offer into the database.

2.3.6 Preconditions/Assumptions:

2.3.6.1 There are no preconditions or assumptions.

2.3.7 Algorithm:

Pesudocode
----------
    Display Make an Offer window
    while (NOT Cancel OR OK)
      Enter in Offer
      if OK button pressed
        if entry valid 
          enter offer into database
        else
          display error message
    Close Make an Offer window

Fig. 10 - 'Make an Offer' Function Flowchart

2.3.8 Post Condition:

2.3.8.1 After this function is finished, the offer is stored in the database and can be used for future reference. This offer will appear in the listing information window when a realtor or administrator clicks on the picture.

2.3.9 Error Handling:

2.3.9.1 In case the offer is not a positive integer the listing realtor will be informed via a popup window and can try again by choosing `OK'.

2.3.10 Called By:

2.3.10.1 This function is selected from the pull-down menu `Realtor' on the main search screen. It is only accessible to the lising realtor for the current listing.

2.3.11 Limitations:

2.3.11.1 There are no limitations to a realtor's action on this function.


2.4 Modify Listing

Fig. 11 - Modify Listing

2.4.1 Purpose:

2.4.1.1 The `Modify Listing' selection will allow a realtor or administrator to change any of the data pertaining to a listing:

2.4.2 Sample Call:

2.4.2.1 Jack, a realtor, would like to change the price for one of his listings from $110,000 to $140,000. When he selects `Modify Listing' from the `Realtor' pull-down screen, the `Modify Listing' screen appears with all the field data visible. The listing displayed corresponds to the reference number from the Realtor/Administrator screen. He moves the mouse cursor to the `Price' field, deletes the previous $110,000 price, and types in "140000". Jack selects the `Save' function to save the changed listing to the database, and the database is changed. Finally, he selects `OK' and returns to the Realtor/Administrator screen. Mr. Yamaguchi would be proud of Jack's proficiency with the program.

2.4.3 Inputs:

2.4.3.1 When the user selects `Modify Listing' from the pull-down menu, a pop-up screen appears. This has text boxes with the previous listing data. The user can change any data in the text boxes and save them (and exit) by pressing the `OK' button. To not save any changes made or to just exit, the user can press `Cancel'.

2.4.3.2 Valid entries for each field are as follows:

2.4.3.3 The `Accept Offer' button makes the listing immune to further `Make Offer' operations and replaces the original picture with a new picture with a big `SOLD' sign and a timestamp indicating the time and date of the sale.

2.4.4 Outputs:

2.4.4.1 If `Cancel' is selected, the `Modify Listing' pop-up screen disappears and no changes are made to the database.

Fig. 12 - `Modify Listing' Function Flowchart

2.4.5 Subroutine Calls:

2.4.5.1 This function will call a subroutine to generate the pop-up screen. When the user presses `OK', a subroutine to check the validity of all entries must be made. Then to save the changed listing to the database, another subroutine must be called.

2.4.6 Preconditions/Assumptions:

2.4.6.1 No real assumptions are being made. No assumptions are made about the validity of any entries.

2.4.7 Algorithm:

    Display Modify Listing window
    while (NOT Cancel OR OK)
      Enter in Listing Information
      if OK button pressed
        if listing valid 
          enter Listing into database
        else
          display error message
    Close Modify Listing window
2.4.8 Post Condition:

2.4.8.1 After this function is finished, a modified listing is saved to the database, replacing the old one, and the user is returned to the previous Realtor/Admin screen.

2.4.9 Error Handling:

2.4.9.1 In case any entries are invalid, the user will be informed via a pop-up window that (for example) in the price field, there are invalid characters. In case a save is not possible to the database, a pop-up window will inform the user that a save to the database is not possible at this time.

2.4.9.2 A property that has been sold -- i.e. for which the `Accept Offer' button has been pressed -- cannot have new offers made on it.

2.4.10 Called By:

2.4.10.1 This function is selected from the pull-down menu `Realtor' on the main Realtor/Administrator search screen.

2.4.11 Limitations:

2.4.11.1 It would be a nice feature to limit the characters that can be entered for each field. For example, when selecting a price for a listing, only numbers are allowed to be entered.


2.5 Insert a New Listing

2.5.1 Purpose:

2.5.1.1 `Insert New Listing' allows a realtor to enter a new listing into the database, with the resulting listing belonging to the realtor.

2.5.2 Sample Call:

2.5.2.1 Jill, a realtor, would like to insert a new listing into the database. When she selects `Insert New Listing' from the `Realtor' pulldown menu a popup screen appears. She first associates a previously scanned photograph of the property with the listing. She continues to fill in the price, square footage, etc. After she has filled in all the information she selects `OK' to save the listing in the database.

2.5.3 Inputs:

2.5.3.1 Once the listing realtor selects `Insert New Listing' from the pulldown menu, a popup screen appears. This is the same as the one that appears when a realtor chooses the `Modify Listing' option. The realtor can then enter all the information for listing and press the `OK' button to store the it in the database, or press the `Cancel' button exit without entering the listing.

2.5.3.2 Valid entries for the fields are as follows:

2.5.4 Outputs:

2.5.4.1 If the `Cancel' button is chosen, the Insert New Listing popup screen disappears and the database is not changed.

Fig. 13 - `Insert a Listing' Function Flowchart

2.5.5 Subroutines Called:

2.5.5.1 This function will call a subroutine to generate the popup screen. When the user presses `OK', a subroutine is called to to validate all entries. A final subroutine is then called to enter the new listing into the database.

2.5.6 Preconditions/Assumptions:

2.5.6.1 It is assumed that the listing is new, i.e., there is not a listing for the same property in the database.

2.5.7 Algorithm:

    Display Insert New Listing window
    while (NOT Cancel OR OK)
      Enter in Listing Information
      if OK button pressed
        if listing valid 
          enter Listing into database
        else
          display error message
    Close Insert New Listing window

2.5.8 Post Condition:

2.5.8.1 After this function is finished, the listing is assigned a unique reference number and saved to the database. The listing belongs to the current realtor. The realtor then returns to the previous Realtor/Admin screen.

2.5.9 Error Handling:

2.5.9.1 In case any entries are invalid, the user will be informed via a popup window that (for example) in the price field, there are invalid characters. In case a save is not possible to the database, a popup window will inform the user that a save to the database is not possible at this time.

2.5.10 Called By:

2.5.10.1 This function is selected from the pull down menu `Realtor' on the main search screen.

2.5.11 Limitations:

2.5.11.1 As in `Modify Listing', it would be a nice feature to limit the characters that can be entered for each field.


2.6 Delete a Listing

2.6.1 Purpose:

2.6.1.1 `Delete Listing' allows the listing realtor of a property or the administrator to remove that property from the active search list. If a listing is deleted it is no longer visible during a search.

2.6.2 Sample Call:

2.6.2.1 Jack, a realtor, has sold a house with property reference number 1234 for one of his clients. He searches for that property, and then chooses `Delete Listing' from the Realtor pulldown menu to delete the listing.

2.6.3 Inputs:

2.6.3.1 Once the listing realtor selects `Delete Listing' from the pulldown menu, a popup screen appears. The listing realtor can then press the `OK' button to delete it, or press the `Cancel' button exit without deleting the listing.

2.6.4 Outputs:

2.6.4.1 After clicking `OK' a popup window will appear requesting the realtor for confirmation. If the `Cancel' button is chosen, the `Delete Listing' popup screen disappears. In either case, the main window is re-enabled.

2.6.5 Subroutines Called:

2.6.5.1 This function will call a subroutine to generate the popup screen. When the user presses `OK', a subroutine is called to to generate the confirmation popup window. A final subroutine is then called to delete the listing.

2.6.6 Preconditions/Assumptions:

2.6.6.1 There are no preconditions or assumptions.

2.6.7 Algorithm:

    Display Delete Listing window
    while (NOT Cancel OR OK)
      if OK button pressed
        delete Listing from database
    Close Delete Listing window

2.6.8 Post Condition:

2.6.8.1 After this function is finished, the listing is no longer available from the search screen.

2.6.9 Error Handling:

2.6.9.1 In case the listing cannot be deleted the realtor will be informed via a popup window. If the user is not an administrator and the listing does not belong to him or her, then the operation fails and a pop-up box is displayed with an error message.

2.6.10 Called By:

2.6.10.1 This function is selected from the pull-down menu `Realtor' on the main search screen.

2.6.11 Limitations:

2.6.11.1 A realtor may not delete a listing which belongs to anyone except himself or herself. An administrator may delete any listing.


2.7 Modify Personal Info:

2.7.1 Purpose:

2.7.1.1 The `Modify Personal Info' menu selection allows a realtor to modify his or her personal information, including:

2.7.2 Sample Call:

2.7.2.1 Jack has changed his pager and has a new Motorola(TM) mobile phone, so he is trying to update his personal information. He chooses `Modify Personal Info' from the `Realtor' pull-down menu and his personal information is then shown. He can update his pager number and enter the mobile phone number into the `Contact Phone Number' field. He can then save it and his personal infomation is updated.

2.7.3 Inputs:

2.7.3.1 Once the listing realtor selects `Modify Personal Info' from the pull-down menu, a pop-up screen appears, showing the realtor's personal information. The realtor can then change any personal information and press the `OK' button to save the changes, or press the `Cancel' button exit without making any changes.

2.7.3.2 Valid entries for the fields are as follows:

2.7.3.3 The `Change Password' button summons a dialog box which demands the new password twice for confirmation. At no time is the password actually displayed to the user in plaintext.

2.7.4 Outputs:

2.7.4.1 If the `Cancel' button is chosen, the `Modify Personal Info' pop-up screen disappears.

2.7.5 Subroutines Called:

2.7.5.1 This function will call a subroutine to generate the popup screen. When the user presses `OK', a subroutine is called to to validate all entries. A final subroutine is then called to enter the new listing into the database.

2.7.6 Preconditions/Assumptions:

2.7.6.1 It is assumed that the listing is new, i.e., there is not a listing for the same property in the database.

2.7.7 Algorithm:

    Display Modify Personal Info window
    while (NOT Cancel OR OK)
      Modify Personal Info
      if OK button pressed
        modify information in database
    Close Modify Personal Info window

2.7.8 Post Condition:

2.7.8.1 After this function is finished, a modified personal record is saved to the database and the realtor returns to the previous Realtor/Admin screen.

2.7.9 Error Handling:

2.7.9.1 In case any entries are invalid, the user will be informed via a pop-up window that (for example) in the phone number field, there are invalid characters. In case a save is not possible to the database, a pop-up window will inform the user that a save to the database is not possible at this time.

Fig. 14 - 'Modify Personal Information' Function Flowcharts

2.7.10 Called By:

2.7.10.1 This function is selected from the pull-down menu `Realtor' on the main search screen.

2.7.11 Limitations:

2.7.11.1 As in `Modify Listing', it would be a nice feature to limit the characters that can be entered for each field.


2.8 Reassign Listing

2.8.1 Purpose:

2.8.1.1 `Reassign Listing' enables an administrator to take a listing from one realtor and give it to another realtor.

2.8.2 Sample Call:

2.8.2.1 The big boss at the PowerMax Realty office, the respected and feared Mr. Yamaguchi, has decided to terminate the employment of Ms. Sato, one of the realtors in the office. However, before he can call security to have her escorted to the door, he has to make sure she can't take any of the company's privileged information with her. Mr. Yamaguchi selects "Naomi Sato" from the `Original Realtor' list and "Ken Yamaguchi" from the `New Realtor' list, and since he is reassigning all of Ms. Sato's listings, he selects the `All Listings' radio button. Finally, he presses `OK' to confirm the operation and leans back in his chair, satisfied with a good beginning to another good day at PowerMax Realty.

2.8.3 Inputs:

2.8.3.1 After the `Reassign Listing' control has been invoked, a dialog box appears. The administrator must then select the realtor from whom listings are to be taken from the `Original Realtor' list control and the realtor to whom listings are to be given from the `New Realtor' list control. By selecting one of the two radio buttons, the administrator can choose either to reassign only one listing or to reassign all of an original realtor's listings. If the administrator chooses to reassign only one listing, he or she must also enter the reference number of that listing; if there is a listing currently visible in the search window, that listing's reference number is entered into the `Reference #' field by default. Finally, the administrator must choose either `OK' to accept the transfer or `Cancel' to abort the operation.

2.8.4 Outputs:

2.8.4.1 If the `Cancel' button is chosen, the `Reassign Listing' pop-up screen disappears. After all is done, the main window is re-enabled.

Fig. 15 - `Reassign Listing' Function Screen Snapchot

2.8.5 Subroutines Called:

2.8.5.1 This function will call a subroutine to generate the pop-up dialog box. When the user presses `OK' on the dialog box, a subroutine will be necessary to check the reference number. A final subroutine is then called to switch the listing.

2.8.6 Preconditions/Assumptions:

2.8.6.1 There are no especial preconditions or assumptions.

2.8.7 Algorithm:

    Display ReAssign Listing window
    while (NOT Cancel OR OK)
      Choose realtors from `Original Realtor' and `New Realtor' list controls 
      Select either of `One Listing' or `All Listings' radio buttons 
      If `One Listing' selected, enter listing reference number 
      if ok button pressed
        if invalid inputs
          error message
        else
          make changes to database
    Close ReAssign Listing window

Fig. 16 - `Reassign Listing' Function Flowcharts

2.8.8 Post Conditions:

2.8.8.1 If the user selected the `OK' button in the dialog box and all the inputs were valid, then the listing will have been reassigned to the new realtor. If the administrator wants to make sure that the listings have been properly reassigned, he or she can choose the `View Realtor Listings' button to see all of the listings of each realtor.

2.8.8.2 If the user selected the `Cancel' button in the dialog box, the operation will have had no effect at all.

2.8.9 Error Handling:

2.8.9.1 The dialog box must check to see if a reference number exists and represents a listing that is actually assigned to the original realtor.

2.8.9.2 The dialog box must not present the name of the selected original realtor in the new realtor list, nor may it present the name of a selected new realtor in the original realtor list.

2.8.9.3 The dialog box will not present names of realtors who have no listings as original realtors.

2.8.9.4 The dialog box must only exit when `Cancel' is pressed or when `OK' is pressed and all the fields are valid.

2.8.10 Called By:

2.8.10.1 This function is selected from the pull-down menu called `Administrator' on the main window, so it is called by the event handler for the main window.

2.8.11 Limitations:

2.8.11.1 To reassign more than one of a realtor's listings but fewer than all of them, this function must be invoked once per reassignment.


2.9 View/Modify Employee Information

2.9.1 Purpose:

2.9.1.1 `View/Modify Employee Info' changes the information that PowerMax Realty keeps about its employees.

2.9.2 Sample Call:

2.9.2.1 Ms. Goro, a realtor with PowerMax Realty, has just finished taking a degree in Computer Science in her spare time. Accordingly, the powers that be at PowerMax Realty have decided to give her Administrator access to their database. Mr. Yamaguchi, the big boss in Ms. Goro's office, calls up the `View/Modify Employee Info' dialog box and selects Ms. Goro's name in the `Name' control. All of Ms. Goro's current statistics are displayed in the various fields of the dialog box, but all Mr. Yamaguchi does is change the `Realtor' display in the `Access Level' control to `Administrator'. Now Ms. Goro can do anything Mr. Yamaguchi can do.

Fig. 17 - `View/Modify Employee Information' Function Screen Snapshot

2.9.3 Inputs:

2.9.3.3 The administrator may type in the name of a PowerMax employee or alternately may select the name from the scrolling list.

2.9.3.4 The only other field that must be filled in is the `Access' field. All others are optional.

2.9.3.5 The `Change Password' button summons a dialog box which demands the new password twice for confirmation. At no time is the password actually displayed to the user in plaintext.

2.9.4 Outputs:

2.9.4.1 If at any time the administrator presses the `Cancel' button, the operation in progress is aborted and control reverts to the main window.

2.9.4.2 If the user presses the `OK' button without having entered all the input necessary, an informative message appears and the dialog remains.

2.9.4.3 If the operation was successful, then the employee record referenced by the `Name' field is altered appropriately.

2.9.4.4 If the operation was successful, all of the listings owned by the employee referenced by the `Name' field are shown in the `Realtor's Listings' list box.

2.9.5 Subroutines Called:

2.9.5.1 This function requires subroutines to create a dialog box, to print useful feedback messages, and to read and write records in the employee database.

2.9.6 Preconditions/Assumptions:

2.9.6.1 To use this function, it will be necessary to have summoned the `View/Modify Employee Info' item from the `Administrator' menu and then to have selected the `Change Employee' radio button on that dialog box.

Fig. 18 - 'Modify Employee Information' Function Flowcharts

2.9.7 Algorithm:

2.9.8 Post Condition:

2.9.8.1 If the `Cancel' button was pressed, no changes are made.

2.9.8.2 If the `Ok' button was pressed and all required fields are given, the change is made to the record in the employee database.

2.9.9 Called By:

2.9.9.1 This function is called by the `View/Modify Employee Info' dialog box.

2.9.10 Error Handling:

2.9.10.1 If the user does not fill in enough fields for an operation to succeed and presses the `OK' button, then a short message indicating that a radio button must be selected or that both the `Name' and `Access' fields must be filled in.

2.9.11 Limitations:

2.9.11.1 There are no specific limitations to this function.


2.10 Add a New Employee

2.10.1 Purpose:

2.10.1.1 The purpose of this facility is to be able to add a new employee to the database of PowerMax Realty employees.

2.10.2 Sample Call:

2.10.2.1 Mr. Yamaguchi considers hiring a new realtor to replace the departing Ms. Sato. He interviews several applicants and finally settles on Mr. Taeda as his new realtor. Again he summons the `View/Modify Employee Info' dialog box. This time, he selects the `Add Employee' radio button, and all the other fields in the database await his input. Into the `Name' edit list he types "Hiro Taeda", in the `Access Level' list he chooses "Realtor", and into the `Email Address' edit box he types "". The other fields are left blank, because the new employee doesn't have a pager or a telephone number or even a permanent address, but those fields can be changed later when Mr. Taeda does acquire them. Mr. Taeda himself will have to go to the `View/Modify Personal Info' dialog as soon as possible in order to change his password.

2.10.3 Inputs:

2.10.3.1 The administrator must type in a new name into the `Name' control; this name must be unique amongst all the names of the employees of PowerMax Realty, as it serves as the userid for the database.

2.10.3.2 The only other field that must be filled in is the `Access' field. All others are optional.

2.10.4 Outputs:

2.9.4.1 If at any time the administrator presses the `Cancel' button, the operation in progress is aborted and control reverts to the main window.

2.10.4.2 If the user presses the `OK' button without having entered all the input necessary, an informative message appears and the dialog remains.

2.10.4.3 If operation was successful, then a new employee record is added to the employee database.

2.10.5 Subroutines Called:

2.10.5.1 This function requires subroutines to create a dialog box, to print useful feedback messages, and to read and write records in the employee database.

2.10.6 Preconditions/Assumptions:

2.11.6.1 To use this function, it will be necessary to have summoned the `View/Modify Employee Info' item from the `Administrator' menu and then to have selected the `Add Employee' radio button on that dialog box.

2.10.7 Algorithm:

2.10.8 Post Condition:

2.10.8.1 If the `Cancel' button was pressed, no changes are made.

2.10.8.2 If the `OK' button was pressed successfully, the employee selected is added the database.

2.10.9 Called By:

2.10.9.1 This function would be called by the `View/Modify Employee Info' dialog box event handler.

2.10.10 Error Handling:

2.10.10.1 If the user does not fill in enough fields for an operation to succeed and presses the `OK' button, then a short message indicating that a radio button must be selected or that both the `Name' and `Access' fields must be filled in.

2.10.11 Limitations:

2.10.11.1 There are no specific limitations to this function.


2.11 Delete an Employee

2.11.1 Purpose:

2.11.1.1 The purpose of this facility is to be able to delete an employee to the database of PowerMax Realty employees.

2.11.2 Sample Call:

2.9.2.1 The redoubtable Mr. Yamaguchi is back. Now that he has reassigned all of Ms. Sato's listings to other realtors, he can fire her without worrying that she will take business away from PowerMax. He dials up security to remove her bodily from the office and turns to his computer to finish the job (so to speak). He pulls down the `Administrator' menu and selects the `View/Modify Employee Info' item. The first control is a set of radio buttons indicating the purpose of the modification, and he chooses `Delete Employee'. He scrolls through the list of names until he finds Ms. Sato's name and selects it. Finally, he presses `OK' and after a reassuring message that the system has in fact deleted the hapless realtor, Mr. Yamaguchi is almost content. He changes the guest password and backs up the database, and finally rests upon his laurels. After all that hard work, a manager needs a big lunch.

2.11.3 Inputs:

2.11.3.1 The administrator selects the name from the scrolling list.

2.11.4 Outputs:

2.11.4.1 If at any time the administrator presses the `Cancel' button, the operation in progress is aborted and control reverts to the main window.

2.11.4.2 If the user chose to `Delete Employee' and the operation was successful, then the employee record referenced by the `Name' field is removed from the employee database.

2.11.5 Subroutines Called:

2.11.5.1 This function requires subroutines to print useful feedback messages and to read and delete records in the employee database.

2.11.6 Preconditions/Assumptions:

2.11.6.1 To use this function, it will be necessary to have summoned the `View/Modify Employee Info' item from the `Administrator' menu and then to have selected the `Delete Employee' radio button on that dialog box. Furthermore, the realtor chosen must have precisely zero listings associated with himself or herself.

2.11.7 Algorithm:

2.11.8 Post Condition:

2.11.8.1 If the `Cancel' button was pressed, no changes are made.

2.11.8.2 If the `OK' button was pressed and all fields were entered correctly, the employee selected is removed from the database.

2.11.9 Called By:

2.11.9.1 This function would be called by the `View/Modify Employee Info' dialog box event handler.

2.11.10 Error Handling:

2.11.10.1 If the user does not fill in enough fields for an operation to succeed and presses the `OK' button, then a short message indicating that a radio button must be selected or that both the `Name' and `Access' fields must be filled in.

2.11.10.2 If the administrator does change the employee database, a short message should be displayed in order to confirm to the administrator that the requested change was desired. If not, the operation is aborted.

2.11.10.3 At least one administrator must exist amongst all users. The last administrator account may not be deleted.

2.11.10.4 The guest account may not be deleted.

2.11.10.5 An employee who is associated with more than zero listings cannot be deleted.

2.11.11 Limitations:

2.11.11.1 There are no specific limitations to this function.


2.12 Help

2.12.1 Purpose:

To provide the user with online help.

2.12.2 Sample Calls:

Mr. Yamaguchi moves the mouse pointer over the `Search' button. At the bottom of the screen, the text "Press the SEARCH button and it will start searching according to the specified options" appears.

2.12.3 Inputs:

2.12.3.1 Passing the pointer over active regions or buttons initiates the dynamic help function.

2.12.3.2 Clicking on the Help button on any pop-up dialog box invokes the help system.

2.12.4 Outputs:

2.12.4.1 A text window constantly displays the dynamic help at the bottom of the screen.

2.12.4.2 A Pop-up window with information relative to the user's current task appears when a `Help' button is selected.

2.12.5 Subroutines Called:

2.12.5.1 Subroutines to activate the pop-up window and dynamic help display are called.

2.12.6 Called By:

2.12.6.1 The dynamic help is called by every active region on the main search screen.

2.12.6.2 `Help' buttons on every dialog box invoke the help system.

2.12.7 Preconditions:

2.12.7.1 No other pop-up window can be active for the help to execute.

2.12.8 Algorithm:

2.12.8.1 Case 1: User clicks on help. Help screen pops up

2.12.8.2 Case 2: User passes pointer over active field. Dynamic Help is displayed.

Fig. 19 - `Help' Function Flowcharts

2.12.9 Error Handling:

2.12.9.1 No set parameters for error handling

2.12.10 Limitations:

2.12.10 Inactive when another pop-up window is open.

2.13 Exit the System

2.13.1 Purpose:

2.13.1.1 The purpose of the `Exit' selection is to log off the database and shut down the client window.

2.13.2 Sample Calls:

2.13.2.2 Mr. Yamaguchi, the PowerMax Realty boss, is going home for the day. He moves his mouse pointer over the to `Realtor' button on the main menu bar and selects `Exit' from the pull-down menu. The system closes politely and now all he has to do is deal with the vicissitudes of Windows.

2.13.2.3 After Mr. Yamaguchi has shut down his own machine, he notices that one of the user terminals in the realty office is still on. That terminal is running the Virtual Realty Database client as a non-privileged user, so Mr. Yamaguchi can't exit the same way he exited from the session in his office, but because he knows the secret method for exiting from Buyer mode, he can log off anyway. He walks over to the terminal, clicks in the corners of the computer screen in a special sequence using the right mouse button. A dialog window appears asking Mr. Yamaguchi if he wishes to exit the program. When he confirms that he does, the program closes and system returns to the Windows Program Manager. He makes a mental note to himself to fire somebody tomorrow.

2.13.2.1 Little Reiko-chan is four years old and loves playing with the mouse hanging from the terminal in the office while her parents discuss incomprehensible grownup matters with all the other big people. She plays with the mouse for a while and the screen does interesting things. Eventually, Reiko-chan is dragged away by her parents who are going to visit a property with one of the real estate agents, and all of the other people in the office breathe a sigh of relief that not even an inquisitive four-year-old can put the database into an unusable state.

2.13.3 Inputs:

2.13.3.1 To leave the database via the Exit option, a user selects the `Realtor' button in the menu bar and then the `Exit' button in the `Realtor' pull-down menu.

2.13.3.2 The system menu is available by clicking on the button in the furthest upper left of the application window or by pressing the key combination Alt+Space. Selecting `Close' from that menu will exit the program. As an alternative to selecting the `Close' option directly, a user may double-click on the system menu button, which will select the `Close' operation automatically.

2.13.3.3 When the system has been brought up in Buyer mode, users are prevented from exiting the program in any of the normal ways. In addition, a special feature of the Virtual Realty system is the ability to run it in Buyer mode without the use of a keyboard. In fact a computer designated to be used exclusively by clients could be set up with no keyboard at all. In such a situation it wouldn't be possible to enter a password to exit the program. So, a system that relies entirely on the use of the mouse has been devised. In practice, a user who knows the pass code and wants to exit the program would click on certain "hot spots" on the computer screen in a pre-determined sequence using the right mouse button. For simplicity, the hot spots used are the four corners of the screen.

2.13.3.4 The sequence to be used could be passed in as a command line argument at program start-up (if none is passed, a default sequence would be assumed)(see section 2.1.3.1 for more on command lines). The sequence would never occur in normal program operation, and provided the code supplied was long enough, would be extremely difficult to discover experimentally. For the purpose of defining a sequence, the four hot spots (corners) are designated 'L', 'R', 'l', and 'r' (the uppercase letters refer to the upper corners). For example, if the sequence were 'RrrlLR', the user would have to click using the right mouse button in the upper right corner, twice in the lower right corner, in the upper left corner, and finally in the upper right corner before being presented with a dialog box asking her if she wishes to exit.

2.13.4 Outputs: 2.13.4.1 If the user is an administrator or a realtor, the program simply exits without producing any other output at all.

2.13.4.2 If the program is in Buyer mode (user "guest") and the secret sequence of mouse clicks has been detected, the user is presented with a dialog asking if she wishes to exit. If she selects `Yes', the program terminates. Otherwise, program operation resumes.

2.13.5 Subroutines Called:

2.13.5.1 Function to terminate program.

2.13.6 Called By:

2.13.6.1 The exit procedure is called by the event handler when the user selects `Close' from the `System' menu or `Exit' from the `Realtor' menu, and by the process monitoring mouse clicks when the special sequence has been detected.

2.13.7 Preconditions:

2.13.7.1 None.

2.13.8 Algorithm:

  if user selects either `System/Close' or `Realtor/Exit' then
      Terminate
  else if special sequence detected then
      show exit dialog
      if Yes then
          Terminate
      end if   /* drop through and resume program */
  end if
	
2.13.9 Error Handling:

2.13.9.1 None.

2.13.10 Limitations:

2.13.10.1 Too short a sequence might be arrived at experimentally. Write complicated exit sequences or live with the consequences.


3.0 DATABASE


3.1 Features

3.1.1 There are a variety of features relating to the project. The system was designed so that there were little movement between different screens. This is done because it would be easier to remember information and less time consuming. Each window has several functions that are easier to navigate between major functions.

3.1.2 Database Security

3.1.2.1 Features built into the Microsoft Access database engine will be used to address security issues. Those issues are:

3.1.2.2 All users of the system will be assigned to a group. Those groups will be - Buyer, Realtor (listing and other), and Administrator. Members of the groups are granted appropriate database access privileges. When the application is started, the user will be required to log on by providing a user ID and password. From this the program will be able to determine which group the user is a member of and enable or disable the appropriate program functions. The functions not available to a user will not even be visible. A buyer logged on as a guest would not be aware that special realtor functions exist.

3.1.2.3 To prevent a realtor (using some means outside the application) from seeing the offers made on another realtor's listing, each realtor will be given his/her own offers table which only (s)he and administrators can access.

3.1.2.4 Finally, to prevent someone from determining the contents of the database file by direct inspection, it will be encrypted using Access's built in facilities for doing this.

3.1.3 System Access Groups

3.2 Database Design

3.2.1 All data used by the real estate listing system will be managed by a Microsoft Access relational database system. The database employed will consist of 4 tables. The tables along with the pieces of information they will hold are detailed below.

3.2.2 For those who are interested, table keys are shown as well: