VoidWorks Software Inc.

Overall Design
Complete Document

Springfield Library would like to thank VoidWorks Software Inc. for their proposal for a library management system. While it appears most of our customer and book management requirements have been met, we seek further clarification with regard to the Overall Design Document.

Before negociating a final contract, there are several issues we need to have addressed:

  • Will you be providing a reply to the changes we requested of the functional specification? We'd like to know which recommendations you were or were not able to accomodate.
  • When will modified screen shots be available?
  • Will there be a glossary of terms? Technical documents are not our speciality.

    Specific areas of concern have also been annotated in red, italicized font throughout this document.



     

                                       Summary                                   

     


    Summary                                   

     

    Module Definitions                                   
         The module definitions described in this document are set out as follows:
         
    Overview
    Desribes the group of modules being defined and how to access them while using the Library Management System (LMS), as well as giving a quick summary of what each individual module does.
    Inputs
    Describes what each module requires as input, the correct syntax of each input value, and the format of the input: whether it's a choice from a menu or a value the user must type in.
    Outputs
    Describes all information generated by the module, as well as the conditions for generating and the format of this information.
    Imports
    Describes any data the module must get from the system.
    Error Conditions
    Describes all errors which may occur with this module; describes what causes each error.
    Description
    Describes the actual module from a user interaction point of view; describes the window which controls the module. Lists all fields and buttons within the window and what each is used for.
    Walkthrough
    Describes the procedure for accessing and using this module.

     

    Data Stores                                   
         The data stores we have implemented for this system are as follows:
    • Books Data Store
    • Customer Data Store
    • Fines Data Store
    • Holds Data Store
    • Loans Data Store
         The following data stores will be implemented if there is a need to be constantly modifying the information contained within them - otherwise that information will be hardcoded into the system
    • Customer Type Data Store
    • Circulation Type Data Store
    • Location Type Data Store
    • Media Type Data Store
    • Subject Type Data Store

     

                                       Book Administration                                   

     


    Overview                                   
         The Book Admininstration module will have a window displaying five main features, which buttons will be assigned to implement its certain task. There will be 'Add Book', 'Add Book Copy', 'Delete Book Copy', 'View Book', 'View Book Copy' buttons, and a QUIT button to do none of the above tasks. The 'Add Book' button will take the user to a window where the user can add a book. Similar with 'Add Book Copy' but the user will be adding a book copy instead. 'Delete Book Copy' will display another window that allow the user to delete a book copy. 'View Book' button will allow the user to view and/or modify book information. 'View Book Copy' button will alow the user to view and/or modify a book copy.

     


    Data Flow Diagrams                                   
         These are clickable imagemaps.

     

    Level 1                                   

    Book Administration DFD Book Copy Datastore Books Datastore Design Document

     

    Level 2                                   

    Book Administration DFD Level 2 Add New Book Remove Copy Search For A Book Update Book Update Book Copy View Book View Book Copy Book Copy Data Store Books Datastore Book Copy Datastore Book Copy Datastore Books Datastore

     


    Add a Book                                   

     

    Inputs                                   
         
    ISBN #
    A ten digit number unique to a specific book title but not to any one specific book. The number has the form of D-DD-DDDDDD-D, where D is a decimal digit from 0 - 9.
    Call number
    A unique number that specifies a specific book in the database. The call number is of the form DDDDDDDDD, where D represents a digit from 0 - 9. Call numbers can vary in length and range from 0 - 999999999, and are generated automatically when the book is added to the database.
    Title
    A string with a maximum length of 150 characters. Each title does not have to be unique.
    Author
    A string with a maximum length of 120 characters. The typical format of each author's name is as follows:

    lastname, firstname givenname(s)

    and if there are more than one author, the authors' will simply be entered in sequence. The authors' names do not need to be unique.
    Publisher
    A string with a maximum of 150 characters. Each publisher does not have to be unique.
    Subject
    A string with a maximum of 100 characters. The subject field contains subject key word(s) that are used to desribe the subject category of the book. If more than one key word is entered, they should be, but is not necessary to be, unique between them. Subject keyword(s) between books do not need to be unique.


    How are keywords delimited? This will be important to the data entry clerks.



    Book Category
    A pull-down menu containing the choices:

    {overnight, two week, reserved}

    Only one of the three choices can be selected. This list will be expandable.
    Media Type
    A pull-down menu containing the choices:

    {Book, CD, CD-ROM, Film, Laserdisk, Journal}

    Only one of the three choices can be selected. This list will be expandable.


    Which "three" of Book, CD, CD-ROM, Film, Laserdisk and Journal will be included in the pull-down menu? Since all six of these media types are currently used in our library, it is essential for them all to be listed as menu options.

    Cost
    A dollar figure representing the value of the book. Assumed to be either in American or Canadian funds.
    Version (optional)
    A decimal number of the form DDD, where the D represents a digit from 0 - 9. Thus, the version is a number from 0 - 999. This number is not mandatory.
    Edition (optional)
    A decimal number of the form DDD, where the D represents a digit from 0 - 9. Thus, the edition is a number from 0 - 999. This number is not mandatory.
    Number of Copies
    A decimal number of the form DDD, where the D represents a digit from 0 - 9. Thus, there could be from 0 - 999 copies of one particular book. This number generated automatically when the book is added to the database.
    Location
    A pull-down menu containing all of the branches that belong to the Springfield Library. This menu currently contains only the main branch, but is expandable as the Springfield Library expands.
    Floor
    A decimal number of the form DD, where D represents a digit from 0 - 9. Thus, a particular book can only be on a floor from 0 - 99.
    Circulation Status
    A pull-down menu containing the choices:

    {available, on loan, overdue, on hold, out of circulation}

    Only one of these choices can be selected.

    Title, Author, Publisher and Category should be case-sensitive.


     

    Outputs                                   
          Upon acceptance and verification of the book data the book will be added to the database.


    We will need verification from the system to tell us when transactions are OK.



          If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module.


    Where is there a description of this 'error handling' module? What are its tasks? What will the user see when errors are encountered? Is error handling internal only?

    What happens if there is a read/write error to the database? Will the database be in the same state as before the error occured? Should this kind of error be reported to an administrator?



          A unique call number will be automatically generated by the system for the book.
          Number of copies will be automatically set to one by the system once the book has been added.

     

    Imports                                   
         From automatic generator
         
    • call number
    • number of copies
         NOTE: The automatic generator will generate a unique integer for the call number for that particular book. The value will be in sequential order ranging from 0 - 999999999. The number of copies will be set to 1 when the book is originally added.

     

    Error conditions                                   
          Syntax errors on inputs to the fields with required formats.


    Will there be range checking on decimal values?

          Input missing from field. (All necessary fields must be complete)
          Book already exists in the database.

     

    Description                                   
         
    Add Book Window
    This window contains text entry fields for: title of book, author(s), publisher, and subject. There are numeric entry fields for ISBN number, version, edition, number of copies, and floor. There are pull down menus for book category, media type, location, and circulation status. The cost field requires a dollar figure to be entered.

    Buttons Present: ADD, QUIT

    ADD
    Once selected, the system checks to see if all of the appropriate fields have been entered correctly and there is an entry for each necessary field. If there are any format errors in the information fields, a message box will pop up and display a message with a list of each field that was incorrectly entered.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once all of the fields are error free, the system checks to see if there are duplicate books in the database by comparing the ISBN numbers. If this is the case, a message box will appear and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    If duplicate ISBN numbers exist, the system will not allow the book to be added to the database.

    If there are no errors, the book will be added to the database and a new 'Add Book' form will appear.

    QUIT
    If selected, any data entered into any of the fields will be lost, the book will not be added to the database, and the 'Add Book' window will be closed.


    Would it be possible for the system to check a field immediately after it is entered for errors? If a large list of errors is generated after pressing 'OK', it would be overwhelming for the user to remember each and every one.

     

    Walkthrough                                   
         The user fills in the appropriate data into the data fields and presses the 'ADD' button. If there is an error in one or more of the fields or the ISBN number is already in use, these errors are displayed in an error window once the ADD button has been pressed. Once all errors are corrected (if there were any), the ADD button is pressed to add the new book to the database. If at any time the user wishes to leave, clicking on the QUIT button will exit them from the 'Add Book' window.

     


    Add Book Copy                                   

     

    Inputs                                   
         
    ISBN number
    A ten digit number unique to a specific book title but not to any one specific book. The number has the form of D-DD-DDDDDD-D, where D is a decimal digit from 0 - 9.
    Location
    A pull-down menu containing all of the branches that belong to the Springfield Library. This menu currently contains only the main branch, but is expandable as the Springfield Library expands.
    Floor
    A decimal number of the form DD, where D represents a digit from 0 - 9. Thus, a particular book can only be on a floor from 0 - 99.
    Circulation Status
    A pull-down menu containing the choices: {available, on loan, overdue, on hold, out of circulation} Only one of these choices can be selected.

     

    Outputs                                   
         Upon acceptance and verification of the ISBN number, the following will be display in a window: ISBN #, title, author, publisher, subject, book category, media type, cost of book, version, edition.
          If an unrecoverable error (such as read write errors to the databse) occurs the module will output the error code to the error handling module.

     

    Imports                                   
         From Books data store
    • ISBN number
    • title
    • author
    • publisher
    • subject
    • book category
    • media type
    • cost of book
    • version
    • edition
         From automatic generator
    • call number
    • number of copies
         NOTE: The automatic generator will generate a unique integer for the call number for that particular book. The value will be in sequential order ranging from 0 - 999999999. The number of copies will be set to 1 when the book is originally added.

     

    Error conditions                                   
          Syntax errors on inputs to the fields with required formats.
          Input missing from field. (ISBN number not specified.)
          Book does not exist in database.

     

    Description                                   
         
    Add Book Copy Window
    This window contains numeric entry fields for ISBN number.

    Buttons present: OK, CANCEL

    OK
    Once selected, the system checks for correctly formatted input in the ISBN field. If there are errors, a message box will appear and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box. Once the ISBN number is error free the system checks to see if there is a book in the database with that ISBN number. If no book exists, a message box will appear stating that the book does not exist and will ask whether the user wants to add this as a new book to the datatbase.

    Buttons Present: YES, NO

    Selecting 'YES' will bring up the 'Add Book' window from which the user can add the new book. Selecting 'NO' will close the message box.

    Once it has been verified that the book exists in the database, a window will appear containing the book information and empty fields requiring the location, floor, and circulation status of the new book to be added.

    Buttons Present: ADD, QUIT

    ADD
    Once selected, the system checks to see if all of the appropriate fields have been entered correctly and there is an entry for each necessary field. If there are any format errors in the information fields, a message box will pop up and display a message with a list of each field that was incorrectly entered.

    Buttons Present: OK

    Selecting 'OK' will close the message box. If there are no errors, the book copy will be added to the database and a new 'Add Book Copy' form will appear.

    QUIT
    If selected, any data entered into any of the fields will be lost, the book copy will not be added to the database, and the window will be closed.
    CANCEL
    If selected, the 'Add Book Copy' window will be closed.

     

    Walkthrough                                   
         The user fills in the ISBN number of the book that he/she wants to add a book copy to and presses the 'OK' button. If there is an error with the syntax of the ISBN number or the ISBN number cannot be found in the database, these errors are displayed in an error window. Once all errors are corrected (if there were any), the 'OK' button is pressed at which time the data for the book that will have a copy added is displayed. The user then preoceeds to enter in data for the appropriate fields and presses the 'ADD' button. If there are any errors with the data added, this will be displayed in an error window. Once all errors are corrected (if there were any), pressing the 'ADD' button will add the book copy to the database. If, at any time, the user wants to leave, clicking on the respective QUIT or CANCEL buttons will exit them from the window.

     


    Delete a Book Copy                                   

     

    Inputs                                   
         
    Call number
    A unique number that specifies a specific book in the database. The call number is of the form DDDDDDDDD, where D represents a digit from 0 - 9. Call numbers can vary in length and range from 0 - 999999999.

     

    Outputs                                   
         Upon acceptance and verification of the ISBN number, the following will be display in a window: ISBN #, title, author, publisher, subject, book category, media type, cost of book, version, edition, call number, location, floor, circulation status, due date (if any), and customer number (if any). Once a user accepts to proceed with the book's deletion, the book will be removed from the database.
         If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module.

     

    Imports                                   
         From Books data store
    • ISBN number
    • title
    • author
    • publisher
    • subject
    • book category
    • media type
    • cost of book
    • version
    • edition
    • call number
    • location
    • floor
    • circulation status
          From loans data store
    • due date (if any)
          From customer data store
    • customer number (if any)

     

    Error conditions                                   
         Syntax error on input to the call number field.
         Input missing from field. (Call number not specified.)
         Book does not exist in database.
         Book is out on loan or is on hold.

     

    Description                                   
         
    Delete Book Window
    This window contains a numeric entry for the call number.

    Buttons Present: DELETE, QUIT

    DELETE
    Once selected, the system checks if the call number has been entered correctly. If there is a format error or the call number has not been filled in, a message box will pop up and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once the call number is error free the system checks to see if there is a book in the database with that call number. If no book exists, a message box will appear and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once it has been verified that the book exists in the database, a check is made to determine whether the book is out on loan or currently being held. If this is the case, a message box will appear and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box. Note: A deletion of a book cannot proceed if it is currently out on loan is on hold.

    If there are no errors, the 'View Book Copy' window will appear containing the book information for that book copy and a message window asking whether the book should really be deleted.

    Buttons Present: YES, NO

    Selecting 'YES' will remove the book from the database. Selecting 'NO' will return the user to the 'Delete Book' window without deleting the book.

    QUIT
    If selected the 'Delete Book' window will be closed.

     

    Walkthrough                                   
         The user fills in the call number of the book that he/she wishes to delete and presses the 'Delete' button. If there is an error with the syntax of the call number or the call number cannot be found in the database, these errors are displayed in an error window. Once all errors are corrected (if there were any), the DELETE button is pressed at which time the data for the book to be deleted is displayed, and the the user is asked whether the deletion should proceed. If the user selects the 'YES' button, the book will be permanently removed from the database. If the user wants to go back without deleting the book, the 'NO' button should be pressed. If, at any time, the user wishes to leave, clicking on the QUIT button will exit them from the 'Delete Book' window.

     


    View a Book                                   

     

    Inputs                                   
         
    ISBN number
    A ten digit number unique to a specific book title but not to any one specific book. The number has the form of D-DD-DDDDDD-D, where D is a decimal digit from 0 - 9.

     

    Outputs                                   
         Upon acceptance and verification of the ISBN number, the following will be display in a window: ISBN #, title, author, publisher, subject, book category, media type, cost of book, version, edition, call number(s), location(s), floor(s), circulation status(es).
         If an unrecoverable error (such as read write errors to the databse) occurs the module will output the error code to the error handling module.

     

    Imports                                   
         From Books data store
    • ISBN number
    • title
    • author
    • publisher
    • subject
    • book category
    • media type
    • cost of book
    • version
    • edition
    • call number(s)
    • location(s)
    • floor(s)
    • circulation status(es)

     

    Error conditions                                   
         Syntax error on input to the ISBN number field.
         Input missing from field. (ISBN number not specified.)
         Book does not exist in database.

     

    Description                                   
         
    View Book Window
    This window contains a numeric entry for the ISBN number.

    Buttons Present: VIEW, QUIT

    VIEW
    Once selected, the system checks if the ISBN number has been entered correctly. If there is a format error or the ISBN number has not been filled in, a message box will pop up and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once the ISBN number is error free the system checks to see if there is a book in the database with that ISBN number. If no book exists, a message box will appear and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once it has been verified that the book exists in the database, a window will appear containing the data for that book.

    Buttons Present: SAVE, MODIFY, QUIT

    SAVE
    Nothing will occur if the 'MODIFY' button has not been pressed before the 'SAVE' button has been pressed. (see section 4(a) Modifying a Book)
    MODIFY
    Pressing this button will allow the user to change the data displayed in the fields for the 'View Book' window. (see section 4(a) Modifying a Book)
    QUIT
    Selecting the QUIT button will close whatever window the user is in.

     

    Walkthrough                                   
         The user fills in the ISBN number of the book that he/she wishes to view. If there is an error with the syntax of the ISBN number or the ISBN number cannot be found in the database, these errors are displayed in an error window. Once all errors are corrected (if there were any), the VIEW button is pressed at which time the data representing that ISBN number is displayed. From there, the user may choose to modify and save the data (see section 4(a) Modifying a Book). Clicking on any QUIT button will exit the user from the window he/she is in.

     


    a) Modify a Book                                   

     

    Inputs                                   
         
    Title
    A string with a maximum length of 150 characters. Each title does not have to be unique.
    Author
    A string with a maximum length of 120 characters. The typical format of each author's name is as follows:

    lastname, firstname givenname(s)

    and if there are more than one author, the authors' will simply be entered in sequence. The authors' names do not need to be unique.

    Publisher
    A string with a maximum of 150 characters. Each publisher does not have to be unique.
    Subject
    A string with a maximum of 100 characters. The subject field contains subject key word(s) that are used to desribe the subject category of the book. If more than one key word is entered, they should be, but is not necessary to be, unique between them. Subject keyword(s) between books do not need to be unique.
    Book Category
    A pull-down menu containing the choices:

    {overnight, two week, reserved} Only one of the three choices can be selected. This list will be expandible.

    Media Type
    A pull-down menu containing the choices:

    {Book, CD, CD-ROM, Film, Laserdisk, Journal} Only one of the three choices can be selected. This list will be expandable.

    Cost
    A dollar figure representing the value of the book. Assumed to be either in American or Canadian funds.
    Version (optional)
    A decimal number of the form DDD, where the D represents a digit from 0 - 9. Thus, the version is a number from 0 - 999. This number is not mandatory.
    Edition (optional)
    A decimal number of the form DDD, where the D represents a digit from 0 - 9. Thus, the edition is a number from 0 - 999. This number is not mandatory.
         (Note: ISBN # was already entered as an input from previous module - View a Book)

     

    Outputs                                   
         Upon acceptance and verification of the book data the book information will be modified and saved to the database.
         If an unrecoverable error (such as read write errors to the databse) occurs the module will output the error code to the error handling module.

     

    Imports                                   
         none

     

    Error conditions                                   
         Syntax error on input to the cost field.
         Input missing from field.

     

    Description                                   
         
    Modify Book Window
    This window contains text entry fields for: title of book, author(s), publisher, and subject. There are numeric entry fields for cost of book, version, and edition. There are pull down menus for book category and media type. The cost field requires a dollar figure to be entered.

    Buttons Present: MODIFY, SAVE, QUIT

    MODIFY
    Once selected, the system will allow the user to implement modifications to the appropriate fields of a book.
    SAVE
    Once selected, the system will attempt to update and save the (current) book information that may have been modified. If there are any format errors in the information fields, a message box will pop up and display a message with a list of each field that was incorrectly entered/modified.

    NOTE: The 'SAVE' button will not work if the user is not currently in modification mode. (i.e. 'MODIFY' button must have been pressed)

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once all of the fields are error free, the system will update and save the book information.

    QUIT
    If selected, any data changed/entered into any of the fields will be lost, the book information will not be updated to the database, and the window will be closed.

     

    Walkthrough                                   
         The user clicks on the 'MODIFY' button, thus allowing the user to edit/modify book information. The user then can modify the appropriate data of the data fields and press the 'SAVE' button. If there is an error in one or more of the fields these errors are displayed in an error window once the 'SAVE' button has been pressed. Once all errors are corrected (if there were any), the 'SAVE' button is pressed once again to save/update any changes made of the book information into the database. If at any time the user wishes to leave, clicking on the QUIT button will abort the modification of book information.

     


    View Book Copy                                   

     

    Inputs                                   
         
    Call number
    A unique number that specifies a specific book in the database. The call number is of the form DDDDDDDDD, where D represents a digit from 0 - 9. Call numbers can vary in length and range from 0 - 999999999, and are generated automatically when the book is added to the database.

     

    Outputs                                   
         location, floor, circulation status
         Upon acceptance and verification of the call number, the following will be display in a window: ISBN #, title, author, publisher, subject, book category, media type, cost of book, version, edition, call number(s), location(s), floor(s), circulation status(es).
         If an unrecoverable error (such as read write errors to the databse) occurs the module will output the error code to the error handling module.

     

    Imports                                   
         From Books data store
    • ISBN number
    • title
    • author
    • publisher
    • subject
    • book category
    • media type
    • cost of book
    • version
    • edition
    • call number(s)
    • location(s)
    • floor(s)
    • circulation status(es)
         From loans data store
    • due date (if any)
         From customer data store
    • customer number (if any)

     

    Error Conditions                                   
         Syntax error on input to the call number field.
         Input missing from field. (call number not specified.)
         Book copy does not exist in database.

     

    Description                                   
         
    View Book Copy Window
    This window contains a numeric entry for the call number.

    Buttons Present: VIEW, QUIT

    VIEW
    Once selected, the system checks if the call number has been entered correctly. If there is a format error or the call number has not been filled in, a message box will pop up and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once the call number is error free the system checks to see if there is a book copy in the database with that call number. If no book copy exists, a message box will appear and display an error message.

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once it has been verified that the book copy exists in the database, a window will appear containing the data for that book copy.

    Buttons Present: SAVE, MODIFY, QUIT

    SAVE
    Nothing will occur if the 'MODIFY' button has not been pressed before the 'SAVE' button has been pressed. (see section 5(a) Modifying a Book Copy)
    MODIFY
    Pressing this button will allow the user to change the data displayed in the fields for the 'View Book Copy' window. (see section 5(a) Modifying a Book Copy)
    QUIT
    Selecting the QUIT button will close whatever window the user is in.

     

    Walkthrough                                   
         The user fills in the call number of the book that he/she wishes to view. If there is an error with the syntax of the call number or the call number cannot be found in the database, these errors are displayed in an error window. Once all errors are corrected (if there were any), the VIEW button is pressed at which time the data representing that call number is displayed. From there, the user may choose to modify and save the data (see section 5(a) Modifying a Book Copy). Clicking on any QUIT button will exit the user from the window he/she is in.

     


    a) Modify Book Copy                                   

     

    Inputs                                   
         
    Location
    A pull-down menu containing all of the branches that belong to the Springfield Library. This menu currently contains only the main branch, but is expandable as the Springfield Library expands.
    Floor
    A decimal number of the form DD, where D represents a digit from 0 - 9. Thus, a particular book can only be on a floor from 0 - 99.
    Circulation Status
    A pull-down menu containing the choices:

    {available, on loan, overdue, on hold, out of circulation}

    Only one of these choices can be selected.

          (Note: call number was already entered as an input from previous module - View Book Copy)

     

    Outputs                                   
         Upon acceptance and verification of the book data the book copy information will be modified and saved to the database.
         If an unrecoverable error (such as read write errors to the databse) occurs the module will output the error code to the error handling module.

     

    Imports                                   
         None

     

    Error conditions                                   
         Syntax errors on inputs to the fields with required formats. (i.e. invalid number range for floor number)
         Input missing from field.

     

    Description                                   
         
    Modify Book Copy Window
    This window contains a numeric entry for floor number. There are pull down menus for location and circulation status. The floor field requires an integer ranging from 0 - 99.

    Buttons Present: MODIFY, SAVE, QUIT

    MODIFY
    Once selected, the system will allow the user to implement modifications to the appropriate fields of the book copy.
    SAVE
    Once selected, the system will attempt to update and save the (current) book copy information that may have been modified. If there are any format errors in the information fields, a message box will pop up and display a message with a list of each field that was incorrectly entered/modified.

    NOTE: The 'SAVE' button will not work if the user is not currently in modification mode. (i.e. 'MODIFY' button must have been pressed)

    Buttons Present: OK

    Selecting 'OK' will close the message box.

    Once all of the fields are error free, the system will update and save the book information.

    QUIT
    If selected, any data changed/entered into any of the fields will be lost, the book information will not be updated to the database, and the window will be closed.

     

    Walkthrough                                   
         The user clicks on the 'MODIFY' button, thus allowing the user to edit/modify the book copy information. The user then can modify the appropriate data of the data fields and press the 'SAVE' button. If there is an error in one or more of the fields these errors are displayed in an error window once the 'SAVE' button has been pressed. Once all errors are corrected (if there were any), the 'SAVE' button is pressed once again to save/update any changes made of the book copy information into the database. If at any time the user wishes to leave, clicking on the QUIT button will abort the modification of the book copy information.

     

                                       Customer Administration                                   

     


    Data Flow Diagrams                                   
         These are clickable image maps.

     

    Level 1                                   

    Customer Administration Customers Datastore Design Document

     

    Level 2                                   

    Customer Functions Add A Customer Remove Customer Search A Customer View Customer Update Customer Customer Datastore

     


    Add Customer Module                                   

     

    Input                                   
         
    Last Name
    A string with a maximum length of 60 characters. This does not need to be unique to each customer (ie. more than one customer can have the same last name).
    First Name
    A string with a maximum length of 40 characters. This does not need to be unique to each customer (ie. more than one customer can have the same first name).


    First and Last names should be case-senstive.

    Phone number
    A standard North American phone number. When entering the phone number, if the entry may begin with a '(' and if so has the form '(DDD) DDD-DDDD' where D is a decimal digit in the range of 0-9. If the entry begins with a digit then the accepted form is DDD-DDDD where D is as above. Any other input is invalid and upon leaving the entry will be cleared.
    Address
    A string with a maximum length of 80 characters. This field represents the name of the street portion of the customers mailing address.
    City
    A string with a maximum length of 20 characters. This field represents the name of the city portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the city that the system is installed in.
    Province
    A string with exactly 2 characters. This field represents the name of the province/state portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the province/state that the system is installed in.
    Country
    A string with a maximum of 10 characters. This field represents the name of the country portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the country that the system is installed in.
    Postal Code
    A string with a maximum length of 11 characters. If the string begins with a letter then the string must be in the form of LDL DLD, where D is a decimal digit in the range of 0-9 and L is a letter in the english alphabet. If the string begins with a digit then it must be in the form of DDDDDDDDDDD where D is a decimal digit. Any other form the string takes is invalid and the field will be cleared.
    Max Books
    The maximum number of books the customer can borrow. This field can only be modified by a user with supervisor status. This field will be defaulted to a value determined by the customer.


    Maximum books defaults to twenty five books per customer. The default value can be modified by the supervisor, not the customer.

    Max fine
    The maximum amount of fines the customer can have. Like the max books, this value can only be modified by a user with supervisor status. This field will be defaulted to a value determined by the customer.


    Maximum fine defaults to ten dollars per customer. The default value can be modified by the supervisor, not the customer.

    Restricted
    Specifies whether or not the customer can borrow. Calculated automatically by the system when the customer's fines exceed the maximum amount allowed. The number of books the customer currently has on loan cannot exceed the maximum number of books allowed. This field will be defaulted to 'No'.
    Customer ID Number
    A unique integer determined and supplied by the system.
    Fines
    The customers current fines in dollars and cents. This field will be supplied by the system.

     

    Outputs                                   
         Upon acceptance and verification of the customer data the customer will be added to the database.
         If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module.
         Recoverable errors (such as duplicate customer) will be dynamically handled by this module through user interaction.

     

    Error Conditions                                   
         Syntax errors on inputs to the fields with required formats.
         Input missing from field. (all fields must be complete)
         Customer already exists in the database.
         A change to the default values for Max Books, Max Fines or Restricted with out the valid supervisor password.
         Hardware error is an unrecoverable error that will be processed by the error module.


    How are hardware errors dealt with? What does the user see?

     

    Description                                   
         
    Add Customer Window
    This window contains text entry fields for: last name, first name, phone number, address, city, province, country, postal code, max fines, and max books. There is a checkbox for the restricted field, and the customer ID number and current fines are also displayed but are not modifiable.

    Buttons Present: ADD, QUIT

    ADD
    Once selected, the system checks to see if all of the fields have been entered correctly and there is an entry for each field. If there are any format errors in the information fields, a message box will pop up and display a message with a list of each field that was incorrectly entered.

    Buttons Present: OK

    Select 'OK' to close the message box.

    The system checks to see if there are duplicate customers in the database by comparing the first and last names. If duplicate names exist, then the system will bring up the customer search window with the first and last names supplied in the appropriate fields and the list of duplicate names found in the results section of the window (the search window is described in the 'Customer Search' section).

    Buttons Present: YES, NO,

    Search Message: "Duplicate name(s) found. Continue to add new customer?"

    YES
    When selected, closes the search window and continues the add process.
    NO
    Closes the search window and returns control to the 'Add Customer' window for further modifications or of the add new customer process.

    SEARCH
    Perform a search based on the search criteria as stated in the 'Customer Search' section. The system checks if the 'Max Books', 'Max Fines', or 'Restricted' fields have been modified. If this is the case, a message box will pop up.

    Message: "x requires supervisor approval. Do you wish to continue?" where x is 'Max Books' and/or 'Max Fines' and/or 'Restricted'

    Buttons Present: YES, NO

    YES
    A supervisor approval window pops up (described in 'Supervisor Approval' section). If the approval was ok then the system will close the message box and continue to add the customer. Otherwise, the system will close the message box, change the appropriate fields to their default values, and discontinue the add process by returning control to the 'Add Customer' window.
    NO
    Close the message box, change the appropriate fields to their default values, and discontinue the add process by returning control to the 'Add Customer' window. The system will add the customer's information to the database. If an error occurs at this point, control is passed to the error handler along with the error code. If the process was successful, a message box will pop up.

    Message: "Process Successful"

    Button Present: OK When selected, the message box is closed as well as the 'Add Customer' window and control is returned to the 'Customer Administration' window.


    QUIT
    If selected, the 'Add Customer' window is closed and control is returned to the 'Customer Administration' window.

     

    Walkthrough                                   
         The librarian inputs all of the customer's information in the appropriate fields. The librarian selects the 'Add' button to add this customer to the database. If there is a duplicate name in the database, the librarian can shrink the results list by inputting additional information for other fields (such as phone number) and then pressing the 'Search' button. By looking at the duplicate names list, the librarian can decide to continue to add the customer by pressing the 'Yes' button or discontinue by pressing the 'No' button. If the librarian modified restricted information, the approval of a supervisor will be required.

     


    Search Customer                                   

     

    Inputs                                   
         
    Customer ID number
    An integer.
    Last Name
    A string with a maximum length of 60 characters. This does not need to be unique to each customer (ie. more than one customer can have the same last name).
    First Name
    A string with a maximum length of 40 characters. This does not need to be unique to each customer (ie. more than one customer can have the same first name).
    Phone number
    A standard North American phone number. When entering the phone number, if the entry may begin with a '(' and if so has the form '(DDD) DDD-DDDD' where D is a decimal digit in the range of 0-9. If the entry begins with a digit then the accepted form is DDD-DDDD where D is as above. Any other input is invalid and upon leaving the entry will be cleared.
    Address
    A string with a maximum length of 80 characters. This field represents the name of the street portion of the customers mailing address.
    City
    A string with a maximum length of 20 characters. This field represents the name of the city portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the city that the system is installed in.
    Province
    A string with exactly 2 characters. This field represents the name of the province/state portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the province/state that the system is installed in.
    Country
    A string with a maximum of 10 characters. This field represents the name of the country portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the country that the system is installed in.
    Postal Code
    A string with a maximum length of 11 characters. If the string begins with a letter then the string must be in the form of LDL DLD, where D is a decimal digit in the range of 0-9 and L is a letter in the english alphabet. If the string begins with a digit then it must be in the form of DDDDDDDDDDD where D is a decimal digit. Any other form the string takes is invalid and the field will be cleared.
    Max Books
    The maximum number of books the customer can borrow. This field can only be modified by a user with supervisor status. This field will be defaulted to a value determined by the customer.
    Max fine
    The maximum amount of fines the customer can have. Like the max books, this value can only be modified by a user with supervisor status. This field will be defaulted to a value determined by the customer.
    Circulation Status
    Circulation status refers to the current status of a book copy can be one of 'on hold', 'on loan', 'overdue', 'available' or 'out-of-circulation'.


    If circulation status refers specifically to the status of a book copy, how is this useful in a customer search? We would like librarians to be able to search for customers with overdue books, but they shouldn't have to provide book copy information to do so.

     

    Outputs                                   
         If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module and discontinue the process.
         With success, a list (also displayed on this screen) of the exact matches to the input criteria. This list will contain the First and Last Name and Telephone number.
         Selecting an entry from the list (either by single click on the entry and then pressing the select button or by double clicking on the entry) will display the View/Update customer screen with the selected entry filled in.

     

    Error Conditions                                   
         Hardware error is an unrecoverable error that will be processed by the error module.
         Format errors in fields that impose a structure on the input.

     

    Description                                   
         
    Search Customer Window
    The search window is divided into three areas; The top portion will contain text entry fields for: last name, first name, phone number, address, city, province, country, postal code, max fines, max books, and customer Id.

    Buttons Present: SEARCH


    Circulation status was previously defined in this list. Should we assume the inclusion of circulation status above was a mistake?

    The middle portion will be where the results of the search are displayed. This will be in the form of a list with the following fields present: Last name, first name and any other fields that were present in the search criteria. It will only be possible to highlight one entry in the results list.

    Buttons Present: None

    The bottom portion will be buttons that will act upon the selected entry or the entire list from the middle portion. In addition there will be a space for any messages to the user to be printed.

    Buttons Present: SELECT, PRINT, SAVE, QUITE

    SEARCH
    Upon selection the search customer module will check to see any fields have been entered.

    If no fields have been entered the module will beep once and display the message : 'Please enter a search criteria in the fields supplied' and then discontinue the search. The fields postal code, province, and ID number will be checked for format errors.

    If format errors are found the system will beep and display the message: `Format error in field XXX' (where XXX is the name of one or more of postal code, province or ID number) the search will then be discontinued. The search module will then formulate a Query based on the information present and send that query to the database. And clear the message section of the bottom portion of the screen.

    If the database responds with an unrecoverable error this module will pass that error to the error handling module and discontinue the search. The results of the search will be displayed in the middle portion of the screen sorted alphabetically by last and first name.

    If the list has a length of 0 then the message : 'No matching items found please modify search criteria and reselect search, or select Quit to exit' will be displayed in message section.

    SELECT (or double click on entry)
    Check the results area to see if an entry has been selected.

    If no entry has been selected display the message : 'Please click on an entry from the results list first'. Select will then discontinue.

    Clear the message area.

    If the Edit/Update window is currently open refresh it with the contents of the selected entry along with the results of a query to get a list of any books the customer has on loan or hold.

    If the Edit/Update window is not currently open call it and give it the data from the selected entry along with the results of a query to get a list of any books the customer has on loan or hold.

    PRINT
    If the length of the list is 0 display the message : 'Nothing to print'. Discontinue the print process. Send the list to the printer.

    If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module and discontinue the process.

    SAVE
    If the length of the list is 0 display the message : 'Nothing to save'. Discontinue the save process. Open dialog box with message: 'Enter name of file to save to.'

    Buttons Present: OK, QUIT

    OK
    If the filename is of acceptable format then close the dialog box and save the file to disk.

    If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module and discontinue the process.

    QUIT
    Close the dialog box and discontinue the save process.

    QUIT
    Close the customer search window and return control to the main customer window.

     

    Walkthrough                                   
         Librarian enters the search criteria in the appropriate fields following the correct format. Librarian clicks on the 'Search' button. Search will return a list that matched the criteria. Librarian can either double click an entry or single click and then select 'Select' to display the View/Update screen. If the Librarian selects another entry the View/Update screen will be refreshed. To print or save the list the librarian need only select the appropriate button. When Finished the user selects 'Quit'.

     


    View/Update                                   

     

    Inputs (obtained from the Search Customer module)                                   
         
    Last Name
    A string with a maximum length of 60 characters. This does not need to be unique to each customer (ie. more than one customer can have the same last name).
    First Name
    A string with a maximum length of 40 characters. This does not need to be unique to each customer (ie. more than one customer can have the same first name).
    Phone number
    A standard North American phone number. When entering the phone number, if the entry may begin with a '(' and if so has the form '(DDD) DDD-DDDD' where D is a decimal digit in the range of 0-9. If the entry begins with a digit then the accepted form is DDD-DDDD where D is as above. Any other input is invalid and upon leaving the entry will be cleared.
    Address
    A string with a maximum length of 80 characters. This field represents the name of the street portion of the customers mailing address.
    City
    A string with a maximum length of 20 characters. This field represents the name of the city portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the city that the system is installed in.
    Province
    A string with exactly 2 characters. This field represents the name of the province/state portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the province/state that the system is installed in.
    Country
    A string with a maximum of 10 characters. This field represents the name of the country portion of the customers mailing address. The acceptable input characters are in the range of A-Z and a-z. This field will be defaulted to the name of the country that the system is installed in.
    Postal Code
    A string with a maximum length of 11 characters. If the string begins with a letter then the string must be in the form of LDL DLD, where D is a decimal digit in the range of 0-9 and L is a letter in the english alphabet. If the string begins with a digit then it must be in the form of DDDDDDDDDDD where D is a decimal digit. Any other form the string takes is invalid and the field will be cleared.
    Max Books
    The maximum number of books the customer can borrow. This field can only be modified by a user with supervisor status. This field will be defaulted to a value determined by the customer.
    Max fine
    The maximum amount of fines the customer can have. Like the max books, this value can only be modified by a user with supervisor status. This field will be defaulted to a value determined by the customer.
    Restricted
    Specifies whether or not the customer can borrow. Calculated automatically by the system when the customer's fines exceed the maximum amount allowed. The number of books the customer currently has on loan cannot exceed the maximum number of books allowed. This field will be defaulted to 'No'.
    Customer ID Number
    A unique integer determined and supplied by the system.
    Fines
    The customers current fines in dollars and cents. This field will be supplied by the system.
    List of Books on Hold and on Loan.

     

    Outputs                                   
         Upon acceptance and verification of the customer data the customer will be modified in the database.
         If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module.
         Recoverable errors (no modifications made) will be dynamically handled by this module through user interaction.

     

    Error Conditions                                   
         Syntax errors on inputs to the fields with required formats.
         Input missing from field. (all fields must be complete)
         A change to the default values for Max Books, Max Fines or Restricted with out the valid supervisor password.
         Hardware error is an unrecoverable error that will be processed by the error module.
         Modify requested with no changes made.

     

    Description                                   
         The View/Update module will allow the librarian to look at and or modify the customers last name, first name, phone number, address, city, province, postal code, country, max books and max fines. The user will also see all of the books that the selected customer has on load or on hold and be able to print this along with all of the information about the customer. The user will also be able to permanently remove a customer from the database.
         Buttons present: UPDATE, PRINT, SAVE, REMOVE, QUIT
         
    UPDATE
    Check to see if any of the fields have been modified. If no fields have been modified display a dialog box with the message: 'Customer Data has not changed'.

    Button Present: OK

    Close the dialog box and discontinue the update process.

    Call the Remove customer process, with the confirmations disabled.

    If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module and discontinue the process. Call the Add process from the Add customer module.

    If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module and discontinue the process.

    PRINT
    Send the data to the printer.

    If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module and discontinue the process.

    SAVE
    Open dialog box with message: 'Enter name of file to save to.'

    Buttons Present: OK, QUIT

    OK
    Dhf?ofzzformat then close the dialog box and save the fi]HzHz?
    QUIT
    Close the dialog box and discontinue the save process.

    REMOVE
    Check if the window's list of books on loan has a length greater than zero.

    If the customer has books on loan then notify the user with a dialog box with the message: 'Customer has books out on loan. Customer has not been removed.' Press OK and discontinue the remove process.

    Close the dialog box and return control to the view/update window. Check if the customer has outstanding fines.

    If this is the case, a message box will pop up. Message: "The customer has outstanding fines. Need a supervisor approval. Do you wish to continue?"

    Buttons Present: YES, NO

    YES
    A supervisor approval window pops up (described in 'Supervisor Approval' section). If the approval was ok then the system will close the message box and continue to remove the customer. Otherwise, the system will close the message box and discontinue removing the customer.
    NO
    Close the message box and discontinue the remove process by returning control to the 'View/Update' window. The system will delete the customer from the database.

    If an unrecoverable error (such as read write errors to the database) occurs the module will output the error code to the error handling module and discontinue the process.


    QUIT
    Close the "View/Update" window and close the "Search" window. Return control to the Main customer menu.

     

    Walkthrough                                   
         The user selected a customer from the search customer screen. The librarian then modifies whatever information they choose conforming to the appropriate format for each field. The user clicks on the "Update" button. The customer's information is updated. The librarian then decides (strangely) to delete the customer by clicking on the "Remove" button. The librarian confirms the request by clicking on the "Yes" button. The customer is removed from the database, never to be seen again...

     


    Supervisor Approval                                   

     

    Inputs                                   
         Supervisor password and the message to display.

     

    Outputs                                   
         Confirmation that the approval was successful or not.

     

    Errors                                   
         None

     

    Description                                   
         A small window will pop up and display the message that was supplied to this module. There is a field where the supervisor can enter the supervisor password.

    Buttons Present: OK, QUIT

         
    OK
    Check the password in the password field. If they don't match, display the message: "Password incorrect. Retry." If the password matches, return to the calling module a 'correct' value.
    QUIT
    Close the window and return to the calling module an 'incorrect' value.

     

    Walkthrough                                   
         The supervisor types in an incorrect supervisor password and clicks on the 'OK' button. The system displays the error message and the user can now choose to either retry typing in the password or quit by pressing the 'Quit' button. The supervisor types in the correct supervisor password and clicks on the 'OK' button. The window closes and control is returned to the calling module proceeds.

     

                                       Transactions                                   

     


    Data Flow Diagrams                                   
         These are clickable image maps.

     

    Level 1                                   

    Transaction DFD Level 1 Books Datastore Design Document Book Copy Datastore Customers Datastore Transactions

     

    Level 2                                   

    Transactions Functions Return Book Borrow Book Renew Book Hold Book Pay Fines Book Copy Datastore Customer Datastore

     


    Borrowing a Book                                   

     

    Inputs                                   
         
    User ID Number
    A unique ID Number for each Customer, which must be inputted by the Librarian. If not known, however, the Customer's name (Last, First) or the Customer's Phone Number may be used to search the database.
    Call Number
    Call Number of the book copy. There will be a 10 digit numeric field, which must be completed by the Librarian. If unknown, the Call Number can be searched for in the database using either the ISBN Number or the Title of the Book.

     

    Outputs                                   
         Upon accepting the input, a message will be displayed to inform the Librarian that the command was successful. This brings up another window on the screen, prompting the Librarian to either print a report of the transaction and exit, or to simply

     

    Error Handling                                   
         Syntax errors on inputs to the fields with required formats.
         Input missing from a field (both inputs must be completed).
         Invalid input: the User ID Number doesn't exist in the database. The Librarian will have the option of automatically adding the Customer to the database, by pressing the ADD NEW button.
         Invalid input: the Call Number doesn't exist in the database. The Librarian will be prompted to re-enter the Call Number into the text box.
         The Customer is not allowed to borrow a book. A message will appear informing the Librarian of this action, and the transaction will be exited.

     

    Description                                   
         
    Borrowing a Book Window
    This window contains text entry fields for: User ID and Call Number.

    Buttons present: SEARCH (for a Customer ID), SEARCH (for a Call Number), ADD NEW (Customer ID), CLEAR, OK, CANCEL, HELP

    SEARCH (beside the Customer ID field)
    Performs a search for the Customer's ID based on the search criteria as stated in the 'Searching Customers' section.
    SEARCH (beside the Call Number field)
    Performs a search for the Call Number based on the search criteria as stated in the 'Searching Books' section.
    ADD NEW (beside the Customer ID field)
    Adds the Customer to the database automatically when pressed.
    CLEAR
    Clears the contents in the text entry fields.
    OK
    Starts processing the request to borrow a book, using the inputs provided.
    CANCEL
    Closes the "Borrow a Book" window, and returns control to the "Transaction Administration" window.
    HELP
    Provides information about this window, the inputs, and the function that each button performs.

     

    Walkthrough                                   
         The Librarian inputs the Customer's ID and the Call Number, then selects the 'OK' button to process the inputs. If the Customer is not a member of the Library System, the Librarian simply presses the ADD NEW button, and the Customer is automatically added to the database without leaving this process.

    If the transaction fails to complete to due the Customer having too many fines, or is not allowed to borrow books for any other reason, a message is displayed to the Librarian, explaining this, and the process will be canceled, returning the Librarian to the "Transaction Administration" window. If the transaction was a success, the Librarian will be prompted to print a report of the transaction by pressing the PRINT button, or to exit by pressing the CANCEL button. By pressing the PRINT button, a report containing the following information will be printed:

    • Borrower of the book, Book Copy Information, Due Date, and Fines to be incurred should the book be returned late.
    • Library information including its Address, Phone Number, and Hours of Operation.

    Pressing the CANCEL button will return the Librarian to the "Transaction Administration" window. Pressing the CANCEL button at any time will end the current operation, and exit the module.

     


    Returning A Book                                   

     

    Input                                   
         
    Call Number
    Call Number of the book copy. This will be a 10 digit numeric field, which must be inputted by the Librarian.

     

    Outputs                                   
         This module updates book copy's circulation status on the database. Then the Book Holder's information is displayed on the screen, via a new pop-up window, or sent to a printer.

     

    Error Handling                                   
         Syntax error on inputs to the call number field
         Invalid Input: call number does not exist in database or does not match the borrowed book

     

    Description                                   
         
    Returning a Book Window
    This window has a text entry field for the call number of the book copy being returned

    Buttons present: OK, CANCEL, CLEAR, HELP

    OK
    Starts processing the request to return a book, using the inputs provided.
    CANCEL
    Closes the "Return a Book" window, and returns control to the "Transaction Administration" window.
    HELP
    Provides information about this window, the inputs, and the function that each button performs.
    CLEAR
    Clears the contents in the entry field

     

    Walkthrough                                   
         When the user enters the Call Number in the text-box and presses the OK button, and the database is updated by setting the object as available for loan. The customer's information is then retrieved from the database, and displayed to the Librarian. The Librarian then has the option to print out this information, in case there is anything pertinent that the customer should know.

    Pressing the CANCEL button will return the Librarian to the "Transaction Administration" window. Pressing the CANCEL button at any time will end the current operation, and exit the module. As well, pressing the HELP button at anytime during the current module, will display appropriate information designed to aid the user.

     


    Renewing A Book                                   

     

    Inputs                                   
         
    Call Number
    Call Number of the book copy. This will be a 10 digit numeric field, which must be inputted by the Librarian.

     

    Outputs                                   
         This module updates book copy's circulation status and due date on the database. Then the Book Holder's information is displayed on the screen, via a new pop-up window, or sent to a printer. A Report of Borrower information, and book information

     

    Error handling                                   
         Syntax error on inputs to the call number field
         Invalid Input: call number does not exist in database or does not match the borrowed book


    What type of message is generated if the book is on hold? Our current procedures do not allow held books to be renewed. The customer with the hold has priority.

     

    Description                                   
         
    Renewing a Book Window
    This window has a text entry field for the call number of the book copy being renewed

    Buttons present: OK, PRINT REPORT, CANCEL, CLEAR, HELP

    OK
    Starts processing the request to renew a book, using the inputs provided.
    PRINT REPORT
    Once the book has been successfully renewed, pressing this button will print a report containing that book copy's information
    CANCEL
    Closes the "Renew a Book" window, and returns control to the "Transaction Administration" window.
    HELP
    Provides information about this window, the inputs, and the function that each button performs.
    CLEAR
    Clears the contents in the entry field

     

    Walkthrough                                   
         When the user enters Call Number in the text-box and presses the OK button then this module accesses the database and checks if the given book is on hold. If it is not on hold, then the due date for the Book Copyis updated in the database, and a message is displayed saying that the book copy has been successfully renewed. As well, the Librarian can print out a report of the book copy's information once the book has been renewed by pressing PRINT REPORT.

    If it is on hold, then the Book Copy's status is changed to available for loan, and a message is displayed, saying the Book Copy cannot be renewed.

    Pressing the CANCEL button will return the Librarian to the "Transaction Administration" window. Pressing the CANCEL button at any time will end the current operation, and exit the module. As well, pressing the HELP button at anytime during the current module, will display appropriate information designed to aid the user.

     


    Putting A Book On Hold                                   

     

    Inputs                                   
         
    Call Number
    Call Number of the book copy. This will be a 10 digit numeric field, which must be inputted by the Librarian. If not known, however, the Call Number can be searched using either the ISBN Number or the Title of the Book.
    User's ID Number
    A unique ID Number for each Customer, which must be inputted by the Librarian. If not known, however, the ID Number can be searched using either the Customer's name (Last, First) or the Customer's phone Number.

     

    Outputs                                   
         Upon accepting the two inputs, a message will be displayed to inform the Librarian that either the hold on the book is successful or has failed because of the following reasons (only one of them will be displayed):
    • invalid inputs: the Call Number or the user's ID Number was incorrectly entered.
    • the book cannot be placed on hold due to it already being reserved.
    • the Customer having too many books outstanding (including those on hold).

     

    Errors Conditions                                   
         Syntax errors on inputs to the fields with required formats.
         Input missing from field (both inputs must be completed).
         Invalid inputs: the Call Number or the User's ID Number doesn't exist in the database.

     

    Description                                   
         
    Hold a Book Window
    This window contains text entry fields for: Customer's ID and Call Number of the Book. It also has another text field to display a message.

    Buttons present: SEARCH (beside the Customer ID field), SEARCH (beside the Call Number field), CLEAR, OK, CANCEL, HELP, PRINT

    SEARCH (beside the Customer ID field)
    Performs a search for the Customer's ID based on the search criteria as stated in the 'Searching Customers' section.
    SEARCH (beside the Call Number field)
    Performs a search for the Call Number of the book based on the search criteria as stated in the 'View Book Copy' section.
    CLEAR
    Clears the contents in the text entry fields.
    OK
    Starts processing the holds request using the inputs provided.
    CANCEL
    Closes the 'Hold a Book' window, and returns the control to the 'Book Administration' window.
    HELP
    Provides information about this window, the inputs, and the functions each button performs.
    PRINT
    Prints a report on the held book.

     

    Walkthrough                                   
         The Librarian inputs the Customer's ID and the Call Number of the book; then selects the 'OK' button to process the inputs. If the message box says that the hold cannot be placed, the Librarian can select the CANCEL button to cancel the operation and quit, or the CLEAR button to clear the contents in the text entry field and start the process over again. If the messages box tells that the operation is successful, the Librarian can either select the PRINT button to print a report on the held book, or CANCEL button to quit, or CLEAR button to start over from step 1 for another hold.

     


    Canceling Books On Hold                                   

     

    Inputs                                   
         
    User's ID Number
    A unique ID Number for each Customer, which must be inputted by the Librarian. If not known, however, the ID Number can be searched using either the Customer's name (Last, First) or the Customer's phone Number.
    Call Number
    Call Number of the book copy. This will be a 10 digit numeric field, which must be inputted by the Librarian. It can either be provided by the Customer or be looked up in the list of all the books on hold by this current Customer.

     

    Outputs                                   
         Upon accepting the two inputs, a message will be displayed to confirm that the canceling of the book is successful or has failed because of invalid inputs.

     

    Errors Conditions                                   
         Syntax errors on inputs to the fields with required formats.
         Input missing from field (both inputs must be completed)
         Invalid inputs: the given Call Number or the User's ID Number doesn't exist in the data base.

     

    Description                                   
         
    Cancel a Hold window
    This window contains text entry fields for: Customer's ID and Call Number of the book. It also has another text field to display a message.

    Buttons Present: SEARCH, LIST, CLEAR, OK, CANCEL, HELP, PRINT

    SEARCH (beside the Customer ID field)
    Performs a search for the Customer's ID based on the search criteria as stated in the 'Searching Customers' section.
    LIST (beside the Call Number field)
    Displays a list of all the books on hold by the Customer whose ID is given in the Customer ID entry field.
    CLEAR
    Clears the contents in the text entry fields.
    OK
    Starts processing the canceling-a-hold request using the inputs provided.
    CANCEL
    Closes the 'Cancel a Hold' window, and return the control to the 'Book Administration' window.
    HELP
    Provides information about this window, the inputs, and the functions each button performs.
    PRINT
    Prints a list of books being held by this Customer.

     

    Walkthrough                                   
         The Librarian inputs the Customer's ID and then the Call Number of the book, which is provided by the Customer or obtained from the list generated after the List button is clicked.

    The Librarian clicks on 'OK' button to process the cancel request.

    If the message box says that the request has failed, the Librarian can select the CANCEL button to cancel the operation and quit, or the CLEAR button to clear the contents in the text entry field and start the process from step 1 over again.

    If the messages box says that the operation is successful, the Librarian can either select the PRINT button to print a report on the held book, or the CANCEL button to quit, or CLEAR button to start over from step 1 for another hold cancel.



    Customers with books on hold are notified once their request has been returned to the library. Upon notification, customers are given three days to pick up held books. Failing to pick up holds within this time period results in an automatic three day overdue fine. How is this event being handled?

     


    Paying A Fine                                   

     

    Inputs                                   
         
    User ID Number
    A unique ID Number for each Customer, which must be inputted by the Librarian. If not known, however, the Customer's name (Last, First) or the Customer's Phone Number may be used.
    Fine Amount to be Paid
    A currency value field, inputted by the Librarian. This is the amount of money the Customer wishes to pay to the Library, to decrease the current amount of Fines against them.

     

    Outputs                                   
         Upon accepting the two inputs, a message will be displayed to inform the Librarian that the command was successful, and the Fine amount will be decreased on the Customer's account.

     

    Error Handling                                   
         Syntax errors on inputs to the fields with required formats.
         Input missing from a field (both inputs must be completed).
         Invalid inputs: the User ID Number doesn't exist in the database.


    If a librarian enters an amount that exceeds the total fines, this should generate an error. We are unauthorized to maintain any form of credit.

     

    Description                                   
         
    Paying a Fine Window
    This window contains text entry fields for: User's ID and Fine Amount to be Paid.

    Buttons Present: CLEAR, OK, CANCEL, HELP, PRINT

    CLEAR
    clears the contents in the text entry fields.
    OK
    Starts processing the request to pay the fine, using the inputs provided.
    CANCEL
    Closes the "Pay a Fine" window, and returns control to the "Transaction Administration" window.
    HELP
    Provides information about this window, the inputs, and the function each button performs.
    PRINT
    Prints out a statement of information stating that the Customer paid the amount of the fine.

     

    Walkthrough                                   
         The Librarian inputs the Customer's ID and the Fine Amount to be Paid, then selects the 'OK' button to process the inputs.

    If a message says that the operation could not be performed, the Librarian can select the CANCEL button to cancel the operation and quit this process, or the CLEAR button to clear the contents in the text entry fields and start the process over.

    If a message states that the operation was a success, the Librarian can either select the PRINT button to print a report on the Fine Amount to be Paid, or the CANCEL button to quit this process.

     

                                       Entity Relationship Diagram                                   

     


    Entity Relationship Diagram                                   
    Entity Relationship Diagram

    Does this diagram allow books to be on loan to one customer and on hold for another simultaneously? It is not evident from the erd that this requirement can be satisfied.

     

                                       Top Level Data Flow Diagram                                   

     


    Top Level Data Flow Diagram                                   

     

                                       Data Dictionary                                   

     


    Data Dictionary                                   


    ** Books Database **

    Book = @ISBN Number + Title + Author + Publisher + Subject + Book Category
    + Media Type + Cost of Book + Version + Edition + Number of Copies

    * Entity; represents a book residing in the library. *


    ISBN Number = String

    * Key attribute for Book. Consists of a 10 digit number in the form *
    * D-DD-DDDDDD-D where D is a number from 0-9. Each ISBN number is *
    * is unique to an instance of Book. *


    Title = String

    * Non-key attribute for Book. Represents the title of the book, with *
    * a maximum of 150 characters. *


    Author = String

    * Non-key attribute for Book. Contains the author of the book, in the form *
    * Last Name, First Name *
    * If there are multiple authors, they are separated by semicolons. Maximum *
    * length is 120 characters. *


    Publisher = String

    * Non-key attribute for Book. Contains the publisher of the book, with a *
    * maximum length of 150 characters. *


    Subject = String

    * Non-key attribute for Book. This is a description of the subject *
    * book, to be used as a search term in the database. Maximum length *
    * is 100 characters. *


    Book Category = ["Overnight" | "Two Week Loan" | "Reserved" ]

    * Non-key attribute for Book. Used for determining the length of time a book *
    * can be borrowed, or if it can be taken out at all. *

    Media Type = ["Book" | "CD" | "CD-ROM" | " Film" | "Laser-disk" | "Journal" | "Cassette" ]

    * Non-key attribute for Book. Describes the format of the item. *

    Cost of Book = currency

    * Non-key attribute of Book. Contains a dollars and cents value of the Book, *
    * representing the price one would be charged for replacement of the item. *

    Version = real

    * Non-key attribute of Book. This is not a required attribute for book, but is *
    * only used if the item in question has a version number. It is in the form
    * DDD.DD where D ranges from 0 - 9. Version thus ranges from 0 - 999.99

    Edition = real

    * Non-key attribute of Book. Similar to Version, in that it is not a required *
    * attribute, and only applies if the item has an edition number. It is in the *
    * form DDD.DD where D ranges from 0 - 9. Edition thus ranges from 0 - 999.99. *


    Number of Copies = integer

    * Non-key attribute of Book. Represents the number of copies that of the *
    * item in question. Used in creating instances of the Book Copy weak entity, *
    * whose definition follows. Ranges from 0 - 999. *


    Book Copy = @Call Number + ISBN Number + Location + Floor + Circulation Status

    * Weak Entity associated with Book. Each instance of Book can have zero or more *
    * instances of Book Copy. Represents a copy of an item in the library. *


    Call Number = integer

    * Key attribute of Book Copy. Represents the unique number to identify *
    * each copy of an item in the library. Each time an instance of Book Copy *
    * is created, the next available number is assigned to Call Number. *
    * Call Number can range from 0 - 999999999. *


    ISBN Number = string

    * Non-key attribute of Book Copy. This is the same as the ISBN Number for the *
    * instance of Book associated with this instance of Book Copy. *

    Location = string

    * Non-key attribute of Book Copy. Represents the name of the library location *
    * where this particular copy is residing. Maximum 20 characters. *

    Floor = integer

    * Non-key attribute of Book Copy. Represents the floor number of Location at *
    * which the copy is located. This number ranges from 0 - 99. *

    Circulation Status = [ "On Loan" | "Overdue" | "On Hold" | "Available" |
    "Out of Circulation" ]

    * Non-key attribute of Book Copy. Represents the current status of the copy in *
    * question, and used for decisions on some functions acting on a Book Copy. *




    ** Customer Database **

    Customer = @User ID + Last Name + First Name + Phone + Address + City
    + Province + Country + Postal Code + Category + Fine
    + Max Books + Max Fine + Restricted

    * Entity; represents customers that have membership in the library. *


    User ID = integer

    * Key attribute for Customer. It is created when the customer is *
    * registered for a membership. It is unique. *


    Last Name = String

    * Non-Key attribut for Customer. Represent the customer's last name. *
    * Length should be between 1 and 60. *


    First Name = String

    * Non-Key attribut fro Customer. Represent the customer's first name. *
    * Length should be between 1 and 40. *


    Phone = String

    * Non-key attribute for Customer; represent the customer's phone number. *
    * Standard North American phone number. (3 digit area code) 3 digit local *
    * exchange-4 digit number. The 3 digit area code is optional. The length *
    * should be between 8 to 14. *


    Address = String

    * Non-key attribute for Customer; represent the customer's address include *
    * Apartment number, street, P.O.Box. Length should be between 1 to 80. *


    City = String

    * Non-Key attribute for Customer; represent the city of the Customer's *
    * mailing address. Length should be between 1 to 20. *


    Province = String

    * Non-Key attribute for the Customer; represent the province/state of the *
    * Customer's mailing address. It should be exactly 2 characters. *


    Country = String

    * Non-Key attribute for the Customer; represent the country of the *
    * customer's mailing address. The maximum length is 10 characters. *


    Postal Code = String

    * Non-Key attribute for the Customer; represent the postal code of the area *
    * the customer's mailing address. The Maximum Length is 11 characters. *


    Category = ["regular" | "librarian" | "supervisor"]

    * Non-Key attribute for the Customer; represent the customer type. Extra *
    * category can not be added. *


    Fine = currency

    * Non-Key attribute for the Customer; represent the current fine that the *
    * customer has. Two digits following decimal point should be stored (to *
    * represent dollars and cents). *


    Max Fine = currency

    * Non-Key attribute for the Customer; represent the maximum fine that the *
    * customer can have . This can only be modified by a user with supervisor *
    * category. *


    Max Books = integer

    * Non-Key attribute for the Customer; represent the maximum number of books *
    * that the customer can borrow. This can only be modified by a user with *
    * supervisor category. *


    Restricted = ["yes" | "no"]

    * Non-Key attribute for the Customer; represent whether or not the customer *
    * can borrow. It becomes "yes" when the customer's fines exceed the *
    * maximum amount allowed. *


    ** Holds Database **

    Hold = @User ID + @Call Number + Hold Date

    * Entity; represent the book that is on hold by the customer with the *
    * User ID. *


    Call Number = real

    * Key attribute for the Hold entity and Bookcopy entity; represent the call *
    * number of the book that is on hold. This is a unique number that is *
    * created after the book is added to the Book's database. *


    Hold Date = integer

    * Non-Key attribute for the Hold entity; represent the date that the book *
    * is put on hold. *


    ** Loans Database **

    Loans = @User ID + @Call Number + Loan Date

    * Entity; represent the books that are borrowed by the customer with the *
    * specified User ID. *


    Loan Date = integer

    * Non-Key attribute for the Loans entity; represent the date that the book *
    * is borrowed. *

    *********************
    User ID and Call Number has been defined.
    *********************


    ** Fines Database **


    Fines = @User ID + Fine + Date

    * Entity; represent the Fine situation of the Customer with the specified *
    * User ID. *


    Date = integer

    * Non-Key attribute for the Fines entity; represent the date that the fine *
    * has been added or subtracted. *

    ************************
    User ID and Fine has been defined above.
    ************************

    ** Circtype Database **

    Circtype = @Kind

    * Entity; represent the enumerated Circulation that the user can enter. *


    Kind = String

    * Key attribute for Circtype entity; stores the new circulation value when *
    * user entering a Bookcopy. *


    ** Custtype Database **

    Custtype = @Kind

    * Entity; represent the enumerated Category that the user can enter. *


    Kind = String

    * Key attribute for Custtype entity; stores the new category value when *
    * user entering a Customer. *


    ** Loctype Database **

    Loctype = @Kind

    * Entity; represent the enumerated Location that the user can enter. *


    Kind = String

    * Key attribute for Loctype entity; stores the new location value when *
    * user entering a Book. *


    ** Medtype Database **

    Medtype = @Kind

    * Entity; represent the enumerated Media Type that the user can enter. *


    Kind = String

    * Key attribute for Custtype entity; stores the new media type when *
    * user entering a Book. *


    ** Subjtype Database **

    Subjtype = @Kind

    * Entity; represent the enumerated Subject that the user can enter. *


    Kind = String

    * Key attribute for Medtype entity; stores the new subject value when *
    * user entering a Book. *



    Pending the clarification of our expressed concerns, Springfield Public Library is prepared to accept this contract prepared by VoidWorks Software Inc.

    Send mail to the Group Leader or the Webmaster
    Back to the Main Page