ms project cs report final

89
Faculty Management System for Master’s Project Report by Mwamini Naggayi Submitted to the Graduate Faculty of Old Dominion University in partial fulfillment of the requirement for the degree of Masters of Science in Computer Information System Department of Computer Science and Department of Information Technology & Decision Sciences Faculty Advisor: Dr. Vijay Kalburgi Department Chair: Dr. Li Xu Fall 2006

Upload: shikhadd

Post on 07-May-2017

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ms Project Cs Report Final

Faculty Management System for

Master’s Project Report

by

Mwamini Naggayi

Submitted to the Graduate Faculty ofOld Dominion University

in partial fulfillment of the requirement for the degree ofMasters of Science in Computer Information System

Department of Computer Scienceand

Department of Information Technology & Decision Sciences

Faculty Advisor: Dr. Vijay Kalburgi

Department Chair: Dr. Li Xu

Fall 2006

Page 2: Ms Project Cs Report Final

Table of Contents

TABLE OF CONTENTS..................................................................................................2

ABSTRACT.....................................................................................................................5

ACKNOWLEDGEMENTS................................................................................................6

PURPOSE OF THE PROJECT........................................................................................7

EXISTING SOLUTIONS..................................................................................................8

Cost Pricing...................................................................................................................................................................8

Data control...................................................................................................................................................................8

Privacy...........................................................................................................................................................................8

TECHNOLOGY CONSIDERED.......................................................................................9

ColdFusion.....................................................................................................................................................................9

JavaScript......................................................................................................................................................................9The difference between JavaScript and Java...........................................................................................................10Pros and cons of JavaScript.....................................................................................................................................10

Case for PHP...............................................................................................................................................................10PHP background or history......................................................................................................................................11Importance of PHP...................................................................................................................................................11Handling PHP Forms...............................................................................................................................................12

Apache web server (Apache HTTP)..........................................................................................................................13Apache HTTP Server Project...................................................................................................................................13How Apache Came to Be.........................................................................................................................................13Why Apache Software is Free.................................................................................................................................14

Case for Oracle............................................................................................................................................................15MySQL Database.....................................................................................................................................................16Why Oracle Database...............................................................................................................................................16Oracle vs. SQL Server.............................................................................................................................................17

WEB MAP (WEB SITE NAVIGATIONS).......................................................................19

WEB DESIGN ACCESS................................................................................................21

Public Web Page.........................................................................................................................................................21

Individual Private Pages.............................................................................................................................................22

2

Page 3: Ms Project Cs Report Final

Personal....................................................................................................................................................................23Personal Information...........................................................................................................................................23Resume upload, Resume download & Picture upload........................................................................................23Add profile..........................................................................................................................................................23Add Rank, position from other university...........................................................................................................23Change Password................................................................................................................................................24

Achievements...........................................................................................................................................................24Education.............................................................................................................................................................24Certification and Honors & Awards....................................................................................................................24

Teaching...................................................................................................................................................................24Add courses.........................................................................................................................................................25

Research/Grants.......................................................................................................................................................25Publications.........................................................................................................................................................25

Refereed Journal and Non-Refereed Journal..................................................................................................25Proceedings.....................................................................................................................................................26

Refereed proceedings and Non-refereed proceedings...............................................................................26Books and Monographs, Book chapters, case studies....................................................................................26

Conference..........................................................................................................................................................26Seminars..............................................................................................................................................................27Students Directed................................................................................................................................................27Add Grants..........................................................................................................................................................27Research interest.................................................................................................................................................27

Services....................................................................................................................................................................28Add Services.......................................................................................................................................................28

University, College, Department and Community.........................................................................................28Academic/Professional........................................................................................................................................28

Report.......................................................................................................................................................................28Upload Information sheet....................................................................................................................................28View information sheet.......................................................................................................................................29

Logout......................................................................................................................................................................29

Report Section.............................................................................................................................................................30Report in Progress....................................................................................................................................................30Report Finalized.......................................................................................................................................................30

PROJECT ADMINISTRATOR SECTION......................................................................32

Adding New Information...........................................................................................................................................32Add Deans................................................................................................................................................................32Add Department.......................................................................................................................................................32Add Department Chair Person.................................................................................................................................32Add Department Secretary.......................................................................................................................................33Add Journals............................................................................................................................................................33Add Users.................................................................................................................................................................34

Editing Existing Information.....................................................................................................................................34Edit Deans................................................................................................................................................................34Edit Department Chair person..................................................................................................................................34Edit Department Secretary.......................................................................................................................................35

Viewing Existing Information....................................................................................................................................35View Deans..............................................................................................................................................................35View Departments....................................................................................................................................................36View Department chair person................................................................................................................................36View Department Secretary.....................................................................................................................................36

3

Page 4: Ms Project Cs Report Final

View available Journals...........................................................................................................................................36View available Users...............................................................................................................................................37

FACULTY WEB DESIGN IN PHP.................................................................................38

Display pages...............................................................................................................................................................38

Adding/Editing data pages.........................................................................................................................................40

Upload file pages.........................................................................................................................................................47

Designing report pages with Flexireport..................................................................................................................51Flexi-Report Classes................................................................................................................................................51

Key concepts.......................................................................................................................................................51Generalized overview of the report.....................................................................................................................53dbsettings.php......................................................................................................................................................56Dbutility_Db.php.................................................................................................................................................56Flexireport_Report.php.......................................................................................................................................57Flexireport_Level.php.........................................................................................................................................58Flexireport_Field.php..........................................................................................................................................61Flexireport_Value.php.........................................................................................................................................62Flexireport_Total.php..........................................................................................................................................62Flexireport_TotalLabel.php.................................................................................................................................62Flexireport_Misc.php..........................................................................................................................................62Flexireport.css.....................................................................................................................................................62

CONCLUSIONS.............................................................................................................63

REFERENCES...............................................................................................................64

Vita.................................................................................................................................65

4

Page 5: Ms Project Cs Report Final

Abstract

A web based Faculty Management System was designed and implemented for the College of Business and Public Administration. This system allows faculty to input teaching, research, and service information into an Oracle database.

Faculty can input and update personal information, resume, picture, positions, education, certificates and honors, courses taught, curriculum development, published journals, book chapters, book monographs, case studies, certificates awarded, conference presentations, research interest, grants received, other additional services to just to mention but few.

This data is used to generate the individual Faculty’s information sheet and to submit online. This information sheet is accessible by their department chair and the dean as part of their annual evaluation. This information can also be used to generate the College’s various productivity reports.

5

Page 6: Ms Project Cs Report Final

ACKNOWLEDGEMENTS

First and foremost, I am grateful to God for providing me with the most understanding man, with a lot of patience and a caring husband Dr. Luttamaguzi, Jamiiru. He has not only provided the ever increasing tuition for international students year after year but he has also believed in me and gave me his full support without ever complaining of my midnight drive home. Without him, I doubt if I would have reached this far. I would never have been able to complete this project without his support and encouragement. My Almighty God reward him bounty in both worlds as He sees fits.

I would like to thank Dr. Kalburgi, Vijay for taking a chance with me on this project. His ideas, books, long hours of discussions, and emails were highly appreciated. He never gave up on me even when I need time out to concentrate on my course work. Dr. Kalburgi, thanks a million times.

I would also like to thank Dr. Crouch, William from IT department for recommending me to Dr. Kalburgi for this project. Lastly but not least I would like to thank Dr. Abdel-Wahab, Hussein who paved the way for me to join Old Dominion University. Dr. Abdel-Wahab, may God reward you accordingly.

6

Page 7: Ms Project Cs Report Final

Purpose of the projectThe College of Business and Public Administration needed to create a web-based database system to maintain faculty information. At the present time, they were using a paper based system where by individuals maintained their data without any uniformity for the entire academic year. Hard copies of reports were then evaluated by the department chair person. This system created a lot of paper work without any consistent single standard for each department to follow.

Creating a web based database system will help to establish a standard which each faculty in the department can follow. It is easier to record each activity or contribution as it happens into the database. In so doing, faculty will not forget what they did at the beginning of the year since it will be already recorded in the system. As the deadline approaches for submitting faculty information sheets for evaluation to the department chair, a faculty has to just login into the system and automatically generate a report based on the information entered into the system. With just a click of mouse, a faculty can then submit his or her report to the department chair.

Once a report is submitted, a faculty has access to all submitted. Department chairs have access to all submitted reports from faculty members in their department. The Dean of the College of Business and Public Administration has access to all reports alphabetically listed by department and faculty name. These reports are available over the web by individual faculty, chairs and area Coordinators, and the Dean.

7

Page 8: Ms Project Cs Report Final

Existing SolutionsSeveral solutions exist on the market to manage faculty productivity information. Two such systems that provide web services are Digital Measures and Sedona Systems. These companies collect data from universities, conduct course evaluations for the students and provide reporting solutions to universities. The companies were doing exactly what this college needed but we quickly realized that these solutions may not be suitable because of the following reasons.

Cost PricingIt was not going to be cost effective to the college. The annual license fee for SEDONA is based on the number of users. The formula for calculating the license fee as per May 2006 is $2,500 as the base fee plus $25 per faculty if the number of users exceeds 30. So if a college has 100 faculty members, the annual license fee would be $5,000 [2,500 + 25*100].

Data controlAnother problem of using existing solutions is that the college would not have any control about the data the company collects. There is also loss of flexibility as the college would become too dependent on the company in the long run. If there is web-services downtime and service disruptions, the college would not have control of that. This creates a big threat to the college. If there is change in management of the company or company going out of business this may result in losing data and the college would have to look for another company. There might be switching costs involved to get a new vendor. Also if the college decides at that time to bring back the project in-house, the college may lose productivity during the period of transition.

PrivacyThe fact that data exists on the provider’s server raises some privacy issue. What will happen if the college decides to no longer use the company. The company will have too much data collected on faculty. Does the company have the right to keep the data? How does the college make sure the faculty privacy is fully protected? Internet companies have designed numerous ways to track web users. The more we pondered about these questions the more clear it became to do the project development in-house. The company may decide to sell the data without consent. So it is a risk to use outside companies. One can have privacy if one makes it herself. It was decided to go ahead to develop this project in-house so that the college doesn’t have to worry about annual licensing fees, privacy issues and other people keeping the valuable data.

8

Page 9: Ms Project Cs Report Final

Technology considered

ColdFusionColdFusion is a scripting language for web development to interface with databases. The operations are coded in the ColdFusion Markup Language (CFML) which uses Hyper Text Markup Language (HTML) like tags to be embedded in web pages. The ColdFusion engine which interfaces with a windows-based web server interprets the CFML code, accesses the database and then delivers the results as an HTML page for the web browser. ColdFusion can serve two purposes; it can work as a Markup Language, a tag-based language that can be used to create data-driven Web sites; it can also serve as an Application Server, which translates the tags that talks to the database, and returns HTML to the Web browser.

Internally, ColdFusion works in a way similarly to other hypertext preprocessors. The application server recognizes ColdFusion markup tags, processes the code, and performs any necessary operations. Then it returns the result in HTML. There are, of course, a number of other technologies that do this, such as Personal Hypertext Preprocessor (PHP), Active Server Pages (ASP), Common Getaway Interface (CGI), Java Server Pages (JSP), and so forth.

ColdFusion is commonly used on some of the most transaction-intensive, sensitive sites on the Web. For example, Bank of America, the United States Senate, and the Recording Industry of America all use ColdFusion to get their work done.

You can do some fantastic things with standard language elements that would require dozens of lines of code or custom tags in other languages. You can send and retrieve email over the Web and exchange data with Component Object Model (COM), Common Object Request Broker Architecture (CORBA), and Java objects. You can use a subset of XML called Web Distributed Data eXchange (WDDX) to serialize and expose packets of data as generic XML. You can also perform file and directory manipulation, perform full File Transfer Protocol (FTP) interactions, and create intelligent agents. It is easy to interact with Lightweight Directory Access Protocol (LDAP) servers with just one ColdFusion tag. You can create database-driven graphs and charts in Flash. The current version is ColdFusion 5, and it is stated to perform four times faster than its predecessor.

Unfortunately, ColdFusion is not free. The application server from Macromedia costs thousands of dollars. ColdFusion is intended as a rapid application-development platform and the tags that make up the language encapsulate much of the complexity of the code required to perform sophisticated operations. One tag in ColdFusion can do the work of 10 or 20 lines of Java Servlet code. However, since ColdFusion is not open source it was out of question to be used to develop the project.

JavaScriptJavaScript is an easy-to-use programming language that can be easily embedded in the header of a web page. It can enhance the dynamics and interactive features of a page by allowing users to

9

Page 10: Ms Project Cs Report Final

perform calculations, check forms, write interactive games, add special effects, customize graphics selections, create security passwords, and much more.

The difference between JavaScript and JavaActually, the two languages have almost nothing in common except for the name. Although Java is technically an interpreted programming language, it is coded in a similar fashion to C++, with separate header and class files, compiled together prior to execution. It is powerful enough to write major applications and insert them in a web page as special objects called applets. Java generates a lot of excitement because of its unique ability to run the same program on IBM, Mac, and UNIX computers. Java is not considered an easy-to-use language for non-programmers.

