DOCUMENTATION ON ADD/MODIFY/VIEW/DELETE MODULE
1. INTRODUCTION:
The Add/Modify/View module is a System manager’s utility designed for adding, modifying and/or viewing the database and the existing rules that the Student Advisement System follows. In plain terms, the module functions as a tool to populate the database and also to modify the existing requirements/data in the database.
2. SPECIFICATIONS:
2.1 Login:
The module is composed of a login page, for authorization purposes and the system manager has to login in with their login and password to administer the module. Successfully logged in users are presented with the presentmenu page where the user chooses what he wishes to add/modify/view/delete.
2.2 Present Menu:
At this page, the user chooses, from a dropdown box, the table that he wants to administer, and also the catalog that he wants to refer to for advisement (its worth noting that the user can choose to follow the current catalog or select a catalog from past academic years. The tables that a system manager can change are Collegewide requirements, course requirements, courses, degrees, departments, disciplines, divisions, doubleflags, general requirements, majors, levels, minors, major requirements, minor requirements, schools, transfer credits, and users. The system manager also selects an action -- add, view, modify, delete -- that he wishes to perform. Once this has been accomplished, the user is transferred to the next page.

2.3 Input Page:
If the user chooses to add a requirement or some data then he is taken to the input page. The input page varies for different tables because of the difference in the structure of the tables.
2.3.1 Adding a course:
If the user chooses to add a course to the existing database then he is taken to the input page that has the following input boxes - Course number, New Course number, Course Letter, Course Code, Course Name, Credits, Cross List, Pre requisites, Co requisites, Post requisites, and the following dropdown menus – Level, Division, and Discipline.
How this is done should be worth noting. When the add functionality of the code is invoked on a table, the code gets all the field names associated with that table and checks if the last two letters in the field name are ID, if so than the code displays a dropdown menu for that field, otherwise a regular input box is displayed.

2.3.2 Adding a Major, Minor, Core or Collegewide Requirement:
To add a prerequisite, a corequisite, and a postrequisite for the course the user has to add a course and do all of these later by utilizing the modify function for that course. This is done because adding a prerequisite, corequisite, or a postrequisite need a different input structure and that structure has been put together on a different page. The add functionality becomes complex when adding a requirement for a major, minor, core, or collegewide. Complexity arises in this case because of the job of creating a requirement is not trivial.
To add a major, minor, core, collegewide requirement, the user is taken to a different input page. But before doing this, he is also asked to select what major, or minor he wants to add a requirement for. On this page the user is required to fill two text boxes – one for the number of credits that requirement is worth for, and the other for the string that represents the requirement. The string that represents the requirement is the name of the courses that the requirement is made up of separated by ‘and’, ‘or’ and ‘xor’. Use of parenthesis has been provided for separation of sub-requirements. Care should be taken when adding a requirement -- the user has to be aware of the precedence of ‘and’ and ‘or’ in case of the requirements with multiple courses. When a requirement is too general, then the user should use the ‘all’, ‘upper’, or ‘lower’ choice from a dropdown menu in conjunction with a discipline name. This functionality selects all the courses, all upper level courses, or all lower level courses that lie in that discipline. For example, a requirement could need three upper level computer science courses to be taken prior to that course; the functionality comes handy now. The requirement would look something like this:
Upper CSC
Another thing that has to be taken care of is that some courses require a certain amount of liberal arts courses to be taken, for that a function has been added that selects all the liberal arts courses in that requirement. The user also has the facility to remove the last substring added to the requirement string and to remove the whole requirement string from the input box. Once the user is done inputting the whole requirement the user hits the ‘submit’ button and the requirement gets added to the database. Special care should be taken while adding a requirement due to the complexity involved in creation of the requirement string. Some examples of requirement strings are:
( CSC 012N or CSC 070N ) and ( CSC 175N or CSC 177N )
upper MTH
liberal_arts
Another thing that any user should know while adding a requirement is that the dataset for courses is huge and so the courses are populated into the dropdown menu for courses by first selecting a discipline from the dropdown menu -- only the courses that lie in that discipline are put into the dropdown menu for courses.
The reason for this is that the code treats the different tracks in a particular major as separate majors. For example, the Natural Science major has 11 tracks and all of these tracks are considered to be separate majors. This facilitates the process because the different tracks are essentially different majors.

2.3.3 Adding a Major, Minor:
Adding a major or a minor are similar but easier since there are less number of fields to fill and the requirement string is not needed. All the user needs to do is to add the major name, major code, the degree that it leads to and whether it is a double major. Adding a minor is very similar to the exception that the last two fields are not present.

2.4 Modify Page:
The modify function of the module would not be very difficult to understand. If a user chooses to modify a particular table, then he is taken to the next page where he is asked to choose which entry in that table he wants to modify using a checkmark. After the user chooses an entry, he is taken to the same input page as for add, where the user is modifies the requirement as per his need.
2.4.1 Modify Course:
When modifying a course, the user is asked to select which course he wants to change and for that he is presented a list of courses to choose from. After the selection has been made, the user is taken to a page similar to the ‘add course’ page with the only difference that the user has the ability to change the pre requisites, co requisites, and the post requisites.

2.4.2 Modify a major, minor, core, or collegewide requirement:
When a user wishes to modify a requirement, he is first asked to choose the major/minor and then is asked to select the requirement to be modified from a list of current requirements for that major/minor. Once the selection has been made the user is taken to the same page that is used for adding a requirement (explained above).

2.4.3 Modify a major or minor:
Modifying a major or a minor is easy since the user just has to choose the major or minor that he wants to modify and once that has been done the user is presented with the modify ‘major page’ that is very similar to the page for the add major/minor page. All the user needs to do is to change one or more than one field (if he wishes) -- the fields presented are major name, major code, the degree that it leads to and whether it is a double major. Modifying a minor is very similar to the exception that the last two fields are not present.

2.5 View Page:
The view function of the module is very easy to understand too. After the user chooses a table that he wants to view, what view does is just print the already populated table, as it exists, from the database.
2.6 Delete Page:
The delete function does very much what the name suggests – it deletes the selected data from the database. The user should be very careful when using this function.
3. CONCLUSION:
Further work on this module is expected and we are trying to make this module more user-friendly so that future programmers do not face much problem while working with the system.