• No results found

Courier Management System Project Report

N/A
N/A
Protected

Academic year: 2021

Share "Courier Management System Project Report"

Copied!
180
0
0

Loading.... (view fulltext now)

Full text

(1)
(2)

Introduction to Purpose System (Courier Management System)

This Courier Management System Project will have different modules. The login section will have login facility for the admin and for the user who will operate this system. While taking orders from its customers, it will take all the details of its customers who is placing the orders and all the details for the recipient such as its address, name, mobile number. During billing process system will generate a tracking id for their products. Through this tracking id, customers or its recipient will able to track their products from any location using internet. It will provide status of the product after placing orders within 1 minute.

This Courier Management System Project will provide information recipient with following details:- where the current consignment is, till when it will reached its final destination, if any delay then reason of the delay, the route of current consignment, date of placing consignment, final date to reach its destination.

When the consignment will visit to the city office of destination, a message will be send to the recipient with delivery status confirmation. Then after getting this message its recipient can take its parcels by using their Track Id. When its recipient will receive their parcels, then this Track Id will be deleted automatically from the system database after 1 week by sending final confirmation message to its recipient mobile number which will include information of Track Id, date of receiving and time along with greeting message for providing further service in future. In modern age, as time increase, needs & requirements of the person are also increased. They want more facility & try to do their task quickly & within time. But they can not get all the things at nearest market or area, so they have to import the things from any place in the world. Within the country, the things can be imported through post service. But it consumes the time & sometimes problem of damage or missing occur. Where as in the international market, the one way is shipping. But it also requires more time.

(3)

The courier service is one of the solutions of these problems. It is used to send some things to any person in the world within time.

The courier company has number of branches, which are spread over the country or the world. So that when person wants to send things then he has to contact at nearest courier service branch. The courier company creates the schedule & gives internal/external services. The courier service work as destination office or source office. The source office branch receives the order means consignments & sends it to the destination courier branch. The company has certain rules according to the weight.

Using the courier service person can easily send his/her parcel to other person in the particular destination within the time. Now days, 50% of companies of the world uses the services of various courier company.

(4)

Problem Definition:

People when transfer their products using any courier service wants to know whether their product has been shifted to their right place or not, if not then by what time it will be shifted and where it is now. Taking all this information manually is very difficult and time taking process. To handle all these activities include various processes and paper work from the management side also.

Motivation behind this project:

To gain maximum business region, customer demands good service. So to make more profit and gain maximum business region, their administration must also have a system to tackle all these problems on time. Its administration can take immediate orders and provide a receipt which will include all the details of the products along with appropriate price to their customers. Thus saving time and eliminating line making process.

(5)

Features of Purposed System:

These are the important features of the project Courier Management System:

 In computer system of the courier service computation of the rate is easily & quickly done.

 Computer system of the courier service provide fast access.

 If our documents or any consignment is missed then we can know it easily using the databases in the computer system of courier services.

 Using this computerized system, bill issued procedure becomes fast.

 In computer system the person has to fill the various forms & number of copies of the forms can be easily generated at a time.

 In computer system, it is not necessary to create the Manifest but we can directly print it, which saves our time.

 It contain better storage capacity.  Accuracy in work.

 Easy & fast retrieval of information.  Well designed reports.

 Decrease the load of the person involve in existing manual system.  Access of any information individually.

 Work becomes very speedy.  Easy to update information.

(6)

Working of Existing System:

This system will have different modules. The login section will have login facility for the admin and for the user who will operate this system. While taking orders from its customers, it will take all the details of its customers who is placing the orders and all the details for the recipient such as its address, name, mobile number. During billing process system will generate a tracking id for their products. Through this tracking id, customers or its recipient will able to track their products from any location using internet. It will provide status of the product after placing orders within 1 minute. This system will provide information recipient with following details:-where the current consignment is, till when it will reached its final destination, if any delay then reason of the delay, the route of current consignment, date of placing consignment, final date to reach its destination.

When the consignment will visit to the city office of destination, a message will be sended to the recipient with delivery status confirmation. Then after getting this message its recipient can take its parcels by using their Track Id. When its recipient will receive their parcels, then this Track Id will be deleted automatically from the system database after 1 week by sending final confirmation message to its recipient mobile number which will include information of Track Id, date of receiving and time along with greeting message for providing further service in future.

(7)

Feasibility Study:

After doing the system study and analyzing all the existing or required functionalities of the system, the next task is to do the feasibility study for the project. All projects are feasible - given unlimited resources and infinite time.

Feasibility study includes consideration of all the possible ways to provide a solution to the given problem. The proposed solution should satisfy all the user requirements and should be flexible enough so that future changes can be easily done based on the future upcoming requirements.

A. Economical Feasibility

This is a very important aspect to be considered while developing a project. We decided the technology based on minimum possible cost factor.

All hardware and software cost has to be borne by the organization.

Overall we have estimated that the benefits the organization is going to receive from the proposed system will surely overcome the initial costs and the later on running cost for system.

B. Technical Feasibility

This included the study of function, performance and constraints that may affect the ability to achieve an acceptable system. For this feasibility study, we studied complete functionality to be provided in the system, as described in the System Requirement Specification (SRS), and checked if everything was possible using Visual Basic 6.0 and MS Access.

C. Operational Feasibility

No doubt the proposed system is fully GUI based that is very user friendly and all inputs to be taken all self-explanatory even to a layman. Besides, a proper training has been conducted to let know the essence of the system to the users so that they feel comfortable with new system. As far our study is concerned the clients are comfortable and happy as the system has cut down their loads and doing.

(8)

System Requirements: Software Requirement:

 Apache Server 2.0

 PHP Version 5.3 or above  MySQL Version 5.5 or above

 Latest browser : Chorme, Firefox, Safari etc

 Operating System : Any (Linux, Windows, Mac etc)

Hardware Requirements:

 Processor Pentium IV or higher version.  Ram 128 MB or above

(9)
(10)
(11)
(12)
(13)
(14)
(15)

Project Category:

Relational Database Management System (RDBMS) : This is an RDBMS based project which is currently using MySQL for all the transaction statements. MySQL is an opensource RDBMS System.

Brief Introduction about RDBSM :