JavaScript is a programmable application programming interface (API) that allows cross-platform scripting of events, objects, and actions. It allows the page designer to access events such as startups, exits, and users’ mouse clicks. JavaScript extends the programmatic capabilities of most browsers to a wide range of authors, and is easy enough for anyone who can compose HTML. It does not require any compilation of the code or use of the applets.

Pros and cons of JavaScriptJavaScript is a compact, object-based scripting language for developing client and server Internet applications. Its statements can be embedded directly in an HTML page. These statements can recognize and respond to user events such as mouse clicks, form input, and page navigation. For example, in the project we used JavaScript date function where a user clicks on an icon and a calendar popups for the user to select the date. Also menus in the project sites utilize some JavaScript to some extent.

JavaScript can also be used to verify that a user has entered valid information into a form. Without any network transmission, an HTML page with embedded JavaScript can quickly interpret the entered text and alert the user with a message dialog if the input is invalid. One can use JavaScript to perform an action (such as play an audio file, execute an applet, or communicate with a plug-in) in response to the user opening or exiting a page.

One has to use JavaScript with care because Code that works just great on IE4 might not work at all on Netscape 4, what works in NN6 doesn’t always work in NN 4, and so on. Another disadvantage of JavaScript is its security. Because the code executes on the users' computer, in some cases it can be exploited for malicious purposes. This is one reason some people choose to disable JavaScript.

Case for PHPPHP is an open-source server-side scripting language. PHP is a widely-used general-purpose scripting language that is especially suited for dynamic web development and can be embedded into HTML. The PHP scripting language resembles JavaScript, Java, and Perl. These languages all share a common ancestor, the C programming language.

10

Page 11: Ms Project Cs Report Final

PHP background or historyAs more and more commercial, charitable and educational organizations sought to develop and maintain sites containing dynamic client-server functionality, cheap and functional solutions became commercially viable. Web communities that had no financial goals also wished for full-featured sites with, say, chat or forum functionality. The solutions there were to come up with needed to cost little and be implemented quickly. All this required new development technology, that would:

be free or, at least, affordable; be easily learned; allow an administrator to support a site without too much effort; and provide good application performance.

As usual, the new demands were quickly satisfied. In 1994, the world without knowing carried on something that was destined to grow into PHP. It was a collection of open-source Perl scripts written by Rasmus Lerdorf, a secluded genius from Disko, an island of Greenland. He did it for his personal use, and he never expected so much interest to arise when the world web development society examined his package. This overworked Disko-tech had to polish his scripts further to fix an infestation of bugs and improve performance. Before long, PHP was completely rewritten in C1.

In 1998, PHP was released in its 3rd version. By that time, it turned into a respectable web development tool that could compete with similar products that had kept busy Software developer giants such as Microsoft (ASP) and SUN (Java, JSP). At the same time, it was free (licensed as open source) and number one easy to learn script language. These are some of the factors that helped PHP to find millions of proponents within a short period of time. There was this quote that ‘if you want a website but are short of time or money, the easiest way for you to get going would be to look for a PHP specialist to develop your site for you’.

PHP is not without its critics. There is no technology that can escape critical misgivings and be named the best and be universally acknowledged. PHP is of course no exception. Technology should always be chosen according to priorities. If the project in question is on very large scale, the Java should be considered. For this project, PHP is the most appropriate without any hesitation.

Importance of PHPPHP is different from JavaScript. PHP is a server-side scripting language. All of the work is done on the server. JavaScript generally runs on the client machine and it has little access to the information that the server has, and full access to information on the client. JavaScript can do lots of things on the client that PHP cannot. PHP has full access to the information that the server has, and very little access to information that the client has. In fact, it only has information that the client tells the server and that the server passes on to the PHP.

Since PHP is on the server, PHP cannot be modified by the client. While you cannot necessarily trust the information that the client gives to PHP, you can trust that your PHP is doing what you

1 http://www.developer.com/lang/php/ article.php/900521

11

Page 12: Ms Project Cs Report Final

told it to do. Because PHP is on the server end, your PHP scripts can affect your server such as keeping an activity log or updating a database.

PHP and Perl often work side-by-side since they are both server-side. Whereas PHP excels at embedding dynamic content, Perl excels at modifying or filtering streams of text. PHP excels at putting things into documents, and Perl excels at finding things in documents.

PHP has an advantage over Perl on most web sites because PHP is usually loaded as part of the web server. When scripting languages run, the system has to first load the interpreter and then compiles the language into code that the machine can understand. When you tell PHP to echo the current time to the web page, the computer needs to have your command translated into numbers that it can understand. Since the PHP interpreter is already loaded as part of the web server’s software, it is always running. This cuts out half of that process. The interpreter is already loaded, and it can go directly to compiling the language into code. When web servers see a request to run a Perl script, they usually have to first load the Perl interpreter. This happens very quickly, but when there are thousands or tens of thousands of requests coming every second, time can very quickly add up.

PHP is more portable in that if it works on one server, it will most likely work on any other server that supports it. Most ISPs that provide server-side scripting language provide PHP. PHP is the best choice for charities and educational organizations that prefer free hosting services, as PHP is commonly included in hosting packages, and doesn’t require too much effort from system administrators.

Handling PHP Forms

A PHP script runs on the server and it can request data from a database. The server machine running the script forwards only HTML data to the client. PHP statements that output HTML code are echo and print statements. PHP statements can be written between 2 kinds of tags: <?php //statements here?> or <? //statements here ?>.

PHP forms have HTML form data and PHP code to handle the form. The general format of a PHP file (handling a form) is as below. It initially displays only a form. When user clicks the “Submit” button, the page reloads itself and executes the PHP statements in the if-statement.

12

Page 13: Ms Project Cs Report Final

<html><head><title>Form Title here</title><?phpif (isset($_POST['btnSubmit'])) { // Handle Form after page is posted

// PHP code to execute if form is submitted

}?></head>

<body> <form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">

<!-- Form elements here. The element data will be submitted and will be accessible in the Handle Form-Section above -->

<input name="btnSubmit" type="submit" id="btnSubmit" value="Submit"> </form></body></html>

Apache web server (Apache HTTP)Apache web server, oracle database, and PHP programming language gives this project a combination needed to build steady, secure, and speedy dynamic websites.

Apache HTTP Server ProjectA public-domain Web server developed by a loosely-knit group of programmers. The first version of Apache, based on the NCSA httpd Web server, was developed in 1995. Because it was developed from existing NCSA code plus various patches, it was called a patchy server — hence the name Apache Server. As a result of its sophisticated features, excellent performance, and it's free, Apache has became the world's most popular Web server.The Apache HTTP Server Project is a collaborative software development effort aimed at creating a robust, commercial-grade, rich-feature, and freely-available source code implementation of an HTTP (Web) server. The project is jointly managed by a group of volunteers located around the world, using the Internet and the Web to communicate, plan, and develop the server and its related documentation. This project is part of the Apache Software Foundation. In addition, hundreds of users have contributed ideas, code, and documentation to the project. This section is intended to briefly describe the history of the Apache HTTP Server and recognize the many contributors.

How Apache Came to Be In February of 1995, the most popular server software on the Web was the public domain HTTP daemon developed by Rob McCool at the National Center for Supercomputing Applications (NCSA), University of Illinois at Urbana-Champaign. However, development of that httpd had stalled after Rob left NCSA in mid-1994, and many webmasters had developed their own extensions and bug fixes that were in need of a common distribution. A small group of these webmasters, contacted via private e-mail, gathered together for the purpose of coordinating their changes (in the form of patches). Brian Behlendorf and Cliff Skolnick put together a mailing

13

Page 14: Ms Project Cs Report Final

list, shared information space, and logins for the core developers on a machine in the California Bay Area, with bandwidth donated by HotWired. By the end of February, eight core contributors formed the foundation of the original Apache Group: Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson with additional contributions from Eric Hagberg Frank Peters Nicolas Pioch.

Using NCSA httpd 1.3 as a base, they added all of the published bug fixes and worthwhile enhancements they could find, tested the result on their own servers, and made the first official public release (0.6.2) of the Apache server in April 1995. By coincidence, NCSA restarted their own development during the same period, and Brandon Long and Beth Frank of the NCSA Server Development Team joined the list in March as honorary members so that the two projects could share ideas and fixes.

The early Apache server was a big hit, but the code base needed a general overhaul and redesign. During May-June 1995 Rob Hartill and the rest of the group focused on implementing new features for 0.7.x model. The group switched to this new server base in July and added the features from 0.7.x, resulting in Apache 0.8.8 in August. After extensive beta testing, a new set of documentation by David Robinson, and the addition of many features in the form of their standard modules, Apache 1.0 was released on December 1, 1995.

Less than a year after the group was formed, the Apache server passed NCSA's httpd as the number one server on the Internet and according to the survey by Netcraft, it retains that position today.

In 1999, members of the Apache Group formed the Apache Software Foundation to provide organizational, legal, and financial support for the Apache HTTP Server. The foundation has placed the software on a solid footing for future development, and greatly expanded the number of Open Source software projects, which fall under this Foundation's umbrella.

Why Apache Software is Free Apache Software exists to provide robust and commercial-grade reference implementations of many types of software. It is a platform upon which individuals and institutions can build reliable systems, both for experimental purposes and for mission-critical purposes. They believe that the tools online for publishing should be in the hands of everyone, and that software companies should make their money by providing value-added services such as specialized modules and support, amongst other things. They realize that it is often seen as an economic advantage for one company to own a market - in the software industry, that means to control tightly a particular medium such that all others must pay for its use. Thus, ownership of the protocols must be prevented. To them, the existence of robust reference implementations of various protocols and application programming interfaces, available free to all companies and individuals is a tremendously good thing.

Furthermore, the Apache Software Foundation is an organic entity; those who benefit from this software by using it, often contribute back to it by providing feature enhancements, bug fixes, and support for others in public lists and newsgroups. The effort expanded by any particular individual is usually fairly light, but the resulting product is made very strong. These kinds of

14

Page 15: Ms Project Cs Report Final

communities can only happen with freely available software. When someone has paid for software, they are usually not willing to fix its bugs for free. One can argue, then, that Apache's strength comes from the fact that it's free, and if it was made not free it would suffer tremendously, even if that money were spent on a real development team.

They also want to see Apache Software used very widely; by large companies, small companies, research institutions, schools, individuals, in the intranet environment, everywhere. Even though this may mean that companies who could afford commercial software, and would pay for it without blinking, might get a free ride by using Apache. They are even happy when some commercial software companies completely drop their own HTTP server development plans and use Apache as a base, with the proper attributions as described in the LICENSE. That is to say, the Apache HTTP Sever only comes from the Apache Software Foundation, but many vendors ship their own product based on the Apache Project. There is no Vendor Apache Product. The apache current version available is 2.2.

Case for OracleDatabase is an electronic storage of data. It stores information about different entities and also contains relationships among these entities. Oracle is relational database model. It is a client/server database that runs the DBMS as a processor on the server and runs the client database application on each client. The client application sends a request for data over the network to the server. When the server receives the client request, the DBMS retrieves data from the database, performs required processing on the data, and sends only the requested data back to the client over the network as shown below.

Database server (DBMS Process)-Gets data request from client- Adds, deletes, updates, and filter data- Sends results to clients

NEWORKS

Client computer (Client application)Sends data requestReceives resultsSends new data or changes

Client/Server database

15

Page 16: Ms Project Cs Report Final

MySQL DatabaseMySQL is a database server engine which is an open source database. The only advantage of MySQL is being free but it has a lot of limitations.

MySQL table types don’t really supports many features one expects from a real relational database. Sub-queries, Foreign keys, transactions, low level locking just to mention but few are not available. MySQL 4.1 started implementing some of the above features but the fact that they recognize the need for these features means the MySQL is on the right track.

MySQL does not support Views, Stored Procedures, and Triggers. It does not use User Defined Data Types. MySQL can handle large databases but it is so complicated and intimidating to install for people who are so comfortable with graphic user interface software.

MySQL could be considered if the application and the data are not mission critical, the data structures are simple and the organization can afford the bumps and bruises of lack of tools and support but a company can not afford Oracle, MySQL can get the job done.

Why Oracle DatabaseOracle can handle TERABYTE databases in production. Oracle supports uncorrelated and correlated sub-queries up to 255 levels. Oracle supports updatable views. Transaction processing and many of the other relations database features mentioned above are inherent in Oracle.

Oracle has an incredible set of query functions and optimized SQL constructs allowing recursive tree-spanning result-sets, top-N, etc. Robust event-based triggers are available in Oracle. Oracle has integrated XML support, integrated web servers and CASE products, and extremely high-quality support.

Oracle costs money but has time-proven stability, maximum flexibility and power, and also excellent support and recovery options. If data is important to the organization as it is in this case there's no excuse, the licensing fees are worth it.

Below is a figure illustrating how the HTTP server works with PHP and Oracle to serve a client.

16

Page 17: Ms Project Cs Report Final

