Bunker Hill Logo
Advanced Web-Application Development / Browser-Enabled MS-Access Conversions

Key Elements of Effective GUIs

User productivity is derived from and can be measured by the effectiveness of application GUI’s. The effectiveness of GUI’s is proportional to the functionality provided by the building-blocks available to the application developer. This paper details and illustrates the advantages of GUI’s that employ a framework offering intelligent input and form components, multiple-record forms, presentation and collection of data based on related record sets and sizable/movable windows with programmable interfaces; built upon a high-performance, scalable architecture.

Databases typically form the foundation upon which most GUI's are built. This discussion focuses on applications that collect and present information from DBMS. Building applications based on properly designed database models (in third-normal form) is strongly advised. A poorly defined database model can complicate the GUI for both developer and user, cause unacceptable response times and may be the main determinant as to whether the application is ultimately accepted by the user community.

It is assumed that a thorough analysis of user needs has already been performed and it is time to prepare the GUIs that comprise the application. Although the examples used in this document are implemented using browser / web technologies, the concepts apply to all GUIs.

The main goal of effective GUI design is to provide a mechanism for the entry and collection of accurate data that maximizes productivity. To achieve this goal, the GUI must be easy to learn and operate, minimize erroneous data entry, and be responsive to user actions.

Presentation

Single-Form

The most common GUI container is the Single-Record Form, which presents data from one record within the form area. In general, evenly spaced input areas with clearly marked labels for easy user identification are placed, uncluttered within the form frame so that borders are symmetrically aligned in a visually pleasing manner. Color schemas may be applied to differentiate forms and add to their visual appeal.

Visual Cues

Providing users with visual cues and/or associations within the form’s layout and throughout the data entry process makes the interface simpler and less stressful to learn and use, and can be helpful in reducing input errors.

At every step of the entry process, the user should be able to easily discern input requirements (ex. date, number, etc.) and available actions (save record, navigate to next field or record, etc.).

Visual cues at every keystroke and mouse-click also provide users with a frame of reference that instills confidence that the entry process is proceeding correctly. For example, after the program detects a field change, an “update in progress” icon informs the user that a database change will occur unless the operation is undone.

Consistent User Interactions

User keyboard and mouse actions should be intuitive and consistent among forms. For example, tab and Shift-tab should always move the focus to the next or previous input area within the entry flow, and pressing the Esc key should always undo the current field.

Window Frames

Containing forms within moveable, resizable windows adds flexibility to multi-form GUI applications. User may find it useful to compare information from two or more forms, or minimize the current form for later reference. Windows also provide a consistent method for closing forms; separate "close" buttons for each form are unnecessary.

Record Sets

Enabling users to work with multiple records within the same form can yield significant productivity gains. By loading a set of records that are relevant to the current user, changes can be quickly made to multiple records without having to fetch each one by key from the server. Forms that include sorting and filtering help users find specific records when working with relatively large record sets.

The following example illustrates a data-entry form that is empty when first loaded, but accumulates records as they are entered. Feel free to add some records if you like. The database is refreshed periodically.

Things to try...
  1. Type a letter in the Customer ID field. This field must contain 5 letters. Try typing a digit.
  2. Enter a Customer Name then press Page-Down - the record is saved and a new template is displayed.
  3. Note: Press the Esc key to undo the current field. Press Esc twice to undo all fields.
  4. Press Page-Up (or use the navigation buttons) to return to the saved record.
  5. Enter some additional information. You can also save the record by choosing Records | Save from the Form Menu (icon on top-left of the window bar).
  6. Press the Close button on the top-right of the blue window bar to remove the form.

Minimizing Data Entry Errors

Validation Sets

When valid entries are limited to one or more values, the use of Combo-Boxes, Selection-Lists and Check-Boxes are an effective way of collecting valid data. Common examples are a Combo-Box that lists products, a Selection-List showing shipping alternatives, or a Check-Box to accept an agreement. Selection-Lists are most useful with multiple entry input choices.

Multiple-Column Combo-Boxes

The multiple-column combo-box presents users with a list of available choices. Additional columns can be used to offer users related information to help narrow down their choice. The auto-extend feature allows users to choose entries from lists by typing the first few letters of the entry.

Things to try...
  1. Click the Combo-Box button and select an entry. The address is displayed and corresponding option selected.
  2. Click an option button. The name is displayed in the Combo-Box, which displays the address.
  3. Move the mouse pointer to the window bar area. Press and hold the mouse button to move the form.

Input Masks

An Input Mask is an intelligent text element that provides a fixed data input template and controls values users are allowed to enter. Studies show that the longest string of characters one can readily recall is five. When users are required to enter long sequences of characters, like credit card or social security numbers, providing a fixed format that matches the card imprint makes it much easier to enter and visually verify than typing a contiguous string of 9-16 digits.

Things to try...
  1. Type an "m" in the Card Type field, the press Tab.
  2. Type a few digits in the Number field and press Tab - a warning message is displayed.
  3. Complete typing the Number and press Tab. Notice the display format of the Number differs from the input format.
  4. Click on the Number field - the input format is displayed.

Custom Edits

To further ensure valid data, application specific editing rules that issue clearly stated error messages when validation fails, should be liberally applied.

Getting the Latest Data

Retrieving the latest data based on user input helps ensure timeliness and accuracy. For example, the Unit-Price should be retrieved and displayed after the user selects a Product.