A relational database management system (RDBMS) is a database management system (DBMS) that is based on the relational model as invented by E. F. Codd, of IBM's San Jose Research Laboratory. Many popular databases currently in use are based on the relational database model.

RDBMSs have become a predominant choice for the storage of information in new databases used for financial records, manufacturing and logistical information, personnel data, and much more since the 1980s. Relational databases have often replaced legacy hierarchical databases and network databases because they are easier to understand and use. However, relational databases have been challenged by object databases, which were introduced in an attempt to address the object-relational impedance mismatch in object-relational database, and XML databases.

(16)

RDBMS Architecture Diagram

Tools/Platform, Hardware and Software Requirement specifications:

For setting this ecommerce portal, it requires certain technical requirements to be met for the store to operate properly. First, a web server must be created to make the ecommerce store publicly available on the web. Domain names and hosting services can easily be purchased for an affordable price. When selecting a hosting service, you should check to see that these server requirements are provided and installed on their web servers:

(17)

Software Details for running E-Commerce Portal

 Web Server (preferably Apache)

 PHP (at least 5.2)

 MySQL

 Curl

Required PHP libraries / modules

 Curl  ZIP  Zlib  GD Library  Mcrypt  Mbstrings

The above PHP extensions should be available by almost all hosting providers, during the install processa it will check you have them all enabled. You should contact your hosting provider if one is missing.

(18)

Implementation methodology:

Model View Controller or MVC as it is popularly called, is a software design pattern for developing web applications. A Model View Controller pattern is made up of the following three parts:

Model - The lowest level of the pattern which is responsible for maintaining

data.

View - This is responsible for displaying all or a portion of the data to the

user.

Controller - Software Code that controls the interactions between the Model

and View.

MVC is popular as it isolates the application logic from the user interface layer and supports separation of concerns. Here the Controller receives all requests for the application and then works with the Model to prepare any data needed by the View. The View then uses the data prepared by the Controller to generate a final

presentable response. The MVC abstraction can be graphically represented as follows.

(19)

SYSTEM ANALYSIS

The analysis model is a concise, precise abstraction of what the desired system must do, and not how it will be done after the study of the existing system is completed. This basically includes system study and the requirement analysis. Interacting with the clients regarding their requirements and expectations from the system does requirement analysis.

The steps, which are essential for system analysis, are:

1. Research and define essential components. 2. Analyze current processes and identify gaps.

3. Interview users, Trainee, Trainers and other concerned personnel regarding essential components and current processes.

4. Write requirements document.

5. Define standards for standards, policies, and procedures. 6. Review draft requirements document with users, Trainee, Trainers and other concerned personnel.

(20)

IDENTIFICATION OF NEED

Online Library Management Systems described above can lead to error free, secure reliable and fast management system for library .

It can assist the staff to concentrate on their related(for library) activities rather to concentrate on the records and reports of issuing books, registration and suppliers. This will help organization in better utilization of human resources.

In this phase, the user identifies the need for a new or improved system. In large organizations this identification may be part of a systems planning process.

(21)

PRELIMINARY INVESTIGATION

Benefit to Organization

The organization will obviously be able to gain benefits such as savings in operating cost, reduction in paperwork, better utilization of human resources and more presentable image increasing goodwill. The other benefits are improved service and faster and better access to up-to-date information.

The Initial Cost

The initial cost of setting up the system will include the cost of hardware (server/clients, network adapter and related hardware), software (server OS, add-on software, utilities) & labor (setup & maintenance). The same has to bear by the organization.

Running Cost

Besides, the initial cost the long term cost will include the running cost for the system including the AMC, book charges, cost for human resources, cost for update/renewal of various related software.

(22)

The users along with the administrator need to be trained at the time of implementation of the system for smooth running of the system. The client will provide the training site.

Depending upon this definition, we analyzed the present

Library Management System, during the analysis process; we had to go through the entire manual system that was being followed in the Organization for past few years.

We talked to the management people who were managing a the financial issues of the center, staff who were keeping the records in lots of registers and the reporting manager regarding their existing system, their requirements and their expectations from the new proposed system. Then, we did the system study of the entire system based on their requirements and the additional features they wanted to incorporate in this system. The manual system was very complex to be managed and

searching or updating the information was also very difficult. There was a lengthy procedure for entering the details of

books, members, visitors, and then making their timings and Bills.

(23)

The other problem with the manual system was of report generation. The reports to be generated on a daily/weekly/monthly basis required lot of paper work and calculations etc. Thus, Reporting Manager had to manually calculate all the consultation fees of every player at the end of every day/week/month. Even a small calculation mistake was leading to reanalysis and recreation of whole work.

(24)

FEASIBILITY STUDY

At this stage, the analyst estimates the urgency of the project and estimates the development cost.

In feasibility analysis, we have to study the following:

1) Technical Feasibility:

Technical feasibility is concerned with the availability of hardware and software required for the development of the system, to see compatibility and maturity of the technology proposed to be used and to see the availability of the required technical manpower to develop the system.

After the study we came to conclusion that we proceed further with the tools and development environment chosen by us. This was important in our case as we were working on two various phases of the department that will need to be integrated in future to make an extended system.

2) Operational Feasibility:

Operational feasibility is all about problems that may arise during operations. There are two aspects related with this issue:

(25)

 What is the probability that the solution developed may not be put to use or may not work?

 What is the inclination of the management and end users towards the solution? Though, there is very least possibility of management being averse to the solution, there is a significant probability that the end users may not be interested in using the solution due to lack of training, insight etc.

3) Economic Feasibility:

It is the measure of cost effectiveness of the project. The economic feasibility is nothing but judging whether the possible benefit of solving the problems is worthwhile of not. At the feasibility study level, it is impossible to estimate the cost because member’s requirements and alternative solutions have not been identified at this stage. However, when the specific requirements and solutions have been identified, the analyst weighs the cost and benefits of all solutions, this is called “cost benefit analysis.

(26)

PROJECT PLANNING

Software project plan can be viewed as the following:

1) Within the organisation: How the project is to be implemented? What are various constraints (time, cost, staff)? What is market strategy?

2) With respect to the customer: Weekly or timely meetings with the customer with presentation on status reports. Customers feedback is also taken and further modification and developments are done. Project milestones and deliverables are also presented to the customer.