Oracle vs. SQL ServerThe evaluator, Eli Leiba, works at the Israel Electric Company as a senior application DBA in Oracle and Microsoft SQL Server, and has certifications in Oracle and SQL Server database administration and implementation. Additionally, Mr. Leiba teaches SQL Server DBA and development courses at the Microsoft CTEC. He recently published detailed comparison of the relative merits of Oracle Vs. SQL Server2. Leiba compares SQL Server to Oracle along the following lines:In SQL Server, the DBA has no real control over sorting and cache memory allocation. The memory allocation is decided only globally in the server properties memory folder, and that applies for ALL memory and not CACHING, SORTING, etc. In SQL Server, all pages (blocks) are always 8k and all extents are always 8 pages (64k). This means you have no way to specify larger extents to ensure contiguous space for large objects. In SQL Server, no range partitioning of large tables and indexes. In Oracle, a large 100 GB table can be seamlessly partitioned at the database level into range partitions. For example, an invoice table can be partitioned into monthly partitions. Such partitioned tables and partitioned indexes give performance and maintenance benefits and are transparent to the application.

There is no partitioning in SQL Server. There are no bitmap indexes in SQL Server.

2 SearchDatabase.com

17

Page 18: Ms Project Cs Report Final

There are no reverse key indexes in SQL Server. There are no function-based indexes in SQL Server. There is no star query optimization in SQL Server.

However, with the MS-SQL Server 2005 some of these limitations have been overcome. These include: New locking mechanisms that allow writers that don't block readers. Also, with Snapshot Isolation (SI) there is data consistency on transaction begin. Etc.

18

Page 19: Ms Project Cs Report Final

Web map (Web site navigations)This section is designed to show the how different pages are linked together. It gives an overview of how users can move easily move from page to another.

19

Page 20: Ms Project Cs Report Final

20

Page 21: Ms Project Cs Report Final

Web Design AccessThe web project is divided into four different sections. Public Web Page: The first section is a public web page in which any user can see limited

information about the faculty member of interest. Individual private pages: The second section has private web pages where faculty member

must be authenticated and authorized to access the system to add or edit information which will be used later to build a report.

Report section: The third section deal with report which also requires authentication and authorization to view or upload report that department chairperson and dean uses to evaluate a faculty contribution to the department and the university in general.

Project Administrator section: The last section is public administration site management. This is only available to the administrator with special authentication. The administrator uses these pages to enter information like faculty login, department chairperson for each department and so much more.

Public Web PageOn this main page, the faculty members by default, are listed by department. It shows faculty names, office location, office telephone number, Old Dominion University email address and office hours of the faculty. If a user knows the faculty names but does not know which department he/she belongs to, a user can chose to see the faculty listing by Names. All the user has to do is click on the link 'Faculty Listing by Name'. All the information listed in the page shows only current faculty members.

Sample form of main page: facultyListing.php

When a user clicks on each faculty name, he/she gets to see brief information about the faculty such as; a picture, faculty profile, education background, research interest, courses taught in the last two years, recent papers published, recent presentations, recent grants received, and some editorial work done. If the faculty has not entered any of the information, only the information entered by an administrator such as names, phone number, email, and position in the department will show up. For presentations, grants and publications, only the first current four items that were presented/published or grants received in the last three years from the current date are shown.

Sample form of individual page: individualFaculty.php

On the main page, user have three selection; 'Home', ‘Faculty Reports Listing’ and ‘Login’. When the user click on 'Faculty Reports Listing', report selections grouped by academic year show up. There are three selections from which a user can select one. All the three selections require user to authenticated and authorized.

Sample form of reports selection:reportsSelection.php

21

Page 22: Ms Project Cs Report Final

When the user clicks on 'Faculty Report' and logs in with proper user id and password, she will see the link for all reports submitted in that academic year. It will show the file name, due date and the date when that report was submitted. Clicking on the file name, a faculty will be prompted to download a file by either saving the file, opening the file or canceling the operation.

Sample reports listing for individual faculty: reportsListing.php

The 'Department Chair's Reports' or 'Dean's Reports' selection option can only be accessed by department chair persons and dean respectively. The department chair person will be able to see the reports for all faculty members in the department. If department chair person chairs more than one department, she will be able to see faculty member reports in these departments. The departments are ordered in the alphabetic order. The reports are grouped by due dates. Some are due on February 15 while others are due on October 1. The department chairperson can then download the reports one at a time for evaluation.

Sample reports listing by departments: reportsListing.php

When the dean logins to see the report, he or she can see all the reports for all faculty who submitted the report. The dean’s reports are grouped by department. Only the dean has access to all faculty reports.

Sample reports listing for dean: reportsListing.php

The last selection on the main page is 'Login'. Click on this button will prompt a user to login in order to access individual private information. If user has valid credentials, login will be successful and the user will then see the main private individual page in the section.

Sample form for login form: facultyLogin.php

In case a user has forgotten his or her password, he/she can click on 'forgot password' link located on login form. A user will be prompted to enter a user id and an ODU email address. The password then is emailed to the user’s ODU email account.

Sample form for forgot password form: forgotPassword.php

Individual Private PagesAfter a successful login, the user will be directed to the 'Faculty Loggedin Page' which is the most complex page. All the information shown on the public page or in the reports is entered in the database through this page. The faculty can add new information and change existing data but cannot delete confirmed data. The page lists all the information that a faculty member can ever enter in the database. If the user has not entered any information, only the information entered by the administrator will be listed. Information that is editable has an edit link beside the record. Clicking on the edit link beside the record will bring up that record in a form where the user can make changes to that record. The information that can not be edited

22

Page 23: Ms Project Cs Report Final

such as personal information can only be changed by an administrator. If the user wants to add new information, he or she can select a choice from the main menu.

Sample form for faculty logged in page: facultyLoggedin.php

PersonalUnder personal selection, there are seven different choices a faculty can chose from. The web pages that are used in these choices are almost identical in terms of appearance and functionality will be categorized together.

Personal InformationOn this form, a faculty can see an assigned university identification number (UIN), email address, faculty names, phone number, a department to which the faculty belongs, position held in the university, year hired, office hours and office location. There are only two fields a faculty can change on this form; office location and office hours. The rest of the information on the form is entered by the administrator. If a faculty received any promotion, the year when that promotion occurred is indicated on the form by 'year of position'.

Sample form for personal information: editPersonal.php

Resume upload, Resume download & Picture uploadThese forms will allow the faculty to upload a resume and a personal picture respectively. The last picture uploaded will be the current picture shown on individual public page, individual private page and both reports (finished and progress). The picture uploaded must be either of gif or jpeg format and should not exceed one megabyte. The formats acceptable for resume uploads are Microsoft word, word perfect and PDF. Resume download allow a faculty to download the last submitted resume to the system.

Sample form for resume upload/picture upload: uploadResume.php/uploadPicture.php

Add profileThis form contains one text box where a faculty can enter brief information about him/herself. The latest information submitted in the database system will always be visible to the public individual page. The information entered should not exceed 2000 characters.

Sample form for profile: editProfile.php

Add Rank, position from other universityThis form allows the faculty to enter a new position or previously held position, and start/end dates for that position. The faculty can select a position from the given list of positions. Faculty can enter positions held in other universities as well. For instance if the faculty is department

23

Page 24: Ms Project Cs Report Final

chair, that can be entered for the record. The form also have start date when the faculty obtained that position and the end date that can be entered later through editing if the faculty retires from that position.

Sample form for add rank: addRank.php / editOtherUniversityPos.php

Change PasswordThis form allows the faculty to change the password. The form has four fields; user id, old password, new password and confirm new password. This form may show up as result of faculty clicking on changing password or the faculty is logging into the system for the first time. By default, the password assigned by administrator is 'faculty'. So as the faculty is authenticated for the first time, automatically this form will request a faculty to change the password before he or she will be allowed to proceed to the private page.

Sample form for change password: changePassword.php

AchievementsThe achievement selection has three choices. These selections deals with faculty education achievements, certifications that are related to faculty academic area and honors & awards the faculty received.

EducationThis form has only four text boxes. The faculty can enter the name of a degree obtained such as Master’s degree, the major area of concentration like accounting, the university where the degree was awarded and lastly the date when degree was awarded. This data is used to show faculty credentials on the public webpage.

Sample form for education form: editEducation.php

Certification and Honors & AwardsThe certification from have only two fields; the certificate title and the date when the certificate was issued. Also honors and awards form has two fields; the award name or honor achieved and the date when the award was given.

Sample form for certification or Honors and awards form: editCerts.php/ editHonorsAwards.php

TeachingThe choice deals with teaching. Any course a faculty taught must be entered in the system through this option.

24

Page 25: Ms Project Cs Report Final

Add coursesThis form is multi-purpose. It is used to add new courses a faculty teaches in the current semester. It can also be used to edit existing course record in the database. The form has several fields that are required. These fields are Course number, course title and course call number. If any of those three fields is not entered, the record will not be submitted to the database. The other fields such as year and semester are used to identify when the course was taught. The abbreviated department name identifies the department to which that course belongs to. Some of the fields are in list boxes where a user can just choice from given selection. This helps to minimize typo errors. They are: year, semester, teaching mode and credit hours.

Sample form for add courses form: editCourses.php

Research/GrantsAny activities related to research work or grants proposal a faculty conducted must be entered in the system through this choice. This section has seven choices from which a user can select. These selections include: Publication, Conferences, Seminars, Students directed, Grants and Research Interest. The only choice that has some two level submenu is Publications.

PublicationsThis submenu deals with publications as the name suggest. It has several sub-selections grouped under this menu. These sub-selections include Refereed Journal, non-Refereed journal, proceedings, books and monographs, book chapters, and case studies.

Refereed Journal and Non-Refereed JournalThese are grouped together since they have almost identical fields. They have the same number of fields with only one exemption: refereed journal choice contains well known/highly ranked journals. The university has a list of journal names that it considers to be of high ranks. If a faculty can not find the name of the journal in the list, then he or she can use non-refereed journal to enter the publication. The list of journals is grouped by department. In the journal selection area, a faculty can select a department to narrow down the list search to the specified department. For instance, if a faculty selects ‘Accounting’, the list of journals related to accounting will be listed. Otherwise, by default, all the journals in the database system will be listed.

The required fields on these forms are author names, title of paper, journal where the paper was submitted, and submission date. If any of those fields is missing, the record will not be recorded in the system. If the paper has been accepted or published and the dates are not entered, the application will complain that changes will not take effect until the dates are entered.The status by default is ‘Submitted’. The status helps to identify the stage at which the paper is on. The classification helps to categorize the type of paper the faculty has submitted. The sample image below represents both forms in this section.

25

Page 26: Ms Project Cs Report Final

Sample form for refereed journal: editRefereedPublications.php / editNonRefPublications.php

ProceedingsThe proceedings section is subdivided into two sections: Refereed proceedings and non-refereed proceedings.

Refereed proceedings and Non-refereed proceedingsThese forms are similar in terms of data being collected. The only difference is that refereed proceeding papers are reviewed by peers while non-refereed proceeding papers are not peer reviewed. The refereed proceeding papers have greater value than non-refereed proceedings. In order to make it easy for the user, we decided to have two separate forms and tables. Otherwise, we could have provided a switch for the user to choose one but this presents a possibility of an incorrect choice or no choice being made. The required fields are author names, title of the proceedings, proceedings name, and the date when the proceedings were submitted. The accepted or published date are also required if the user classifies that the proceedings have been accepted or published. The other data collected that are not required include paper edition, volume, issue, pages, status of the paper and classification of the paper.

Sample form for refereed proceeding: editRefProceedings.php / editNonRefProceedings.php

Books and Monographs, Book chapters, case studiesThese forms are similar in terms of the data being collected and it is appropriate to put them in the same category. All of them have the same required fields such as author of the book, title of the book, date when the book was submitted, and the publisher. Unless all the required fields are entered, the form will not be submitted. It will display an error message stating the required field omitted. The accepted date or published date are also required if the user classifies that the book or case studies have been accepted or published. The other data collected that are not required include book title, paper edition, volume, issue, pages, status of the book and classification.

Sample form for books monographs: editBooksMonographs.php / editBookChapters.php / editCaseStudies.php

ConferenceThe conference form allows a faculty to document all conferences either attended or presented. The required data to be collected are author of the conference, title of the conference, conference location and the date when the conference was attended or presented. The end date to the conference is the only field on the form that is not required.

Sample form for conference presentation: editConfPresentation.php

26

Page 27: Ms Project Cs Report Final

SeminarsThe form allows a faculty to document information related to either seminars presented or attended within the academic calendar. It has five fields of data collected: speaker’s name, the topic of the seminar, location where the seminar took place, date when seminar was held and also a field to provide additional information a faculty may have related to seminar. The only required field is the speaker’s name.

Sample form for seminars: editSeminars.php

Students DirectedThis form deals with services a faculty provided to students through advisory role. The form has six fields of data to be filled in. The faculty role option provide a faculty an option to select from provided roles that a faculty can play such as director, co-director, committee member and project advisor. For the report type, a faculty can select from three choices: Ph.D. dissertation, Master’s project and Undergraduate project. The student name, faculty role, report type and title are required fields. The report date field can be filled in once the report has been approved by the committee. An additional comment field provides the faculty with an opportunity to enter more information related to project.

