GEN U COURSE REGISTRATION SYSTEM
Revision of Functional Specification and Management Plan


Computer Science 451 Customer Group 9

Due 1:00pm January 30,1996


Members

Alvin Schur
Andrew Tang
Chris Mohr
David Petiot
Ed Stemler
Guy-Pierre Gravel
Hiu Lee
Jason Mitchell
Jeff Rouse
Laura Meynberg
Rommel Villa
Tim Adams
Wendy Michaud

Educational System Products Inc., thank you for your specification and management plan on the development of our registration system at Gen U. We prefer to go with your option of a graphical user interface even though this may conflict or eliminate the remote access support previously requested. Online graphical selection would increase efficiency and be less problematic for the general user rather than choosing the suggested typing of characters. By substituting all occurences within the original specifications of `typing a character and pressing enter' with the task of selecting the item with a mouse. In addition, we would prefer to eliminate the View Timetable function. It would be intuitive to the student if the timetable could be displayed on the screen at all times. This would provide visual feedback pertaining to the results of the students actions.

Finally, our university operates on a single-semester year and thus the references to Fall/Winter are unnecessary. You will find more detailed alterations within the documentation to clarify your assessment of our institution's needs.


Student Registration System

Educational Systems Products Inc.

Supplier Group Nine

January 25,1996


Group Members:

  • Hugh Arai -- Document Coordinator & HTML editing, Management Plan
  • Sung Chan -- User Interaction
  • Ken Chuong -- User Interaction
  • Howell Cobb -- Management Plan
  • Mike Courage -- Editor, Management Plan
  • Joe Dinh -- User Interaction
  • Bryan Hunt -- Project Leader,Management Plan
  • Doug Kaye -- Management Plan
  • Pat Michael -- Introduction, Summary, Glossary
  • Colin Poon Tip -- User Interaction
  • Doug Thornborough -- User Interaction
  • Barb Walrond -- User Interaction

  • Project Introduction

    Educational Systems Products Inc. (ESP) is pleased to reply to General University's requirement for an on-line course registration system. This document introduces ESP and outlines a management plan and target dates for design, documentation, and implementation of such a system, as well as training for Gen U staff.

    ESP Inc. designs custom software for education administration, and the system required by Gen U is similar to other products we have successfully delivered. Our design team has experience identifying and solving many of the issues that a course registration system will involve. Nonetheless, we stress that the system we design for Gen U will be a custom system, targeted for Gen U's particular needs.

    We are also sensitive to the fiscal environment that public institutions operate in and our goal is to produce a system that is not only efficient, reliable and easy to use, but also cost-effective and delivered on time.

    The requirements specification we received indicates that Gen U has just begun the process of computerizing it's administration, and did not specify the computer hardware this system will operate on. However, we have determined that Gen U's computer science department uses networked Sun computers. Since the peak load for a registration system does not coincide with peak usage for course work, we recommend initial installation of the system on the computer science network. Our goal is to produce a system that can be easily transferred to the administration system, once that system is procured.

    A course registration system has several classes of users. Administrative personnel use the system to register students and create course schedules. Instructors use the system to print class lists. Students will use the system to register for courses. The system must provide an interface that is easily learned by all users, and provides assistance when difficulties arise.

    Another feature incorporated in a course registration system from ESP Inc. is multilevel security, so that users can access only the functions they are permitted to use.

    Some students must access the system from terminals in the administration building. Others will have personal computers with modems at home. It is in the university's interest to encourage this remote access since it minimizes the number of terminals it needs on site. Moreover remote access should be possible with any type of home computer and this suggests that the interface be textual. However we stress that this can still provide a menu-driven interface.

    General University would experience cost-savings for a variety of reasons when it implements a text-based course registration system designed by ESP Inc. These include:

  • lower capital cost of character based video terminals.
  • less maintenance cost for pointing devices compared to keyboards.
  • less computational overhead serving a character terminal.
  • the system can be accessed remotely by students using home computers.
  • Additional advantages to implementing our system will be: For Students:
  • less user frustration in registration line-ups.
  • allow students confidential but flexible registration.
  • elimination of clerical errors and prevention of scheduling conflicts.

    For Administration:

  • lower cost in staffing and in error correction.
  • faster processing of registrations.
  • ease of generation of registration statistics.
  • We are confident that you will be pleased with our product and that it will fulfill your expectations. While most purchasers find that a character-based system meets their requirements, ESP Inc. will provide the system that General University wishes. However, it should be noted that a graphical interface cannot be developed for remote access within your time constraints.

    The documentation enclosed describes the functions of a character-based menu interface. ESP Inc. can provide a custom-built graphical interface with the same functionality excluding remote access support.

    Subject to your agreement to proceed, we suggest the following time line for producing the system.

    Mid February -- we will present an overall design document highlighting data structure, module design and error checking. Your feedback will help us to produce an overall detailed design.

    February 22 -- we will submit a detailed design including resolutions of your concerns in our overall design. This document will also detail our testing policies.

    March 12 -- our technical writers will forward the user's manual for the system.

    Late March -- we will demonstrate the functioning system at our facilities.

    May -- installation at Gen U.

    We thank you for consideration of our proposal and look forward to discussing with your staff the needs of General University.


    User Interaction

    What follows is a description of the system we will provide from the point of view of the user.

    Inputs Common to All Functions:

    Note: All input is case insensitive (i.e. upper and lower case input is acceptable.)

    Output Common to All Functions:

    Login Screen

    Expected Input/Output:

    Input:  Identification Number
            Password
            H to invoke help.
    Output: Access to the student registration  or administration menu.
            Access to the help menu.
    
    The Login Screen is used to identify a user that is using the Student Registration System. Upon entering a valid Identification Number, the system continues on by requiring a password for entry into the system. If the Identification Number given is that of an administrative user, the system will jump to the administrative main menu.

    Example: Identification Number ==> type "123456" and "ENTER"
             Password ==> type "97531" and "ENTER"
    
    At the Login screen it is possible to access an on-line help document by entering 'H' at the prompt. After the entry has occurred, the help document will look similar to the following:

    Help:

    1. Enter 6 digits for the Student Identification Number.
    2. Enter 5 digits for student's password.
    3. Use "Backspace" for correcting typing errors.
    4. Press "ENTER" to get out of help menu.


    There is an inconsistency here with regards to the format of the student password. Here, you specify 5 digits as the format; however, several pages later, in the "Modify Student Information" in the Adminstrative menu, you declare that it is an 'n'-length alphanumeric string. We would prefer the latter case, and would like this help menu to reflect that format specification.

    System Responses to Unexpected Input


    Input:    Invalid Identification Number and or Password.
    Output:   An error message indicating an error in the user's
              entry and a prompt to re-enter.
    

    Student Registration Main Menu

    The 'Student Registration Main Menu' is an interface that allows a user quick and easy access to specific sections of the Student Registration System. The menu will be similar to the form:


    Due to the nature of a graphical interface, it will be not necessary to have a keyboard letter representation of every option because the mouse will eliminate the need for alphabetic representation of the menu.
    i.e., student will click on the button of his or her choice.


    A --> add course. D --> delete course.

    Rename delete course to drop course, it makes more sense to the student

    O --> modify course.

    Please rename "modify a course" to "change a section of course", as it makes more sense from the student's point of view>

    L --> list available courses.

    The option "list available sections" is not listed in this main menu, although it is a function that you have specified in the latter portion of this document.

    V --> view timetable. C --> change password. H --> help. P --> print timetable. Q --> quit.

    Expected Input/Output

     Input:   A letter selection from the menu as indicated.
     Output:  The specific option screen.
    
    Upon a valid selection from the menu, the Student Registration System will change screens respective to the selection made.

    Example:  type "A" and "ENTER" brings you to the 'Add
              a Course' function.
    
    During the use of the 'Main Menu', on-line help is available to the user by entering 'H'. The following is an example of what you will see with this selection:

    Help:

    1. enter "A" to add a course.
    2. enter "D" to delete a course.
    3. enter "L" to list available courses.
    4. enter "V" to view timetable.
    5. enter "C" change password.
    6. enter "P" to print timetable.
    7. enter "H" to access this help menu.
    8. enter "Q" to quit the "Student Registration Menu".
    9. "Backspace" for correcting typing errors.
    10. Press "ENTER" to get out this help menu.

    Please include "change a section of a course as one of the help options ( you don't have it listed ).

    System Responses to Unexpected Input:

    Input:    An option not available on the menu.
    Output:   A message stating "Invalid input please only enter
              one of the options listed on the menu."
    Note:     Invalid inputs include a character not on the menu,
    	  an integer, or a string.
    

    Adding A Course

    'Adding a Course' is available to students registered on the system. This function allows students to create their own personal timetable.

    Screen 1
    Expected Input/Output:

    Input:    Course
    Output: A list of the selected course lectures.
    
    When "Add a Course" is selected, the system will prompt the user for the course they wish to add. The desired course is typed into the input line, and followed by "ENTER".

     Example input:  cpsc451 'ENTER'
    
    If the chosen course is available to students, and the student is not already enrolled, a list of the lectures for the desired course will be displayed on the screen. When the system detects undefined courses (i.e.junk101), an error message is written to the screen and the user is prompted to re-enter the data. Otherwise, the system will display the next user screen.


    Often, some students registering at Gen University find the course name codes rather cryptic and puzzling. For example, is "astr" astrophysics or astronomy? Thus, although a student may know that they are heading into a computer science, they may not necessarily realize that "cpsc" is indeed computer science. So, to facilitate registration for students by minimizing the memory load of these codes, we suggest a presenting a scroll-box of all available courses listed within, and have the student directly select that course. The best option would be to have searches performed on a choice of either long name or short name
    (i.e. microbiology 241 or mibi241 ).

    Rather then your original example:

    (student wishes to register in geology 451 selects "Add a course"; types:
    > geology 451
    ERROR: FORMAT MUST BE XXXXxxx, where XXXX is course code and xxx is course number
    > geol451
    ERROR: NO SUCH COURSE
    > geog451
    ERROR: NO SUCH COURSE
    ...
    (and so on)


    In any event, a scroll-box constrains the user to choosing only the courses that are available, rather than have them openly guess a code and its corresponding number; much more user-friendly, as well as reducing a great deal of frustration, wouldn't you agree?


    System Response to Unexpected Input:

    Input:  An unavailable course or incorrect entry.
    Output: An error message informing the user and a request to
            re-enter.
    

    Screen 2
    Expected Input/Output:

    Input:    A choice of lecture section.
    Output:   A list of the Lab sections / Tutorial sections 
    	  / message of added course.
    
    Each lecture is numbered in order to uniquely represent it as an available selection. The user is prompted to select a lecture section by typing in the number. If the desired course does not require the selection of course Labs and or Tutorials the course is added to the student's list of currently enrolled courses.

    Input: A choice of lecture section. Output: A list of the Lab sections / Tutorial sections / message of added course. Each lecture is numbered in order to uniquely represent it as an available selection. The user is prompted to select a lecture section by typi$ in the number. If the desired course does not require the selection of course Labs and or Tutorials the course is added to the student's list of currently enrolled courses.


    Please clarify whether all lectures for that course are listed, or just those that are "an available selection"; in any case, we would like the system to display all lecture sections to the student, and denote those that are full, unavailable, or conflicting with the student's timetable. This is because a student can have knowledge of all the lectures that are available to him, and even though he sees one that he wants is full, he can always come back and try it again, or at lease rearrange his schedule to accommodate the conflicting time. This applies to lab and tutorial sections too.

    System Response to Unexpected Input:

    Input:    A value other than the numbered choices.
    Output:   An error message and a request to re-enter.
    
    

    Screen 3
    Expected Input/Output:

    Input:   Selection of Lab and Tutorial Sections where required.
    Output:  List of Tutorials or confirmation of enrollment
    	 with an option to add another.
    
    Some lectures require a student to take Labs and or Tutorials. The system is designed to accommodate for this.

    After successfully adding a course lecture that requires a Lab and/or Tutorial, a list of the Lab sessions, similar to the list of Lectures, is displayed to the screen.

    As for lecture section, lab and tutorial sections are selected by number. Completing the requirements will inform the user that the course has been added to his/her schedule. If all required components of a course are not selected, the student is not enrolled. Typing 'M' during component selection will return the user to the main menu without enrollment.


    Try to eliminate the need to navigate through screen. Ideally we want a one-screen interface in which all information is readily available. (The Y/N prompt in the next paragraph would then not be an issue.)

    After successfully adding a course the user is asked if they wish to add another course. 'Y' for yes and `N` for no are the only two choices, where `Y` will bring the user back to the beginning of the `Add a Course' function. Entry of 'N' will return the user to the main menu.

    System Response to Unexpected Input:

    Input:    A value other than the numbered choices.
    Output:   An error message and a request to re-enter.
    

    Time Conflicts

    Course selection cannot allow overlap in a timetable. The Student Registration System is designed to locate these conflicts and notify the user that they are not permitted to do so.

    When a conflict in scheduling occurs with either a Lecture, Lab, or Tutorial, the next available section is suggested to the user. In turn they can either accept by entering 'Y' for yes or decline by entering 'N' for no. A response of `Y` will result in the desired class being added to their time table and the steps described above will continue. An 'N' response will list the next session available and the process is repeated until a session is selected.


    Instead of having the system select the next available section for the student, and have him hit 'N' each time until it is the one he wants, why don't you present a listing of available sections that DO NOT conflict with the student's timetable, and have him select for himself from the available sections. To guide his preference, you may additionally display the time, dates, and location of each available section. The next available section may not necessarily be the best one for the student, for example, if the next available lecture is an 8:00am one at the farthest reaches of campus.

    Example Using 'Add a Course':
    Colin wants to add math 311 to his schedule but he doesn't have his list of available lectures or labs with him. He reaches a terminal and enters in his identification number and password. Success, the main menu appears indicating that he has been accepted to the registration system. He enters the course "math311" and hits the return key. The list of available lectures is on his terminal. He notices that the third section fits his schedule the best and he chooses it. The next screen is the list of labs. It says that he must choose one, yet he's not sure which will fit his schedule. He selects number one and a message comes up telling him of a conflict with his current timetable and does he want to accept the next available section at 3 o`clock? He enters 'Y' for yes, and a message informs him he is enrolled. Colin enters `Q` for quit and leaves.

    Deleting a Course

    The `Delete a Course` function provides a utility to remove a course and all it's components from the user's timetable.

    Expected Input/Output:

    Input:         Course
    Output:        Confirmation of Removal
    Example input: cpsc451
    
    If the student is enrolled in the course and the drop date has not passed, then they are asked for confirmation to remove the course. 'Y` for yes or 'N' for no. On entering `Y` the course is removed from the student's timetable, and they are informed of this change. Entry of `N` will return the user back to the main menu and no changes will be made.

    After successfully deleting a course the user is asked if they wish to remove another course. 'Y' for yes and `N` for no are the only two choices, where `Y` will bring the user back to the beginning of the `Delete a Course' function. Entry of 'N' will return the user to the main menu.

    System Responses to Unexpected Input:

    Input:    A course that is not in the users list of enrolled
    	  courses.
    Output:   They will be informed of this, and prompted for another
    	  entry.
    
    In general, input that is not available in a particular section of the 'Delete a Course` function will be handled with an applicable message and an opportunity to re-enter their choice.

    Example Using 'Delete a Course'
    Colin dislikes his 'cpsc457' course. He decides to drop it using the registration system. After entering his assigned Identification Number and password, the main menu appears. From the menu he chooses 'Delete a Course', and he is prompted for the course. He does so, and the system makes sure he is removing the right course by asking again. He enters 'Y' to confirm that he is removing the right course and the system returns, "cpsc457 successfully deleted. Delete another course? (Y/N)". He enters 'N' and then enters 'Q' to quit.

    To Modify a Course

    This function allows the student to change one or a combination of the Lecture, Lab, or Tutorial sections for a particular course.

    Expected Input/Output:

    Input:    Press the "O" key from main menu to modify a course.
    Output:   The 'Modify Course' menu prompts a student to enter 
    	  the course (CPSC231) followed by 'ENTER'.
    
    
    Once the student enters a course that they are enrolled in, the system will display the course along with the lecture, lab and/or tutorial sections that the student is registered in. The cursor appears on the lecture number for the student to modify. The student can now change to another section by typing a new section number or accepting the current value by typing 'ENTER'. The system then updates the display with the new selection and the next course component is highlighted. Now the lab or the tutorial section can be changed in the same way. The display will read as follows:

    	 You are registered in:
    
    	      CPSC231
    	      Lecture   01
    	      Lab       02
    	      Tutorial  02
    
    	 (The cursor will be under the "01" at the start)
    
    After the student changes or accepts each component, two things may happen:

    System Responses to Unexpected Input:

    If the student enters an invalid course an error message, "Invalid course, please try again or press 'M' to return to main menu", will appear in the status line. If the student is not registered in the course an error message, "You are not registered in this course, please try again or press M to return to main menu", will appear. In both cases, the prompt returns to the front of the input line ready for a new entry.

    Listing Available Courses


    Since this function actually lists courses by discipline, it should be renamed Discipline Courses List. It also would also confusing this item with the "List Available Sections" (two "L"s on a main menu screen!)

    This function displays, on the screen, the list of courses offered by Gen U in a discipline.

    Expected Input/Output:

    Input:    Course discipline ( CPSC ), followed by 'ENTER'.
    Output:   A list of courses in the discipline. The list is in 
              increasing order of course level. If the list is too long,
              it will be truncated to fit the screen and the user will
              be prompted to press the space bar to see the rest of the
              list.
    
                    Example of a list with input "CPSC":
    
    	                Courses Available:
    
    		            CPSC 201
    		            CPSC 231
    		            CPSC 233
    		            CPSC 240
    		               .
    		               .
    		              etc.
    
    

    System Responses to Unexpected Input

    Input: Empty string (i.e. no inputs but enter key pressed )
    Output: A message is displayed saying that no input was entered.
    
    If the discipline is not found, an error message is displayed.

    List Available Sections

    This function displays, on the screen, the lecture sections, labs, and tutorials offered in a course. If the section is full, '(full)' will be printed beside each section. If the section is open, the section will be listed with nothing printed beside it.

    The list will be divided into 3 parts, lecture, lab and tutorial sections. Each part is ordered in increasing number and is represented with 'lec','lab', and 'tut', respectively. If the list is too long, the screen will display a portion of the list and prompt user to press the space bar to view the next portion of the list.

    Expected Input/Output:

    Input:   Course
    Output:  The course name is displayed on the top. A list with
             five  columns is displayed below the course name. The
             available sections, the start time, duration, days and
             the location of the section will form the columns.
    
    
    

    System Response to Unexpected Input:

    Input: invalid course
    Output: reports that course entered is not found.
    
    
    Example of output with input 'CPSC451':
    	                Sections for CPSC451
    
       Sections    Start time   Duration (min)      Days      Location
    
       lec01(full)    13:00          50              MWF      ST102
       lec02          9:00           50              MWF      ENE201
       lab01          10:00          50              TR       ST02
       lab02          15:00          50              TR       ENB33
       tut01          14:00          50              F        MS121
    

    Viewing a Timetable

    This function will display on-screen the timetable for any term that the user specifies. From the output screen, the user has the option to page through the display (which consists of two screens), choose to print out a timetable for a different term, return to the Main Menu, or get more help.

    Expected Input/Output:

    Input:  The term the student wants to have printed out, M to leave
    	this function, or 'H' for help.
    Output:
            If term given:
              1) A copy of the student's timetable for the term 
    	     specified will be formatted on the screen for viewing.
    	     If the student is taking no courses 
    	     then the timetable grid will remain empty.
              2) Allow the user to browse through both screens of the
                 display.
              3) Returns the student back to the Input portion of this
    	     function to see if the student wants to view a 
    	     timetable for a different term.
    

    System Responses to Unexpected Input:

    Input:    Anything else entered besides the term, M for Main
              Menu, or 'H' for help.
    Output:   Display an error message for the user.  Return to the Input
    	  portion of this function to allow the user to try entering
    	  his/her choice again.
    
    Example:
     Please enter one of FALL, WINTER to print that terms timetable,
     or M to return to the Main Menu.
    ->  FALL
    +------------------------------------------------------------------+
    |  Time      |  MONDAY  |  TUESDAY | WEDNESDAY| THURSDAY |  FRIDAY |
    +------------+----------+----------+----------+----------+---------+
    |08:00-08:30 |          | CPSC533  |          | CPSC533  |         |
    |08:30-09:00 |          |  Lab     |          |  Lab     |         |
    |09:00-09:30 | CPSC449  |          | CPSC449  |          | CPSC449 |
    |09:30-10:00 |  Lec     |          |  Lec     |          |  Lec    |
    |10:00-10:30 | CPSC449  |          | CPSC449  |          |         |
    |10:30-11:00 |  Lab     |          |  Lab     |          |         |
    |/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\|
    |\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/|
    |                                                                  |
    |  CPSC449   Principles of Programming Languages         COLIJN    |
    |  CPSC533   Artificial Intelligence                     COCKETT   |
    |  STAS325   Technology within Contemporary Society      MOORE     |
    |                                                                  |
    | (space bar) -- View Next Screen   (M)-- Main Menu   (H)--help)    |
    | (F)ALL, (W)INTER, (FW) will print that term's timetable.         |
    |                                                                  |
    | ->                                                               |
    +------------------------------------------------------------------+
    

    To View Past/Current Courses

    Note: This function is not included in the minimal system, but is likely to be available as an expansion.
    This function will give a listing of all the courses taken by the student, including the courses currently registered.

    Expected Input/Output:

    Input:  Press the"V" key followed by the Enter key from main menu 
    	to view past and current courses.
    Output: When the "V" key is pressed, the system will list all 
    	courses taken by a student in the following format:
         
    	- Course description and number (ex. CPSC231).
    	- Course weight (ex. H for half courses, F for full courses).
    	- Course name  (ex. Intro to Computer Science I).
    	- Session (ex. F for Fall, W for Winter FW for both).
    	- Letter grade (ex. B, A-).
    
    The screen will also separate each term by a dotted line followed by a GPA (Grade Point Average) for that term. A final GPA for all courses taken will appear at the bottom of the screen. If the screen cannot fit all the courses, the student can press the space bar to see the rest of the courses.

    
     Example:
    
    Course   Weight  Name                          Term(s)     Grade
    CPSC231   H      INTRO TO COMPUTER SCIENCE I   F /93       B
    ASTR205   H      INTRO TO ASTRONOMY            F /93       A
    NURS271   H      THE NATURE OF NURSING         F /93       D
    HIST397   H      WAR & SOCIETY                 F /93       C
    ------------------------------------------------------------------
    GPA: 2.50
    CPSC233   H      INTRO TO COMPUTER SCIENCE II  W /94       B
    ECON304   F      INTRO TO MATHEMATICAL ECO     FW/94       A
    HIST401   H      HISTORY OF CANADA             W /94       C
    ------------------------------------------------------------------
    GPA: 2.75
    HIST305   H      HISTORY OF U.S.S.R            W /96       W
    HIST402   H      HISTORY OF AFRICA             W /96      N/A
    PSYC205   H      INTRO TO PSYCHOLOGY           W /96      N/A
    PHYS201   H      INTRO TO PHYSICS              W /96      N/A
    MATH251   H      CALCULUS I                    W /96      N/A
    ------------------------------------------------------------------
    GPA: UNAVAILABLE
    
    ***

    Placement of GPA scores on the above screen is somewhat confusing. Does the 2.75 GPA refer to the three courses above the dotted line, or the five courses below the score itself. Or is it even a cumulative GPA of the preceding seven courses? Please rename to, say, "cumulative GPA for 94" for the sake of clarity.

    Eliminate Fall and Winter terms, as explained in the Summary of Evaluation.

    Change the 2- digit year format,we prefer a 4-digit year format.


    Changing Passwords


    Make sure that the password is not displayed for all logins to the system.

    This function will allow the user to change their password for the system. User entries for this function can not be displayed on the screen due to their sensitive nature. After the password has been changed, a confirmation will be displayed on screen before the user returns to the Main Menu.

    Expected Input/Output:

    Input: When prompted for each, the user will enter their old
           password	used for logging onto the system, and then enter
           a new password twice to ensure that the correct 
           password was entered.
    Output: Confirmation that this change has occurred successfully
           (after storing the new password information on the student's
           record) and then return to the Main Menu.
    

    System Responses to Unexpected Input:

    Input:    The user enters the wrong old password.
    Output: Before proceeding to ask for the new password, beep and 
    	display the following error message:
    	 "Incorrect old password.  Please re-enter it."
    	-Return to the Input portion of this function to allow the 
    	user to try entering the old password again.
    Input:  The two entries for the new password don't match.
    Output: Beep and display the following error message:
    	 "The two entries for the new password you entered do not
    	 match.  Please re-enter."
            -Return to the Input portion of this function to allow the 
    	user to try entering the two entries for the new password 
    	again.
    
    Example:
    
    Please enter your old password. -> {User enters old password} Please enter your choice for a new password. -> {User enters new password} Please enter your new password again to check for errors. -> {User enters new password again} Your password has been successfully changed. Press M to return to the Main Menu. -> M (Main Menu...)

    Printing A Timetable

    This function will print the corresponding timetable for which the user requests. It is assumed that there will be a printer available to where output will be sent. The user has the option to print as many timetables as specified by administration, return to the main menu, or get more help with this function.

    Expected Input/Output:

    Input: The term the student wants to have printed out, 'M' to leave
           this function, or 'H' to get help. 
    Output:
          If term given:
             1) A copy of the student's timetable for the term specified
                will be printed out, regardless of the number of courses
                that the student is taking.  If the student is taking no
                courses then the timetable grid will remain empty. The 
                computer confirms that the printout has taken place 
                successfully.
             2) Returns the student back to the Input portion of this 
                function to see if the student wants to print another
                timetable for the same (or a different) term.
    
    

    System Responses to Unexpected Input:

    Input:   Anything else entered besides the term, 'M' or 'H'.
    Output:  Display an error message for the user.
    	 Return to the Input portion of this function to allow the 
             user to try entering their choice again.
    
    Example:
     Please enter one of (F)ALL, (W)INTER, (FW) to print timetable(s),
     (M) to return to the Main Menu, or  for more help.
     ->  F
     Your FALL timetable has been printed.
     Please enter one of (F)ALL, (W)INTER, (FW) to print timetable(s),
     (M) to return to the Main Menu, or 'H' for more help.
     ->  M
     (Main Menu...)
    
    An example of incorrect input:
     Please enter one of (F)ALL, (W)INTER, (FW) to print timetable(s),
     (M) to return to the Main Menu, or 'H' for help.
     ->  January
     Incorrect input.  Please enter one of (F)ALL, (W)INTER, (FW)
     to print timetable(s), (M) to return to the Main Menu,
     or 'H' for more help.
     ->
    

    Administrative Functions:

    This section describes activities typically performed by a system administrator.

    Administrative Menu Display

     __________________________________________________________________
     |                                                                 |
     |           General University SRS Administration Menu            |
     |                                                                 |
     |                                                                 |
     |           (D)eadlines                                           |
     |                                                                 |
     |           (T)imetables                                          |
     |                                                                 |
     |           (C)lass Sizes                                         |
     |                                                                 |
     |           (S)tudent Information                                 |
     |                                                                 |
     |           (H)elp                                                |
     |                                                                 |
     |           (Q)uit                                                |
     |                                                                 |
     |                                                                 |
     |           Enter selection:                                      |
     |_________________________________________________________________|
    

    This adminstrative screen does not appear the same as the Student Registration Screen as displayed earlier in the document. Will both screens have the same "feel."

    The menu expects one character followed by a carriage return as input. Error messages are displayed above the selection line. Correct input will cause the system to execute the next screen as chosen.

      Menu Selections:
         Deadlines:    Modify Add Date, Modify Drop Date.
         Timetables:   Modify Number of Timetables.
         Class Sizes:  Modify Section Size.
         Student Information:  Add a New Student, Modify Student 
    			   Information, Delete a Student Record.
    

    Modify Add Date

    This option allows a change to the add a course deadline for all courses. Only dates in the future will be accepted. The administrator will be prompted to input the session (i.e. Winter, Fall), year, and confirmation of the change. Notification of the change will be displayed above the action line. If input is not a valid date in the future a suitable error message will be displayed and the user will be returned to the input prompt.

    Modify Drop Date

    This option allows a change to the drop deadline for all courses. Only dates in the future will be accepted. The administrator will be prompted to input the session (i.e. Winter, Fall), year, and confirmation of the change. Notification of the change will be displayed above the action line. If the input is not a valid date in the future a suitable error message will be displayed and user will be returned to the prompt.

    Modify Number of Timetables

    This is the allowable number of timetables a student can print. The user is prompted for an integer between 0 and 32768. Any other input will produce an error message and prompt the user to re-enter. The user is then asked to confirm the change, and is notified that the change has been accepted.


    We have decided to eliminate this function entirely. The student will have no limits to the number of timetables he or she may print.

    Modify Class Size

    Here the user enters the course and section to change. The system searches for the course, and if found displays the course. The display consists of it's present size, and the number of students currently enrolled for lectures, labs and tutorials. The user then uses the arrow keys to scroll through the classes and enters a carriage return to select the field highlighted by the cursor. The user is then prompted to enter the new class size. Acceptable inputs are numbers greater than 0 and not less than the current enrollment. Input out of range or not an integer will produce an error message and prompt the user to re-enter. For example, if a course was not found the user would see a "Course CPSC982 not on file" or "HIS421 not a valid course name" error message above the action line depending on the nature of the error and would be returned to the input prompt.

    Student Information

    Here the user can Add a New Student, Delete a Student Record or Modify Student Information.

    Add a New Student
    When this option is invoked the entire student record is displayed on the screen. A user navigates the various fields with the arrow keys (the selected item is highlighted). All fields of the student record may be entered and as a minimum the student name, address and status must be entered. General University can set defaults for various fields such as General Studies as a Faculty, course limit of 5, courses registered in = 0, time tables printed = 0, current courses = none, past courses = none, major = none, and minor = none. When all data has been entered and accepted as correct the system will generate an identification number for the new student, a password and will print an information sheet for the student.

    *Last Name: __________ First Name  __________  Middle Name ______
    *Street Address _________________________________________________
    *City ____________    Province: ____        Postal Code  ________
    *Status: _________ 
    

    "Status", we suppose, refers to part/full-time status? Please rename it from Status to Full/Part-time Status.

    Faculty: General Studies Major: _________ Minor: __________ Courses allowed: _5_ Courses registered: _0_ Past courses: None Current enrollment: None * denotes a required field
    Modify Student Information
    In addition to any field that can be entered in the 'Add a New Student' function, a student's password can also be modified. Valid inputs are as above. A Password can be any combination of alphanumeric characters with a maximum of an 'n' length. The user is prompted for a Student Identification Number, and the system searches for the student record. If not found the user is informed and prompted again. If found the entire student record is displayed on screen and the user can change fields by using the arrow keys to move and then typing over the information displayed. The input is verified; if it is not correct an error is displayed and user is returned to same field they were at.

    Delete a Student Record
    The user enters a Student Identification Number, the system searches for the student record and displays it on screen if found. If not found the user is notified of the problem and asked to enter again. When a record is found the user is prompted to confirm deletion. The user can accept or decline at this point and is notified of action taken.

    Printing a Class List

    Expected Input/Output:

    Input:  Course 
    Output: Printout of students names and identification numbers in the course.
    
    Printing a class list is a function available to administration. It allows a user to access a list of students enrolled in a particular course, and print a copy for later reference.

    System Responses to Unexpected Input:

    Input:  Courses that are not on the list.
    Output: An error message stating the course was not found and a 
    	request to re-enter.
    
     Example: Type "cpsc451" and press "ENTER" to print cpsc451 class
    	  list.
    

    An instructor would not necessarily like to print a list of all the students in all the lectures of a course (because an instructor doesn't necessarily teach all those lectures), so we would like this function to print a class list of a certain lecture (this is, one lecture, or lab, or tutorial)> Thus, instead of typing "cpsc451", they should be able to type "cpsc451 l2", or "cpsc451 b2", etc.


    GLOSSARY:

    • Add Date -- starting date for registrations for a term.
    • Administrative Functions -- system functions restricted for use by privileged users, not for student use.
    • Case Insensitive -- action is the same for upper or lower case letters.
    • Conflict, Time Conflict -- occurs when a student attempts to enroll in a course section occupying part of the same time interval as another course section in their timetable.
    • Course (Course Name) -- a course discipline and number (eg. MATH271)
    • Course Component -- a part of a course that a student is required to register in (eg. Lecture, Lab, Tutorial.)
    • Course Number (Level) -- the numeric part of a course name.
    • Course Title -- Descriptive Name for a Course (eg. Discrete Mathematics)
    • Course Weight -- whether the course is one term or two.
    • Current Courses -- the courses a student is enrolled in, but not completed.
    • Days -- day of the week, encoded as M|T|W|R|F
    • Discipline (Course Discipline) -- the major, or department, offering a course, (eg. CPSC)
    • Drop Date -- the last day on which a course can be withdrawn from.
    • Duration -- the length in minutes of a course section.
    • Enrolled -- when a student is registered for a course.
    • Help, On-Line Help -- assistance displayed by the student registration system.
    • Identification Number -- a unique numeric descriptor given to each user.
    • Instructor -- person responsible for a section of a course.
    • Lab (Lab Section) -- a component of a course, which may be optional.
    • Lecture (Lecture Section) -- a component of a course which is not optional.
    • Level (Course Level) -- the number of a course in a discipline.
    • Location -- a code for a building and room number where a course section occurs.
    • Login Screen -- the initial display of the course registration system.
    • Main Menu -- a display listed all accessible features of the system.
    • Past Courses -- courses completed (including failures and withdrawals)
    • Prerequisite -- a course which must be passed prior to enrollment in another course.
    • Section -- one of the choices available for a course component.
    • Section Size -- the maximum number of students that can enroll in a section.
    • Sign On -- entering the system by entering an ID and password.
    • Start Time -- the hour:minutes of the day a course section commences at.
    • Status Line -- a line on the screen which displays current status of the process.
    • Student ID -- Identification Number for a Student.
    • Student Information -- name, address and associated information given by a student.
    • Term -- the period or semester for which a course runs (eg. FALL, WINTER)
    • Terminal -- the display used by a user of the system.
    • Timetable -- the courses components and times a student is registered in.
    • Tutorial (Tutorial Section) -- a component of a course, which may be optional.

    Management Plan

    Major Functions of the Minimal System.

    System SignOn (Student/Administrator function).
    Input: Identification Number/Password.
    Output: User type(Valid)/Invalid Identification Number.
    
    Query the database for the Identification Number/Password combination. If the combination is found, then retrieve the user type (student or administrator) from the database. If the combination is not found, then end the function, indicating a failed Identification Number/Password combination.

    Adding a course (Student/Administrator function).
    Input: Course
    Output: Successful or Failed course addition.
    
    Query the database to verify that the Course. If it is not, then report this to the user and end the function. If it is, then verify that the student can take the course according the following criteria:

    • successful completion of required prerequisites.
    • correct faculty and department.
    • course not already completed.
    • does not exceed maximum number of courses allowed.
    • course addition is made during the registration period.

    One more criteria: maximum class size not to be exceeded with a student addition.

    If the student can not take the course because they do not have the prerequisite then suggest the prerequisite to them. If it is for another reason, and the current user is not an administrator, then report this to the user and end the function. If the student can take the course, or the user is an administrator, then retrieve all possible course components from the database. Display the list of course components, highlighting those that can fit the students timetable and indicate reasons why the student can not take others. Prompt the user for a selection. When the selection is made, verify that all components necessary are chosen (Lecture, Lab, Tutorial). If they are not, then make automatic selections for those components that were not filled. Display the list of selected components to the user and ask them to accept or decline them. If the user accepts the selection, then update the student and course records in the database and end the process. If not then end the process.

    Deleting a course (Student/Administrator function).
    Input: Course Identification Number.
    Output: Successful or Failed course deletion.
    
    Query the database to verify that Course Identification Number is valid, the student is currently enrolled in the course, and the drop date has not been passed. If any of this criteria fails, then report this to the user and end process. If all criteria is met, then display the course information (Lecture, Lab, etc...) and ask the user if they are sure they want to drop the course. If yes, then update student and course records and end the process. If no then just end the process.


    If students drop a course, and it causes them to go from full-time to part-time status, then there should be a message notifying the student, as specified in our Informal Specification.

    Change Course Component (Student/Administrator function).
    Input: Course.
    Output: Successful or Failed Course modification.
    
    Query the database to verify that Course is valid, the student is currently enrolled in the course, and the drop date has not been passed. If any of this criteria fails then report this to the user and end process. If all criteria is met, then display the list of course components, highlighting those that can fit the students timetable and indicating reasons why the student can not take others. Allow the user to make changes, then verify that the change does not overlap any of the users other courses. If the selection is valid, then display the list of selected components to the user and ask then to accept or decline the change. If the user accepts the selection then update the student and course records in the database and end process. If not then end the process.

    Display/Print Student Timetable (Student/Administrator function).
    Input: Identification Number.
    Output: Timetable to screen/printer.
    
    Retrieve all course info from the student record. Offer controls to scroll through the timetable and a command to print. If the student requests a printout, verify that the terminal being used is attached to a printer, if not then report message to the user and terminate. If the user has not exceeded the printout limit, then print the timetable. If they have exceeded the limit, then report message to the user. Return to the displayed version of the time table and await other commands. End the function upon the users request.

    List Course Components (Student/Administrator function).
    Input: Course. 
    Output: List of course components.
    
    Query the database to verify that the Course is valid. If it is not then report message to the user and end the function. If it is retrieve all components and display the list of course components, highlighting those that can fit the students timetable and indicating reasons why the student cannot take others. end the function.

    Change Password (Student/Administrator function).
    Input: Identification Number.
    Output: Successful or Failed Password Change.
    
    Display a list of rules passwords must satisfy and request new password from the user. Verify that the new password meets criteria. If it does not meet the criteria, then request the user to enter a new one, or to end the process. If it meets the criteria then request the user to re-enter the password. If it is entered incorrectly, then tell the user they must start over again. If entered correctly, then request the old password from the user to verify identity. If this is not correct, then tell the user they must start again. If it is correct then update the student record in the database, and confirm the password change to the user.

    Display Help (Student/Administrator function).
    Input: Help Request.
    Output: Help Text.
    
    Based on where in the system the user is, help is retrieved from the database, and displayed.

    Print Class List (Administrator function).
    Input: Course.
    Output: Class List.
    
    Verify that the Course is valid. If not then display message. If valid, then query from the database all students enrolled in the course. Display this list to the screen, formatted and ask the user if they want a printout. If no, then do nothing. If they do, then verify that a printer is attached to the terminal, and send list to the printer.

    Add Student to Database (Administrator function).
    Input: Student Information.
    Output: Confirmation Message.
    
    Prompt the user for all student information (name, address, etc). Then verify that all information is correctly formatted. If it is not, then request that the user correct the fields that are in error. If it is all correct then write the student information to the database after generating a Student Identification Number and a password. Generate a new student information package.

    Delete or Modify Student in Database (Administrator function).
    Input: Identification Number.
    Output: Confirmation Message.
    
    Query the database to verify that the Identification Number is valid. If not, then report message to the user. If it is valid, then display the student information and allow the user to change the information or delete the student altogether. If changes were made, then verify that the information is correctly formatted. If the information was not correctly formatted, then report this to the user and allow them to correct the incorrectly formatted information. Update the database and end process.

    Modify Drop Date/Modify Add Date (Administrator function).
    Input: Date and term
    Output: Successful or Failed modification.
    
    Allow change to the add and drop deadlines for given term. Verify that the new date is valid (ie. not already passed). If it is not valid then report this to the user. If it is valid, then update the deadline, report the change to the user and end the function.

    Modify Number of timetables (Administrator function).
    Input: Number of timetables
    Output: Successful or Failed modification.
    
    Verify that the number of timetables is a valid integer. If not, then report message to the user. If it is valid, then display the updated number of timetables. If the number is valid update the database and end the process. If the number is not valid then just end the process.

    Possible Enhancements of the Minimal System

    • Batch print startup kits for new students.
    • Create new building, including rooms and seating capacities.
    • Add/Delete and Modify courses and their components (lectures, labs, tutorials).
    • List fees and fee status for students.
    • List Courses still required for graduation.
    • Display Grades/Course History
    • Modem Support for registration from home.

    The "Add/Delete..." enhancement, must be part of the functional system as our course selection changes from year to year.

    Multi-user registration system should a possible enhancement.


    Data Structures:

    Our minimal system will operate with the following basic data structures.

    Lectures: consisting of

    • name
    • list of sections
    • list of labs
    • list of tutorials
    • time
    • duration
    • location
    • prerequisites
    • instructor
    • number of students allowed
    • number of students registered
    • term
    Labs: consisting of
    • name and lab number
    • time
    • duration
    • location
    • TA
    Tutorials: consisting of
    • name and tutorial number
    • time
    • duration
    • location
    • TA
    Students: consisting of
  • name
  • password
  • identification number
  • address
  • faculty
  • major
  • minor
  • number of courses allowed
  • number of courses registered in
  • number timetables printed
  • status
  • list of current courses
  • list of past courses and grades Other necessary variables include a date to start registration, a date for the last day of registration, and a maximum number of timetables allowed to be printed.

    Summary

    General University will experience an number of cost-savings and operational advantages through purchasing a Student Registration System from ESP Inc. General University students will easily access and modify their timetables using ESP software, without staff assistance. General University can choose between an economical yet fully functional character based menu driven system, or a more costly graphical system without modem support.