For a successful software project, the following steps can be followed:

 Select a project

o Identifying project’s aims and objectives

o Understanding requirements and specification o Methods of analysis, design and implementation o Testing techniques

(27)

 Project milestones and deliverables

 Budget allocation

o Exceeding limits within control

 Project Estimates o Cost o Time o Size of code o Duration  Resource Allocation o Hardware o Software

o Previous relevant project information o Digital Library

 Risk Management o Risk avoidance o Risk detection

(28)

PROJECT SCHEDULING

An elementary Gantt chart or Timeline chart for the development plan is given below. The plan explains the tasks versus the time (in weeks) they will take to complete.

January February March Requirement Gathering Analysis Design Coding Testing Implement W 1 W 2 W 3 W 4 W 1 W 2 W 3 W 4 W 1 W 2 W 3 W4

(29)

SOFTWARE

REQUIREMENT

SPECIFICATION

The Software Requirements Specification is produced at the culmination of the analysis task. The function and performance allocated to software as part of system engineering are refined by establishing a complete information description, a detailed functional and behavioral description, an indication of performance requirements and design constraints, appropriate validation criteria, and other data pertinent to requirements.

1. Introduction

1.1. Purpose – The main purpose, to make this software is to over come of problems of data base handling, maintain registers of members, books, and information about worker which are works at Library etc.

1.2. Intended Audience – This SRS is meant for basically my final semester project report of MCA. Besides, it is obviously targeted for the managers of mentioned center, the client, to get and overall description and advantage of the proposed system over the existing manual system.

1.3. Product Vision and Scope – The proposed system is being developed keeping in mind the requirements/need of the client to automate its existing system for record keeping, report

(30)

generation and management level information system. Keeping in mind the needs, the system has been developed as per guidelines laid by the client’s center. The system is capable enough to handle library records, book’s records, member’s records, visitors records, report generation, and storing other related information.

2. Overall Description

2.1 Product Perspectives:

The proposed system falls under RDBMS (Relational Data Base Management System) category. I have adopted PHP as front end for the software and MYSQL as back end.

PHP is at present one of the most popular development platform for web based system that is efficient for web programming.

MYSQL is at present the most reliable and secure RDBMS tool. MYSQL Server works to efficiently manage its resource, a database of information, among the multiple clients requesting and sending data in the network. MYSQL has many important features that make it not only an exceptional database management system but also an excellent database server choice for client/server database computing.

(31)

So the overall system will prove to reliable, secure and efficient for the organization.

2.2 Product Functions

Functionalities:

2.2.1 Any person can query for books availability according to specified conditions.

2.2.3A Person can book/cancel the book only after he logs in.

2.2.42.2.4 A user can sign up for a profile if he doesn’t have one already.

2.2.5On logging in, the user has options to 1. Book issued .

2. Edit Profile information

3. Cancellation of his booked issued. 4. View all current books booked by him. 5. Logout

2.2.6A person can get all information regarding a library if he keys in it.

(32)

 A person can get all information about a books if he keys in the book id.

 A person can get the availability of all books for the next 20 days.

 Official members are suppose to do that work which distributed by the administrator

 Administrator or assigned official members can add/modify/delete library information.

 Administrator or assigned official members can add/modify/delete seat type according their availability and generate report.

 Administrator or assigned official members can add/modify/delete library information.

 Administrator or assigned official members can define and manage charges information.

 Administrator or assigned official members can define scheme and modify time to time and generate report.

 Administrator can add/modify/delete official member and generate report.

(33)

 Administrator can add/modify/delete user information and generate report.

2.3. Operating Environment – The proposed software is to

run on client/server model network.

A client/server can deliver the better performance than the file server system because a client application and database server work together to split processing load of applications (thus the term distributed processing). The server manages the database among the number of clients, while the client send, request, and analyze the data entry form with small specific data set, such as rows in a table not file as in the file server system. A database server is intelligent enough so that it lock and return only the rows a client request, which ensure concurrency, minimize the network traffic and increase the system performance.

2.4.

Assumptions and Dependencies –

While cost

estimation of the proposed system it has been assumed that the cost hardware and for license of Operating System and back end will be met by client (the organization). Hence only the cost incurred for the proposed software is included therein.

(34)

The followings are identified as some of the potential risk factors or dependencies:

(1) Non-availability of required resources. (2) Power cuts.

(3) Slippage of schedule due to unpredictable holidays, etc.

2.5 Life Cycle Model – I am using SDLC model that begin at

system level and progresses through analysis, design, coding, testing, implementation and maintenance.

3. External Interface Requirements

3.1 User Interfaces – It has been required that every form’s interface should be user friendly and simple to use. Besides, there should be facility of accessing the system through keyboard along with the mouse i.e. keyboard shortcuts. 3.2 Software Interfaces – It has been required that there could

be a necessity of using the stored data for some kind of report that is not supported by proposed system at present. So the proposed system is required to export its data as text file so that some other application software can import the data.

4. System Future Requirement – Other than descriptions

(35)

client:

(1) The system should be secured enough to rely upon.

(2) Users should not be allowed to delete/modify any records.

(3) Users should not be allowed to take financial reports.

(4) Every users report should keep the tracks of user inputting the record.

(5) System should provide facility of exporting its data in text format.

(6) System should be able to integrate with its Phase II developments.

5. Other Nonfunctional Requirements

a. Performance Requirements – As it is going to be used by all the concerned employees within the organization, the system should have a good performance in terms of speed and accuracy. The proposed system should be accurate and fast enough to handle huge data. It should provide fast communication between server and clients.

(36)

b. Safety Requirements – As the system is going to handle records for a long run eliminating the manual system, it is supposed to ensure the retaining of data avoiding or eliminating any probable cause for data loss.

c. Security Requirements – The software should not allow unauthorized access to any module of the system. Besides, it should maintain the privileges granted to users at various user levels.

d. Software Quality Attributes – The prioritization of the software quality attributes are assumed as under:

(1) Accurate and hence reliable. (2) Secured.

(3) Fast speed. (4) Compatibility. (5) Portability.

(37)

System Design

In this phase, a logical system is built which fulfils the given requirements. Design phase of software development deals with transforming the customer’s requirements into a logically working system. Normally, design is performed in the following in the following two steps:

