Head Office Interface and Data Module Specifications

Authors


Outline


Head Office System Specifications:

The head office system will enable remote safety checks, control of the station, and report viewing. Each user of the system will have a password and an associated level of access, and will be required to log in before using the system, so that the information contained in the system is not abused. Each process, when initiated, will start a counter which will automatically log the user out after a long period of inactivity. The duration of the wait until logout can be set at the installation of the system, but will be fixed thereafter.

The following Data Flow Diagrams illustrate the hierarchy of menus and processes, as well as the travel of data between individual processes and the database:

Arrows carrying data into the processes from "outside" of the databases represent items which are supplied by the user. An explanation of each process, including the inputs and outputs, is given in detail below.


1 Login Session

The login will ensure that only authorized users have access to the system. The user will be prompted for their user ID, and their password, on a screen similar to the one below. Based on this information, the system will grant or deny access to one of three subsystems:

  1. the Station Control and Reporting subsystem,
  2. the Fuel Delivery subsystem, or
  3. the Administrative subsystem.

Each of these three systems fulfills a different function, so access to each should be kept separate in the interest of keeping unwanted access and accidental changes to the database to a minimum. If it becomes necessary for one person to access two separate subsystems, they can access each through a different password.

[login screen]

Process Description:

The login session is used to verify if the user has the authorization to access the system. The screen will show the Petro 451 Logo, as well as fields for the input of the ID and the password. Once these are input, the ID and the password are sent to the database for verification. If found not to match and no database entry is found, an error message is displayed breifly and the login screen is redisplayed.

If the ID and the password match the information in the database, the level of access for the user will be retreived and, depending on this, the appropriate menu will be activated. Each type of user will be resticted only to the activities authorized by their access level.

Psudocode:

BEGIN
        clear screen;
        display login screen;

        place cursor in "User Name" field;
        input user name from keyboard;

        place cursor in "Password" field;
        input password from keyboard;

        on cliking of "Cancel" button:
                restart process;

        on cliking of "OK" button:
                send user name and password to system configuration database
                if user does not exist,
                        notify user that the login data does not correspond
                                with the database;
                        restrt process;
                if password is incorrect,
                        notify user that the login data does not correspond
                                with the database;
                        restrt process;

                get user's access level;
                if access level = system administation,
                        start system administration subsystem;
                if access level = fuel delivery,
                        start fuel delivery subsystem;
                else,
                        start station control and reporting subsystem;

END


FUEL DELIVERY

2 Fill Tank

For the purposes of fuel delivery, as well as for maintenance, a terminal with a link to the head office system will be available at the station sight.

When a fuel delivery to the station is made, the deliverer will be asked to login to the system. The system will recognize the access level, and allow the user to perform only a very restricted number of operations.

The user will be presented with a screen similar to the following:

[fill tank screen]

Process Description:

The user will first be asked to enter their name for record keeping purposes. Then the screen will show the number of tanks and the type of fuel stored in each, and allow the user to unlock one of these, by clicking on a button corresponding to the appropriate tank. (It will be possible to open only one tank per transaction.) A message will also be displayed, asking the user to enter the amount of fuel dispensed into the tank once the filling is finished.

When the tank is filled, the user will be expected to enter the amount of fuel dispensed. The input will be checked to ensure that it is numeric. If it is not, a message will be displayed asking the user to reenter the value, stressing that units are not required. The input value as well as the new gauge level reading, deliverer's name, and date and time of delivery will will be stored in the central database. The tank is automatically locked and the system will return to the login screen.

Pseudocode:

