Courier Management Systems Report
Courier Management Systems Report
COURIER MANAGEMENT
SYSTEMS
Ajitesh M - 2019103503
Table of Contents
The Courier Management System proposed here avoids spending more manual
hours in maintaining records and generating reports. Daily transactions are managed
easily and the centralized database helps in avoiding conflicts between different
branches and placing orders in a large scale. It also provides secured data storage.
Along with my keen intersts in web development and databases, I wanted to use this
oppurtunity to explore and get hands-on experience with working a on real time
project. By the end of this mini-project, I would be able to improve my knowledge
and experience with databases to the higher level.
The Courier Management System proposed here avoids spending more manual
hours in maintaining records and generating reports. Daily transactions are managed
easily and the centralized database helps in avoiding conflicts between different
branches and placing orders in a large scale. It avoids human errors in feeding parcel
details or handling records, and provides support to customers by enabling them to
track the status of their parcels. It also manages data in a secure manner and provides
a GUI that does not require special training to make people work upon.
This is an interactive web application developed using PHP and MySQL database.
HTML5 and CSS3, along with Bootstrap 4, is used for front-end development.
This web application provides the facility of tracking the package for the customers,
who can access the delivery status of their package using an unique Tracking ID,
which displays the date-time details of stages such as received and shipped from the
origin office, out for delivery as received by the destination office and delivered to
the receiver successfully.
For the employees, it provides the facilities of placing new order and update the
delivery status of the orders. The delivery charge depends upon the weight of the
parcel, source and destination state.
Salient Features :
ER - Diagram
The Courier Management System database has various entities namely Staff,
Credentials, Branches, Parcel, Status, Pricing and Feedback.
The Parcel entity has a many-to-one relationship with the Pricing entity as a pricing
could be set to any number of parcels and they may have the same price whereas a
single parcel could have only one pricing. The Parcel entity has a one-to-one
relationship with the Status entity as a single parcel could have a single status and a
single status of a tracking_id could have a unique parcel.
This schema design elucidates about the relationship each table is having with
others. It also says about how the primary key and foreign key constraints are used
in order to provide relationship between the tables.
All the tables have been normalized and are present in Boyce – Codd Normal
Form since all the transitive functional dependencies have been removed by
decomposing the tables.
The various stages of the implementation of this project are briefed as follows,
1. CREATING RELATIONS :
The various relations(tables) used to represent the data in the database include :
Here two different views are created on the relations parcel and status.
MySQL Events are named object which contains one or more SQL statement. They
are stored in the database and executed at one or more intervals, say once every week
or month.
resetCredits: Event which resets the credits received by each staff to 0 at the
beginning of every month in order to award - the Employee of the Month.
Data in the remaining tables – parcel, status and feedback – are populated as the
staff places and updates the parcel details and the customer files a feedback/query.
Fig 9.3 : Segment of the home page featuring the Employee of the Month and the Contact form
Fig 9.5 : Branches page displaying the details of the branch offices stored in branches relation
Fig 9.9 : Page displaying the consignments in transit which are the contents of the arrived view
Fig 11.1 : PHP code snippet for validating the login credentials and redirecting to the staff page
on successful login. It stores the credentials in the session on successful login.
Fig 11.3 : Staff login page prompting its mandatory to enter the corresponding details for
successful login
Fig 11.5 : Staff login page displaying the prompt – Enter valid Staff Id – when the entered staff
id is not present in the credentials table
Fig 12.1 : PHP code snippet that executes the corresponding SQL query to fetch the details of the
logged in staff
Fig 12.2 : Page displaying the fetched staff details from the staff table
Fig 13.1 : PHP code snippet to logout the current staff by destroying the session storing the
credentials of the logged in staff id. On successful logout, it redirects to the login page.
Fig 13.2 : The logout option is available in the dropdown near the logged in staff which redirects
to the login page.
Fig 14.1 : PHP code snippet which stores the data collected from the new order form into the
parcel table ( and to the status table by the trigger placeParcel ) only if the delivery details
provided can be serviced. Here the delivery charge is calculated based on the values stored in the
pricing table. It redirects the page to receipt page along with its unique tracking id. It also alerts
the staff when the service is not available for the address details provided.
Fig 14.2 : Page displaying the form with details which is stored into the parcel and status table
when the place order button is hit.
Fig 14.4 : Result of the trigger – placeParcel – which stored the tracking id, staff id and dispatched
time of the new parcel placed (in parcel table) into the status table. Also the trigger adds 5 credits
to the staff for each parcel placed by them which is used to announce the Employee of the Month.
Fig 14.6 : The generated receipt is printed when the print button is hit.
Fig 14.8 : Alert prompting that the delivery service is not available for the address details
provided.
Fig 15.1 : PHP code snippet with corresponding SQL query for selecting the record of the
entered tracking id from status table. The fetched results are displayed and it is updated to the
subsequent delivery status with the current timestamp. Also this script ensures that status is
updated in a hierarchical manner.
Fig 15.3 : Note that the record of the tracking id 108025 is modified with Shipped = current time.
Fig 16.2 : The result of fetching the delivery status record of the entered tracking id from status
table. The progress bar here gives a pictorial view on the progress of the package. Also the
option to change the receiver’s address is given.
Fig 16.4 : The Success alert prompts the user that the delivery address is successfully updated.
Fig 17.1 : PHP code snippet with corresponding SQL queries to fetch the entries of the arrived
and delivered views to display the consignments in transit and the delivered consignments resp.
Fig 17.3 : Displaying the consignments in transit, which are the entries of the arrived view.
Fig 17.5 : Displaying the delivered consignments, which are the entries of the delivered view.
Fig 18.1 : PHP code snippet to store the contents from the contact form provide for feedback and
queries into the feedback table.
Fig 18.4 : The result of successful submission is reflected in the feedback table at entry f.no 6.
Fig 19.1 : PHP code snippet with the corresponding SQL query to fetch the record of the staff with
maximum credits and displayed as the Employee of the month. Note that each staff is awarded 5
credits for each parcel they place (which is added to the credits in staff table by the placeParcel
trigger) and the event – resetCredits – resets the credits of all employees to 0 on every month
beginning.
Fig 19.2 : The Employee of the month featured in the home page.
Fig 20.1 : PHP code snippet with corresponding SQL query to fetch the records of the branches
table.
Fig 20.2 : The Branches page displaying the address and contact details of various branch offices
as per the entries fetched from the branches table.
From understanding the user and admin requirements to system design and finally
consolidation of everything, each step requires in-depth understanding and
commitment toward achieving the objectives of this project. CC Couriers is a
customer-friendly delivery service with flexible policies and proper management
system.
Although the Courier Management System developed in this project is not fully
integrated to the real world needs of a system, the prototype and implementation
demonstrates easy navigation in the system and how data are stored in a systematic
view. The study of how a relational database will be developed and maintained for
industry purposes was done and been implemented. Overall, the main motive of this
project is to gain more knowledge about the usage of database systems in the
industrial view which was done efficiently. Also it is indeed a great learning
experience.
https://www.w3schools.com/
https://www.javatpoint.com/dbms-tutorial
https://www.guru99.com
www.stackoverflow.com
https://www.youtube.com/
https://getbootstrap.com/docs/4.0/getting-started/introduction/
Database System Concepts, Seventh Edition by Abraham Silberschatz, Henry
F. Korth, S. Sudarshan