1) Primary Design Phase: In this phase, the system is designed at block level. The blocks are created on the basis of analysis done in the problem identification phase. Different blocks are created for different functions emphasis is put on minimising the information flow between blocks. Thus, all activities which require more interaction are kept in one block.

2) Secondary Design Phase : In the secondary phase the detailed design of every block is performed.

The general tasks involved in the design process are the following:

I. Design various blocks for overall system processes.

II. Design smaller, compact and workable modules in each block.

(38)

III. Design various database structures.

IV. Specify details of programs to achieve desired functionality.

V. Design the form of inputs, and outputs of the system. VI. Perform documentation of the design.

VII. System reviews.

User Interface Design

User Interface Design is concerned with the dialogue between a user and the computer. It is concerned with everything from starting the system or logging into the system to the eventually presentation of desired inputs and outputs. The overall flow of screens and messages is called a dialogue.

The following steps are various guidelines for User Interface Design:

1) The system user should always be aware of what to do next. 2) The screen should be formatted so that various types of

information, instructions and messages always appear in the same general display area.

(39)

3) Message, instructions or information should be displayed long enough to allow the system user to read them.

4) Use display attributes sparingly.

5) Default values for fields and answers to be entered by the user should be specified.

6) A user should not be allowed to proceed without correcting an error.

7) The system user should never get an operating system message or fatal error.

(40)

TESTING

Testing is the process in which the system is run on manually created input so that the system is correctly working as desired or not.

During systems testing, the system is used experimentally to ensure that the software does not fail. In other words, we can say that it will run according to its specifications and in the way users expect. Special test data are input for processing, and the results examined.

A limited number of users may be allowed to use the system so that analyst can see whether they try to use it in unforeseen ways. It is desirable to discover any surprises before the organization implements the system and depends on it.

Testing of a system is generally done in two phases – One is Unit

Testing which is done for each module independently on its

completion and the other one is System Testing which is done at the end of a project.

(41)

VALIDATION CRITERIA

The validation criteria in this project are as follows...

In E-Commerce Portal System also, the user inputs are validated before storing them, and then further for displaying etc. The main validations that are done in E-Commerce Portal System are as follows –

All the screens have a similar look and feel. They all have the almost same color combinations in its background. This provides a better user interface to the users.

1) The primary key values cannot be duplicated.

2) All the entries in any combo box have been sorted in alphabetical order. This helps a user while selecting a value from the combo box.

IMPORTANCE OF TESTING

During systems testing, the system is used experimentally to ensure that the software does not fail. In other words, we can say that it will run according to its specifications and in the way users expect. Special test data are input for processing, and the results examined.

The importance of system testing is that the system is expected to run according to member’s requirement before delivering it to the customer.

(42)

The System is tested on the basis of specification so that it does not fail on user site.

(43)

Implementation and Testing

Implementation

Detailed Design of Implementation - This phase of the systems development life cycle refines hardware and software specifications, establishes programming plans, trains users and implements extensive testing procedures, to evaluate design and operating specifications and/or provide the basis for further modification.

Technical Design - This activity builds upon specifications

produced during new system design, adding detailed technical specifications and documentation.

Test Specifications and Planning - This activity prepares detailed test specifications for individual modules and programs, job streams, subsystems, and for the system as a whole.

Programming and Testing - This activity encompasses actual

development, writing, and testing of program units or modules.

User Training - This activity encompasses writing user procedure manuals, preparation of user training materials, conducting

(44)

training programs, and testing procedures.

Acceptance Test - A final procedural review to demonstrate a system and secure user approval before a system becomes operational.

Installation Phase - In this phase the new Computerized system

is installed, the conversion to new procedures is fully implemented, and the potential of the new system is explored.

System Installation: The process of starting the actual use of a

system and training user personnel in its operation.

Review Phase - This phase evaluates the successes and failures during a systems development project, and to measure the results of a new Computerized Transystem in terms of benefits and savings projected at the start of the project.

Development Recap - A review of a project immediately after

completion to find successes and potential problems in future work.

Post-Implementation Review - A review, conducted after a new system has been in operation for some time, to evaluate actual system performance against original expectations and projections

(45)

for cost-benefit improvements. Also identifies maintenance projects to enhance or improve the system.

THE STEPS IN THE SOFTWARE TESTING

The steps involved during Unit testing are as follows:

a) Preparation of the test cases.

b) Preparation of the possible test data with all the validation checks.

c) Complete code review of the module. d) Actual testing done manually.

e) Modifications done for the errors found during testing. f) Prepared the test result scripts.

The unit testing done included the testing of the following items:

1) Functionality of the entire module/forms. 2) Validations for user input.

3) Checking of the Coding standards to be maintained during coding.

4) Testing the module with all the possible test data.

5) Testing of the functionality involving all type of calculations etc.

6) Commenting standard in the source files.

(46)

system is integrated with all its dependencies in that module. While System Integration, We integrated the modules one by one and tested the system at each step. This helped in reduction of errors at the time of the system testing.

The steps involved during System testing are as follows:

 Integration of all the modules/forms in the system.

 Preparation of the test cases.

 Preparation of the possible test data with all the validation checks.

 Actual testing done manually.

 Recording of all the reproduced errors.

 Modifications done for the errors found during testing.

 Prepared the test result scripts after rectification of the errors.

The System Testing done included the testing of the following items:

1. Functionality of the entire system as a whole. 2. User Interface of the system.

(47)

test data scripts.

4. Verification and Validation testing.

5. Testing the reports with all its functionality.

After the completion of system testing, the next following phase was the Acceptance Testing. Clients at their end did this and accepted the system with appreciation.

Thus, we reached the final phase of the project delivery.

There are other six tests, which fall under special category. They are described below:

i. Peak Load Test: It determines whether the system will

handle the volume of activities that occur when the system is at the peak of its processing demand. For example, test the system by activating all terminals at the same time.

ii. Storage Testing: It determines the capacity of the system

to store transaction data on a disk or in other files.

iii. Performance Time Testing: it determines the length of

time system used by the system to process transaction data. This test is conducted prior to implementation to determine how long it takes to get a response to an inquiry, make a backup copy of a file, or send a transmission and get a response.

(48)

iv. Recovery Testing: This testing determines the ability of