Default Input Entries

Retrieve default input entries from the DBMS. For example, the primary shipping address should be displayed when a Customer is selected.

Getting Data from External Sources

Productivity gains can be realized by all participants when data is retrieved from external sources, like from manufacturers or shippers. As an example, we’ll use the USPS (United States Postal Service), which provides API access to shipping data.

Typing an address can be cumbersome and error prone. Even when correct, address information may not conform to the USPS formatting standard, which could lead to delivery confusion. By allowing users to enter just the Zip Code and retrieving the associated City and State from the USPS, entry time is shortened and correctness ensured.

The following form illustrates Zip Code lookups and also retrieves an entered address, reformatted using the USPS standard.

Things to try...
  1. Since we are accessing the USPS test DBMS, the Zip Code lookup is limited to 90210 and 20770.
  2. Type 20770 into the Zip Code field and press Tab or Enter. The city and state are displayed.
  3. Type (or cut and paste) "6406 ivy lane" into the Address2 field then press Verify.
  4. Note the returned address is capitalized and "lane" is abbreviated.

Note that although the Customer Form Example contains international addresses, it could be modified to utilize postal APIs from any countries that offer them.

Improving Response Time and Application Performance

Response time is a key element of effective GUI and directly linked to productivity. The less time a user must wait for an application to respond to an action (load, save, navigate, etc.), the more work they can accomplish and the fewer errors they are likely to make. Sluggish GUI's cause us to lose track of what we were thinking, increases anxiety, and makes us prone to errors.

Client-Side Edits

Implementing client-side edits to enforce database constraints like NOT NULL, and relational constraints that check for key-existence for example, provide the user with much more meaningful error messages than those issued by DBMS, and take less time to process than their server-side equivalents.

Automatic Database Updates

In addition to explicit “Save” operations (those performed by clicking a button or menu item), productivity gains are realized when database updates and inserts are implicitly performed based on user actions, ex., the user navigates to another record or closes the form when then record is in a “changed” state.

Employing techniques that ensure data is rapidly updated enables users to accomplish more in less time.

Advanced Data-Driven Forms

Datasheet View

Datasheets (or Grids) display all of a record’s data fields on a single row, much like spreadsheets do. They enable viewing of multiple records within the form area and provide a mechanism for finding and changing data more quickly than with single-form view. The ability to adjust column width's and row heights is typically built-in to datasheets as well as navigation, filter and sort capabilities. For added flexibility, some GUI’s enable switching between Form and Datasheet view, as with the following example.

Things to try...
  1. Press Tab repeatedly until you reach the second row. Now use Shift-Tab.
  2. Press the down/up arrow keys to move between records. The press PgDn/PgUp.
  3. Slide the vertical scroll bar up and down, and the horizontal scroll right and left. Scrolling is row and column oriented.
  4. The change column widths, move the cursor pointer over the right-edge of a header column until the resize icon is displayed. Press the mouse button to display the sizing-guide then move it right/left and release. Double-click the right-edge to expand a column to fit the widest text.
  5. To resize row heights, move the cursor pointer over the Record Selector area until the resize icon is displayed and drag up or down until the desired height is reached then release to resize all rows.
  6. Press the Maximize button on the right side of the window bar, the press the Restore button.

Continuous Form View

Another useful presentation type is the Continuous-Form or List, which uses a form template, but displays multiple rows within the form area as the following example demonstrates.

Things to try...
  1. Press and hold the Tab key. Notice the Product Name changes when a new record is reached.
  2. Move the mouse pointer to the Menu icon on the top left of the window bar and click View then Datasheet.
  3. Press the Maximize button on the top-right of the menu bar. Resize some columns if you like.
  4. Now switch back to Form view.

Form with Tab Pages

Tab Pages provide a mechanism for organizing and compactly presenting related data and operations in a relatively small viewing area.

Things to try...
  1. Press the Personal Info. tab button to display additional employee information.
  2. Use the Navigation Bar or PgUp / PgDn keys to view Employee records.
  3. To view all Employee records and their thumbnail images, press the Company Info tab button, then select Datasheet from Views on the Main Form Menu.
  4. Try resizing rows and columns.

Parent-Children Forms

It is often important to create forms that present and collect information based on DBMS relationships, typically referred to as parent-children (one-to-many) relationships (Order / Items Purchased or Customer / Ship-To Addresses).

The next example depicts Customer-Order relationships. Each form page shows the customer’s name and country, and lists all orders placed for the customer in the first grid. Clicking or navigating to an order record displays detail information (product name, price, etc.) for each line item in the order (bottom grid).

Things to try...
  1. Click an order to display details of each ordered item.
  2. Use the Navigation Bar to change the current customer record.
  3. Filter by Country: Double- or right-click on the Country field. Click "Filter By Selection". To undo filters or sorts, click the "Remove Filter/Sort" entry.
  4. Sort by Company: Double- or right-click on the Company field. Click "Sort Descending".

Additional Examples

Enter the Demonstration at bunkerhill.com (click the "View as BAB/E Application" button) for additional form examples.

Conclusion

By employing the techniques discussed in this document, application GUI’s will require less user training, collect more accurate data, and provide a very productive and agreeable user experience.


by Ron Tornambe
Ron has been building business information applicaitons for decades.