Sample form for student directed: editStudentsDirected.php

Add GrantsThis form allows a faculty to record all grants that are either funded or proposals that are submitted. The required data collected here includes: principal investigator, title of the proposed, sponsoring agency, amount awarded or requested, duration of the grant, date when the grant proposal was submitted, and an abstract of the grant. Any of the stated field must be entered before the form can submit to the system. Other data fields collected include: co-investigator if they exist, flag that indicate whether the grant is funded or not and the date when funded grant will expire. The information collected here will be used on the faculty report that the department chair use to evaluate the faculty.

Sample form for add grants form: editGrants.php

Research interestThe research interest is one field form. This form gives a faculty member an opportunity to record where his or her interests recline in research areas. The information collected on this form is always displayed on the public web page. Only the latest interests submitted to the database will always be displayed. The record in the database can always be edited as the faculty wishes.

Sample form for research interests: editResearchInterest.php

27

Page 28: Ms Project Cs Report Final

ServicesThis section provides a way for the faculty to document any activity or services as the name suggest to the university and the community as a whole. It has two sub-selections: 'Add Services to' and 'Academic/Professional'.

Add ServicesUnder this section, it has four more choices a faculty can chose from. These are 'University', 'College ', 'Department' and 'Community'.

University, College, Department and CommunityThe data collected under all these four sub-selections is the same, they fall under the same category. Each of these forms has four data fields that were used to collect data. The required fields are three: committee on which the faculty served, the service offered, and the date when the services was rendered. The end date of service is not required but can be entered if the faculty wishes incase the service was carried out for specific period of time. The only form without committee field is 'Community' since this service is offered outside the school environment. The one form sample displayed below is enough to represent the rest.

Sample form for service to university: editServiceToUniversity.php

Academic/ProfessionalThe data collected here is similar to what is collected in the above service to university section and the rest. This form was necessary because a faculty may want to document professional services that do not belong to any of the above categories. The faculty may have provided a service on the committee that is outside school and it helps to promote the university.

Sample form for academic/professional: editProfServices.php

ReportThe report section has three selections for a faulty to chose from: 'New information sheet', 'Upload information sheet' and 'view information sheet'. The 'New information sheet' will be explained in detail later when we cover the 'Report in progress ' in the ‘Report Section’.

Upload Information sheetThis form allows the faculty to select the date when his or her report is due for submission. This date is used to differentiate between Tenure and non-Tenure. The month selection shows only two choices, February for Tenure and October for non-tenure. By default, February will be selected if the user does not make a selection. The day is the same for everyone so by default 15 will always be there. The year is set to show only three years using current year as the default.

28

Page 29: Ms Project Cs Report Final

The user will have to browse his or her computer to select the file he or she wants to submit. The file formats acceptable at the moment are: Microsoft word document, WordPerfect and Acrobat.All the information is required for successful submission of the file. Once the file is submitted, the faculty can go and view the file just uploaded to make sure it is the right file he or she wanted to be evaluated on by the chair.

Sample form for upload information sheet: upLoadInfoSheet.php

View information sheetThis form shows the individual all the reports he or she has ever submitted to the system. It lists the file name, due date of the report and the date when the report was submitted. The reports are listed in the order of due date.

When the user clicks on the link of the file name, the faculty will be prompted to with selection choices: save the file on local drive, open the file or cancel the operation.

Sample form for view report: reportArchive.php

LogoutLogout form allows the user to initiated process of signing off the system and cutting the user's connection to the system.

29

Page 30: Ms Project Cs Report Final

Report Section

Report in ProgressThere are two ways through which the report in progress can be accessed. Either you can access the report from 'facultyloggedin' page by editing a record or select 'new information sheet' from report menu choices.

When a user selects new information sheet, he or she will be prompted to select due date. This date is required to run the query that will display all the information that the faculty has been collecting into the database system. The report form will also display five empty text boxes and those text boxes record will also need the due date before the data can be submitted in the table.

When a user selects to edit a record from 'facultyloggedin', that specified record will already have due date attached which means the form for selecting due date will not show up. The text boxes will show up with the data related to specified record for editing. The other information such as courses taught, research & scholarly activities, grants, professional services etc will also be displayed for the last two to three years from the due date.

All the information on the report on progress can be changed in any way the faculty wants. This report in progress page appearance is similar to 'facultyloggedin' page with one exceptional that the information on report is filtered to have only the information that will be used to evaluate the faculty by the department chairperson and the dean.

The report editing areas have four different buttons a user can click. The 'Update Record' button when clicked will update all the information in the text boxes into 'tblFIS' table and display the same form again after updating the record. 'Create new record' button will check the database to make sure that the record the user wants to insert into 'tblFIS' table does not exist by checking due date. If table has record with the same due date for that faculty, the record will not be created. On the other had, if it does not exit, the record will be inserted as a new record into 'tblFIS' table with the data listed in the text boxes. The page will display the form again with the same data inserted in the record in the database. 'Back to main page' button will take the user to the main private page 'facultyLoggedin' page. 'final report' button will take the user to finished report that can not be edited. This report can be saved into PDF format and latter can be submitted by uploading the report for evaluation.

Sample of report in progress: editFISInformation.php

Report FinalizedThis is the finished product of the report that is ready to be saved and submitted. The report in HTML is formatted using a 'flexi-report' php class. The report at this stage can not be edited. A user having PDF convert capability can create/save a PDF copy on his or her computer.

30

Page 31: Ms Project Cs Report Final

The user will be able to save the file at that time which will later be submitted for evaluation. The report indicates when it was generated, the due date, faculty images and much more.

Sample form for finished report: facultyInfoSheet.php

31

Page 32: Ms Project Cs Report Final

Project Administrator SectionThis section helps the database administrator to administer users. In order for the administrator to access the pages under this section, he/she has to use a different login account. If there is a need to have more than one administrator, several administrators can be created since they are maintained in a database in a separate table from site users. The web pages in this section are grouped into three parts; those pages used to add information, those used to edit existing data and those used only to view what is available in system database.

Adding New InformationThere are six pages used to add information to the database. Each of the file listed below.

Add DeansThe Dean for the College of Business and Public Administration is added using this page. There can be only one dean but several associate and assistant deans can be added. If there is a current dean, while adding a new dean, the system is designed to detect it. The existing dean will automatically be converted into a previous dean with effective ending date of current date when that action is performed.

Before any person can be added as dean or associate or assistant, he/she must be a current user in the system. The required fields are faculty department, starting date of assumed position, the assumed position and faculty identification number. The faculty identification number is handled being the scenes because the user is required to select the faculty names and the system will pickup the unique number of the faculty. Once all the required information is provided, the new dean record will be added to tblDeans table when submitted to the database.

The sample form for this page is shown below: adminAddDeans.php

Add DepartmentThe department page gives an administrator an opportunity to create as many departments as possible. This page has two fields that are all required. The first field is the full department name and second field is the abbreviated version of the department. This page is used for both adding new department and editing existing department. It has a flag that differentiates between the two modes of adding and editing. If the required fields are provided, the record will be added or modified to the tblDepartment table in the database.

The sample form for this page is shown below: adminAddDept.php

Add Department Chair PersonThe add department chair page allows an administrator to create the department chair for each department. One faculty can be a department chair for more than one department. If there is a

32

Page 33: Ms Project Cs Report Final

current department chair, as new department chair is being added, the system is design to detect that automatically. The existing department chair will automatically be converted into a previous department chair with effective ending date of current date when that action is performed.

Before any person can be added as department chair, he or she must be a current user in the system. The required fields are the department a faculty will be heading, starting date of being department chair, and faculty identification number. The faculty identification number is handled behind the scenes because the user is required to select the faculty names and the system pickups the unique number of the faculty. Once all the required information is provided, the new department chair record will be added to tblChairPersons table when submitted to the database.

The sample form for this page is shown below: adminAddDeptChairs.php

Add Department SecretaryThe add department secretary page allows an administrator to create the department secretary for each department. A secretary can be a department secretary for more than one department. If there is a current department secretary, as new department chair is being added, the system is design to detect that automatically. The existing department secretary will automatically be turned into previously served department secretary with effective ending date of current date when that action is performed.

Before any person can be added as department secretary, he or she must be a current user in the system. The required fields are the department a secretary will be providing services to, starting date of being department secretary, and secretary identification number. The identification number is handled behind the scene because the user is required to select the secretary names and the system pickups the unique number of the specified user. Once all the required information is provided, the new department secretary record will be added to tblSecretary table when submitted to the database.

The sample form for this page is shown below: adminAddDeptSecretary.php

Add JournalsThe form page is used to add the most popular journals around the world. The journals entered on this page have ranks. If the faculty publishes an article under the journal listed in this page, then the journal is regarded to be of high rank. The journal page has the following fields: the journal name, the publisher, journal rank, and the department associated with the journal. Out of the four fields, the required fields only two: publisher and the journal name. When these two required field are provided, the added information will be submitted to the tblJournals table when submitted database. The sample form for this page is shown below: adminAddJournals.php

33

Page 34: Ms Project Cs Report Final

Add UsersThis page handles user information. The form has so many fields but the required fields are: the faculty identification number, user identification, user password, prefix, first name, last name, year hired, and faculty rank. The optional field includes are: year the faculty was given the ranked, email, phone number, middle initial, office location, office hours, department the user belongs to, and suffix.

The information entered here is stored into three tables: tblLogin table where the user id, faculty identification number and password are stored, the rank information and year hired are store in tblRanks table and the other table tblFaculty is where the rest of the information is stored in the database. Before the information for tblRanks table is added, the information for tblFaculty table must be inserted and committed because the identification number that links between these two table must be obtained from the latter table.

The sample form for this page is shown below: adminAddUsers.php

Editing Existing InformationThis section handles the modification of data sitting in the database. Independent forms to handle editing are used due to the complexity involved in using the adding forms for editing too.

Edit Deans This page allows the administrator to modify the dean’s information. The fields that can be modified include: user department, faculty identification number, position, prefix, first name, middle initial, last name, suffix, office location, phone number, start date, and end date. Out of all these fields, the required fields are faculty identification number, position, prefix, first name, last name, location, department, phone number and start date. When all the field requirements are met, the data will be submitted to two different tables, tblDeans and tblFaculty table. The information submitted to the former table is: position, start date, end date if applicable, and faculty identification number. The rest of the information is sent to the latter table. Otherwise, if there are some required fields that are not filled, error messages will be shown in the browser stating why the data was not saved.

The sample form for this page is shown below: adminEditDeans.php

Edit Department Chair person This page allows the administrator to modify the department chair information. The fields that can be modified include: changing department a faculty is heading, faculty identification number, prefix, first name, middle initial, last name, suffix, office location, phone number, state date, and end date. Out of these fields, the required fields are faculty identification number, department, prefix, first name, last name, location, phone number and start date. When the field requirements are met, the data will be submitted to two different tables, tblChairPersons and tblFaculty table. The information submitted to the former table is: department, start date, end date if applicable, and faculty identification number. The rest of the information is sent

34

Page 35: Ms Project Cs Report Final

to the latter table. Otherwise, if there are some required fields that are not filled, error messages will be shown in the browser stating why the data was not saved.

The sample form for this page is shown below: adminEditDeptChairs.php

Edit Department SecretaryThis page allows the administrator to modify the department secretary information. The fields that can be modified are: department a secretary is involved in, faculty identification number, prefix, first name, middle initial, last name, suffix, office location, phone number, start date, and end date. Of all these fields, the required fields are: faculty identification number, department, prefix, first name, last name, location, phone number, a flag for indicating if he or she is already serving as a secretary, and the start date. When all the field requirements are met, the data will be submitted to two tables, tblSecretary and tblFaculty tables. The information submitted to the former table is: department, activating/deactivating secretary flag, start date, end date if applicable, and faculty identification number. The rest of the information is sent to the latter table. Otherwise, if there are some required fields that are not filled, error messages will indicate in the browser stating why the data was not saved.

The sample form for this page is shown below: adminEditDeptSecretary.php

Viewing Existing InformationThis section only deals with querying database for specified table and list or display all the information available to the browser. Almost all the pages in this section utilize the pages under the section of editing existing pages with exceptional of view users and view journals.

View DeansTo view dean information, the data has to be queried from two different places: tblFaculty and tblDeans tables. The information is displayed in two HTML tables. The first table is for the current dean, associates and assistants information. The information displayed includes: position, prefix, first name, last name, suffix, office address, the phone number and link that enables that specific record to be edited.

The information displayed in the second table is for the previous faculty that served as deans, assistant dean and associate dean. Additional information is the start date and the end date of that faculty.

The sample form for this page is shown below: adminViewDeans.php

35

Page 36: Ms Project Cs Report Final

View DepartmentsTo view department information, the data is obtained from one table tblDepartment table. It has only one section where the information is displayed all on top. This information include department, department abbreviation and link that enables that specific record to be edited. The sample form for this page is shown below: adminViewDept.php