user to recover data or re-start system after failure. For example, load backup copy of data and resume processing without data or integrity loss.

v. Procedure Testing: It determines the clarity of

documentation on operation and uses of system by having users do exactly what manuals request. For example, powering down system at the end of week or responding to paper-out light on printer.

vi. Human Factors Testing: It determines how users will use

(49)

COST ESTIMATION OF THE PROJECT

Software cost comprises a small percentage of overall computer-based system cost. There are a number of factors, which are considered, that can affect the ultimate cost of the software such as - human, technical, Hardware and Software availability etc. The main point that was considered during the cost estimation of

project was its sizing. In spite of complete software sizing,

function point and approximate lines of code were also used to "size" each element of the Software and their costing.

The cost estimation done by me for Project also depend upon the baseline metrics collected from past projects and these were used in conjunction with estimation variables to develop cost and effort projections.

We have basically estimated this project mainly on two bases

-1) Effort Estimation - This refers to the total man-hours

required for the development of the project. It even includes the time required for doing documentation and user manual.

2) Hardware Required Estimation - This includes the cost of

the PCs and the hardware cost required for development of this project.

(50)

GANTT CHART

January February March Requirement Gathering Analysis Design Coding Testing Implement W 1 W 2 W 3 W 4 W 1 W 2 W 3 W 4 W 1 W 2 W 3 W4

(51)

User

Screen

Desing

(52)

and

(53)
(54)
(55)
(56)
(57)
(58)
(59)
(60)
(61)
(62)
(63)
(64)
(65)
(66)
(67)
(68)
(69)
(70)
(71)
(72)
(73)

Code of the Project Courier Management

System

<?php

/** * @file

* The PHP page that serves all page requests on a Drupal installation.

*

* The routines here dispatch control to the appropriate handler, which then

* prints the appropriate page. *

* All Drupal code is released under the GNU General Public License.

* See COPYRIGHT.txt and LICENSE.txt. */

/**

* Root directory of Drupal installation. */

(74)

require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

menu_execute_active_handler();

Code of Courier fetch:

<?php

/** * @file

* The main autoassignrole.module file *

* Designate a role to assign all new users to in addition to providing a

* mechanism for new users to select a role or role for their account.

*/

// Says to use element of type radio for role selection.

define('AUTOASSIGNROLE_ELEMENT_RADIO_CHECKBOX', 0);

// Says to use element of type select for role selection. define('AUTOASSIGNROLE_ELEMENT_SELECT', 1);

(75)

// Sets the page display for standard.

define('AUTOASSIGNROLE_PAGE_DISPLAY_STANDARD', 0);

// Sets the page display for individual.

define('AUTOASSIGNROLE_PAGE_DISPLAY_INDIVIDUAL', 1); /** * Implements hook_permission(). */ function autoassignrole_permission() { return array(

'administer autoassignrole' => array( 'title' => t('Administer auto assign role'),

'description' => t('Perform administration tasks for auto assign role.'), ), ); } /** * Implements hook_menu(). */ function autoassignrole_menu() { $items = array(); $items['admin/config/people/autoassignrole'] = array(

(76)

'title' => 'Auto assign role',

'description' => 'Configure auto role assignment.',

'access arguments' => array('administer autoassignrole'), 'page callback' => 'autoassignrole_admin_block_page', 'file' => 'autoassignrole.admin.inc',

);

$items['admin/config/people/autoassignrole/auto'] = array( 'title' => 'Automatic',

'description' => 'Configure which role(s) are automatically assigned on user creation.',

'access arguments' => array('administer autoassignrole'), 'page callback' => 'drupal_get_form',

'page arguments' => array('autoassignrole_auto_settings'), 'file' => 'autoassignrole.admin.inc',

);

$items['admin/config/people/autoassignrole/user'] = array( 'title' => 'User choice',

'description' => 'Configure the ability for an end user to choose their own roles during registration.',

'access arguments' => array('administer autoassignrole'), 'page callback' => 'drupal_get_form',

'page arguments' => array('autoassignrole_user_settings'), 'file' => 'autoassignrole.admin.inc',

);

(77)

'title' => 'Per Role Pages',

'description' => 'Configure individual pages to allow user to sign up for a particular role',

'access arguments' => array('administer autoassignrole'), 'page callback' => 'autoassignrole_list_pages',

'file' => 'autoassignrole.admin.inc', );

$items['admin/config/people/autoassignrole/pages/add'] = array( 'title' => 'Add Auto Assign Role Page',

'access arguments' => array('administer autoassignrole'), 'page callback' => 'drupal_get_form',

'page arguments' => array('autoassignrole_page_form', 'add'), 'type' => MENU_LOCAL_ACTION,

'file' => 'autoassignrole.admin.inc', );

$items['admin/config/people/autoassignrole/pages/edit/%'] = array(

'title' => 'Edit Auto Assign Role Page',

'access arguments' => array('administer autoassignrole'), 'page callback' => 'drupal_get_form',

'page arguments' => array('autoassignrole_page_form', 'edit', 6),

'file' => 'autoassignrole.admin.inc', );

(78)

array(

'title' => 'Delete Auto Assign Role Page',

'access arguments' => array('administer autoassignrole'), 'page callback' => 'drupal_get_form',

'page arguments' => array('autoassignrole_page_delete_confirm', 6),

'file' => 'autoassignrole.admin.inc', );

