Hi George,
You specification says:
For GUI requirement, it states that
"It must allow the user to search the data for all records, or for records where the name and/or location fields exactly match values specified by the user.
Your user interface should be designed with the expectation of future functionality enhancements, and it should establish a framework that will support this with minimal disruption to the users when this occurs."
It does mention at least Name and Location searching criteria must be included in GUI. But, it leaves out other possible searching criteria (Number of staff, Hourly charge, Customer ID).
For the DB interface requirement, the following search method must be implemented,
// Returns an array of record numbers that match the specified
// criteria. Field n in the database file is described by
// criteria[n]. A null value in criteria[n] matches any field
// value. A non-null value in criteria[n] matches any field
// value that begins with criteria[n]. (For example, "Fred"
// matches "Fred" or "Freddy".)
public long[] findByCriteria(String[] criteria);
This problem has been discussed for a number of times. You don't need more than two fields on your GUI. You should bring/select all data if both fields are empty (null). As far as future enhancement is concerned think about a separate search GUI, it may be helpful. GUI design should be flexible enough to accommodate those changes easily. Book radio button no your GUI is an extra field. If customer id field is empty it means record is available for sale/book otherwise not. Simplicity saves a lot of time in SCJD and it does heart your grade, for sure!
Goodluck!
Shafique