View Department chair personTo view department information, the data has to be queried from two different places: tblFaculty and tblChairPersons tables. The information displayed in two HTML tables. The first table is for the current department chair persons. The information displayed is: department he or she is heading, prefix, first name, last name, office location, the phone number and link that enables that specific record to be edited.

The information displayed in the second table is for previous faculty that served as department heads. Additional information is the start date and end date is the position.

The sample form for this page is shown below: adminViewDeptChairs.php

View Department SecretaryTo view department secretary information, the data have to be obtained from two different places: tblFaculty and tblSecretary tables. The information is displayed in two HTML tables. The first table is for current department secretary personnel. The information displayed is: departments he/she is serving, prefix, first name, last name, office location, the phone number and link that enables that specific record to be edited.

The information displayed in the second table is for the previous secretaries that served all departments. Additional information displayed is the start date and end date.

The sample form for this page is shown below: adminViewDeptSecretary.php

View available JournalsThis page displays the most common journal available in the database system. The information displayed here comes from two different tables tblDepartment for getting department associated with that journal and tblJournals table for getting journal name and the publisher. The information displayed is: department name, journal name, publisher and the journal rank.

The sample form for this page is shown below: adminViewJournals.php

36

Page 37: Ms Project Cs Report Final

View available UsersThe viewing of users of the system is obtained from two different tables such as tblFaculty and tblDepartment tables. The information is displayed in the alphabetic order by department and then last name. The users are displayed by department. The information displayed includes: department a user belongs to, prefix, first name, last name, user rank or position, office location, phone number, email, a check box that indicator that user is no longer part of the college of business and public administration and link that enables that specific record to be edited. The information is displayed in the table layout format.

The sample form for this page is shown below: adminViewUsers.php

37

Page 38: Ms Project Cs Report Final

FACULTY WEB DESIGN IN PHPThis section details how PHP was used to do common operations.

Display pagesThis section explains how the data is displayed that does not require any modification. The following files all query the database to display information.

Files that Query the Database to display InformationadminViewDeans.phpadminViewDept.phpadminViewDeptChairs.phpadminViewDeptSecretary.phpadminViewJournals.phpadminViewUsers.phpdownloadReport.php

downloadResume.phpfacultyListing.phpfacultyLoggedin.phpindividualFaculty.phpreportsListing.phpfacultyInfoSheet.php

PHP code is enclosed in a tag opened by <?php or <? and closed by ?>. There is no declaration of variables. All that is needed by PHP is to place a dollar sign ($) on the variable name. The variables have no data type. The data type of values in variables is decided on how they are used. The semicolon (;) terminates statements. The include_once() statement includes contents of the specified file during the execution of the script. This behavior is similar to the include() statement, with the only difference being that in include_once(), if the code from a file has already been included, it will not be included again. Including once is used in this project because the same file might be (indirectly) included more than once during a particular execution of a script. The file included in this project mainly contains the header information as below.

<?php $formTitle = "College of Business & Public Administration"; $pageTitle = "Faculty Listing"; include_once('withoutLoginHeader.inc');?>

PHP seamlessly interacts with an Oracle Database. The following connects to an oracle database.

$iDBConn = OCILogon(DB_USER, DB_PASS, DB_NAME);

Connections are shared at the page level when using OCILogon(). This means that commits and rollbacks apply to all open transactions in the page, even if you have created multiple connections.

To query the database, write regular SQL statement as oracle would understand it and store it in a variable. OCIParse() parses the query using connection. It prepares the query using connection and returns the statement identifier usable by other functions. It returns false if it has failed. OCIExecute() executes a previously parsed statement. An optional parameter allows specifying an execution-mode (default is OCI_COMMIT_ON_SUCCESS). If there is no need

38

Page 39: Ms Project Cs Report Final

for statements to be committed automatically specify OCI_DEFAULT. The function OCIError() returns the last error found. If no error is found, OCIError() returns false. OCIError() returns the error as an associative array. This array at index code has an oracle error code and a message having the corresponding oracle error string. All the three statements above must be given the variable that contains the SQL statement.

The statement ocifetchinto() fetches the next row of a SELECT statement into a row array parameter. ocifetchinto() overwrites previous content of the row. By default row will contain a zero-based array of all columns that are not NULL. The mode parameter allows you to change the default behavior. You can specify more the one flag by simply adding them up. For instance, valid values are as follows:OCI_ASSOC – allows returning an associative array.OCI_NUM – allows returning a numeric array starting with zero (default behavior).OCI_RETURN_NULLS – allows returning the empty values for column, with value NULL.OCI_RETURN_LOBS – allows returning a LOB (Long Object) instead of the descriptor.

Sample PHP code for querying an oracle database and extracting data$queryDepartment = "SELECT departmentNumber, department FROM tblDepartment " + " ORDER BY department";$resultDepartment = @OCIParse($iDBConn, $queryDepartment);@OCIExecute($resultDepartment, OCI_DEFAULT); // Execute the query $arrDepartmentError = OCIError($resultDepartment);if ($arrDepartmentError['code']) { $message .= '<p><font color="red" size="+1">Sorry, query could not ' + 'run!</font></p>'; $message .= '<p><font color="red" size="+1">' . $arrDepartmentError['message'] . '</font></p>'; echo $message; include_once('footer.inc'); exit();}

while (OCIFetchInto($resultDepartment, &$rowDepartment, OCI_ASSOC+OCI_RETURN_NULLS)){ \\ Do what ever is needed to the data in rowDepartment array}

Once the information is obtained from the database, the next step is to display that information in any desirable way. For example an HTML table can be created on fly to display the information. Any information that needs to be displayed in the browser has to be specified in a PHP output statement such as an echo statement. The statement should also be enclosed in either single quotation marks (' ') or double quotation marks (" ") with an exception of variables. The period (.) in PHP is used to concatenate strings and variables. This sample code represents a general picture for all the pages that just display information on the web browser. In the example below, the variable $resultFacultyInfo is associated with a query extracting faculty member information.

Extracting data in a query an displaying it in an HTML table

39

Page 40: Ms Project Cs Report Final

$first = true; // Results displaywhile (OCIFetchInto ($resultFacultyInfo, &$rowFacultyInfo, OCI_NUM+OCI_RETURN_NULLS)) { if ($first) {

// draw a table of resultsecho '<table width="730" border="1">';

echo ' <tr>';echo '<th width="151" scope="col">Name</th>';echo '<th width="120" scope="col">Office Location </th>';echo '<th width="141" scope="col">Phone Number </th>';echo '<th width="143" scope="col">Email</th>';echo '<th width="171" scope="col">Office Hours </th>';echo ' </tr>';$first = false;

} // end if first row

echo ' <tr>'; echo '<td><a href="individualFaculty.php?id=' . $rowFacultyInfo[0] . '">' . $rowFacultyInfo[1] . '</a></td>'; echo '<td>' . $rowFacultyInfo[2] . '</td>'; echo '<td>' . $rowFacultyInfo[3] . '</td>'; echo '<td><a href="mailto:' . $rowFacultyInfo[4] . '">' . $rowFacultyInfo[4] . '</a></td>'; echo '<td>' . $rowFacultyInfo[5] . '</td>'; echo ' </tr>';} // end while loop

if (!$first) { echo '</table>';} else { echo '<p>There are no faculty listed in the database.</p>';}

Adding/Editing data pagesThe rest of the project PHP scripts are used for either adding new records or editing existing records. With the exception of few files, most of the scripts handle both editing and adding records. A flag is used to indicate what task is being performed. One file is used as sample code but it gives a clear view of all pages since they are handled in the same manner.

The first thing done is to start a session to identify an authenticated user. session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie. This function always returns TRUE. When using cookie-based sessions, you must call session_start() before anything is outputted to the browser.

Since adding or editing information requires someone to be authenticated first, a customized file checkAuthorization.inc checks to make sure the user has already logged into the system. Unauthorized users cannot be allowed to access all pages in this section. The PHP statement

40

Page 41: Ms Project Cs Report Final

$oduID = $_SESSION['oduID']; gets the user logged id to be used later in the subsequent queries and stores it in the variable given on the left. The next statements to work as expected, expect the page to be activated using an address such as the one below:

http://www.cbpa.odu.edu/FacultyWeb/editCourses.php?modify=edit&courseNum=46

Then if (isset($_GET['modify'])) $md = $_GET['modify']; retrieves a flag to indicate whether the user wants to modify an existing record or add a new record.The if (isset($_GET['courseNum'])) $courseSeqID = $_GET['courseNum']; statement gets the record id for the record that a user wants to modify. The complete sample code is listed below:

<?php session_start(); require_once('checkAuthorization.inc'); $oduID = $_SESSION['oduID']; if (isset($_GET['modify'])) $md = $_GET['modify']; else $md = NULL; if (isset($_GET['courseNum'])) $courseSeqID = $_GET['courseNum']; else $courseSeqID = NULL;?>

An array in PHP is actually an ordered map. A map is a type that maps values to keys. This type is optimized in several ways, so you can use it as a real array, or a list (vector). An array can be created by the array() language-construct. It takes a certain number of comma-separated key => value pairs. A key may be either an integer or a string. Floats in key are truncated to integer. There are no different indexed and associative array types in PHP; there is only one array type, which can both contain integer and string indices. A value can be of any PHP type. The arrays created here are used to populate combo boxes or list boxes later.

$semesters = array(0=>'Fall', 'Spring', 'Summer');$teachingModes = array (0=>'Regular', 'Teletechnet', 'Virtual', 'Web');$creditHours = array(3=>3, 1=>1, 2=>2);$years = array(2005=>2005, 2006, 2007, 2008, 2009, 2010);

If a flag indicates editing, the next code will query the database to retrieve all the information about that record for specified user. The data can be displayed later in a text box with in a form.

Querying the database for text to the displayed as editableif ($md == 'edit') { // To display fields of the selected course when editing $querySelectedCourses = "SELECT * FROM tblCourses WHERE " . " courseSequenceID='$courseSeqID' AND oduID='$oduID'"; $resultSelectedCourses = @OCIParse($iDBConn, $querySelectedCourses; $arrSelectedCoursesError = OCIError($resultSelectedCourses); if ($arrSelectedCoursesError['code']) { echo $arrSelectedCoursesError['message'];

41

Page 42: Ms Project Cs Report Final

OCIRollback($iDBConn);include_once('footer.inc');exit();

}

// Execute the query@OCIExecute($resultSelectedCourses, OCI_DEFAULT);// Make sure there were no errors with the query$arrCoursesInsertError = OCIError($resultSelectedCourses);if ($arrCoursesInsertError['code']){ $message .= '<p><font color="red" size="+1">Sorry, data could not read ' . ' from the database!</font></p>'; $message .= '<p><font color="red" size="+1">' . $arrCoursesInsertError['message'] . '</font></p>'; OCIRollback($iDBConn); $success = false;}OCIFetchInto($resultSelectedCourses, &$rowSelectedCourses, OCI_ASSOC+OCI_RETURN_NULLS);} // end if edit

The data in a form is handled in the same manner whether a user is editing or adding new record. It has one script for handling both displaying data and form submission by use of the if conditional if(isset($_POST['btnSubmit'])). If the submit button variable is set, we know that the form has been submitted. As soon as the user clicks the submit button, the form checks to make sure all the required fields have been entered. Otherwise a message error will be displayed telling the user that a specific field is not entered and it is required before submission can be honored. Entered data is stored in temporary variables that will be used in query statements. If a field is not required and is filled in, it will be obtained in its text form and stored in local variable but an error message will not be raised.

42

Page 43: Ms Project Cs Report Final