BEGIN
        clear screen;
        display fuel delivery screen;

        querry database for type of fuel in each tank;
        display fuel type beside tanks;

        place cursor in "user name" field;
        input user name from keyboard;

        on cliking of one of the "open tank" buttons,
                if the "user name" field has not been filled in,
                        ask the user to fill in this field first;
                else
                        remind user to input amount of fuel dispensed
                                after filling the tank;
                        open selected tank;

                place cursor in "amount of fuel dispensed" field;
                input amount of fuel dispensed from keyboard;

                while input is not numeric,
                        ask user to reenter the value;
                        clear the field;

                        place cursor in "amount of fuel dispensed" field;
                        input amount of fuel dispensed from keyboard;

                send transaction date, 
                     time, 
                     user name,
                     user id, 
                     type of fuel delivered,
                     amount of fuel delivered, and
                     new tank level gauge reading to the database;

                restart login session process;

        on clicking of the "Help" button,
                display message explaining the input required
                        to open tanks;

        on clicking of the "Exit" button,
                start the login session process;

END


STATION CONTROL AND REPORTING

3 Main Menu Selection

Calls the following modules:

Calling Sequence:

Process:

        
   begin
        display menu screen;
        get pressed button;
        switch(button)
                case (Change Fuel Price):
                        call ChangeFuelPrice();
                case (Station Operations):
                        call Display_Station_Submenu();
                case (Report):
                        call Report_Submenu();
                case (Help):
                        call Main_Menu_Help();
                case (Quit):
                        call Logout();
        endswitch
   end.     
   

3.1 Change Fuel Price

    1. Syntactically incorrect input(s) from user
    2. Fuel Price is out of range.

Process:

  1. Read the Fuel Price per Litre and Fuel Type from the database Fuel
  2. Display the list of Fuel Price per Litre and Fuel Type
  3. Get the new Fuel Price per Litre (from user).
  4. Get the Fuel Type (from user).
  5. if the Fuel Price is out of range OR syntactically incorrect

Calls modules:

Calling Sequence:

Process:

  
    begin
        upper_bound = 100
        prompt for Fuel Type
        get Fuel Type
        if (Fuel Type not equal to "Regular"
            AND Fuel Type not equal to "Mid Grade"
            AND Fuel Type not equal to "Premium"
            AND Fuel Type not equal to "Diesel")

                display error message
                exit module
        else
                call Fuel.getFuelPrice()
                display Fuel Type
                display Fuel Price
                get Fuel Price

                if (Fuel Price<0  
                    OR Fuel Price > upper_bound
                    OR Fuel Price is not a number)

                        display error message
                        exit module
                else
                        display confirmation
                        get confirmation
        
                        if (confirmation is equal to Yes)
                            call Fuel.setFuelPrice
                        endif
                endif
        endif
                        
    end.                

3.2 Change Maximum Amount Allow for a Single Purchase

Calling Sequence:

