Sirs:
The accompanying document describes the overall design of an on-line student registration system for General University. This design accommodates the specific modifications suggested by General University to our original proposal.
In particular, the system incorporates a graphical user interface, which will allow new users to rapidly adapt to the system. As well, multi-level access provides different sets of functions for different classes of users. This design allows for easy extension of the system to accommodate new functions and new classes of users.
The function of major modules are described, along with specifics of data types, how the modules will interact, and illustrations of screen images that users will view.
We look forward to presenting the highlights of this design on 19 February, and to further fruitful discussions as the design evolves.
Sincerely,
Students additionally have recorded their faculty, the maximum course load they are allowed, a list and count of the courses they are registered in and a transcript of courses taken.
An Entity Relationship Diagram (ERD) illustrates the relations between courses and students in the system. A data dictionary specifies the types of individual data items in the system.
This document describes the functions of each subsystem. A pictorial overview is supplied as a structure chart.
In the upper left corner of the screen, student can see an area which contains their personal information. It includes the student's name, identification number, address, faculty, major/minor, status (full-time or part-time) and year of program. This information serves to confirm to the user that their information is correct and up to date. The student is not given access to change any of this information directly.
Under the student information is another sub-window containing the student's personal timetable. This timetable displays all of the courses that the student is currently registered in. The courses are displayed in a time slot so with a quick visual inspection a student can check the days, start time, duration time and location of a specific course. The timetable is set up so that it displays the times in the left margin and the days of the week in the top margin. The timetable is scrollable both horizontally and vertically. Underneath the timetable are 3 buttons: "Drop a Course", "Change a Course" and "Print Timetable". These buttons allow the student to perform the respective operations. More information regarding these functions follows.
In the upper right corner important dates are displayed. Today's "Date", "Last day of Registration" and "Drop Date" serve to remind the student of registration deadlines. Students cannot change these dates.
Below these dates, there is a sub-window called "Course Listing". This sub-window basically allows the student to view all the lectures, labs and tutorials for a course along with their times, section number, duration, days offered and location. The student would have to first click on the "Department" drop-down menu and pick the discipline of where the course belongs and then move along the the "Course" drop-down menu to specify a course to list. Under these drop-down menus there are 3 columns; one for all the lecture sections, one for all laboratory sections and finally one for all tutorial sections.
There are three buttons and a status bar displayed at the bottom of the screen. The buttons are "Help", "Change Password" and "Quit". If student clicks the mouse on the "Help" button, a help menu will be displayed to provide help for the user. The user can scroll through the entire online help facility or get help on specific functions. "Change Password" lets the student change their password for access to the system. The button "Quit" will bring the student back to the "Welcome Screen".
The status bar called the "Context Sensitive Help" displays helpful messages for users. As the student moves the mouse around the screen a helpful message about the use of a button is displayed in this area.
As in the Department section described earlier, there is a scroll bar located to the right of the listings; allowing the user to scroll through the available courses if necessary. Selecting a course is also done by moving the mouse to it, clicking once to highlight the selection and or double clicking over it to select.
As described earlier, to the left side of the screen is the timetable area where the students current courses are listed. A course is dropped by clicking once to highlight it within this area and then clicking the "Drop a Course" button.
Upon selecting drop a course, the user is prompted, by means of a pop up window in the center of the screen, to confirm that the selected course is to be dropped. This is to eliminate mistakes on the users behalf, and provide a way out before actual removal. This prompt is answered with a yes/no selection. Single clicking on 'Yes' results in the user being informed of the action and the menu is returned to the foreground. The course dropped will no longer appear in the timetable window. Single clicking on 'No' results in cancellation of the dropping process. There will be no changes to the users timetable and the main menu is returned to the foreground.
The course to be modified must first be highlighted in the timetable area by moving the mouse to where the course is in the timetable and clicking on it. If the student accidentally clicked the course by mistake or now wishes to change the course they want to modify, he/she can just click on another course. After a course has been selected, the student can then press the "Change a Course" button to make changes.
Once the "Change a Course" button has been pressed, the course listing (located on the right side of the main menu screen) will display all of the selected course's available lectures, labs and tutorials along with their times. All the sections that conflict with the student's schedule, or are full, will be grayed out (or have a "FULL" status beside it -- the administrator can still select these). The student's current sections will be highlighted. The student now can look at all the other available lecture sections, laboratory sections, and tutorial sections and decide which to modify to best suit their schedule.
The student can now make the changes by clicking on the lecture , lab, or tutorial they wish to switch to. When a section is clicked on, it becomes highlighted to show that it has been selected. After that, the student can press the button "Change A Course" at the bottom of the timetable so the system can process to request. The system then displays an "Are You Sure" dialog box. The student must press on the "Yes" button or the "No" button. If "Yes" is clicked then the system continues with the processing. If "No" is clicked, the system stops processing and returns to the foreground.
After the "Yes" is clicked, if the request is successful, the system will automatically update the new sections on the timetable and display a success message in the status line at bottom of screen. A course conflict is not possible because the system will not allow a student to choose a course that is in conflict with their present schedule. A selection may be unsuccessful if the course happens to become full in the time it takes for the student to view and then select a new section. The system will then display a dialog box with the following error message: - "Modification unsuccessful. Lecture section is full." ("Lecture" may be replaced by "Lab" or "Tutorial") Administrators may enroll a student in a full section ,in that case the system will display: - "Modification successful. Warning -- Lecture section is full." ("Lecture" may be replaced by "Lab" or "Tutorial")
Users must press the "OK" button at the bottom of this dialog box in order return control back to the main menu. The user can try other sections and press the "Change A Course" button again.
Engineering General Studies Management Mathematics Social Science ScienceA department must be selected by the user before selecting the course. If the user tried to select a course before a department was selected, an error message would be displayed. After a department is selected, a course can be chosen using the same procedure as picking a department. Note that all departments and courses offered by Gen U are displayed, but those that are seen as a conflict to the user's current course schedule are grayed out on the list. This prevents the user from selecting that particular course or department because it conflicts with the user's schedule. If the user tries to select a grayed out item, a dialogue box will appear to tell the user that the department or the course will conflict with his/her current schedule. If a course listing currently exists, that is, the user has already inquired about a course, and the user wants to list information for another course, then the user simply re-selects the course and/or department desired. When department and courses are selected, the selection is displayed on top of the pull down menu.
Lecture Start Duration Location Days section time (minutes) Lec01 12:00 120 SB105 MW Lec02 08:00 50 ST111 MWF Lec03 13:00 50 ST110 MWFSimilarly, a typical list of the laboratory sections:
Lab Start Duration Location Days section time (minutes) Lab01 12:00 50 SB112 MW Lab02 08:00 50 ST96 MWF Lab03 13:00 50 ST10 MWFThe tutorial listing:
Tutorial Start Duration Location Days section time (minutes) Tut01 12:00 50 MS115 MW Tut02 08:00 50 ST10 MWF Tut03 13:00 50 ST05 MWF
The password change may be unsuccessful because the old password the user typed
in did not match the password on file or their new password did not verify.
In either case the user is informed by a error window and they must click
cancel to make this box disappear. They are then back at the Change
Password window where they can try again.
In the upper left corner of the screen, specific student information is
displayed. The information includes student identification number, student
name, address, faculty, major, minor, status and program year.
Beside this sub-window are four buttons that allow administrator to "Add", "Delete", "Modify" and "Find" a student. After the administrator clicks on the "Add" they can then enter information. Similarly, "Delete" and "Modify" allow the administrator to remove or change student information. "Find" allows a user to search for a specific student by entering the student's identification number.
Below the "Student Information" is the student's timetable. It is identical to the time table displayed in student mode. Again, there are three buttons at the bottom of the timetable: "Drop a Course", "Change a Course" and "Print Time Table". The administrator can use these functions just as the student can.
Below the date box is the the "Course Listing" sub-window. The administrator use this window in the same manner as the student's system, with one additional function. The administrator may print a class list by clicking on the "Print Class List" button.
At the bottom of the screen, user can click on the "Help" button to access the help menu. The administrator can then scroll through the entire help text or call up help on specific functions.
The "Change password" button allows user change their password. The "Quit" button ends a user's session and then returns to the "Login Screen".
The status bar called the "Context Sensitive Help" displays helpful messages for users. As the administrator moves the mouse around the screen a helpful message about the use of the button they are on is displayed in this area.
A possible error is not enough fields entered and the system will create an error box denoting the missed field to the user. After the user clicks cancel to confirm that they have read the error message they are returned to the Student Information data entry screen with all the information that they have entered so far still there and from there they can correct the error and continue.
Possible errors are an invalid student number or a nonexistent student number in the Find Student function. The system error message is specific and it will not disappear until the user clicks cancel to acknowledge the message.
Procedure LOGIN display Login Window if "CLEAR" button clicked then { clear "ID" and "Password" edit boxes } if "OK" button clicked then { search user database for user's ID# if ID# is not found then { clear "ID" and "Password" edit boxes display error window with "User not found" start Procedure LOGIN again } else { if password is correct { hide Login Window if user status = ADMIN then { display Main Admin Window } else { display Main Student Window } else { clear "ID" and "Password" edit boxes display error window with "Incorrect password" start Procedure LOGIN again } } }
Procedure CHANGE_PASSWORD { display Change Password Window if "CANCEL" button clicked then { hide Change Password window and exit from this function } if "OK" button clicked then { search user database for student (by ID#) if student's old password entered is incorrect then { display error window with "Incorrect old password" and clear all of the password edit boxes } if the two new passwords entered do not match then { display error window with "New Passwords don't match" and clear the new password edit boxes } else { store the new password for the user into the database hide Change Password Window } }
Procedure ADD_COURSE { display Add/Modify_Course Window if "CANCEL" button clicked then { hide Add/Modify_Course Window exit add_course } if "CLEAR" button clicked then { clear each of the following edit boxes: - DEPARTMENT, COURSE, LECTURE, LAB, TUTORIAL } if "OK" button clicked then { if there is missing info then { display error window with "Incorrect course selection" and some suggestions for the user } else { display "Course Added" response Window with course information as a confirmation search user database for student (by ID#) add course to student's list of courses - update schedule & course information sub- windows on the main screen - if count(courses) > 2 then change student status to FULL TIME hide Add/Modify_Course Window } }
Procedure MODIFY_COURSE { display Add/Modify_Course Window - display present choices made my student in the following edit boxes: - DEPARTMENT, COURSE, LECTURE, LAB, TUTORIAL if "CANCEL" button clicked then { hide Add/Modify_Course Window exit modify_course } if "CLEAR" button clicked then { clear each of the following edit boxes: - DEPARTMENT, COURSE, LECTURE, LAB, TUTORIAL } if "OK" button clicked then { if there is missing info then { display error window with "Incorrect course selection" and some suggestions for the user } else { display "Course Modified" response Window with course information as a confirmation search user database for student (by ID#) change course in student's list of courses - update schedule & course information sub- windows on the main screen - if count(courses) > 2 then change student status to FULL TIME - if count(courses) < 3 then change student status to PART TIME hide Add/Modify_Course Window } }
Procedure DELETE_COURSE { search user database for student (by ID#) display R_U_Sure window if "NO" button clicked then { hide R_U_Sure window } else { delete course with corresponding lec#, lab#, tut# from the student's record update database hide R_U_Sure_window if count(courses) < 3 then change student status to PART TIME }
Procedure PRINT_TIMETABLE { search user database for student (by ID#) /* The following will format the student's record into a timetable-style format for GUIs and Text-based output */ Direct the following output to the printer for every hour (ie. 0800, 0900, 1000, etc) { for every day (ie. M, T, W, R, F) { Check course schedule to see if anything in that time slot If yes, then print that course in that position on the chart } /* Continue moving horizontally */ } Turn off the redirection of the output to the printer
Procedure VIEW_TIMETABLE { search user database for student (by ID#) for every hour (ie. 0800, 0900, 1000, etc) { for every day (ie. M, T, W, R, F) { Check course schedule to see if anything in that time slot If yes, then print that course in that position on the chart } /* Continue moving horizontally */ }
Procedure LIST_COURSES { display List Courses Window (if not already up) if Department entered into the Drop Down list box then { search course database (by department selected) display all possible info of matches in the list box } if "CLOSE" button clicked then { hide List Courses Window }
Procedure ADD_STUDENT { - Clear all student info fields - Show "O.K." and "Cancel" buttons bellow student information - Make student info editable - Gray out all other options If "Cancel" { - Make student info uneditable - Hide "O.K." and "Cancel" buttons - Ungrey other options - Exit } If "O.K." { If Some info is missing { - Prompt user } Else { - Store student info in user data-base - Generate password and I.D. number - Prompt user with password and I.D. number } - Hide "O.K." and "Cancel" buttons - Make student info fields uneditable - Ungrey other options } }
Procedure MODIFY_STUDENT { - Show "O.K." and "Cancel" buttons bellow student info - Make student info editable - Grey out all other options If "Cancel" { - Make student info uneditable - Hide "O.K." and "Cancel" buttons - Ungrey other options - Exit If "O.K." { If Some info is missing { - Prompt user } Else { - Store student info in user data-base - Prompt user with confirmation } } - Hide "O.K." and "Cancel" buttons - Make student info fields uneditable - Ungrey other options }
Procedure FIND_STUDENT { - Show Id_Search window If "Cancel" { - Hide window - Exit } Else "O.K." { - Search user data-base for I.D. number If I.D. not found { - Prompt user } Else { - Move students records into student info and course schedule } - Hide window } }
Procedure DELETE_STUDENT { - Show R_U_Sure window with deleting student I.D. number If "No" { - Hide window - Exit } Else "Yes" { - Delete student record from user data-base } - Hide Window }
Procedure MODIFY_DROP_DATE { - Make Drop_Date editable If "Return" { If Format incorrect { - Prompt user - Make drop date uneditable - Exit } Else { - Change Drop_Date to New Drop_Date - Make Drop_Date uneditable } } }
Procedure MODIFY_ADD_DATE { - Make Add_Date editable If "Return" { If Format incorrect { - Prompt user - Make Add date uneditable - Exit } Else { - Change Add_Date to New Add_Date - Make Add_Date uneditable } } }
Procedure PRINT_CLASS_LIST { - Show Class_List window If "Cancel" { - Hide window - Exit } If "O.K." { If Information is incorrect { - Prompt user } Else { - Search user data-base in Student_Courses with Course_Name and Section - Print all matches } } - Hide window }
Individual members of the QA team will be responsible for the design of various tests that will check the code and the actual implementation of these tests on the code. They will report bugs and their severity to the QA team manager and they will work together with the coders to assure the final removal of the bug, making certain that fixes do not have any adverse affects on the remainder of the program.
The first area of testing will be the user interface. While none of the internal code of the program may be working yet, the interface so far developed can be tested for its usability. While the interface of the project has been developed and spelled out in full as above in the document, there will most likely be difficulties that will arise and its implementation. It will be important that the testing team thinks as a user is this stage of the testing, judging all aspects of the interface from the user's point of view. In performing this stage of the testing adequately, we will hopefully end up with an interface that is very usable to the Gen U community.
Testing will then move on to testing of the basic functionality of the code and the software as the various components are implemented. By testing that all the basic functions of the code work as specified in the functional specification, we can make sure that all aspects fit with the user's expectations of the project.
When the various engines of the projects i.e. the database engine are implemented, testing on them will begin to make sure that they work correctly and perform their basic functions well as required.
When all aspects of the project have been implemented the Alpha Testing stage of the testing will begin. This stage will begin to move beyond the basic functionality testing above, and will move into the whole software project testing. Errors in how the various aspects of the project and the various engines of the code work together will be tested and hopefully no bugs will be found. Bugs that are found will be corrected to the best of our abilities. Further testing of the bug fixes will report whether bugs have been corrected, and/or whether more bugs have been introduced. By the following of the Test Plan, which has yet to be developed, the QA team will perform testing of the software, moving on to later and later testing stages until finally the software is in a deliverable form.
The shift to the GUI based system has been completed and now all project members are working towards that as their final goal. As you can see above, mock-ups of the typical interface have been created. While these will more than likely resemble the final working version of the interface, it is important to note that these are just mock-ups, and that the final version of the interface may differ slightly in appearance, if not in functionality.
The relationship between the various menus and dialog boxes has also been spelled out above through the means of various DFDs and pseudo code. This should serve as a guide to what the typical inputs should be, and the various outputs that the program will produce.
While the testing of the project and the test plan is generally not that detailed at this time, it does demonstrate the process that will be occurring throughout the project's development to ensure that the program will be completed as specified, and will be delivered with a minimum of bugs.
In general, ESP Inc. looks forward to the implementation of this project.
To see Customer Group Nine's annotations to this design document, click here.