Handling submitted data: Checking required fieldsif(isset($_POST['btnSubmit'])) { // Handle Form //test the posted values for validity, set an error message if necessary if(empty($_POST['courseNum'])){ $cn = NULL; $message .= '<p><font color="red" size="+1">You must enter the Course ' . 'Number!</font></p>'; } else{$cn = $_POST['courseNum']; } if(empty($_POST['courseTitle'])){ $ct = NULL; $message .= '<p><font color="red" size="+1">You must enter the Course ' . 'Title!</font></p>'; } else{$ct = $_POST['courseTitle']; } if(empty($_POST['callNum']) || !is_numeric($_POST['callNum'])){ $cln = NULL; $message .= '<p><font color="red" size="+1">You must enter the CRN ' . 'number!</font></p>'; } else{ $cln = $_POST['callNum']; }...

$s = $_POST['semester']; $y = $_POST['year']; $d = $_POST['department']; $t = $_POST['teachingMode']; $crh = $_POST['creditHours'];

If the flag was for adding a new record to the database, the following code will prepare an SQL statement to INSERT data into the database. This can only be done if all required fields have been obtained, otherwise the error message will be displayed. If for some reason an error has been encountered when executing a database query, an error will be automatically detected and a roll back can be done using the OCIRollback() function as indicated in the handling of submitted data below. The data is inserted into the tblCourses table.

Handling submitted data: Updating the database by inserting dataif ($cn && $ct && $cln ) { // Insert database $success = false; if ($md == 'add') { $success = true; //Add new record to database $queryInsertCourses = "INSERT INTO tblCourses (courseSequenceID, " . " courseNumber, call, courseTitle, creditHours, " . "semester, year, enronllment, teachingMode, classHours, " . " classLocation, lastUpdate, oduID, departmentNumber) " . " VALUES (CourseSequenceID_Seq.nextval, '$cn', '$cln', '$ct', " . "'$crh', '$s', '$y', '$en', '$t', '$ch', '$cl', SYSDATE, '$oduID'," . "'$d')"; $resultInsertCourses = @OCIParse($iDBConn, $queryInsertCourses); $arrInsertCourseError = OCIError($resultInsertCourses); if ($arrInsertCourseError ['code']) {

43

Page 44: Ms Project Cs Report Final

echo $arrInsertCourseError['message']; OCIRollback($iDBConn); include_once('footer.inc'); exit(); }

// Execute the queries @OCIExecute($resultInsertCourses, OCI_DEFAULT); // Make sure there were no errors with the query $arrCourseInsertError = OCIError($resultInsertCourses); if ($arrCourseInsertError['code']){ $message .= '<p><font color="red" size="+1">Sorry, data could not' . ' be added in the database!</font></p>'; $message .= '<p><font color="red" size="+1">' . $arrCourseInsertError['message'] . '</font></p>'; OCIRollback($iDBConn); $success = false; } }// end of if md=add

On the other hand, if the flag was for editing an existing record an UPDATE SQL statement is prepared and executed. In this case table being modified is tblCourses.

Handling submitted data: Updating the database by modifying data else if($md =='edit') { $success = true; //update new record to database $queryUpdateCourses = "UPDATE tblCourses SET courseNumber = $cn, " . "call = $cln, courseTitle = $ct, creditHours = $crh, " . "semester = $s, year = $y, enronllment = $en, "teachingMode = $t, " . "classHours = $ch, classLocation = $cl, departmentNumber = $d, " . "lastUpdate = SYSDATE " . "WHERE oduID = $oduID AND courseSequenceID = $courseSeqID " ;

$resultUpdateCourses = @OCIParse($iDBConn, $queryUpdateCourses); $arrUpdateCourseError = OCIError($resultUpdateCourses); if ($arrUpdateCourseError ['code']) { echo $arrUpdateCourseError['message']; OCIRollback($iDBConn); include_once('footer.inc'); exit(); }

// Execute the queries @OCIExecute($resultUpdateCourses, OCI_DEFAULT); // Make sure there were no errors with the query $arrCourseUpdateError = OCIError($resultUpdateCourses); if ($arrCourseUpdateError['code']){ $message .= '<p><font color="red" size="+1">Sorry, data could not' . ' be updated into the database!</font></p>'; $message .= '<p><font color="red" size="+1">' . $arrCourseUpdateError['message'] . '</font></p>'; OCIRollback($iDBConn);

44

Page 45: Ms Project Cs Report Final

$success = false; } } //end of if md=edit

The next code checks to make sure SQL code for either adding a new record or updating an existing record was successful in the database. If so, oracle is authorized to commit that record or save that record permanently in the database. The user will be informed of that success and given an opportunity to go back to the main logged in page. If the operation was not successful, the user will still be informed and told where the operation failed.

if ($success) { // successful in updating OCICommit($iDBConn); echo "<p align=\"center\"><br><br>Data updated. " . "<a href=\"facultyLoggedin.php\">Click here to continue.</a><p>"; include_once('footer.inc'); exit(); } else { // not successful append to error message $message .= '<p><font color="red" size="+1">Sorry, this record ' . 'can not be updated!</font></p>'; } echo "$message"; // display error message} // end main submit conditional

The next section of code below shows how HTML Forms are declared with embedded PHP. In the form tag, the most important attribute is action, which indicates to which page the form data will be sent. Next, the method attribute can either be POST or GET. POST is appropriate in storing data, updating data, ordering a product, or sending E-mail. GET sends ‘small’ submitted data to the receiving page as a series of name value pairs appended to the file. The action value has the statement $_SERVER['PHP_SELF'] that represents the file name containing the PHP script. This means, the file containing the form will handle the form itself. The subsequent parameters after the file name are included after question mark (?). The 'modify='.$md parameter contains the flag for either editing or adding new record. The &courseNum='. $courseSeqID parameter contains the ID for the record to be edited.

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] . '?modify=' . $md . '&courseNum=' . $courseSeqID;?>">The next code below with in the form tags displays a table. This is what actually the user see on the browser when click the button to edit or add new record. The table is created first in HTML. The label for each subsequent text box or list box is also in HTML.

<table width="638" border="1" align="center"> <tr><td><strong>Year: </strong> <select name="year" id="year">

PHP is embedded into the HTML to accomplish several things. On the top of the page, we run the SQL query to retrieve information related to the record a user wants to edit. The conditional statement if ($md == 'edit') checks to see the flag was for editing then it displays that record in the list box/combo box by retrieving it from the query row resulting from the query execution at the top of the page. Here, the database stores to year as part of a record. The statement:

45

Page 46: Ms Project Cs Report Final

foreach($years as $key => $value) is used to access all array elements. The statement if(isset($_POST['year']) && $_POST['year'] == $value) tests if posted value agrees with the current array value so that a prior selection is indicated. This is especially used in case a user did not enter all the required data and a database could not allow that record to be edited. In such case, a form will display an error and also display all the information that was entered before so that when a user correcting the error does not have to reenter all the information again. Complete snapshoot of the code is listed below:

<?php if ($md == 'edit') { echo "<option value=\"{$rowSelectedCourses['YEAR']}\"";

echo ">{$rowSelectedCourses['YEAR']}</option>";} foreach ($years as $key => $value) { $selected = null;

if (isset($_POST['year']) && $_POST['year'] == $value) $selected = 'selected'; echo "<option value=\"$key\" $selected>$value</option>"; } ?>

The way the add flag is handled is not so different from the flag for editing. In the above code, data was collected from a combo box but the code below, data is handled from text box. If the flag is for adding new record and there is data set for that specified text box, that data will be displayed. Other wise the empty text box will be displayed so that a user can enter new information related to that specified field.

<td><strong>Call #/CRN:</strong> <input name="callNum" type="text" id="callNum" size="10" value=" <?php if ($md == 'add'){ if(isset($_POST['callNum'])) echo $_POST['callNum']; } // end of if md=add else if ($md == 'edit'){ echo $rowSelectedCourses['CALL']; } ?>"> </td></tr>

After all the necessary information is output into the table, it is closed by code below:</table>

The button used to submit or clear the contents of the form are also included on the form but not embedded into PHP script. The last thing done is to close the form

<p align="center"> <span class="style1">Please confirm data and select Submit</span><br><br> <input name="btnSubmit" type="submit" id="btnSubmit" value="Submit"> <input name="btnClear" type="reset" id="btnClear" value="Clear"> </p></form>

The last statement in code is embedded in PHP to include the footer that display on each page.

46

Page 47: Ms Project Cs Report Final

<?php include_once('footer.inc');?>

Upload file pagesThere are three different files that are involved in uploading information. To upload a final report that department chair uses to evaluate faculty is done by 'upLoadInfoSheet.php'. Then 'uploadPicture.php' used to upload faculty images that show up in a faculty report, faculty public page and faculty private logged page. Lastly ' uploadResume.php' is used to upload a faculty resume. Since such pages upload information, using one file as sample code will suffice.

The information being uploaded needs to have a time stamp. The code below is used to create and run an SQL statement to generate the current date and time to be attached to the file being uploaded as part of the file name. The statement to TO_CHAR(SYSDATE, 'yyyymmhhmi') converts the current system date SYSDATE into a specified format 'yyyymmhhmi'. The first four characters 'yyyy' indicate to oracle that the year should have four digits, the two characters 'mm' represent month in numeric two digits, 'hh' for 2 digit hours, and 'mi' for minutes into standard two digits. The DUAL is a dummy table for oracle that is owned by user SYS and it is available to all users. It is useful when one wants to find the outcome of a function and the parameter is not taken from any table as in this case.

// To get current date to use in the file name$queryDate = "SELECT TO_CHAR(SYSDATE, 'yyyymmhhmi') FROM DUAL";$resultDate = @OCIParse($iDBConn, $queryDate); @OCIExecute($resultDate, OCI_DEFAULT);OCIFetchInto ($resultDate, &$rowDate, OCI_NUM+OCI_RETURN_NULLS);The next SQL statements are used to get the user’s first and last names from the database. The users’ names and the date generated above will be used later as a file name.

// To get the users names$queryFacultyNames = "SELECT firstName, lastName FROM tblFaculty WHERE" . " oduID = '$oduID'";$resultFacultyNames = @OCIParse($iDBConn, $queryFacultyNames);@OCIExecute($resultFacultyNames, OCI_DEFAULT);$arrFacultyNamesError = OCIError($resultFacultyNames);if ($arrFacultyNamesError['code']) { $message .= '<p><font color="red" size="+1">Sorry, Faculty name query ' . ' could not run!</font></p>'; $message .= '<p><font color="red" size="+1">' . $arrFacultyNamesError['message'] . '</font></p>'; $success = false;} // end if sql error codeOCIFetchInto ($resultFacultyNames, &$rowFacultyNames, OCI_NUM+OCI_RETURN_NULLS);

The next code is for preparation of the file name that will be stored in the database to uniquely identify the user and date created. The explode() function blows a string into little bits into an array. The statement explode ('.', $_FILES['fisUpload']['name']) returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string separator here the period '.'. The general format is

47

Page 48: Ms Project Cs Report Final

explode ( string separator, string string [, int limit] )If limit is set, the returned array will contain a maximum of limit elements with the last element containing the rest of string. If separator is an empty string (""), explode() will return FALSE. If separator contains a value that is not contained in the string, then explode() will return an array containing the whole string. If the limit parameter is negative, all components except the last - limit are returned. This feature was added in PHP 5.1.0.

In building the file name, the first part added by $fileName = $rowDate[0] is the current date that was obtained in the above SQL query of SYSDATE. The sizeof operator is used return the array size of extension and is used to get the file extension index in the array extension. In addition to the current date, the file name is appended the first three characters of the first name and last name, and lastly the file extension. The complete code is shown below.

// Create a file name$extension = explode ('.', $_FILES['fisUpload']['name']);$fileName = $rowDate[0]; $i = sizeof($extension) - 1;$fileName .= substr(strtolower($rowFacultyNames[0]), 0, 3);$fileName .= substr(strtolower($rowFacultyNames[1]), 0, 3);$fileName .= '.' . $extension[$i];$origFName = $_FILES['fisUpload']['name'];

Once the file name is obtained, the next step is store the file information in the database using the SQL code below. In this case the row of data is added to the tblReportArchive table.

// add record to the database$queryInsertRptArchive = "INSERT INTO tblReportArchive (reportArchiveID, " . "fileName, origFileName, dueDate, uploadDate, oduID) " . " VALUES (reportArchiveID_Seq.nextval, '$fileName', '$origFName', " . "'$dueDate', SYSDATE, '$oduID')";$resultInsertRptArchive = @OCIParse($iDBConn, $queryInsertRptArchive);// Execute the query@OCIExecute($resultInsertRptArchive, OCI_DEFAULT);// Make sure there were no errors with the query$arrInsertRptArchiveError = OCIError($resultInsertRptArchive);if ($arrInsertRptArchiveError['code']){ $message .= '<p><font color="red" size="+1">Sorry, faculty information ' . ' report could not be added to the archive! ' . ' Choose a file to upload</font></p>'; $message .= '<p><font color="red" size="+1">' . $arrInsertRptArchiveError['message'] . '</font></p>'; OCIRollback($iDBConn); $success = false;}

After a record has been added to a table, the file needs to be physically uploaded. First, check the file for the proper extension. The allowable extensions are only 'DOC' and 'PDF'. If the extension is not one of the permitted, the file will not be allowed to be uploaded. Even the record that was created in the database will be canceled and the user will be given error message in the browser with the reason for not permitting such file. Otherwise the file will be uploaded and a record saved in the database.

48

Page 49: Ms Project Cs Report Final