$pages = autoassignrole_get_pages(); foreach ($pages as $page) {

$rids = unserialize($page->rids); switch ($page->display) {

case AUTOASSIGNROLE_PAGE_DISPLAY_STANDARD: $items[$page->path] = array(

'title' => check_plain($page->title), 'page arguments' => array($rids),

'page callback' => 'autoassignrole_register', 'access callback' => 'user_register_access', 'file' => 'autoassignrole.paths.inc',

'type' => MENU_NORMAL_ITEM, 'menu_name' => $page->menu, );

$items[$page->path . '/register'] = array( 'title' => 'Register',

(79)

'page arguments' => array($rids),

'page callback' => 'autoassignrole_register', 'access callback' => 'user_register_access', 'file' => 'autoassignrole.paths.inc',

'type' => MENU_DEFAULT_LOCAL_TASK, );

$items[$page->path . '/login'] = array( 'title' => 'Log In',

'page callback' => 'autoassignrole_login', 'access callback' => 'user_is_anonymous', 'file' => 'autoassignrole.paths.inc',

'type' => MENU_LOCAL_TASK, );

$items[$page->path . '/password'] = array( 'title' => 'Request New Password',

'page callback' => 'autoassignrole_password', 'access callback' => 'user_is_anonymous', 'file' => 'autoassignrole.paths.inc', 'type' => MENU_LOCAL_TASK, ); break; case AUTOASSIGNROLE_PAGE_DISPLAY_INDIVIDUAL: $items[$page->path] = array( 'title' => check_plain($page->title),

(80)

'page arguments' => array($rids),

'page callback' => 'autoassignrole_register', 'access callback' => 'user_register_access', 'file' => 'autoassignrole.paths.inc',

'type' => MENU_CALLBACK, );

$items[$page->path . '/register'] = array( 'title' => 'Register',

'page arguments' => array($rids),

'page callback' => 'autoassignrole_register', 'access callback' => 'user_register_access', 'file' => 'autoassignrole.paths.inc',

'type' => MENU_CALLBACK, );

$items[$page->path . '/login'] = array( 'title' => 'Log In',

'page callback' => 'autoassignrole_login', 'access callback' => 'user_is_anonymous', 'file' => 'autoassignrole.paths.inc',

'type' => MENU_CALLBACK, );

$items[$page->path . '/password'] = array( 'title' => 'Request New Password',

'page callback' => 'autoassignrole_password', 'access callback' => 'user_is_anonymous',

(81)

'file' => 'autoassignrole.paths.inc', 'type' => MENU_CALLBACK, ); break; } } return $items; } /**

* Finds any role ids attached to current page, if any. */ function autoassignrole_get_active_path_rid() { $item = menu_get_item(); if ($item['page_callback'] == 'autoassignrole_register') { return $item['page_arguments'][0]; } return FALSE; } /** * Implements hook_user_presave(). */

(82)

$category) {

// Use case http://drupal.org/node/971622

// Make sure we only assign roles automatically when enabled to do so. if (variable_get('autoassignrole_auto_active', 0) || variable_get("autoassignrole_user_active", 0) || (variable_get('autoassignrole_admin_active', 0) && user_access('administer users')) || autoassignrole_get_active_path_rid()) { // Use case http://drupal.org/node/944864 // Only assign roles if this is a new account.

if (isset($account->is_new) && !empty($account->is_new)) { // Get the existing user roles with the exception of the anonymous role.

$user_roles = user_roles(TRUE); $roles_to_add = array();

// Add in automatic roles.

if ((variable_get('autoassignrole_auto_active', 0) && ! user_access('administer users')) || (variable_get('autoassignrole_admin_active', 0) && user_access('administer users'))) { $roles_to_add += array_intersect_key($user_roles, array_filter(variable_get('autoassignrole_auto_roles', array()))); }

(83)

// Add in user selected roles if any.

if (variable_get("autoassignrole_user_active", 0) && ! empty($edit['user_roles'])) {

// Value is a single, convert to array. if (!is_array($edit['user_roles'])) { $edit['user_roles'] = array($edit['user_roles'] => $edit['user_roles']); } $roles_to_add += array_intersect_key($user_roles, array_filter($edit['user_roles'])); }

// Add page-specific roles.

$page_rids = autoassignrole_get_active_path_rid(); if ($page_rids) {

$roles_to_add = array_intersect_key($user_roles, array_filter($page_rids));

}

// Make sure the roles key exists. if (!isset($edit['roles'])) {

$edit['roles'] = array(); }

(84)

// Add in the new roles to override the current roles. $edit['roles'] = $roles_to_add + $edit['roles'];

} } }