Process:

     begin
        upper_bound = 10000
        get maximum amount from configuration database
        display maximum amount
        prompt for maximum amount
        get maximum amount from user
        if (maximum amount < 0
            OR maximum amount > upper_bound
            OR maximum amount is not a number
                
                display error message
                exit module
        else
                
                display confirmation
                get confirmation
        
                if (confirmation is equal to Yes)
                        change maximum amount in configuration database 
                endif
        endif

     end.


Station Operations

3.3 Station Operations Submenu

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        display all buttons;
        get pressed button;
        switch(button)
                case (Activate/Shutdown Facilities):
                        Display_Activate_Screen();
                case (Pump Status):
                        Display_Pump_Status();
                case (Diagnostic Status):
                        Display_Diagnostics();
                case (Tank Status):
                        Display_Tank_Lock();
                case (Help):
                        Station_Operations_Help();
                case (Back to Main Menu):
                        Main_Menu();
                case (Quit):
                        Logout();
        endswitch
end

Station Operations Help

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        display help text info for 6 choices in Station Operations window;
        display return button to return to window;
        get pressed button;
        if(button pressed)
                return;
        endif
end

Process: 3.3.4 Activate/Shutdown Facilities

Allow user to activate or shutdown any of the station facilities.

Description:

This process will diplay the status of all station facilities, and will allow the user to change any one of them from "on" to "off" or "off" to "on". Only one status for each of the station facilities will be selected (ie. button pressed). No single one can ever have both "on" and "off" pressed at the same time. All selections will be buffered as the changes will not take effect immediately but buttons will still be shown pressed according to any changes.

Each of these controlled station facilities will be represented by a pictoral icon with two buttons beside it. The buttons will be tagged "on" and "off" and only one will be shown pressed at all times.

We will assume any manual shutdowns or activations at the station site will require advising Head Office prior to doing so. Therefore, a notification on the system will not be required. We feel that it is not possible to implement and simulate this type of real-time, immediate notification of a manual shutdown or activation, on the system due to the time constraints for the project.

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
array new_pump_status[# of pumps];
array new_tank_status[# of tanks];

        change := 0;

        for i:= 1 to # of pumps do
                pump_status[i] := Pump.status for pump #;
                display icon for this pump_number;
                display on/off buttons and status;
        endfor

        for i:= 1 to # of tanks do
                tank_status[i] := Tank.status for tank #;
                display icon for this tank_number;
                display on/off buttons and status;
        endfor

        display return to Station Operations button;    
        display print button;


        /*****check if any values changed******/
                        
        for i := 1 to # of pumps do
                if (new_pump_status[i] != get_pump_status(i))
                begin
                        change := 1;
                        break for;
                end
                endif
        endfor

        if (change != 1)
        begin
                for i := 1 to # of tanks do
                        if (new_tank_status[i] != get_tank_status(i))
                        begin
                                change := 1;
                                break for;
                        end
                        endif   
                endfor
        endif

        get pressed button
        switch (button)
                case (Print):
                        print_screen;
                case (Return to Station Operations Menu):
                        return_to_SO_from_AS(change);
        endswitch
end

Subprocess: Return to Main Menu From Activate/Shutdown Facilities

To confirm that user changes to station facilities will take effect immediately.

Also write changes to database and initiate station changes if Continue button is selected. Activate/Shutdown Facilities status screen displayed if Redo button is selected. Text window displaying descriptions of each of the three buttons (Continue, Redo, Cancel) and what is the result when selected.

Description:

When something has been changed in the Activate/Shutdown Facilities screen, a flag will be set (Change) to indicate this. So when the screen is exited, a window will appear with a prompt to make sure the user wants to accept the changes. At this time, the user is given four choices (buttons):

All information about changes are kept in a buffer and it is only written back to the database when the changes are accepted (ie. selected Continue button). The Help button will activate a help window with text describing each of the other three buttons. Contained in this window will also be an OK button to return to the previous window prompt.

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        switch(change)
                case (1):  //change
                        choice := confirm();
                        switch (choice)
                                case cancel:
                                        Station_Operations_Menu();
                                        break;
                                case redo:
                                        Display_Activate_Screen();
                                        break;
                                case continue:
                                        update Pump with new_pump_status array;
                                        update Tank with new_tank
                                        Station_Operations_Menu();
                                case help:
                                        help_confirm();
                        endswitch 
                case (1):  //no change
                        Main_Menu();
        endswitch
end

Confirm

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        display window with 4 choices:
                continue button
                redo button
                cancel button           
                help button
        get pressed button;
        close window;
        return pressed button;
end

Help Confirm

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        display help text info for 4 choices in confirm window;
        display return button to return to window;
        get pressed button;
        if(button pressed)
                return;
        endif
end

Process: 3.3.1 Display Pump Status

-Show user the status of all station pumps and related information.

Description:

The activated process will display relevant information about all the pumps located at the station. The screen will be divided into the number of pumps available at the station and each pump will have a section assigned to it for displaying its information. Each pump section will have a numbered icon to represent the pump. Different fuel types will be represented by different icons along with the actual type of fuel in words. This will help distinguish different fuel type immediately. Price per litre and totat gas sold will just be simple numerical values. The pump status, whether it is on or off, will be indicated by a highly visible flag.

All information displayed is taken from the database when this process begins so any changes while the display is up will not be reflected immediately, but will be shown the next time the display in brought up.

A Return to Station Operations Menu button will be available for the user when finished viewing the information.

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        for i:= 1 to # of pumps do
                *info := get_pump_info(i);
                display icon for this pump_number;
                display info->pump_number;
                display info->pump_status;
                display info->fuel_sold;
        endfor

        display return to Station Operations button;    
        display print button;
        get pressed button;
        switch(button)
                case (Print):
                        print_screen();
                case (Return to Station Operations Menu):
                        Display_Station_Operations_Menu();
        endswitch
end

Get Pump Info

Called by the following modules:

Calls the following modules:

Calling Sequence:

Process:

begin
        find data for specified pump#;
        info->pump_number := Pump.pump_number;
        info->pump_status := Pump.pump_status;
        info->fuel_sold := Pump.fuel_sold;
        return info;
end

Process: 3.3.3 Display Tank Lock Info

-Show user the status of all station tanks and related information.

Description:

Information about the status of all the tank locks at the station will be shown in this display. Also included are the fuel types each tank is holding. The display will be divided into parts equal to the number of tanks at the station. Each section of the display will have information on one of the tanks. All tanks will be represented by a numbered tank icon. The fuel types will be represented by different icons depending on the type. There will also be the type in words following the icon. The tank status will be the main focus of this display so it will have a large area devoted to it (in it's section) where it will show whether it is locked or unlocked using highlighted words.

All information displayed is taken from the database when this process begins so any changes while the display is up will not be reflected immediately, but will be shown the next time the display in brought up.

A Return to Station Operations Menu button will be available for the user when finished viewing the information. Called by the following modules:

Calls the following modules:

Calling sequence:

Process:
begin for i:= 1 to # of tanks do *info := get_tank_lock_info(i); display icon for this tank type; display info->tank_type; display info->tank_status; display info->amount_of_fuel; endfor display return to Station Operations button; display print button; get pressed button switch(button) case (Print): print_screen(); case (Return to Station Operations Menu): Display_Station_Operations_Menu(); endswitch end

Get Tank Lock Info

Called by the following modules:

Calles the following modules:

Calling sequence:

Process:

begin
        find data for specified tank#;
        info->tank_type := Tank.tank_type;
        info->tank_status := Tank.tank_status;
        info->amount_of_fuel := Tank.amout_of_fuel;
        return info;
end

Process: 3.3.2 Display Station Diagnostics

-Show user the status of all station equipment and related information.

Description:

Information on station equipment will be displayed on this screen. Each piece of equipment, either it be calibration equipment or tank equipment or pump equipment, will be mentioned in this screen and it will show whether it is OK or NOT OK. This will simply be highlighted text displayed beside the name of the equipment and its icon. Each piece of equipment will have its own icon so it can be identified/located faster.

All information displayed is taken from the database when this process begins so any changes while the display is up will not be reflected immediately, but will be shown the next time the display in brought up. So when a piece of equipment suddenly malfunctions while this display is being viewed, then it will not show up as NOT OK. ***Also note that due to time constraints it is not possible to implement and simulate an real-time, interactive malfunction.***

A Return to Station Operations Menu button will be available for the user when finished viewing the information.

Process: Display Station Operations Menu Help

-Window with an explanation of each of the other 5 buttons on the menu.

Description:

The text window that is displayed will contain information about what the following buttons do:

An OK button will be available for the user when finished viewing the information.

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        *info := get_diagnostics();
        display all diagnostics info;
        display Return to Station Operations Menu button;       
        display print button;
        get pressed button;
        switch(button)
                case (Print):
                        print_screen();
                case (Return to Station Operations Menu):
                        Display_Station_Operations_Menu();                      
        endswitch
end

Get Diagnostics

Called by the following modules:

Calls the following modules:

Calling sequence:

Process:

begin
        make info point to diagnostics;
        return info;
end

Process: Return to Main Menu (utility)

Description:

This utility is called to return from submenus (offering this option) to the Main Menu.


Reports Processing

3.4 Process Reports

Inputs:

Menu selection by clicking the mouse pointer on the desired choice.

Outputs:

A menu is displayed to choose from the following choices:

1) Transaction Report and Backups

2) Statistics Report

3) Monthy Summaries

4) Delivery Report