if ($success && ($extension[$i] == 'doc') || ($extension[$i] == 'wpd') || ($extension[$i] == 'pdf')) { // Move file over to the server if (move_uploaded_file($_FILES['fisUpload']['tmp_name'], "ArchiveReportUploads/$fileName")) { $message .= '<p><br>Your faculty information report has been ' . 'Successfully uploaded.</p>'; OCICommit($iDBConn); // successful in updating } else { $message .= '<p><font color="red" size="+1">Sorry, report could not ' . 'be uploaded. Check the file size!</font></p>'; $success = false; }} else { // else of if file for proper extension $message .= '<p><font color="red" size="+1">Sorry, report not in PDF ' . 'format!</font></p>'; $success = false;} // end of else if file for proper extension

The code presented so far in this section is executed within submit conditional clause and is executed if the page form is submitted. The code below shows a form to be used to select a file and submit it from within a browser. The enctype() function encrypts a string and add a salt parameter to help randomized the encryption process. The encrypted string created here can not be decrypted.

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="form1"><!input type="hidden" name="MAX_FILE_SIZE" value="2097152"> <br><h2> Select due date for the report</h2> Non-tenure faculty due month is October and Tenured faculty due month is February.<br> <select name="month" id="month"> <?php foreach ($months as $key => $value) echo "<option value =\"$key\">$value</option>\n"; ?> </select> <select name="day" id="day"> <option value="15" selected>15</option> </select> <select name="year" id="year"> <?php foreach ($years as $key => $value)

echo "<option value =\"$value\">$value</option>\n"; ?> </select></p><h2>Browse for the Faculty Information Sheet </h2><p>Faculty Information Sheet upload must be in <strong> PDF format only</strong>.</p><p> <input type="file" name="fisUpload"></p><p> <input name="btnSubmit" type="submit" id="btnSubmit" value="Submit">

49

Page 50: Ms Project Cs Report Final

<input name="btnClear" type="reset" id="btnClear" value="Clear"></p></form>

50

Page 51: Ms Project Cs Report Final

Designing report pages with Flexireport

Flexi-Report ClassesThese classes are used to format and create the finalized report. It utilizes Cascading Style Sheets (CSS) for formatting the report. These classes were created by Dr. Grant Paton-Simpson the Director of Paton-Simpson & Associates Ltd based in Auckland, New Zealand. These libraries were developed to work with a MySQL database but have here been modified only the necessary files to work with an oracle database. So it is possible to see some codes that are related to MySQL and that are never used here. The classes are capable of doing more neat stuff than had been used. The classes support nested report levels, sub-reports, and totals. The report is configurable to allow formatting of individual fields: uppercase, percent, currency, decimal, date. Other optional features include hyperlinks inside cells, non-display of duplicate values, conditional formatting, and shared column titles.

There are several library files and one CSS file that are used. The required classes are Flexireport_Report, Flexireport_Level, Flexireport_Field, Flexireport_Value (not directly used but holds the code for formatting both Field and Total classes), Flexireport_Total (optional – required if adding totals) and Dbutility_Db. The detail of each class will be examined latter but first let us explore the concepts behind the classes.

Key conceptsThe key concepts are the Report, Level, Field, Sublevel, and Subreport. They hang together as follows:

A Report has Levels and optionally Subreports. A Report may also have a Header, which may contain an image such as a College of Business & Public Administration logo.

A Level is a set of rows of data for instance for faculty members in a Department.

A Level has Fields like faculty name, phone number etc, and optionally Subreports and Sublevels. So, for each department, there could be a subreport summarizing the department members’ grants in an academic year. At the faculty level, there can be a sublevel displaying grants conducted individually by faculty members in the department.

There can be multiple Subreports and Sublevels. For each faculty member there could be a Sublevel displaying their grants, followed by another Sublevel detailing their publications.

Fields are added to Levels using the addField() method and its argument is an instance of a field e.g.$lev_courses->addField(new Flexireport_Field('Term', 'semester', 80));

When a Level has a Sublevel, the Level functions like a grouping variable for the Sublevel. Each row in the Level is followed by the rows in the Sublevel which belongs to it. So if the Level was department and the Sublevel was faculty, we would have one row from department (e.g. Information Technology) followed by all the faculty members that belong to that department, another row from department (e.g. Accounting) followed by all the faculty members that belongs to that department, and so forth.

51

Page 52: Ms Project Cs Report Final

There are no arbitrary limits to nesting e.g. A Report could have 10 levels of nesting.

A simple Report would have a Header and one Level e.g.

Staff Report

Bob Smith (Level row 1)

Sue Clark (Level row 2) etc

For each row in a Level there may be a Sublevel e.g. in the following the level is department, and the Sublevel is faculty:

Staff by Department Report

Information Technology (Level row 1)

Bob Smith (Sublevel row 1)

Sue Clark (Sublevel row 2)

Accounting (Level row 2)

Mat Brown (Sublevel row 1)

Sharon Chang (Sublevel row 2) etc

Basically, Sublevels are filtered by the value of the Level(s) they are under – in this case the faculty members displayed in each Sublevel are filtered by the department they are under.

For the relationship between a Level and a Sublevel to work properly, both Level objects must contain the link fields in their source SQL and the parent Level must have the link fields added via its addFieldForGroupingSublevels() method.

52

Page 53: Ms Project Cs Report Final

Generalized overview of the report Flexireport uses the classes below to create reports, sub reports, fields, and Microsoft Access database connections. The table below summarizes the classes.

Flexireport classes

Class PurposeDbutility_Db To establish database connectionDbsettings Contains real connection strings that the above class

uses to connect to databaseFlexireport_Report Used to create the main report and optional Subreports Flexireport_Level Used to display set of row data on the report, these are

Levels added to report aboveFlexireport_Field extends Flexireport_Value

Used to display column of data on the report. A level above has Fields, so fields are added to Level

Flexireport_Value.php Used indirectly to format both Field and Total classesFlexireport_Total extends Flexireport_Value

Used to create accumulative/Grand totals if necessary

Flexireport_TotalLabel.php Used to show label along side the grand total created above

Flexireport_Misc.php Hold constants.

A report with no Subreport such as Faculty information sheet can be created by PHP as follows:

Report detailing faculty information with no subreport// Create a query for faculty information

$queryFacultyInfo = "SELECT F.prefix, F.firstName, F.lastName, " .

"F.facultyID, R.rank, D.department, F.picFileName, F.officeAddress, " .

"F.phoneNumber, F.email FROM tblFaculty F, tblDepartment D, tblRanks R ".

"WHERE F.oduID = '$oduID' AND F.departmentNumber = D.departmentNumber " .

"AND F.oduID = R.oduID AND rownum = 1 ORDER BY R.startDate DESC";

$resultFacultyInfo = @OCIParse($iDBConn, $queryFacultyInfo);

@OCIExecute($resultFacultyInfo, OCI_DEFAULT); // Execute the query

$arrFacultyError = OCIError($resultFacultyInfo);

if ($arrFacultyError['code']) {

$message .= '<p><font color="red" size="+1">Sorry, faculty query could ' .

'not run!</font></p>';

53

Page 54: Ms Project Cs Report Final

$message .= '<p><font color="red" size="+1">' .

arrFacultyError['message'] . '</font></p>';

echo $message;

exit();

}

OCIFetchInto ($resultFacultyInfo, &$rowFacultyInfo,

OCI_ASSOC+OCI_RETURN_NULLS);

$name = $rowFacultyInfo['PREFIX'] . ' ' . $rowFacultyInfo['FIRSTNAME'] .

' '. $rowFacultyInfo['LASTNAME'];

$dept = $rowFacultyInfo['DEPARTMENT'];

$rank = $rowFacultyInfo['RANK'];

$facultyID = $rowFacultyInfo['FACULTYID'];

$picFileName = $rowFacultyInfo['PICFILENAME'];

$location = $rowFacultyInfo['OFFICEADDRESS'];

$phone = $rowFacultyInfo['PHONENUMBER'];

$email = $rowFacultyInfo['EMAIL'];

//Set up Report header for main report

$comments = "In order that each faculty member may receive full credit " .

"and reward for his or her contributions to the University, this " .

"Faculty Information Sheet is to be completed by the faculty member " .

"and submitted to his or her Department Chair person.";

//Set up Report header for main report

$main_rep = new Flexireport_Report(true, 'Faculty Information Sheet', $name,

$dept, '', '', $comments);

54

Page 55: Ms Project Cs Report Final

A report with a Subreport e.g. courses taught within the past two years can be created in PHP as follows.

Report detailing faculty information with a taught courses subreport1. $res_teaching_subrep = new Flexireport_Report(true, '<br>','I. TEACHING');

2. $res_teaching_subrep->showGenerationDate(false);

// Create the query

3. $SQL_select_courses = "SELECT TO_CHAR (lastUpdate, 'Month DD YYYY') AS " .

"lastUpdate, courseNumber, courseTitle, enronllment, " .

"DECODE(teachingMode,0,'Regular',1,'Teletechnet',2,'Virtual',3,'Web') " .

"teachingMode, DECODE(semester,0,'Fall',1,'Spring',2,'Summer') " .

"||' ' || year AS semester FROM tblCourses " .

"WHERE tblCourses.oduID = '$oduID' AND lastUpdate BETWEEN " .

"ADD_MONTHS('$dueDate', -24) AND '$dueDate' ";

// Set up Courses Level

4. $lev_courses = new Flexireport_Level('Courses Taught last four completed'.

'semesters plus summers', $SQL_select_courses, '', 'ORDER BY departmentNumber', 5);

5. $lev_courses->addField(new Flexireport_Field('Term', 'semester', 80));

6. $lev_courses->addField(new Flexireport_Field('Course Prefix',

'courseNumber'));

7. $lev_courses->addField(new Flexireport_Field('Course Title',

'courseTitle'));

8. $lev_courses->addField(new Flexireport_Field('Graded Enrollment',

'enronllment', 140));

9. $lev_courses->addField(new Flexireport_Field('Delivery Mode',

'teachingMode'));

10. $lev_courses->changeCSS('', '', 'tablehead');

11. $res_teaching_subrep->addLevel($lev_courses);

The numbers on each line code are for illustration puposes.

Line 1: create the report to be used as a Subreport. The first parameter is optional flag indicating if the report has header. The second parameter is also optional that show the report’s title that you want to display. Basically the report has eight parameters and all are optional.

Line 2: Disables the date when report was created not to show up on this Subreport.

Line 3: creates a query that will be used in the Level class.

Line 4: creates a Level that uses a query created in line 3. The first parameter is optional represent the title; second parameter is required which is the query generated in line 3; third

55

Page 56: Ms Project Cs Report Final

parameter is option which is WHERE clause that goes with query; fourth parameter is option which is ORDER BY clause of the query; fifth parameter is also optional and represents the indention of fields, six parameter is also optional and represents the width of each field and last parameter is also option that was never used on this report but represent database region if you are using more than one database.

Line 5 to 9: Creates fields and adds them to the course level. The first parameter in the fiend constructor is a field label; the second parameter is the field name as it exists in the database; third parameter is optional and represents the length of field or size this field is to occupy.

Line 10: Apply Cascading Style Sheet to the level created but all its parameters are optional. The first parameter is a title CSS class, the second parameter a level field class and third label class.

Line 11: is for adding the level object to the report or subreport created on line 1.

Below are the detail explanations for each class.

dbsettings.phpThis is the simplest file that contains only the connection strings to the database. It has the user name, password and host machine. This file is used by Dbutility_Db.php.

Dbutility_Db.phpThis contains the Dbutility_Db class is needed to create database connection. The Dbutility_Db class has been modified to support an oracle database. It is used by the Flexireport_Level class.

If MySQL database is ever used, the version must be above 4.1 in order to allow sub-queries to run. Sub-queries are used to allow lower levels to have filters such as WHERE clauses added to them from the level(s) above.

The class contains a constructor to create a database connection and methods to access an existing connection, return database results, count number of fields, run a query, etc as indicated in the table below.

Dbutility_Db class

Constructor/Method ExplanationPublic function __construct ($dbsettings='', $host = '', $user = '', $password = '', $database = '')

Create database connection with an Oracle or MySQL database. If instantiate without arguments, it rely instead on file $dbsettings

Static public function getDb() Access existing connection or create one if it does not exist

Public function getResult($SQL) Prepares and returns the query that is executed. Any syntax errors are detected here

Public function gotRows($SQL) Check to see if query returns any rows of data

56

Page 57: Ms Project Cs Report Final

Public function countResult ($result) Returns the number of rows. Check to make sure the query results are error free

Public function getValue ($SQL, $field_name)

Returns value in named field in the query after converting the field name in uppercase as understood by oracle

Public function getRow ($SQL) Returns row after stripping slashes in the data Public function getFieldCount($result) Returns current field in the query resultPublic function runQuery ($SQL) Runs the query and check problems.

Flexireport_Report.phpFlexible PHP reporting class with nested levels, subreports, totals, CSS-formatting and much more. What is required is to instantiate the Report object, add the fields one by one to each Level object (often only requiring the label and field name of each), add the Level to the Report, and display the Report. Flexireport_report is the glue for the entire report.

The class contains a constructor to setup report information such as header and methods to setup personal information, set personal photos, sets due dates, add level, add subreport, set report generation date, display the report etc as indicated in the table below.

Flexireport_Report class

Constructor/methods Explanationpublic function __construct(

$has_header = false,$header_title='', $header_subtitle_1 ='', $header_subtitle_2 = '', $header_date_start = '', $header_date_end = '', $header_desc = '',$page_break_before=false, $indiv_rep_db=null)

Mainly to set up the text elements of the report header

public function setPersonalInfo($personal = false, $off = '', $ph = '', $rk = '', $e = '')

Sets personal information to be displayed at the top of the report but below the header

public function setPersonalPictureInfo($hasPic = false, $fn = '', $fl = '')

Sets personal picture information for a photo in the report

public function setDueDate($hasDueDate = false, $dueDate)

Sets due date information to be displayed at the top of the report

public function addLevel(flexireport_Level $level) Add level to reportpublic function addSubreport(flexireport_Report $report)

Add subreport to report

public function showGenerationDate($set_has_date) Set permission to display the report generation date

public function display (dbutility_Db $db, $layer=1)

Generates and displays PHP finished for report

57

Page 58: Ms Project Cs Report Final

public function changeCSS($header_table_css='', $header_image_cell_css='', $header_image_css='',$header_text_cell_css='', $header_title_css='',$header_subtitle1_css='', $header_subtitle2_css='',$header_date_range_css='', $header_datestamp_css='',$header_desc_css='')

Override default CSS for report

private function displayHeader() Display header for report

Flexireport_Level.phpThis is the most used class of all classes. Levels are responsible for setting up layout of data rows on the report. The constructor can take a query as parameter, WHERE clause as another separate argument and ORDER BY as also separate argument. This is good idea if you have nested complex queries that can be used in more than one report level that has sub-reports. This is used a lot in the report when writing publications since we had to separate them by 'published date', 'accepted date' and 'submitted date'. On the other hand, it is possible to write a query with all necessary information and pass it as one argument as did with teaching courses in the report.

There should be a link of one or more fields between a level and its sublevel. For example, considering staff per department, there will probably be a field in common such as department ID. To filter the inner, or child level, by the outer, or parent level, the same field needs to be supplied by the SQL for both levels.

The underlying code creates WHERE clauses in which a child has both its own criteria and any inherited from its parent. These take the form of `field_name` = 'value' filters. These work in MySQL with numbers as well, in spite of the single quotes. If it is desired that the single quote marks are left off (e.g. `field_name = value) the link field must have $numeric=true when adding it via the addFieldForGroupingSublevels() method.

The class contains a constructor to setup basic report level with some default parameters and methods to add grouping level , access or change CSS, add fields to the level, add sublevel to level, add subreport to level etc as indicated in the table below.

Flexireport_Level classConstructor/Methods Explanation

public function __construct ($title,$SQL_select,$SQL_where='',$SQL_order='',$indent=0, $page_break_before=false,$lev_field_width='', $indiv_lev_db=null)

Basic setup for report level and the query that will be used on the report

Public function addFieldForGroupingSublevels($field_name, $numeric=false)

Add field for grouping sublevels. Can add more than one field

Public function changeCSS($title_class = '',$lev_field_class = '',$lev_label_class = '',$lev_tot_class='',$lev_upper_label_class = '',$title_table_class='',$lev_table_class = '')

Override default CSS for level

public function addField (Flexireport_Field Add field to level and must be an object

58

Page 59: Ms Project Cs Report Final

$field) of class Flexireport_Levelpublic function addSublevel( Flexireport_Level $sublevel)

Add sublevel to level and must be an object of class Flexireport_Level

public function addSubreport (Flexireport_Report $report)

Add subreport to level and must be an object of class Flexireport_Report

public function set_multiple_cols($mult_cols = true)

add multiple columns on single line

public function set_editabe_writeup($set_is_editable_writeup_level = false)

To allow text area to be displayed in report

public function set_editable_writeup_instructions($instructions)

Set up instruction that are listed in the report level especially above text area

public function display (Dbutility_Db $db, $layer, $grouping_criteria = array())

Display level row of data formatted here. There are many methods called from this function. Display data in columns with heading column names

public function displayInOneColRows (Dbutility_Db $db, $layer, $grouping_criteria = array())

Display level in One column rows of data without column headings

private function fieldInIndivSQLData(Dbutility_Db $db, $field_SQL_filtered, Flexireport_Field $field)

Check field is in the data produced by the individual SQL for that field

private function allFieldsInLevelData($result)

Check all fields added using addField() in the main source data

private function sublevelGroupingFieldsInLevelData($result)

Check that all fields set to group sublevels are present in the data for this Level

private function inheritedGroupingFieldsInLevelData($result)

Check that all grouping fields inherited from parents

private function applyDefaultCSS($layer, $group_level)

Apply default CSS for any level CSS settings not set

private function intersperse (Dbutility_Db $db, $layer, $grouping_criteria)

Display each item data field

private function prepareFilterForSublevels(Dbutility_Db $db, $row, $result)

Add values for any fields grouping sublevels into filter ready to pass on to sublevels and Checks that the fields being used to group sublevels are present in the row

private function makeFieldSQL(Flexireport_Field $field)

If there is field-level SQL, use this in combination with any inherited criteria.but doesn't use level SQL as field-level to overrides this

private function processConditional($row, Flexireport_Field $field)

A conditional class is used if a condition is met. If it is, use field_conditional classinstead of standard field class

private function insertLevTitle() Insert level title if neededprivate function makeLevSQL() Set up WHERE clause using both parent-

derived criteria and level-specific criteriaprivate function addHeaderLabels () Produces a header style label for a final

59

Page 60: Ms Project Cs Report Final

levelprivate function addTotal(Dbutility_Db $db) Generate HTML for total if required and

indicate whether there was a total row or not

private function addToFilter ($full_criteria, $new_criteria)

Add new filter criteria to any existing criteria and Strips WHERE off front

private function makeCondition ($condition, $row, $fields)

Replace bracketed text with data from field in row with the same nameNumeric data does not need to be unquoted as long as double equal(==) is used instead of triple equal (===)

private function classHtml ($field_class, $lev_class, $both = false)

Either uses level class only, both level and field classes combined, or field class only depending on inputs

private function setWidth ($field_width, $level_field_width)

Sets width of field or attributes

60

Page 61: Ms Project Cs Report Final

Flexireport_Field.phpAs the name suggests, it adds individual attributes to the level report. Some of its major methods are displayed in table below:

Flexireport_Field classConstructor/methods Explanation

public function __construct($label, $name, $width='', $hide_dups=false, $field_class='')

Provide most basic field configuration and basic set up of field that are often all needed

public function __get($property_name) To access a property, it is pre-append with underscore ('_') to it since there is no such property, this triggers __get which strips the _ off and returns the property

public function addTotal(Flexireport_Total $total)

Configure total field to appear beneath value field. Requires Flexireport_Total object

public function addTotalLabel(Flexireport_TotalLabel $total_label)

Configure total label to appear beneath value field. If a total field is also configured the field will take precedence

public function changeCSS($field_class='',$label_class='',$inherit_lev_field_class=true, $inherit_lev_label_class=true)

Override or extend level CSS settings by defining formatting for field, label, and total and whether level CSS classes are applied as well

public function addConditionalCSS($condition = '', $cond_class = '')

Define CSS to apply if condition met Overrides field CSS class - whether or not level CSS class applies also depends on settings in changeCSS()

public function addUpperLabel($upper_label = '', $colspan = 0, $upper_label_class = '', $inherit_lev_label_class=false)

Set up upper label often spanning multiple columns

public function addIndivSQL($SQL_select = '', $SQL_where = '')

Set up separate source for this field that is rarely needed and used

public function addLink($text_start = '', $text_end = '', $title_start = '', $title_end = '', $href_start = '', $href_end = '', $external=true, $suppress_field_content = false)

Set up field as link and can supply link HTML via SQL if more flexibility required

public function addMarker($tag_namespace='')

Add marker tag to start of label so it can be jumped to when needed and must be unique per page but not always appropriate to use

Flexireport_Value.phpThis class is not directly used but holds the code for formatting both the Field class and the Total class. These two classes do inherent from the value class. All this class does is to format data the way you want it appear on the report as you will see below:

Flexireport_Value class

61

Page 62: Ms Project Cs Report Final

Method Purposepublic function formatUppercase Format value field or total as uppercasepublic function formatNumeric($decimal_pts) Format value field or total as numericpublic function formatPerc($decimal_pts Format value field or total as percentagepublic function formatCurrency($symbol='$', $decimal_pts=0)

Format value field or total as currency

public function formatDate($php_date_format)

Format value field as date but must be customized to meet US date format

public function applyFormat ($value) Apply format to field contents and return formatted value

Flexireport_Total.phpThis class sets up total field that sits below the value field for which it is totaling. The class has one constructor. It has one function _Get() that left trim the underscore (_) on the given property which it returns.

Flexireport_TotalLabel.phpThis class is used to set the label that can appear either below or on the side of the total value. The class has one constructor with three parameters such as a string for label, a class which is Flexireport_Misc, and Boolean field. It has one function _Get() that left trim the underscore (_) on the given property which it returns.

Flexireport_Misc.phpThis class’s purpose is to define all the constants used. It defines constants such the text to be formatted to appear right, whether to appear in red color etc. It does not contain any method or even constructor.

Flexireport.cssThis file contains all the Cascading Style Sheet used to format the finalized report. The styles that are not used are commented out with the pound sign (#). Each used style start with period (.) All the styles are self explanatory.

62

Page 63: Ms Project Cs Report Final

Conclusions

A PHP, Oracle and Web based Faculty Management System was designed and built for the College of Business and Public Administration. This system manages teaching, research, and Service components of all faculty in this college. Further, this system can create and upload the faculty information sheet used for their annual evaluation by the chairs and dean. This Faculty Management System is currently in production.

63

Page 64: Ms Project Cs Report Final

References

[PM] Larry Ullman, PHP and MySqL for Dynamic Web Sites, Published by Visual QuickPro Guide, 2003.

[DBSO] Shah, Nileshi, Database System using Oracle: A Simplified Guide to SQL & PL/SQL, Published by Prentice Hall, 2002.

[PHPWEB] PHP: Hypertext Preprocessor, http://www.php.net/

[PHPCLS] PHP Classes, http://www.phpclasses.org/[Apache] Apache Software Foundation, http://www.apache.org

[DM] Digital Measures http://www.digitalmeasures.com

[SS] Sedona systems www.sedona.bz

64

Page 65: Ms Project Cs Report Final

Vita

Mwamini Naggayi UIN: 00506588

Email: [email protected] or [email protected]:

To obtain a challenging, growth-oriented Analyst/Programmer position, particularly in the areas of data mining, database Web and JAVA development, within a progressive organization

EducationM.S., Computer Information System, January 2004 - Current GPA 3.44/4.0

Old Dominion University, Norfolk, VA B.S., Computer Information Systems, October 2000 - GPA 3.76/4.0

DeVry University, Decatur, GA Associate Degree, Accounting, June 1996 - Award Certificate of Outstanding Performance

I.W.Akerlay campus, Dartmouth, NS, Canada

Technical Skills

Database Design Programming Languages

Web Development Environment

PL/SQL, RDBMS Sequel server/Clear Case Crystal Reports Access 97/00/XP Oracle 8i/9i/10g MYSQL ODBC/JDBC SAS for Data mining /

Analysis

C/ C++ COBOL Visual Basic 5.0/6.0 Java, Servlet, Java

Beans, XML Visual Studio.NET Visual Studio MS Source Safe, PVCS .NET

Front page HTML, CSS,

XHTML ASP, CGI, PERL JavaScript, VB Script ASP, ASP.NET Dream weaver PHP

Unix Window 9.x 00, NT IIS (install/config) Apache (install/config)

EXPERIENCE

Elizabeth City State University - Laboratory Technician09/02 – Present / Elizabeth City, NC Teach Introduction to Computing course using Microsoft Office suite 2003, which includes Word, Excel,

Access and PowerPoint Maintain computer science labs to make sure each computer is working properly Tutoring students in Java, C++ and database Setup exam to test student proficiency in Microsoft Office 2003 package Helps students with any problem arising from using computers

Mitsubishi Wireless Communication Inc. - Software Engineer07/00 - 07/02 / Duluth, GA Redesigned and Maintained Problem Tracking Application. This was the major Database Application that stores

all other applications and widely used in the USA, Japan and France. Customers' worldwide may submit cellular phone related problem direct into the application. Problem submitted automatically emailed to appropriate personnel

Worked as a part of a team to conceive, design and automate Mitsubishi’s Cellular Phone Tracking Application in Access97, which was used primarily to store cellular phone information (vendor, model, revision history,

65

Page 66: Ms Project Cs Report Final

author, location). Analyzed data and developed prototype Created User Interfaces using Visual basic 6.00 or Borland 5.00 C++ Analyzed visual C++ documentation and developed different kinds of PC Tools simulators for cellular

phones Worked as part of team to design and develop Revision History Tracking Application in Access 97. Developed user friendly access reports that can be used to track different stages of Problem Tracking

Application Developed detailed documentation for all the applications Developed user-friendly manual including Graphics showing each screen user will see when using

application. Developed Table relationships, enforced referential integrity and secure database in multi user environment Had extensive use of DLL, LIB and Bit wise manipulation Focused on overall development lifecycle, and had to use of PVCS, MS Visual Source Safe for back up

applications Have been exposed to Clear Case/ Rational ClearQuest Extensive use of graphics creation using Photo shop pro and paint shop

Additional Skills

Excellent Technical writing skills in application documentation Can communicate effectively with both technical and non technical user Strong exposure data warehousing and mining skills Can work effectively in teams Can also work alone under minimal supervision Moderate exposure to SAS Analysis Self motivated, hard working and can go extra mile to get job done Working knowledge of Clear Case and Rational Clear Quest Designed small company payroll system using COBOL Developed different kinds of reports on the internship using Crystal report writer, Access and Visual

Basic

66