/**

* Implements hook_form_FORM_ID_alter() for user_register_form(). */ function autoassignrole_form_user_register_form_alter(&$form, &$form_state) { if (variable_get("autoassignrole_user_active", 0) && ! user_access('administer users') && !autoassignrole_get_active_path_rid()) {

// Get a list of valid roles that can be selected.

$roles = array_intersect_key(user_roles(TRUE), array_filter(variable_get('autoassignrole_user_roles', array()))); if ($roles) { $form['autoassignrole_user'] = array( '#type' => 'fieldset', '#title' => filter_xss(variable_get('autoassignrole_user_fieldset_title', t('User

(85)

Roles'))),

'#collapsible' => FALSE, '#collapsed' => FALSE, );

// Sort the roles.

if (variable_get('autoassignrole_user_sort', 'SORT_ASC') == 'SORT_ASC') {

asort($roles); }

elseif (variable_get('autoassignrole_user_sort', 'SORT_DESC') == 'SORT_DESC') { arsort($roles); } else { drupal_sort_weight($roles, $roles); } $multiple = variable_get('autoassignrole_user_multiple', 0); $user_selection = variable_get('autoassignrole_user_selection', AUTOASSIGNROLE_ELEMENT_RADIO_CHECKBOX); $type = 'select'; if ($user_selection ==

(86)

AUTOASSIGNROLE_ELEMENT_RADIO_CHECKBOX) {

$type = $user_selection == AUTOASSIGNROLE_ELEMENT_RADIO_CHECKBOX && !$multiple ? 'radios' : 'checkboxes';

}

// If not multiple + not required + select box, need a none selection.

if (!$multiple && !variable_get('autoassignrole_user_required', 0) && $type == 'select') {

$roles = array(0 => t('None')) + $roles; }

// Add in the element.

$form['autoassignrole_user']['user_roles'] = array( '#type' => $type, '#title' => filter_xss(variable_get('autoassignrole_user_title', t('Role'))), '#options' => $roles, '#description' => filter_xss(variable_get('autoassignrole_user_description', t('Select a role'))), '#required' => variable_get('autoassignrole_user_required', 0), '#multiple' => $multiple,

(87)

); } } }

/**

* Function to retrieve all role-specific pages. *

* @return SelectQuery

* An array of page objects. */ function autoassignrole_get_pages() { $query = _autoasignrole_get_page_query(); return $query->execute(); } /**

* Function to get role-specific page details. *

* @param int $id

* The id of the page to be updated. *

* @return SelectQuery

* A query object with all page details. */

(88)

function autoassignrole_get_page($id) { $query = _autoasignrole_get_page_query(); $query->condition('rid_page_id', $id, '='); return $query->execute()->fetchObject(); } /**

* Helper method for getting the page query object. *

* @return SelectQuery * The query object. */ function _autoasignrole_get_page_query() { return db_select('autoassignrole_page', 'p') ->fields('p', array( 'rids', 'path', 'title', 'menu', 'display', )); }

Code of Role Assignment: <?php

(89)

/** * @file

* Paths used for autoassignrole created user pages. *

* Autoassignrole allows an admin to create specific register, login and reset

* password pages for a particular set of roles. The menu callback arguments

* for these pages are defined here. *

* These functions simply call the standard user forms from Drupal core, the

* reason we wrap them like this is so that we can detect when one of our

* role-specific pages are being called rather than the default ones.

*/

//We require this file from the user module to get the user_pass form.

require_once drupal_get_path('module', 'user') . '/user.pages.inc';

/**

(90)

*

* $rid is not actually used in the function but by passing it we can find out

* which roles are meant to be added to the new user by using * autoassignrole_get_active_path_rid();

*

* @see autoassignrole.module *

* @param $rid

* $rid is the 'rid_page_id' of the page we are currently generating.

*

* @return string

* User registration form renderer. */ function autoassignrole_register($rid) { $output = drupal_get_form('user_register_form'); return $output; } /**

* Loads the user login form */

function autoassignrole_login() {

(91)

return $output; }

/**

* Loads the password reset form */

function autoassignrole_password() { $output = drupal_get_form('user_pass'); return $output;

}

Code of Node Save Redirect: <?php

/**

* Implements hook_form_alter(). *

* Adds the action and redirect fields. Used by node type edit and node edit forms.

*/

function node_save_redirect_form_alter(&$form, &$form_state, $form_id) {

(92)

// ADdd the new radios buttons to the submission vertical tab. $form['submission']['node_save_redirect'] = array(

'#type' => 'radios',

'#title' => t('Redirect after content creation'), '#options' => array(0 => t('Default'),

1 => t('Return to Edit page after saving.'),

2 => t('Return to Content Overview after saving.'), 4 => t('Re-direct to My Workbench after saving'), 3 => t('Re-direct to another location')),

'#description' => t('Choose where the user should be sent after creating new content.'),

'#default_value' => variable_get('node_save_redirect_' . $form['#node_type']->type, 0)

);

// Add a textfield to the submission vertical tab.

$form['submission']['node_save_redirect_location'] = array( '#type' => 'textfield',

'#title' => 'Custom Redirect Location',

'#default_value' => variable_get('node_save_redirect_location_' . $form['#node_type']->type, ''), '#states' => array( 'visible' => array( ':input[name="node_save_redirect"]' => array('value' =>

(93)

'3'), ), ) ); }

// Add a new submit function.

if (strstr($form_id, '_node_form')) { $form['actions']['submit']['#submit'][] = 'node_save_redirect_submit'; } } /**

* A function that is called when a node is saved. *

* @param array $form

* @param array $form_state */

function node_save_redirect_submit($form, &$form_state) {

// load settings

$node_save_redirect_settings = variable_get('node_save_redirect_' . $form['type']['#value'], NULL);

(94)

$custom_location = variable_get('node_save_redirect_location_' . $form['type']['#value'], '');

if (!is_null($node_save_redirect_settings)) {

// A destination in $_GET always overrides the function arguments. @see drupal_goto

unset($_GET['destination']);

if ($node_save_redirect_settings == '1') {

$form_state['redirect'] = 'node/' . $form_state['nid'] . '/edit'; }

else if ($node_save_redirect_settings == '2' && user_access('access content overview')) {

$form_state['redirect'] = 'admin/content'; }

else if ($node_save_redirect_settings == '4' && user_access('access workbench')) {

$form_state['redirect'] = 'admin/workbench'; }

else if ($node_save_redirect_settings == '3') { $options = drupal_parse_url($custom_location);

$form_state['redirect'] = array($options['path'], array( 'query' => $options['query'],

(95)

)); } } }

Code for Manage Couriers using ctools: <?php

/** * @file

* CTools primary module file. *

* Most of the CTools tools are in their own .inc files. This contains * nothing more than a few convenience functions and some hooks that

* must be implemented in the module file. */

define('CTOOLS_API_VERSION', '2.0.8');

/**

* The current working ctools version. *

* In a release, it should be 7.x-1.x, which should match what drush make will

(96)

* create. In a dev format, it should be 7.x-1.(x+1)-dev, which will allow

* modules depending on new features in ctools to depend on ctools > 7.x-1.x.

*

* To define a specific version of CTools as a dependency for another module,

* simply include a dependency line in that module's info file, e.g.: * ; Requires CTools v7.x-1.4 or newer.

* dependencies[] = ctools (>=1.4) */

define('CTOOLS_MODULE_VERSION', '7.x-1.6');

/**

* Test the CTools API version. *

* This function can always be used to safely test if CTools has the minimum

* API version that your module can use. It can also try to protect you from

* running if the CTools API version is too new, but if you do that you need

* to be very quick about watching CTools API releases and release new versions

(97)

might end up

* updating CTools and having your module shut down without any recourse.

*

* It is recommended that every hook of your module that might use CTools or

* might lead to a use of CTools be guarded like this: * * @code * if (!module_invoke('ctools', 'api_version', '1.0')) { * return; * } * @endcode *

* Note that some hooks such as _menu() or _theme() must return an array().

*

* You can use it in your hook_requirements to report this error condition * like this: * * @code * define('MODULENAME_MINIMUM_CTOOLS_API_VERSION', '1.0'); * define('MODULENAME_MAXIMUM_CTOOLS_API_VERSION', '1.1'); *

(98)

* function MODULENAME_requirements($phase) { * $requirements = array(); * if (!module_invoke('ctools', 'api_version', MODULENAME_MINIMUM_CTOOLS_API_VERSION, MODULENAME_MAXIMUM_CTOOLS_API_VERSION)) { * $requirements['MODULENAME_ctools'] = array(

* 'title' => $t('MODULENAME required Chaos Tool Suite (CTools) API Version'),

* 'value' => t('Between @a and @b', array('@a' => MODULENAME_MINIMUM_CTOOLS_API_VERSION, '@b' => MODULENAME_MAXIMUM_CTOOLS_API_VERSION)), * 'severity' => REQUIREMENT_ERROR, * ); * } * return $requirements; * } * @endcode *

* Please note that the version is a string, not an floating point number.

* This will matter once CTools reaches version 1.10. *

* A CTools API changes history will be kept in API.txt. Not every new

(99)

* @param $minimum

* The minimum version of CTools necessary for your software to run with it.

* @param $maximum

* The maximum version of CTools allowed for your software to run with it.

*/

function ctools_api_version($minimum, $maximum = NULL) { if (version_compare(CTOOLS_API_VERSION, $minimum, '<')) { return FALSE;

}

if (isset($maximum) && version_compare(CTOOLS_API_VERSION, $maximum, '>')) { return FALSE; } return TRUE; } // ---// General utility functions

/**

(100)

*

* This fuction is helpful for including .inc files for your module. The

* general case is including ctools funcitonality like this: *

* @code

* ctools_include('plugins'); * @endcode

*

* Similar funcitonality can be used for other modules by providing the $module

* and $dir arguments like this: *

* @code

* // include mymodule/includes/import.inc * ctools_include('import', 'mymodule'); * // include mymodule/plugins/foobar.inc

* ctools_include('foobar', 'mymodule', 'plugins'); * @endcode

*

* @param $file

* The base file name to be included. * @param $module

* Optional module containing the include. * @param $dir

(101)

* Optional subdirectory containing the include file. */

function ctools_include($file, $module = 'ctools', $dir = 'includes') {

static $used = array();

$dir = '/' . ($dir ? $dir . '/' : '');

if (!isset($used[$module][$dir][$file])) {

require_once DRUPAL_ROOT . '/' . drupal_get_path('module', $module) . "$dir$file.inc";

$used[$module][$dir][$file] = TRUE; }

}

/**

* Include .inc files in a form context. *

* This is a variant of ctools_include that will save information in the

* the form_state so that cached forms will properly include things.

*/

function ctools_form_include(&$form_state, $file, $module = 'ctools', $dir = 'includes') {

(102)

if (!isset($form_state['build_info']['args'])) { $form_state['build_info']['args'] = array(); }

$dir = '/' . ($dir ? $dir . '/' : '');

form_load_include($form_state, 'inc', $module, $dir . $file); }

/**

* Add an arbitrary path to the $form_state so it can work with form cache.

*

* module_load_include uses an unfortunately annoying syntax to work, making it

* difficult to translate the more simple $path + $file syntax. */

function ctools_form_include_file(&$form_state, $filename) { if (!isset($form_state['build_info']['args'])) {

$form_state['build_info']['args'] = array(); }

// Now add this to the build info files so that AJAX requests will know to load it.

$form_state['build_info']['files']["$filename"] = $filename; require_once DRUPAL_ROOT . '/' . $filename;

(103)

}

/**

* Provide the proper path to an image as necessary. *

* This helper function is used by ctools but can also be used in other

* modules in the same way as explained in the comments of ctools_include.

*

* @param $image

* The base file name (with extension) of the image to be included.

* @param $module

* Optional module containing the include. * @param $dir

* Optional subdirectory containing the include file. */

function ctools_image_path($image, $module = 'ctools', $dir = 'images') {

return drupal_get_path('module', $module) . "/$dir/" . $image; }

/**

(104)

*

* This helper function is used by ctools but can also be used in other

* modules in the same way as explained in the comments of ctools_include.

*

* @param $file

* The base file name to be included. * @param $module

* Optional module containing the include. * @param $dir

* Optional subdirectory containing the include file. */

function ctools_add_css($file, $module = 'ctools', $dir = 'css') { drupal_add_css(drupal_get_path('module', $module) . "/$dir/ $file.css");

}

/**

* Format a css file name for use with $form['#attached']['css']. *

* This helper function is used by ctools but can also be used in other

* modules in the same way as explained in the comments of ctools_include.

(105)

* * @code * $form['#attached']['css'] = array(ctools_attach_css('collapsible-div')); * $form['#attached']['css'][ctools_attach_css('collapsible-div')] = array('preprocess' => FALSE); * @endcode * * @param $file

* The base file name to be included. * @param $module

* Optional module containing the include. * @param $dir

* Optional subdirectory containing the include file. */

function ctools_attach_css($file, $module = 'ctools', $dir = 'css') { return drupal_get_path('module', $module) . "/$dir/$file.css"; }

/**

* Include js files as necessary. *

* This helper function is used by ctools but can also be used in other

(106)

ctools_include. *

* @param $file

* The base file name to be included. * @param $module

* Optional module containing the include. * @param $dir

* Optional subdirectory containing the include file. */

function ctools_add_js($file, $module = 'ctools', $dir = 'js') {

drupal_add_js(drupal_get_path('module', $module) . "/$dir/ $file.js");

}

/**

* Format a javascript file name for use with $form['#attached'] ['js'].

*

* This helper function is used by ctools but can also be used in other

* modules in the same way as explained in the comments of ctools_include.

*

* @code

References

Related documents

A simple way to perform this kind of analysis would be to partition the parameter space (see Table 3) in a number of subsets along the date coordinate, and run

We show that 71 discrete CpG dinucleotides in the human genome exhibit altered DNA methylation levels in relation to AD, that these changes are an early feature of AD, that

Step 1 Choose Service &gt; IP Protection Subnet &gt; Manage MPLS Protection Ring (traditional style) from the main menu or select Bearer Network Service Configuration in

Cephalothorax reddish, anterior half black laterally, black area terminating at a hypothetical line between ALE and PLE; cephalothorax laterally to dorsolaterally with an area of

Experts with direct exposure to the public were more aware of the miscommunication risks, lack of subsurface awareness and climate change scepticism, compared to experts with

How we expect the slide will be used Image capture module Viewer software Reference slide Measurement system Slide measurements Image file Image colour estimation Image colour

The goal of the OpenStack Foundation is to serve developers, users, and the entire ecosystem by providing a set of shared resources to grow the footprint of public and

Using multiple logistic regression models we assessed the protective effects of safe water sources and improved sanitation facilities on household-level diarrhea and whether