5) Card Status Report

6) Change Reporting Periods

7) Help

8) Main Menu

Error Conditions:

a) none

  • Called by the following modules:
  • Display Main Menu
  • Calls the following modules:
  • Display Transaction Report
    Display Statistics Report
    Display Monthly Summaries
    Display Delivery Report
    Display Card Status Report
    Change Reporting Periods
    Reports Help
  • Calling sequence:
  • Process_Reports()
  • Process:
  • Displays menu selection
    Get input selection from user
    Switch(selection)

    3.4.1 Display Transaction Report

    Inputs:

    Start Date or Report ID. The user has the option to print out the report.

    Outputs:

    It will display the corresponding report with Report ID, Start Date, Start Time, Stop Date, Stop Time, GST, PST and the Transactions themselves.

    Error Conditions:

    a) Syntactically incorrect inputs in which the system will notify the user and repromt for input.

    b) Start Date or Report ID is out of range or not found in database.

  • Called by the following modules:
  • Process Reports
  • Calls the following modules:
  • Logout
    Process Reports
    Reports Help
    Display Main Menu
    Print Report
  • Calling sequence:
  • Display_Transaction_Reports()
  • Process:
  • Get inputs (start_date, report_ID) from user
    Send request to database with report_ID or start_date passed
    Display report
    Get command from user
    Switch (command)

    3.4.2 Display Statistics Report

    Inputs:

    To print it or not

    Outputs:

    It will display in a table format the current station's statistics. Which includes the Pump Number, Pump Status, Fuel Types, Fuel Price and amount sold for each pump

    Error Conditions: none

  • Called by the following modules:
  • Process Reports
  • Calls the following modules:
  • Logout
    Process Reports
    Reports Help
    Display Main Menu
    Print Report
  • Calling sequence:
  • Display_Statistics_Reports()
  • Process:
  • Send request to database to retrieve statistics report
    Display report
    Get command from user
    Switch (command)

    3.4.3 Display Monthly Summaries

    Inputs:

    Enter the month to be displayed. The user has the option to print out the report

    Outputs:

    The will display the transactions for the month, totals, GST and PSTs. Also the summary of the statistics for the month.

    Error Conditions:

    a) Syntactically incorrect input.

    b) Month entered is out of range or not in database.

  • Called by the following modules:
  • Process Reports
  • Calls the following modules:
  • Logout
    Process Reports
    Reports Help
    Display Main Menu
    Print Report
  • Calling sequence:
  • Display_Monthly_Summaries_Reports()
  • Process:
  • Get the month to be displayed from the user
    Send request to database to retrieve monthly summaries report
    Display report
    Get command from user
    Switch (command)

    3.4.4 Display Delivery Report

    Inputs:

    Enter a range of date to display or a specific delivery id. Also the option to print report.

    Outputs:

    An instance or instances of Delivery is displayed. Which includes Delivery ID, Delivery Date, Delivery Time, Delivery User Last Name, Delivery User First Name, Delivery User ID, Gas Type Delivered, Delivery Tank ID, Delivery Tank Level Before, Delivery Tank Level Added, Delivery Tank Level After and Delivery Total Value

    Error Conditions:

    a) Syntactically incorrect input.

    b) Delivery ID is not in database or date is out of range.

  • Called by the following modules:
  • Process Reports
  • Calls the following modules:
  • Logout
    Process Reports
    Reports Help
    Display Main Menu
    Print Report
  • Calling sequence:
  • Display_Delivery_Report()
  • Process:
  • Get the range of date or a specific delivery id to be displayed from the user
    Send request to database to retrieve delivery report
    Display report
    Get command from user
    Switch (command)

    3.4.5 Display Card Status Report

    Inputs:

    The range of dates credit cards were rejected. Also the option to print the report.

    Outputs:

    The credit card number, card holder's name, status, and the action taken.

    Error Conditions:

    a) Syntactically incorrect input.

    b) The specified range is not in the database.

  • Called by the following modules:
  • Process Reports
  • Calls the following modules:
  • Logout
    Process Reports
    Reports Help
    Display Main Menu
    Print Report
  • Calling sequence:
  • Display_Card_Status_Report()
  • Process:
  • Get the range of dates cards are rejected to be displayed from the user
    Send request to database to retrieve card status report
    Display report
    Get command from user
    Switch (command)

    3.4.6 Change Reporting Periods

    Inputs:

    The date/time of the new reporting period.

    Outputs:

    The date and time of the old reporting period is displayed. A prompt will ask the user if the change is what was intended and if yes then the period is changed.

    Error Conditions:

    a) Syntactically incorrect input.

    b) The specified date or time is not in the database.

  • Called by the following modules:
  • Process Reports
  • Calls the following modules:
  • Logout
    Process Reports
    Reports Help
    Display Main Menu
  • Calling sequence:
  • Change_Reporting_Periods()
  • Process:
  • Retrieve the current reporting period from database
    Get data/time of the new reporting period from the user
    Message box is displayed to verify that user wants change
    If "yes" then update database
    Get command from user
    Switch (command)

    3.4.7 Display Reports Help

    Inputs: None.

    Outputs:

    Displays the functionalties of each of the menu choices. Also how to make a selection.

    Error Conditions: None.

  • Utility module to display help for the reports section
  • Called by the following modules:
  • Process Reports
    Display Transaction Report
    Display Statistics Report
    Display Monthly Summaries
    Display Delivery Report
    Display Card Status Report
    Change Reporting Periods
  • Calls the following modules:
  • none
  • Calling sequence:
  • Reports_Help(section)
  • Process:
  • Switch (section)


    3.5 Main Menu Help

    Called by modules:

    Calling Sequence:

    Process:

      
       Begin
            Display Help Screen;
       end.
    

    3.6 Logout

    Called by modules:

    Calling Sequence:

    Process:

       Begin
            Prompt for confirmation;
            If (confirmation = Yes)
                    close databases
                    call login
            endif
       end. 


    SYSTEM ADMINISTRATION

    4 Administration

    This screen will allow the user to change the user accounts on the system. This will be necessary to update the user database when staff changes occurr. The administration screen will look similar to the following:

    [administration screen]

    When the help button is pressed, the purpose of each option will be displayed, as well as a description of the fields which need to be filled for each.

    The exit botton will log the user out and redisplay the login screen.

    By selecting the appropriate page, one of the following processes will be initiated.

    Pseudocode:

    BEGIN
            clear screen;
            display screen with choice of:
                    add user, (default)
                    delete user, and
                    change password;
    
            on selecting add user,
                    start add user process;
    
            on selecting delete user,
                    start delete user process;
    
            on selecting change password,
                    start change password process;
    
            on clicking the "Help" button,
                    display message describing the current choice;
    
            on clicking the "Exit" button,
                    start the login session process;
    
    END
    
    

    4.1 Add User

    For adding users, the system will send an entry to the user database to be added, according to the fields entered on the add user screen.

    Pseudocode:

    BEGIN
            display "Add User" screen;
    
            place cursor in "name" field;
            input name of user to be added from keyboard;
    
            place cursor in "password" field;
            input password of new user from keyboard;
    
            on clicking one of the access level checkboxes,
                    change access level of the potential user;
    
            on clicking the "OK" button,
                    if all fields are filled,
                            send name,
                                 password, and
                                 access level to the database for addition;
                    else
                            ask user to fill in remaining fields;
    
            on clicking the "Cancel" button,
                    clear all the fields;
                    restart the module;
    
            on clicking the "Help" button,
                    display message describing the field to be filled
                            to add a new user to the database;
    
            on clicking the "Exit" button,
                    start the login session process;
    
    END
    
    

    4.2 Delete User

    For deletion of users, the system will first verify if the user is in the database, and if there is no corresponding entry, will prompt the user to this effect. The administrative account on the system will be unable to delete itself from the system, so that the user database can never be sealed. Before any deletion takes place, the user will be asked to confirm that they wish to delete the specified user from the database.

    Pseudocode:

    BEGIN
            display "Delete User" screen;
    
            place cursor in "name" field;
            input name of user to be added from keyboard;
    
            on clicking the "OK" button,
                    if name field is filled,
                            if user exists in the database,
                                    send name to database for deletion
                            else
                                    notify user that name not found in database;
                    else
                            ask user to fill in remaining fields;
    
            on clicking the "Cancel" button,
                    clear all the fields;
                    restart the module;
    
            on clicking the "Help" button,
                    display message describing the field to be filled
                            to add a new user to the database;
    
            on clicking the "Exit" button,
                    start the login session process;
    
    END
    

    4.3 Change Password

    When a password change is requested, the system will first verify the user's existance, then verify the current password. The user will then be asked to retype the new password, to ensure that it was typed correctly, before it is sent to the user database for updating.

    Pseudocode:

    BEGIN
            display "Change Password" screen;
    
            place cursor in "name" field;
            input name of user to be added from keyboard;
    
            place cursor in "old password" field;
            input old password form keyboard;
    
            if user exists in the database,
                    retrieve password from database;
            else
                    notify user that name not found in database;
    
            if input does not match old password,
                    notify user that incorrect password was entered;
            else
                    place cursor in "new password" field;
                    input new password form the keyboard;
    
                    place cursor in "verify new password" field;
                    input verification of new password from keyboard;
    
                    while verification does not match new password,
                            notify user and ask them to retry;
    
                            place cursor in "new password" field;
                            input new password form the keyboard;
    
                            place cursor in "verify new password" field;
                            input verification of new password from keyboard;
    
                    send name, and
                         new password to database for updating;
    
            on clicking the "Cancel" button,
                    clear all the fields;
                    restart the module;
    
            on clicking the "Help" button,
                    display message describing the field to be filled
                            to add a new user to the database;
    
            on clicking the "Exit" button,
                    start the login session process;
    
    END
    
    


    Head Office Testing Plan

    Introduction:

    Objective:

    The following test cases are supposed to find errors in the designed program. Hence the system will be implemented to successfully handle these errors. For the valid input, the system should follow the procedure and produce the expected output. Also, the system should be consistent (eg, it should produce the same output value everytime for the same input value). Finally, the system should be as user friendly as possible.

    List of tests:

    Each individual module will be tested by specified test cases (see following section). Also, random input or selection will be made to verify that the module could handle most unexpected situations. An integration test will be made to make sure that the system works correctly altogether. A validation test (by some potential users) will make sure that the system will work correctly and easily operated.

    Integration Plan:

    The modules of this system will be integrated in a top-down fasion, once the database system is operational. Testing will generally proceed from the least complex modules (simple menus which do not call the databases, but only start other processes), to the more complex (lower in the menu structure, function wich querry the databases and send information to them).

    Testing Personnel:

    Phong Tu, Les Loh, Francis Nguyen, and Dominik Royko will oversee the testing of the head office system. However, as these were the designers of the system, testers from other departments will be brought in, especially during the random testing and integration testing phases, to ensure that a user new to the system can easily find their bearings in the interface, and that the button labels and error messages are logical and informative.

    Reporting and correcting procedures:

    Errors found will be reported to the implementation staff. The same people responsible for coding a specific module will be responsible for debugging as they will best be able to understand the code. If a design flaw is found, the error will be reported to the design team, where a solution will be sought which minimizes impact on the rest of the existing system.


    Logical Testing of Individual Modules


    Login Session (process 1)

    The following conditions must be tested:


    Fill Tank (process 2)

    The following conditions must be tested:


    3 Main Menu Selection

    Test Description:
    The following test cases are used to make sure that the buttons in the main menu corresponds to the correct procedures/screens that they associate with.

    Input: Change Fuel Price (button) is clicked
    Expected Output: Change Fuel Price screen is displayed.

    Input: Change Maximum Amount Allow (button) is clicked
    Expected Output: Change Maximum Amount Allow screen is displayed.

    Input: Station Operation (button) is clicked
    Expected Output: Station Operation submenu is displayed.

    Input: Reports (button) is clicked
    Expected Output: Reports submenu is displayed.

    Input: Help (button) is clicked
    Expected Output: Help screen for Main Menu is displayed.

    3.1 Change Fuel Price

    Test Description:
    For invalid input value, the system should responds by displaying error messages. Otherwise, expected output will be resulted.

    Error Cases:

    Input: Fuel Price is -5
    Expected Output:

    Input: Fuel Price is blank
    Expected Output:

    Input: Fuel Price contains non-numeric character (except decimal point)
    Expected Output:

    Input: Fuel Price is greater than upper_bound (default = 100)
    Expected Output:

    Successful Case:

    Input: Fuel Price is 0.35
    Output:

    3.2 Change Maximum Amount Allow for a Single Purchase

    Test Description:
    The following test cases will detect both invalid input and valid input. If an invalid input is detected, the system should respond by displaying error message. Otherwise, when the input is a valid value, the system should follow the correct procedure and produce the expected output.

    Error Cases:

    Input: maximum amount is -3
    Expected Output:

    Input: maximum amount is blank
    Expected Output:

    Input: maximum amount contains non-numeric character
    Expected Output:

    Input: maximum amount is greater than upper_bound (default = 10000)
    Expected Output:

    Successful Case:

    Input: maximum amount is 20
    Output:

    Process 3.3.1 Display Pump Status

    1. click on Pump Status button at Station Operations Menu
      results:
    2. click on Print button
      results: form gets printed based on print setup before-hand
    3. click on Return to Station Operations Menu button
      results: display Station Operations Menu with all options offered as buttons

    Process 3.3.2 Display Station Diagnostics

    1. click on Station Diagnostics button at Station Operations Menu
      results:
    2. click on Print button
      results: display Station Operation Menu with all options offered as buttons

    Process 3.3.3 Display Tank Lock Info

    1. click on Tank Lock Info button at Station Operations Menu
      results:
    2. click on Print button
      results: form gets printed based on print setup before-hand
    3. click on Return to Station Operations Menu button
      results: display Station Operations Menu with all options offered as buttons

    Process 3.3.3 Activate/Shutdown Facilities

    If no changes made:

    1. click on Activate/Shutdown Facilities button at Station Operations Menu
      results:
    2. click on Return to Station Operations Menu button
      results: display Station Operations Menu

    If changes made:

    1. click on Activate/Shutdown Facilities button at Station Operations Menu
      results: as above
    2. change one of the status by clicking on the unmarked/unpressed box
      results: box is marked/pressed and opposite box is unmarked/unpressed
    3. click on Return to Station Operations Menu button
      results: window popup displaying text and four buttons: Continue, Redo, Cancel, Help
    4. Four possibilities:
      1. accept changes: click on Continue button
      2. redo changes:
      3. ignore changes: click on Cancel button
      4. help on buttons:

    Other tests

    click on Quit button at Station Operations Menu
    results: logout and exit system

    click on Help button at Station Operations Menu
    results:



    click on Back to Main Menu button at Station Operations Menu
    results: Main menu of automated system displayed with all buttons

    3.4 Process Reports

    3.4.1 Display Transaction Report

    3.4.2 Display Statistics Report

    3.4.3 Display Monthly Summaries

    3.4.4 Display Delivery Report

    3.4.5 Display Card Status Report

    3.4.6 Change Reporting Periods

    3.4.7 Reports Help


    Administration (process 4)

    The following conditions must be tested:

    Add User (process 4.1)

    The following conditions must be tested:

    Delete User (process 4.2)

    The following conditions must be tested:

    Change Password (process 4.3)

    The following conditions must be tested:


    Authors: Phong Tu (Reports, Screen Shots), Les Loh (Station Operations), Francis Nguyen (Main menus, Change Price), Dom Royko (Administration, Delivery).


    Send Comments to Supplier Group 11

    Back