Deepak Content Word

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 100

Page 1

ABSTRACT
Page 2

ABSTRACT
The Waterway project is a comprehensive online seat reservation
system designed to facilitate the efficient management of seat bookings
on boats, ensuring a streamlined experience for both users and
administrators. The platform enables passengers to browse available
routes, select boats, view schedules, and reserve seats with real-time
availability updates. Equipped with a secure payment gateway,
Waterway processes payments seamlessly while managing bookings,
cancellations, and refunds.

The project database is structured to ensure data integrity and efficiency,


encompassing interrelated tables for users, boats, routes, schedules,
seats, bookings, payments, cancellations, and more. To enhance user
satisfaction, an enquiries module allows passengers to submit feedback
or complaints, with responses tracked in the system. Administrators can
manage bookings, schedules, and boat assignments while monitoring
actions through an audit log for transparency.

Waterway’s primary objective is to automate seat reservations, reducing


manual errors and enhancing the operational efficiency of boat
reservation services. This system is designed to be scalable and
adaptable, meeting the evolving needs of waterway transportation
providers and offering a robust foundation for future expansion.
Page 3

TABLE OF CONTENTS

● Acknowledgment
00
● Abstract 02

1 . Introduction……..........................................................................05
1.1 Background and Motivation……….....................................05
1.2 The Proposed System ………..............................................05
1.3 Project
Scope .......................................................................06

2 . System Analysis
………...............................................................09
2.1 Introduction ……................................................................09
2.2 Stakeholders of this Project …......................................09
2.2.1 Admin…..…..................................................................09
2.2.3 User………..............................................................…..10
2.3 Software Requirement Specifications ..…….……..............11
2.3.1 System Features …….................................................11
2.3.1.1 User ...
……........................................................11
2.3.1.2 Admin ..
……......................................................11
2.3.2 Non-functional Requirements
…….............................11
2.4 Feasibility Study ……..........................................................12
2.5 Software Development Lifecycle Model ....................15
2.6 Hardware and Software Requirements ......................15
2.6.1.Software Specifications…….....................................15
2.6.1.1 HTML ………........................................................16
2.6.1.2 CSS
………...........................................................16
2.6.1.3 Javascript……….................................................16
2.6.1.4 jQuery ………......................................................16
2.6.1.5 Ajax ………..........................................................16
Page 4

2.6.1.5 Bootstrap………..................................................17
2.6.1.6
PHP………............................................................17
2.6.1.7
MySQL……….......................................................17
2.6.1.8 XAMPP.................................................................17

2.6.1.9 Composer............................................................17

2.6.1.10 PhpMailer ……….................................................17


2.6.1.11 mPDF ……..........................................................17
2.6.2 Hardware
Requirements ..................................................18

3. System Design ………....................................................................19


3.1 System Architecture ……….....................................................19
3.2 Module Design ………..............................................................19
3.3 Database Design ………...........................................................21
3.3.1 Normalization ………........................................................21
3.3.2 Table Structure ………..............................................……22
3.3.3 Data Flow Diagram ……...............................................28
3.3.3.1 Introduction to Data Flow Diagrams ………....…
28
3.3.3.2 Data Flow Diagram ………...................................31
3.4 Interface Design ………...............................................................39
3.4.1 User Interface Screen Design ………...............................39
3.4.2 Output Design ....................................................................42

4. Implementation
………......................................................................44
4.1 Coding Standards ………..........................................................44
4.2 Sample Code ..............................................................................45

5. Testing ………...................................................................................57
5.1 Test Cases
……….......................................................................57
5.1.1 Unit Testing ………...........................................................
58
5.1.2 Integration Testing ………...............................................59
Page 5

5.1.3 Black Box Testing …….................................................61


5.1.4 White Box Testing …….................................................62
5.1.5 Validation Testing …….................................................63
5.1.6 User Acceptance Testing ……......................................65
5.2 Test Case
Documents ...............................................................65

6. Conclusion …….............................................................................68
6.1 Future
Enhancements ................................................................68

7.
References ........................................................................................70

8. Appendix ………...............................................................................71
8.1 Screenshots ...............................................................................71

1 .INTRODUCTION
1.1. BACKGROUND AND MOTIVATION

In the transportation sector, modern booking systems for buses, trains,


and even flights have become the standard, offering users the ability to
reserve seats conveniently and in real time. However, the boat
transportation sector has not kept pace with these advancements. The
lack of an efficient and reliable seat reservation system for boats has led
to numerous challenges, including double bookings, lack of clarity on
seat availability, and operational inefficiencies. This gap inspired the
development of the Waterway project, a comprehensive seat booking
system specifically designed to address the unique needs of boat
transportation.

Waterway seeks to solve common issues like outdated booking


methods, which have left users frustrated due to poor accessibility, and
operators facing potential revenue losses. This motivation, rooted in the
need for an improved booking experience and streamlined management,
Page 6

has driven the creation of a platform that benefits both users and boat
operators, modernizing the reservation process for waterway travel.

1.2 .PROPOSED SYSTEM

The Waterway project envisions a versatile, user-centric platform that


enhances the booking experience while optimizing boat operations. Key
features and functionalities of the proposed system include:
1. Real-Time Seat Reservation and Availability:
○ Users can seamlessly view available seats, select their desired routes, and
complete their bookings instantly. This feature eliminates issues associated
with double bookings and minimizes the chance of unavailable seat
selections.
○ Real-time updates ensure that users always have access to accurate
information, facilitating a smooth reservation process.
2. Comprehensive Route and Schedule Management:
○ The system enables operators to manage routes and schedules efficiently,
using structured tables for Routes, Route_Stops, and Schedules.
Administrators can adjust departure and arrival times, modify route stops, and
manage boat allocations for each schedule.
○ This comprehensive management structure ensures the entire booking
system aligns with actual boat timings and stops, improving the consistency
and reliability of schedule data.
3. User-Friendly Interface:
○ Waterway’s interface is designed for intuitive navigation, allowing users to
complete bookings with ease. The platform provides clear, step-by-step
guidance on selecting routes, choosing seats, and making payments.
○ Even those unfamiliar with digital systems can adapt quickly to this user-
friendly platform, enhancing accessibility for all.
4. Secure Payment Processing and Management:
○ The integrated payment system offers secure and diverse payment options,
including card payments and other methods, facilitating easy transactions for
users.
○ Payment statuses are recorded and tracked for each booking, ensuring that
the system reflects the current financial state of each reservation. This also
allows for transparent cancellation policies and easy refunds when applicable.
5. Cancellation and Feedback System:
○ Waterway includes cancellation management to handle booking cancellations
promptly, with refund handling where appropriate.
○ The Enquiries module enables users to provide feedback or ask questions,
and administrators can respond, creating a responsive feedback loop to
enhance service quality.

Waterway is designed to address the inefficiencies of traditional boat booking methods by


delivering a reliable, user-centric solution that serves as a bridge between operators and
passengers, bringing the convenience of modern booking systems to boat transportation.
Page 7

1.3 PROJECT SCOPE

The Waterway project is a comprehensive solution aimed at


transforming seat booking for boat transportation. Its scope covers
essential functionalities designed to streamline the reservation process,
enhance operational efficiency, and improve user experience. Key
components include:
1. Real-Time Seat Availability and Booking:
○ The system allows users to view and book available seats instantly, reducing
overbooking risks and ensuring efficient seat utilization. This feature not only
enhances user convenience but also optimizes capacity usage, minimizing
revenue losses for operators.
2. Route and Schedule Management:
○ Administrators have access to a powerful scheduling system that enables
them to manage routes, set stop times, and assign boats to schedules
effectively. This ensures that each route has accurate and up-to-date
information, which is crucial for operational reliability.
○ Using the tables for Routes, Route_Stops, and Route_Stop_Times,
administrators can define start and end locations, intermediate stops, and
timing to improve the synchronization of boat schedules with user bookings.
3. Dynamic Pricing Based on Route Stops:
○ Pricing is calculated based on the distance between start and end stops,
making it fair and transparent for users. This is managed through the
Stop_Pricing table, which maintains fare information based on various start-
stop combinations along each route.
4. Secure Payment Processing:
○ Waterway includes integrated payment options, ensuring secure, efficient
transaction handling. Payment statuses, transaction IDs, and other details are
recorded in the Payments table, reducing the risk of payment disputes and
providing clarity on financial transactions.
5. Cancellation and Refund Management:
○ With the Cancellations module, users can cancel bookings as needed, with
administrators able to process refunds promptly. This feature enhances user
trust and flexibility, enabling users to adjust their travel plans without difficulty.
6. Responsive User Feedback System:
○ Through the Enquiries module, users can submit complaints or feedback, and
receive responses from administrators. This promotes a continuous feedback
loop to improve service quality, addressing any user concerns quickly and
effectively.
7. Detailed Logging and Admin Oversight:
○ An Admin_Logs table records all administrative actions, providing
accountability and transparency. This feature is essential for maintaining
system integrity and ensuring that all changes and transactions are traceable.
Page 8

8. User and Role Management:


○ The system includes role-based access, where administrators can manage
both regular users and operators. This ensures a structured environment
where each user interacts with the system according to their role, maintaining
data security and accessibility.

By encompassing these features, the Waterway project addresses inefficiencies in boat seat
reservations, setting a new standard for the waterway transportation industry. The system’s
structured approach to managing bookings, payments, schedules, and user feedback
ensures it is both scalable and adaptable to various operational needs, providing an effective
solution for boat reservation services.

Advantages
1. Optimized Seat Utilization: The Waterway system maximizes seat usage by
allowing users to view real-time availability and book seats instantly. The dynamic
Seat_Bookings and Seats tables ensure that seats are efficiently allocated,
minimizing wastage and increasing operational revenue for boat operators.
2. Synchronized Schedules and Routes: By leveraging the Routes, Route_Stops,
and Route_Stop_Times tables, the system aligns boat schedules with designated
routes and stops. This integration enables precise timing calculations for boat arrivals
and departures, ensuring that bookings are in sync with actual boat timings for a
smooth travel experience.
3. Dynamic Price Calculation: Through the Stop_Pricing table, ticket prices are
calculated based on route distance and selected stops, providing a fair and accurate
pricing model. This feature allows the system to adapt prices based on the start and
end stops, giving users clear and customized pricing for each journey.
4. User-Friendly Admin Dashboard: The project’s admin dashboard simplifies the
management of boats, routes, schedules, and bookings. The Admin_Logs table
records every action, providing traceability and ensuring accountability.
Administrators have full control over boat statuses, route details, and schedule
adjustments, enhancing operational flexibility.
5. Comprehensive Booking Management: Waterway allows users to manage their
bookings and cancellations easily. The Cancellations and Payments tables record
canceled bookings and associated refunds, creating a transparent and user-centric
experience. This also helps prevent overbooking and ensures seat availability is
accurately represented to all users.
6. Feedback and Complaint Resolution: The Enquiries table facilitates user feedback
and complaints, enabling administrators to respond to inquiries promptly. This
module supports ongoing service improvements by directly addressing user
concerns.

Limitations
Page 9

1. Dependency on Stable Internet: A reliable internet connection is required for users


to access real-time booking features and information. In areas with limited
connectivity, users may find it challenging to use the platform effectively.
2. Learning Curve for New Users: Users who are less familiar with digital platforms
may need time to adapt to the online booking system. While the interface aims to be
user-friendly, some may still experience a learning curve, especially when navigating
more advanced options in the system.
3. Enhanced User Interface and Flexibility: The current UI could benefit from
additional enhancements to cater to different user needs. For instance, showing seat
layouts directly on the booking page or providing visual indicators for seat types and
availability could further improve usability.
4. System Dependence on Interrelated Tables: The system relies on a highly
structured set of interconnected tables (Users, Boats, Routes, Seats, Route_Stops,
etc.), which may limit scalability without additional optimization. Changes or
expansions, such as adding new route options or adjusting schedules, require careful
coordination to maintain data integrity across tables.
5. Limited Offline Access: Currently, the system cannot be used offline, which limits
access for users in areas without constant internet. An offline feature could enhance
flexibility, especially for operators who may need access to booking details in remote
areas.

2. SYSTEM ANALYSIS
2.1. INTRODUCTION

In the context of the Waterway project, system analysis serves as the


foundation for developing a comprehensive online seat booking
reservation system for boat transportation. This phase is crucial as it
involves a thorough investigation of existing processes and the
identification of requirements necessary for a new, efficient system. The
aim is to design an intuitive, user-friendly platform that addresses the
shortcomings of traditional booking methods.

System analysis encompasses several key activities:


● Feasibility Study: Assessing the economic, technological, and operational viability
of the proposed system.
Page 10

● Fact-Finding Measures: Gathering data from stakeholders through interviews,


questionnaires, and observations to understand user needs and current system
limitations.
● Detailed Study of Existing Systems: Analyzing the current system's functionality
and identifying areas for improvement.
● Stakeholder Engagement: Continuous communication with users to ensure the new
system meets their needs and expectations.

This structured approach enables the identification of inputs, outputs, and processing
phases, ultimately leading to a clear understanding of how the new system can operate
effectively.

2.2. Stakeholders in the Waterway Project

2.2.1. ADMIN
● Role and Responsibilities: Admins oversee the entire Waterway platform,
managing user registrations, boat and route data, and transaction security. They
handle user feedback to continuously improve the system.
● Benefits: Admins enjoy streamlined operations, enhanced control over bookings,
and access to analytical tools for monitoring patterns and inventory management.
This data-driven approach enables informed decision-making, leading to improved
customer satisfaction.
● Challenges: Admins may struggle with adapting to new technologies and ensuring
effective user training. They must also prioritize data security to protect sensitive user
information

2.2.2. USER
● Role and Responsibilities: Users are passengers seeking to book boat seats
through the Waterway platform. Their interaction includes searching routes, reserving
seats, and processing payments. Users can also provide feedback or inquiries
regarding their bookings.
● Benefits: The Waterway system offers users a time-saving and efficient online
booking experience, reducing frustrations associated with traditional methods.
Features such as real-time availability, secure payments, and personal account
management enhance user convenience.
● Challenges: Users may face connectivity issues or have difficulty navigating the
platform if they are not familiar with online systems. Ensuring adequate support and
resources is essential for overcoming these challenges.
Page 11

2.3. SOFTWARE REQUIREMENTS SPECIFICATIONS

2.3.1. SYSTEM FEATURES


2.3.1.1. USER

● User Registration and Login: Users can securely create an account and log in to
access the system, ensuring personalized interactions.
● Search for Routes: Users can search for available boat routes based on their
desired start and end locations, facilitating easy navigation through options.
● View Schedules: Users can view the schedules for different boats along the
selected routes, including crucial departure and arrival times, enhancing planning.
● Seat Selection: Users can select their preferred seats from the available options,
giving them control over their booking experience.
Page 12

● Booking Confirmation: Upon successful payment, users receive a confirmation of


their booking via email, ensuring they have a record of their transaction.
● Booking Management: Users can view their booking history, modify, or cancel
existing bookings, providing flexibility and convenience.
● Profile Management: Users can update their personal information and change
passwords, ensuring that their account information is always up to date.

2.3.1.2. ADMIN

● Admin Login: Admins can securely log in to access the administrative interface,
ensuring that sensitive management functions are protected.
● User Management: Admins can view, edit, or delete user accounts and manage
user roles, maintaining control over the user base.
● Boat Management: Admins can add new boats, edit existing boat details, or remove
boats from the system, keeping the information current and relevant.
● Route Management: Admins can create, update, or delete routes and associated
stops, ensuring that the available options reflect current operations.
● Schedule Management: Admins can add, modify, or cancel boat schedules,
maintaining accurate and updated schedules for users.
● Booking Oversight: Admins can view all bookings and manage any issues related
to bookings or cancellations, ensuring effective resolution of user concerns.
● Reporting Tools: Admins can generate various reports, such as booking statistics
and user activity logs, facilitating data-driven decision-making.

2.3.2. NON-FUNCTIONAL REQUIREMENTS


Performance Requirements

● The system should support at least 1000 concurrent users without performance
degradation, ensuring a smooth experience during peak times.
● The average response time for user actions should be under 2 seconds, providing a
responsive interface that enhances usability.

Security Requirements

● All sensitive user data must be encrypted during transmission and storage to protect
against data breaches.
● Passwords should be hashed using secure algorithms, ensuring that user credentials
are safeguarded.
● The application must implement role-based access control to ensure proper user
privileges, preventing unauthorized access to sensitive features.

Usability Requirements

● The user interface should be intuitive, allowing users to complete their tasks with
minimal effort and confusion.
● The application should be accessible on various devices (desktop, tablet,
smartphone) with a responsive design, ensuring usability across platforms.

Reliability Requirements
Page 13

● The system should have an uptime of at least 99.9%, guaranteeing availability for
users at all times.
● Regular backups must be performed to prevent data loss, ensuring system integrity
and reliability.

Here's a detailed feasibility study note tailored for the Waterway boat seat booking project
website:

2.4. FEASIBILITY STUDY

Overview: The Waterway boat seat booking system is designed to streamline the booking
process for passengers and boat operators. This feasibility study evaluates the technical,
operational, and economic aspects of the system to ensure a sustainable and user-friendly
solution.

Technical Feasibility

The technical feasibility analysis confirms that the Waterway project can be developed with
reliable, available technology that ensures both performance and security.

● Technology Stack
The Waterway system will use PHP for backend development and MySQL as the
database. These technologies are popular and have extensive support, making it
easy to find development resources and troubleshoot any issues. The frontend will
use HTML, CSS, and JavaScript, which will ensure compatibility with various devices
and browsers. Using well-known technologies also enhances scalability and future-
proofing.
● Integration:
The system requires integration with third-party payment gateways to facilitate
secure and convenient online transactions. Since many payment providers offer
detailed documentation and established SDKs, integration is feasible with minimal
risk. This setup will ensure smooth, secure payments while enhancing user
confidence in the platform’s reliability.
● Scalability:
The architecture of the Waterway system is designed to be scalable, allowing it to
accommodate a growing number of users as the platform gains popularity. By
implementing load balancing and database optimization, the system can maintain
performance even as user traffic increases, thus ensuring long-term viability and
adaptability.

Operational Feasibility
Page 14

Operational feasibility assesses whether the system can meet the needs of both users and
administrators efficiently.

● User Adoption:
With a rising demand for online booking systems in various transportation sectors,
the Waterway project taps into an underserved market in the boating industry. An
online seat reservation platform for boats not only simplifies the booking experience
but also enhances convenience, allowing users to book seats from anywhere at any
time. This convenience is expected to boost user adoption significantly, particularly
as users shift away from traditional, manual booking processes.
● Training and Support:
To maximize operational efficiency, administrators and users will receive
comprehensive training on the system. Administrators will be trained to manage
bookings, monitor schedules, and address customer inquiries, while end-users will
benefit from an intuitive user interface designed for ease of use. Detailed
documentation and user guides will be provided to assist users in learning the
platform, which will encourage seamless adoption.

Economic Feasibility

Economic feasibility considers the financial costs of the project versus the anticipated
benefits, providing a clear picture of the system’s ROI.

● Cost Analysis:
The initial investment for the Waterway project includes development costs, server
hosting, and security measures to protect user data. Ongoing expenses such as
system maintenance, support, and updates will be necessary to keep the platform
operational and up-to-date. However, as the system becomes an essential tool for
booking, the initial costs are expected to be offset by the increased convenience and
efficiency it brings to both users and boat operators.
● Return on Investment (ROI):
The Waterway system has a high ROI potential due to its impact on user
engagement and satisfaction. As users prefer the ease of online bookings, the
platform will likely see a steady increase in seat reservations. This could translate
into increased revenue for boat operators who can reach a wider audience, improve
seat occupancy rates, and offer a premium service through the convenience of online
booking. The system will ultimately contribute to better customer loyalty and more
repeat business.
Page 15

2.5. SOFTWARE DEVELOPMENT LIFE CYCLE MODEL

SDLC Model: Agile Methodology

● The Agile SDLC model is characterized by its iterative nature, promoting flexibility
and ongoing collaboration among stakeholders.
● This approach enables continuous reassessment of project requirements, ensuring
that the development process is aligned with user needs and market changes.

Advantages
Page 16

● Flexibility: Agile allows for changes in project requirements at any stage, facilitating
quick adaptations to user feedback and new insights.
● Customer Collaboration: Regular engagement with stakeholders fosters better
alignment with user expectations, resulting in a product that meets their needs.
● Faster Delivery: Agile supports incremental releases, allowing users to access
functional features earlier and provide immediate feedback for further iterations.
● Improved Quality: Continuous testing and integration help identify and rectify
defects early, enhancing overall software quality.

Disadvantages

● Scope Creep: The inherent flexibility of Agile can lead to uncontrolled changes,
potentially expanding the project beyond its original scope.
● Less Predictability: The iterative nature makes it difficult to accurately estimate
timeframes and costs, complicating the forecasting of final delivery dates.
● Requires Experienced Team: Agile success relies on effective collaboration and
communication skills among team members, which may not be uniformly available.

These notes summarize the key points regarding the Agile methodology, its benefits, and
challenges, providing a clear understanding of its role in the Waterway project

2.6. HARDWARE AND SOFTWARE REQUIREMENTS

2.6.1. SOFTWARE SPECIFICATIONS

● Operating System: Windows 11


○ The latest version of Windows provides robust support for development tools
and a stable environment for running the web server and database.
● Web Server: XAMPP (Apache, MySQL, PHP)
○ XAMPP is an easy-to-install Apache distribution containing MySQL, PHP, and
Perl, essential for hosting the Waterway application locally during
development.
● Programming Languages:
○ PHP: Used for server-side scripting and handling business logic.
○ HTML: Provides the structure of web pages.
○ CSS: Manages the presentation and layout of the application.
○ JavaScript: Enables interactive web functionality.
○ jQuery: Simplifies JavaScript programming, especially for DOM manipulation.
○ AJAX: Facilitates asynchronous data retrieval, enhancing user experience by
updating parts of the web page without a full refresh.
● Database Management System: MySQL
○ A powerful relational database system for storing and retrieving application
data.
● Development Environment:
○ Any text editor or IDE (e.g., Visual Studio Code, PhpStorm)
Page 17

○ These tools provide features like syntax highlighting, code completion, and
debugging, which streamline the development process.

2.6.1.1. HTML

● Description: HTML (Hypertext Markup Language) is the standard markup language


used for creating the structure of web pages.
● Features: It provides semantically meaningful elements, enables the creation of
hyperlinks, and supports multimedia integration.

2.6.1.2. CSS

● Description: CSS (Cascading Style Sheets) is a stylesheet language used for


describing the presentation of HTML elements.
● Features: CSS allows for layout design, defines color schemes, implements
responsive design, and facilitates animations.

2.6.1.3. JavaScript

● Description: JavaScript is a programming language that enables the creation of


interactive web pages.
● Features: It supports client-side scripting, DOM manipulation, and event handling,
enhancing the user experience.

2.6.1.4. jQuery

● Description: jQuery is a fast, small JavaScript library that simplifies HTML document
traversing, event handling, and animation.
● Features: It ensures cross-browser compatibility and simplifies DOM manipulation,
making it easier to work with JavaScript.

2.6.1.4. AJAX

● Description: AJAX (Asynchronous JavaScript and XML) is a technique that allows


for asynchronous data retrieval from the server without refreshing the page.
● Features: It enables dynamic updates and improves user experience by loading
content in the background.

2.6.1.5. Bootstrap

● Description: Bootstrap is a front-end framework for developing responsive and


mobile-first websites.
● Features: It includes predefined CSS classes, a responsive grid system, and
components such as modals and carousels, facilitating rapid development.

2.6.1.6. PHP
Page 18

● Description: PHP (Hypertext Preprocessor) is a server-side scripting language


designed for web development.
● Features: PHP allows for dynamic content generation, facilitates database
interaction, and manages user sessions.

2.6.1.7. MySQL

● Description: MySQL is an open-source relational database management system.


● Features: It provides data storage and retrieval capabilities, supports multi-user
access, and complies with ACID (Atomicity, Consistency, Isolation, Durability)
principles.

2.6.1.8. XAMPP

● Description: XAMPP is a free and open-source cross-platform web server solution


stack package.
● Features: It includes an Apache server, MySQL database, and support for PHP and
Perl, with an easy installation process.

2.6.1.9. Composer

● Description: Composer is a dependency manager for PHP that simplifies the


management of libraries and packages.
● Features: It allows for the easy installation and updating of PHP libraries, ensuring
that all dependencies are managed effectively.

2.6.1.10. PHPMailer

● Description: PHPMailer is a popular library for sending emails from PHP


applications.
● Features: It simplifies email sending, supports SMTP, and allows for attachments,
making it a robust solution for email notifications in the Waterway project.

2.6.1.11. mPDF

● Description: mPDF is a PHP library that generates PDF files from HTML content.
● Features: It enables the creation of PDF documents dynamically, allowing for the
generation of tickets and reports in the Waterway project.

2.6.2. HARDWARE REQUIRMENTS

● Processor: Intel i5 or equivalent


○ A capable processor ensures smooth performance during development and
testing of the application.
● RAM:
○ Minimum: 8 GB
Page 19

○ Recommended: 16 GB for better performance


○ Sufficient RAM is crucial for running development tools and the server
concurrently without performance degradation.
● Storage:
○ At least 256 GB SSD or HDD
○ Adequate storage is required for the operating system, development tools,
application files, and databases.
● Network:
○ Reliable internet connection for online features and testing
○ An internet connection is essential for accessing resources, libraries, and for
testing online functionalities of the application.
● Display:
○ Minimum resolution of 1366 x 768
○ A higher resolution is recommended for better visibility of code and design
elements during development.

These requirements outline the necessary software and hardware specifications to


effectively develop, test, and deploy the Waterway project, ensuring a smooth development
experience.

3. SYSTEM DESIGN
3.1 SYSTEM ARCHITECTURE
Page 20

The Waterway project is built on a multi-tier architecture that facilitates separation of


concerns, enhancing maintainability and scalability. The architecture consists of three
primary layers:

● Presentation Layer: This layer provides the user interface, developed using HTML,
CSS, and JavaScript. It ensures a responsive and user-friendly experience for end-
users.
● Application Layer: Implemented in PHP, this layer contains the server-side logic
responsible for processing user requests, managing business rules, and interacting
with the data layer. It acts as a bridge between the user interface and the database.
● Data Layer: The MySQL database serves as the data layer, storing essential
information such as user accounts, bookings, routes, and other relevant data
necessary for the application's functionality.

3.2 MODULE DESIGN


The system is organized into several distinct modules, each responsible for specific
functionalities:

● User Authentication: This module handles user login, registration, and session
management. It ensures secure access to the system, maintaining user data
confidentiality.
● Booking System: This module manages all aspects of the booking process,
including route selection, schedule management, seat selection, and payment
processing. It provides users with an efficient way to reserve seats for their desired
trips.
● Admin Panel: The admin panel is designed for administrators to manage users,
boats, and routes. It also allows the generation of reports for monitoring system
activity and user engagement.

User Authentication

The user authentication module includes the following functionalities:

● Registration: Users can create accounts by providing personal details, which are
validated and securely stored in the database, ensuring data integrity and security.
● Login: Users can log in using their credentials. Secure session management is
implemented to maintain user sessions and enhance security.
● Password Management: The system allows users to reset their passwords through
a secure email verification process, promoting user convenience and security.

Reports Generated
Page 21

The Waterway system generates various reports that are crucial for both users and
administrators, including:

● Booking History: Detailed reports on user bookings, including past trips and seat
selections, providing users with a comprehensive view of their activities.
● User Activity: Reports tracking user engagement and interactions with the system,
enabling better understanding of user behavior and preferences.
● Financial Transactions: Reports detailing financial transactions related to bookings
and payments, assisting in financial monitoring and management.
Page 22

3.3. DATABASE DESIGN

Objectives of Database Design

● Data Integrity: Ensure accuracy and consistency of data over its lifecycle.
● Data Accessibility: Allow users to retrieve and manipulate data efficiently.
● Data Security: Protect sensitive user information and control access.

3.3.1. NORMALIZATION

Normalization is a critical process in database design aimed at reducing data redundancy


and improving data integrity. It involves organizing data within the database to ensure that
relationships between data elements are logically sound and that data can be efficiently
retrieved and updated. The Waterway project applies the following normal forms to its
database tables:

First Normal Form (1NF)

To achieve First Normal Form, the database tables are structured such that:

● Primary Key: Each table has a designated primary key, which uniquely identifies
each record in that table. This ensures that there are no duplicate entries and allows
for efficient retrieval of data.
● Atomicity: All entries in a column must be of the same data type, and each column
must hold atomic (indivisible) values. For example, in a Users table, each field (e.g.,
username, email, phone) should contain a single value rather than a list or set of
values.
● Elimination of Repeating Groups: There should be no repeating groups or arrays
within a table. If there are multiple values for a single attribute, they should be moved
to a separate table.

Example: A Bookings table might include columns like booking_id, user_id, boat_id,
and date. Each of these columns would contain single values that define each booking.

Second Normal Form (2NF)

To reach Second Normal Form, the database must meet all the requirements of 1NF, plus:

● Full Functional Dependency: All non-key attributes in a table must be fully


dependent on the primary key. This means that if a non-key attribute depends on
only part of a composite primary key, the table must be decomposed into separate
tables to eliminate partial dependencies.

Example: In a Bookings table with a composite primary key consisting of booking_id


and boat_id, if boat_name is dependent only on boat_id, it should be moved to a
separate Boats table to prevent partial dependency.

Third Normal Form (3NF)


Page 23

To achieve Third Normal Form, the database must satisfy the requirements of 2NF, along
with:

● No Transitive Dependency: Non-key attributes should not depend on other non-key


attributes. This means that if a non-key attribute is dependent on another non-key
attribute, the table must be restructured to eliminate that dependency.

Example: If the Users table contains a city field and a country field, and country can
be derived from city, it indicates a transitive dependency. To eliminate this, country
should be stored in a separate Countries table, linked to the Users table.

Importance of Normalization

● Data Integrity: By structuring the database correctly, normalization ensures data


accuracy and consistency, which is crucial for the reliability of the Waterway project.
● Reduced Redundancy: Normalization minimizes data duplication, which saves
storage space and reduces the risk of discrepancies.
● Efficient Data Access: Well-structured tables allow for faster and more efficient
queries, making the system responsive and user-friendly.
● Easier Maintenance: Normalized databases are generally easier to maintain and
update, as changes are localized to specific tables without affecting related data.

3.3.2.TABLE STRUCTURE
A table is a collection of complete details about a particular subject. Data is organized in
rows and columns, where each row is called a record and each column is called a field. The
data for each record is stored in tables in the backend, which directly link to input forms.
Multiple tables can be linked to input forms, allowing details from different tables to be
collected and displayed in the output. The Waterway project comprises 14 main tables,
detailed as follows

1. Users
2. Boats
3. Routes
4. Route_Stops
5. Schedules
6. Seats
7. Seat_Bookings
8. Route_Stop_Times
9. Payments
10. Cancellation
11. Admin_logs
12. Stop_Pricing
13. Tickets
14. Enquiries
Page 24

1. Users Table

description:Stores user information, including login credentials and


roles within the system.

2. Boats Table

description:Contains information about each boat, such as name,


capacity, and operational status.
Page 25

3. Routes Table

description:Defines the various routes available for travel, with start and
end locations.

4. Route_Stops Table

description:Lists stops along each route and the distance from the start.

5. Seats Table
Page 26

description:Defines each seat on a boat, including the seat type.

6. Schedules Table

description:Details the schedule for each boat on a given route,


including departure and arrival times.

7. Seat_Bookings Table
Page 27

description:Records each seat booking, linking the booking to specific


schedules, seats, and users.

8. Route_Stops_Times Table

description:Records time Difference of each stop from starting

9. Payments Table

description:Manages payment records associated with bookings.

10. Cancellations Table


Page 28

description:Logs cancellation details, including the date and reason.

11. Admin_Logs Table

description:Stores logs of administrative actions taken on the platform.

12. Stop_Pricing Table

description:Defines pricing between different route stops.

13. Tickets Table


Page 29

description:Holds information about issued tickets and their


corresponding bookings.

14. Enquiries Table

description:Stores user enquiries and any admin responses, enabling


complaint management.

3.3.3. DATA FLOW DIAGRAMS (DFD)

3.3.3.1. INTRODUCTION TO DATA FLOW DIAGRAMS

A Data Flow Diagram (DFD) is a graphical tool used to depict the flow of information within a
system, illustrating how data enters, moves through, and exits various processes. DFDs are
an essential part of system design, allowing stakeholders to visualize the functional aspects
of a system without focusing on technical implementation details. By highlighting data
sources, data processes, and storage points, DFDs offer a structured way to analyze the
interactions between different components of a system, making them invaluable in the
planning and design stages.

Importance of Data Flow Diagrams

1. Understanding System Functionality: DFDs provide a simplified and high-level


overview of a system’s processes and data flow, making it easier for developers,
project managers, and clients to understand the system's core functionality.
Page 30

2. Identifying Data Requirements: DFDs help map out the data flow, identifying
essential inputs, outputs, and data processing requirements. This helps with effective
database design and software development by outlining what data the system needs
to function.
3. Facilitating Communication: DFDs act as a universal language between technical
and non-technical stakeholders. This shared understanding helps teams align on
system requirements and design goals.
4. Spotting Inefficiencies: By visually representing data flows, DFDs can reveal
inefficiencies or redundancies, enabling the team to optimize workflows and improve
system performance.
5. Documenting System Processes: DFDs serve as documentation that is valuable
for future reference, providing insight into the system's processes and supporting
easier maintenance and updates.

Overall, DFDs play a critical role in system analysis and design by clarifying data flow,
refining requirements, and enhancing the communication and efficiency of system
development.
Page 31

Rules for Constructing Data Flow Diagrams

To create and interpret DFDs effectively, adhere to the following


guidelines:
● Processes:
○ Represented by circles or rounded rectangles.
Page 32

○ Must have at least one input and one output.


○ Should be numbered for easy reference (e.g., 1, 2, 3).
● Data Flows:
○ Indicated by arrows showing the direction of data movement.
○ Each arrow should be labeled to clarify the type of data being transferred
(e.g., “User Details,” “Payment Info”).

● Data Stores:
○ Represented by open-ended rectangles or parallel lines.
○ Indicate where data is stored within the system.
○ Must connect to processes that read from or write to them.
● External Entities:
○ Depicted as rectangles or ovals.
○ Represent sources or destinations of data outside the system (e.g., users,
external systems).
○ Should be labeled clearly to indicate their role.
● Leveling:
○ DFDs can be decomposed into multiple levels (Level 0, Level 1, etc.) to show
more detail.
○ Level 0 DFD shows the entire system as a single process.
○ Level 1 DFD breaks down Level 0 processes into sub-processes, further
detailing data flows.
● No Loops or Cycles:
○ DFDs should not contain loops; data should flow in one direction without
returning to a previous step.
● Clarity and Simplicity:
○ DFDs should be simple and easy to understand, avoiding unnecessary
complexity.
○ Each diagram should focus on a specific part of the system to maintain clarity.

3.3.3.2. DATA FLOW DIAGRAM

In the context of the Waterway project, DFDs will be essential for:

● Mapping User Interactions: Illustrating how users interact with the system when
making bookings, managing profiles, and processing payments.
● Defining System Processes: Clearly outlining the processes involved in seat
booking, payment processing, and user management.
● Supporting System Design: Providing a foundation for designing database
structures and software architecture by identifying data inputs and outputs.
● Enhancing Collaboration: Facilitating discussions among team members and
stakeholders, ensuring a shared understanding of the system's functionality.

Each component in a DFD is labelled with a descriptive name. Process name are further
identified with number. Context level DFD is draw first. Then the process is decomposed into
Page 33

several elementary levels and is represented in the order of importance. A DFD describes
what data flow (logical) rather than how they are processed, so it does not depend on
hardware, software, and data structure or file organization. A DFD methodology is quite
effective; especially when the required design.

Zeroth level DFD for Waterway


Page 34

First Level DFD for Waterway


Page 35

Seat Management Module DFD

Booking Management Module DFD


Page 36

Ticket Management Module DFD


Page 37

Schedule Management Module DFD


Page 38

Payment Management Module DFD


Page 39

Second Level DFD for Waterway


Page 40

3.4 INTERFACE DESIGN


Page 41

These modules can apply to hardware, software or the interface between a user and
a machine. An example of a user interface could include a GUI, a control panel for a
nuclear power plant, or even the cockpit of an aircraft. In systems engineering, all the
inputs and outputs of a system, subsystem, and its components are listed in an
interface control document often as part of the requirements of the engineering
project. The development of a user interface is a unique field.

3.4.1. USER INTERFACE SCREEN DESIGN

The user interface design is very important for any application. The interface design
describes how the software communicates within itself, to system that interpreted
with it and with humans who use it. The input design is the process of converting the
user-oriented inputs into the computer-based format. The data is fed into the system
using simple inactive forms. The forms have been supplied with messages so that
the user can enter data without facing any difficulty. They data is validated wherever
it requires in the project. This ensures that only the correct data have been
incorporated into system. The goal of designing input data is to make the automation
as easy and free from errors as possible. For providing a good input design for the
application easy data input and selection features are adopted. The input design
requirements such as user friendliness, consistent format and interactive dialogue for
giving the right messages and help for the user at right are also considered for
development for this project.

Input Design is a part of the overall design. The input methods can be broadly
classified into batch and online. Internal controls must be established for monitoring
the number of inputs and for ensuring that the data are valid. The basic steps
involved in input design are:

• Review input requirements.

• Decide how the input data flow will be implemented.

• Decide the source document.

• Prototype on line input screens.

• Design the input screens.

The quality of the system input determines the quality of the system output. Input
specifications describe the manner in which data enter the system for processing.
Input design features can ensure the reliability of the system and produce results
from accurate data. The input design also determines whether the user can interact
efficiently with the system. These are the two sample input forms
Page 42

Login input form

The login input form is a crucial component of the Waterway application, facilitating
user authentication and access to the platform's features. It consists of two primary
input fields: Email and Password, each associated with a label for enhanced
accessibility. The form employs the POST method to securely transmit user
credentials to the loginuser.php script for authentication. It incorporates HTML5
validation attributes to ensure that both fields are filled out before submission, with
error messages displayed for failed login attempts, providing immediate feedback to
the user. Below the form, links are available for users without accounts and those
who have forgotten their passwords, promoting engagement. The form is centered
using CSS Flexbox and features a dynamic gradient background, creating an
engaging visual experience. Styled with a white background, rounded corners, and
subtle shadows, it has a modern appearance that enhances usability. It is
responsive, adapting to various screen sizes, and includes explicit label associations
to improve accessibility. Overall, the login input form serves as a secure gateway for
users to access their accounts, encourages interaction with the platform, and
enhances the user experience through immediate feedback and visual appeal. By
focusing on usability, accessibility, and aesthetics, the form aligns with best practices
in user interface design, making it an essential component of the application.
Page 43

Admin add boats input Form

The provided PHP code is a comprehensive management interface for the boats in
the Waterway application, designed specifically for administrators to efficiently
handle boat data. It begins by checking if an admin is logged in, redirecting to the
dashboard if not, ensuring secure access to management features. The code
establishes a database connection for data retrieval and manipulation while
incorporating a logging function to track administrative actions, such as adding,
editing, and deleting boats. Each action is processed via POST requests, utilizing
prepared statements to prevent SQL injection, which enhances security.

The script fetches all boat records and allows for filtering based on boat name,
capacity, and status, improving the user experience by enabling quick searches. The
HTML structure creates a user-friendly interface, featuring forms for adding new
boats and a table displaying existing boats with inline editing capabilities. This layout
facilitates straightforward management tasks, as administrators can easily edit or
delete records.

Additionally, the use of Bootstrap for styling ensures that the interface is visually
appealing and responsive, adjusting seamlessly across devices. Error reporting is
enabled to aid debugging during development but should be disabled in a production
environment for security reasons. Input sanitization is also implemented, and only
logged-in administrators can access the page, further enhancing security. Overall,
this management code for the Waterway application is a well-structured solution that
empowers administrators to maintain accurate and organized boat records
efficiently.
Page 44

3.4.2. OUTPUT DESIGN

A quality output is one, which meets the requirements of end user and presents the
information clearly. In any system result of processing are communicated to the user
and to the other system through outputs. In the output design it is determined how
the information is to be displayed for immediate need. It is the most important and
direct source information is to the user. Efficient and intelligent output design
improves the system’s relationships with the user and helps in decision -making. The
objective of the output design is to convey the information of all the past activities,
current status and to emphasis important events. The output generally refers to the
results and information that is generated from the system. Outputs from computers
are required primarily to communicate the results of processing to the users. Output
also provides a means of storage by copying the results for later reference in
consultation. There is a chance that some of the end users will not actually operate
the input data or information through workstations, but will see the output from the
system.

Two phases of the output design are:


1. Output Definition
2. Output Specification

Output Definition takes into account the type of output contents, its frequency and its
volume, the appropriate output media is determined for output. Once the media is
chosen, the detail specification of output documents are carried out. The nature of
output required from the proposed system is determined during logical design stage.
It takes the outline of the output from the logical design and produces output as
specified during the logical design phase.

In a project, when designing the output, the system analyst must accomplish the
following:

• Determine the information to present.

• Decide whether to display, print, speak the information and select the output
medium.

• Arrange the information in acceptable format.

• Decide how to distribute the output to the intended receipt.

Thus by following the above specifications, a high quality output can be generated
Example for outputs generated in this project:
Page 45

This line chart is generated for admin .This line chart gives which stops are mostly
Booked by users .Here Lake A is mostly booked between 01-01-2024 and 31-12-2024
That gives assumption most people are from that stop and need more boats in
that route
Page 46

4. IMPLEMENTATION

Implementation is the stage of the project when the theoretical design is


turned into a working system. The implementation stage is a systems
project in its own right. It includes careful planning, investigation of
current system and its constraints on implementation, design of methods
to achieve the changeover, training of the staff in the changeover
procedure and evaluation of changeover method

4.1 CODING STANDARDS

Writing an efficient software code requires a thorough knowledge of


programming. This knowledge can be implemented by following a coding
style which comprises several guidelines that help in writing the software
code efficiently and with minimum errors. These guidelines, known as
coding guidelines, are used to implement individual programming
language constructs, comments, formatting, and so on. These
guidelines, if followed, help in preventing errors, controlling the
complexity of the program, and increasing the readability and
understandability of the program. A set of comprehensive coding
guidelines encompasses all aspects of code development. To ensure
that all developers work in a harmonized manner (the source code
should reflect a harmonized style as a single developer had written the
entire code in one session), the developers should be aware of the
coding guidelines before starting a software project. Moreover, coding
guidelines should state how to deal with the existing code when the
software incorporates it or when maintenance is performed. Since there
are numerous programming languages for writing software codes, each
having different features and capabilities, coding style guidelines differ
from one language to another. However, there are some basic
guidelines which are followed in all programming languages. These
include naming conventions, commenting conventions, and formatting
conventions.
1. File header comments are useful in providing information related to a
file as a whole and comprise identification information such as date of
creation, Dame of the creator, and a brief description of the software
code.
Page 47

2. Trailing comments are used to provide explanation of a single line


of code. These comments are used to clarify the complex code. These
also specify the function of the abbreviated variable names that are not
clear. In some languages, trailing comments are used with the help of a
double slash (//)

3. Indentation: This refers to one or more spaces left at the beginning of


statements in the program. Indentation is useful in making the code
easily readable. However, the spaces used for indentation should be
followed in the entire program.

4. Implementing coding guidelines: If coding guidelines are used in a


proper manner, errors can be detected at the time of writing the software
code. Such detection in early stages helps in increasing the performance
of the software as well as reducing the additional and unplanned costs of
correcting and removing errors. Moreover, if a well-defined coding
guideline is applied, the program yields a software system that is easy to
comprehend and maintain.

4.2. SAMPLE CODE

Profile.php

<?php
session_start();
// Enable error reporting for debugging (remove in production)
//error_reporting(E_ALL);
//ini_set('display_errors', 1);

// Include your database connection file


include 'db_connection.php'; // Ensure this file is present and contains a valid
connection

// Check for the cancellation message


if (isset($_SESSION['cancel_message'])) {
Page 48

echo '<div class="alert alert-success" role="alert">' .


htmlspecialchars($_SESSION['cancel_message']) . '</div>';
unset($_SESSION['cancel_message']); // Clear the message after displaying it
}
$user_id = $_SESSION['user_id']; // Assuming you set this during login

// Initialize $user_data
$user_data = [];

// Fetch user data


$sql_user = "SELECT name, email, phone_number, address FROM Users WHERE
user_id = ?";
$stmt_user = $conn->prepare($sql_user);

if ($stmt_user === false) {


die("Error preparing statement: " . $conn->error);
}

$stmt_user->bind_param("i", $user_id);

if (!$stmt_user->execute()) {
die("Error executing query: " . $stmt_user->error);
}

$result_user = $stmt_user->get_result();

if ($result_user->num_rows > 0) {
$user_data = $result_user->fetch_assoc();
}

$stmt_user->close();

// Initialize variables for form handling


$update_success = "";
$update_error = "";

// Handle form submission for updating user details


if ($_SERVER['REQUEST_METHOD'] === 'POST' &&
isset($_POST['update_profile'])) {
// Retrieve and sanitize user inputs
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$phone_number = trim($_POST['phone_number']);
$address = trim($_POST['address']);
Page 49

$password = trim($_POST['password']);
$confirm_password = trim($_POST['confirm_password']);

// Basic validation
if (empty($name) || empty($email)) {
$update_error = "Name and Email are required.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$update_error = "Invalid email format.";
} elseif (!empty($password) && $password !== $confirm_password) {
$update_error = "Passwords do not match.";
} else {
// Prepare the SQL statement
if (!empty($password)) {
// If password is being updated
$sql_update = "UPDATE Users SET name = ?, email = ?, phone_number
= ?, address = ?, password = ? WHERE user_id = ?";
$stmt = $conn->prepare($sql_update);
// Hash the password before storing
$hashed_password = password_hash($password, PASSWORD_BCRYPT);
$stmt->bind_param("sssssi", $name, $email, $phone_number, $address,
$hashed_password, $user_id);
} else {
// If password is not being updated
$sql_update = "UPDATE Users SET name = ?, email = ?, phone_number
= ?, address = ? WHERE user_id = ?";
$stmt = $conn->prepare($sql_update);
$stmt->bind_param("ssssi", $name, $email, $phone_number, $address,
$user_id);
}

if ($stmt->execute()) {
$update_success = "Profile updated successfully.";
// Refresh user data
$user_data['name'] = htmlspecialchars($name);
$user_data['email'] = htmlspecialchars($email);
$user_data['phone_number'] = htmlspecialchars($phone_number);
$user_data['address'] = htmlspecialchars($address);
// Update session variables if necessary
$_SESSION['user_name'] = $name;
} else {
// Handle errors (e.g., duplicate email)
if ($conn->errno === 1062) { // Duplicate entry
$update_error = "Email already exists.";
} else {
Page 50

// Log the actual error and show a generic message


error_log("Profile Update Error: " . $conn->error);
$update_error = "An error occurred while updating your profile. Please try
again later.";
}
}

$stmt->close();
}
}

// Fetch user's tickets


$sql_tickets = "
SELECT
t.ticket_id,
t.booking_id,
t.amount,
sb.seat_id,
sb.booking_date,
b.boat_id,
sc.schedule_id,
rs_start.location AS start_stop,
rs_end.location AS end_stop
FROM
Tickets t
JOIN
Seat_Bookings sb ON t.booking_id = sb.booking_id
JOIN
Boats b ON sb.boat_id = b.boat_id
JOIN
Schedules sc ON sb.schedule_id = sc.schedule_id
JOIN
Route_Stops rs_start ON sb.start_stop_id = rs_start.stop_id
JOIN
Route_Stops rs_end ON sb.end_stop_id = rs_end.stop_id
WHERE
sb.user_id = ?
ORDER BY
sb.booking_date DESC
";

$stmt_tickets = $conn->prepare($sql_tickets);

if ($stmt_tickets === false) {


Page 51

error_log("SQL Prepare Error (Tickets): " . $conn->error);


die("An error occurred while fetching your tickets. Please try again later.");
}

$stmt_tickets->bind_param("i", $user_id);

if (!$stmt_tickets->execute()) {
error_log("SQL Execute Error (Tickets): " . $stmt_tickets->error);
die("An error occurred while fetching your tickets. Please try again later.");
}

$result_tickets = $stmt_tickets->get_result();
// Fetch user's enquiries
$sql_enquiries = "SELECT enquiry_id, name, message, created_at, response,
response_created_at FROM Enquiries WHERE user_id = ?";
$stmt_enquiries = $conn->prepare($sql_enquiries);

if ($stmt_enquiries === false) {


error_log("SQL Prepare Error (Enquiries): " . $conn->error);
die("An error occurred while fetching your enquiries. Please try again later.");
}

$stmt_enquiries->bind_param("i", $user_id);

if (!$stmt_enquiries->execute()) {
error_log("SQL Execute Error (Enquiries): " . $stmt_enquiries->error);
die("An error occurred while fetching your enquiries. Please try again later.");
}

$result_enquiries = $stmt_enquiries->get_result();
?>

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>User Profile</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/custom.css">
<style>
.container {
Page 52

margin-top: 0px; /* Reduced margin for a tighter layout */


margin-bottom: 0px;
}

.nav-tabs .nav-link.active {
background-color: #f8f9fa;
border-color: #dee2e6 #dee2e6 #fff;
}

.form-section,
.bookings-section {
margin-top: 20px;
padding: 20px;
border-radius: 8px; /* Added rounded corners */
background-color: #f8f9fa; /* Light background for sections */
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Subtle shadow */
}

.table-responsive {
margin-top: 20px;
}

@media (max-width: 576px) {


.nav-tabs .nav-link {
text-align: center; /* Center-align for mobile */
}

.form-group {
margin-bottom: 15px; /* Increase margin for mobile spacing */
}
}
/*enquiry style*/
.direct-chat-msg {
display: flex;
align-items: flex-start; /* Aligns the user icon and message vertically */
margin-bottom: 15px; /* Spacing between messages */
}

.direct-chat-infos {
flex: 1; /* Takes up available space */
}

.direct-chat-name {
font-weight: bold; /* Makes the username bold */
Page 53

.direct-chat-text {
background-color: #f8f9fa; /* Light background for the message */
border-radius: 5px; /* Rounded corners */
padding: 10px; /* Padding for the message text */
margin-top: 5px; /* Space between name/timestamp and message */
}

.direct-chat-timestamp {
font-size: 0.9em; /* Slightly smaller font for the timestamp */
color: #6c757d; /* Muted color for the timestamp */
}

.direct-chat-msg i {
margin-right: 10px; /* Space between icon and name */
color: #007bff; /* Color for the user icon */
}

.response-text {
background-color: #d1ecf1; /* Light background for the response */
border-radius: 5px; /* Rounded corners */
padding: 10px; /* Padding for the response text */
margin-top: 5px; /* Space above the response */
}

.response-timestamp {
font-size: 0.9em; /* Smaller font for the response timestamp */
color: #6c757d; /* Muted color for the response timestamp */
}

.user-group {
margin-top: 20px;
border: 1px solid #007bff;
padding: 10px;
border-radius: 5px;
cursor: pointer; /* Cursor changes to pointer on hover */
}

.chat-details {
display: none; /* Hide chat details by default */
margin-top: 10px;
}
Page 54

.notification {
font-weight: bold;
color: red; /* Highlight the notification count */
}
</style>
</head>

<body>
<?php include 'includes/header.php'; ?>
<br><br><br><br>
<div class="container">
<h3 class="mb-4 text-center">User Profile</h3>

<!-- Display Success or Error Messages -->


<?php if ($update_success): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
<?= htmlspecialchars($update_success) ?>
<button type="button" class="close" data-dismiss="alert" aria-
label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<?php endif; ?>
<?php if ($update_error): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<?= htmlspecialchars($update_error) ?>
<button type="button" class="close" data-dismiss="alert" aria-
label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<?php endif; ?>

<!-- Tabs Navigation -->


<ul class="nav nav-tabs" id="profileTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="profile-info-tab" data-toggle="tab"
href="#profile-info" role="tab" aria-controls="profile-info" aria-selected="true">
<i class="fas fa-user"></i> Profile Information
</a>
</li>
<li class="nav-item">
<a class="nav-link" id="bookings-tab" data-toggle="tab" href="#bookings"
role="tab" aria-controls="bookings" aria-selected="false">
Page 55

<i class="fas fa-ticket-alt"></i> My Bookings


</a>
</li>
<li class="nav-item">
<a class="nav-link" id="enquiries-tab" data-toggle="tab" href="#enquiries"
role="tab" aria-controls="enquiries" aria-selected="false">
<i class="fas fa-comments"></i> My Enquiries
</a>
</li>
</ul>

<div class="tab-content" id="profileTabContent">


<!-- Profile Information Tab -->
<div class="tab-pane fade show active" id="profile-info" role="tabpanel" aria-
labelledby="profile-info-tab">
<div class="form-section">
<h4>Edit Profile</h4>
<form method="POST" action="profile.php">
<div class="form-row">
<div class="form-group col-md-6">
<label for="name"><i class="fas fa-user"></i> Name</label>
<input type="text" class="form-control" id="name" name="name"
required value="<?= htmlspecialchars($user_data['name'] ?? '') ?>">
</div>
<div class="form-group col-md-6">
<label for="email"><i class="fas fa-envelope"></i> Email</label>
<input type="email" class="form-control" id="email"
name="email" required value="<?= htmlspecialchars($user_data['email'] ?? '') ?>">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="phone_number"><i class="fas fa-phone"></i> Phone
Number</label>
<input type="text" class="form-control" id="phone_number"
name="phone_number" value="<?=
htmlspecialchars($user_data['phone_number'] ?? '') ?>">
</div>
<div class="form-group col-md-6">
<label for="address"><i class="fas fa-home"></i>
Address</label>
<input type="text" class="form-control" id="address"
name="address" value="<?= htmlspecialchars($user_data['address'] ?? '') ?>">
Page 56

</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="password"><i class="fas fa-lock"></i> New
Password</label>
<input type="password" class="form-control" id="password"
name="password">
</div>
<div class="form-group col-md-6">
<label for="confirm_password"><i class="fas fa-lock"></i>
Confirm Password</label>
<input type="password" class="form-control"
id="confirm_password" name="confirm_password">
</div>
</div>
<button type="submit" name="update_profile" class="btn btn-
primary">Update Profile</button>
</form>
</div>
</div>

<!-- View Tickets Tab -->


<!-- View Tickets Tab -->
<div class="tab-pane fade" id="bookings" role="tabpanel" aria-labelledby="tickets-
tab">
<div class="bookings-section">
<h4>Your Tickets</h4>
<?php if ($result_tickets->num_rows > 0): ?>
<ul class="list-group">
<?php while ($ticket = $result_tickets->fetch_assoc()): ?>
<li class="list-group-item">
<strong>Booking Date:</strong> <?=
htmlspecialchars($ticket['booking_date']) ?><br>
<strong>Ticket ID:</strong> <?=
htmlspecialchars($ticket['ticket_id']) ?><br>
<strong>Amount:</strong> ₹<?= htmlspecialchars($ticket['amount']) ?
><br>
<a href="view_ticket.php?ticket_id=<?=
htmlspecialchars($ticket['ticket_id']) ?>&user_id=<?= htmlspecialchars($user_id) ?>"
class="btn btn-info btn-sm mt-2">
View Ticket
</a>
</li>
Page 57

<?php endwhile; ?>


</ul>
<?php else: ?>
<div class="alert alert-warning" role="alert">
You have no tickets booked.
</div>
<?php endif; ?>
</div>
</div>
<div class="tab-pane fade" id="enquiries" role="tabpanel" aria-
labelledby="enquiries-tab">
<div class="enquiries-section">
<?php if ($result_enquiries->num_rows > 0): ?>
<h4 class="section-title">Your Enquiries</h4>
<div class="table-responsive">
<?php while ($enquiry = $result_enquiries->fetch_assoc()): ?>
<div class="direct-chat-msg">
<i class="fas fa-user"></i> <!-- Replace with the actual user icon if
necessary -->
<div class="direct-chat-infos">
<span class="direct-chat-name"><?=
htmlspecialchars($enquiry['name']) ?></span>
<span class="direct-chat-timestamp"><?=
htmlspecialchars($enquiry['created_at']) ?></span>
<div class="direct-chat-text">
<?= htmlspecialchars($enquiry['message']) ?>
</div>
</div>
</div>
<?php if (!empty($enquiry['response'])): ?>
<div class="direct-chat-msg">
<i class="fas fa-user-shield"></i> <!-- Replace with the response
icon if necessary -->
<div class="direct-chat-infos">
<span class="direct-chat-name">Admin</span>
<span class="response-timestamp"><?=
htmlspecialchars($enquiry['response_created_at']) ?></span>
<div class="response-text">
<?= htmlspecialchars($enquiry['response']) ?>
</div>
</div>
</div>
<?php endif; ?>
<?php endwhile; ?>
Page 58

</div>
<?php else: ?>
<p class="alert alert-warning">No enquiries found.</p>
<?php endif; ?>
</div>
</div>

<br><br>

<!-- Include footer -->


<?php include 'includes/footer1.php'; ?>

</body>
</html>
Page 59

5.TESTING

Coding conventions are a set of guidelines for a specific programming


language that recommend programming style, practices and methods for
each aspect of a piece program written in this language. These
conventions usually cover file organization, indentation, comments,
declarations, statements, white space, naming conventions,
programming practices, programming principles, programming rules of
thumb, architectural best practices, etc. These are guidelines for
software structural quality. Software programmers are highly
recommended to follow these guidelines to help improve the readability
of their source code and make software maintenance easier.

5.1. TEST CASES

The objective of system testing is to ensure that all individual programs are working
as expected, that the programs link together to meet the requirements specified and
to ensure that the computer system and the associated clerical and other procedures
work together. The initial phase of system testing is the responsibility of the analyst
who determines what conditions are to be tested, generates test data, produced a
schedule of expected results, runs the tests and compares the computer produced
results with the expected results with the expected results. The analyst may also be
involved in procedures testing. When the analyst is satisfied that the system is
working properly, he hands it over to the users for testing. The importance of system
testing by the user must be stressed. Ultimately it is the user must verify the system
and give the go-ahead.

During testing, the system is used experimentally to ensure that the software does
not fail, i.e., that it will run according to its specifications and in the way users expect
it to. Special test data is input for processing (test plan) and the results are examined
to locate unexpected results. A limited number of users may also be allowed to use
the system so analysts can see whether they try to use it in unexpected ways. It is
preferably to find these surprises before the organization implements the system and
depends on it. In many organizations, testing is performed by person other than
those who write the original programs. Using persons who do not know how certain
parts were designed or programmed ensures more complete and unbiased testing
and more reliable software.
Page 60

Parallel running is often regarded as the final phase of system testing. Since he
parallel operation of two systems is very demanding in terms of user resources it
should be embarked on only if the user is satisfied with the results of testing -- it
should not be started if problems are known to exist. Testing is the major quality
control measure during software development. Its basic function is to detect errors in
the software. Thus the goal of testing is to uncover requirement design and coding
errors in the program. Testing is the process of correcting a program with intends of
finding an error. Different types of testing are

5.1.1. UNIT TESTING

In computer programming, unit testing is a method by which individual


units of source code, sets of one or more computer program modules
together with associated control data, usage procedures, and operating
procedures are tested to determine if they are fit for use In this testing
we test each module individual and integrated the overall system. Unit
testing focuses verification efforts on the smaller unit of software design
in the module. This is also known as module testing. The modules of the
system are tested separately. The testing is carried out during
programming stage itself. In this testing step each module is found to
working satisfactory as regard to the expected output from the module.
There are some validation checks for verifying the data input given by
the user which both the formal and validity of the entered. It is very easy
to find error debug the system.
Page 61

Unit Testing

Record added

We have continued Unit Testing from the starting of the coding phase
itself. Whenever we completed one small sub module, some amount of
testing was done based on the requirements to see if the functionality is
aligned to the gathered requirements.
Page 62

5.1.2. INTEGRATION TESTING

Integration testing (sometimes called integration and testing, abbreviated


I&T) is the phase in software testing in which individual software
modules are combined and tested as a group. Software components
may be integrated in an iterative way or all together ("big bang").
Normally the former is considered a better practice since it allows
interface issues to be located more quickly and fixed. Data can be lost
across an interface; one module can have an adverse effort on the other
sub functions when combined by, may not produce the desired major
functions. Integrated testing is the systematic testing for constructing the
uncover errors within the interface. This testing was done with sample
data. The developed system has run success full for this sample data.
The need for integrated test is to find the overall system performance.
Integration testing is a logical extension of unit testing. In its simplest
form, two units that have already been tested are combined into a
component and the interface between them is tested. A component, in
this sense, refers to an integrated aggregate of more than one unit.
Integration testing identifies problems that occur when units are
combined. By using a test plan that requires you to test each unit and
ensure the viability of each before combining units, you know that any
errors discovered when combining units are likely related to the interface
between units. This method reduces the number of possibilities to a far
simpler level of analysis. Progressively larger groups of tested software
components corresponding to elements of the architectural design are
integrated and tested until the software works as a system.

other hand, black-box testing has been said to be "like a walk in a dark
labyrinth without a flashlight." Because they do not examine the source
code, there are situations when a tester writes many test cases to check
something that could have been tested by only one test case, or leaves
some parts of the program untested.
Page 63

Integration testing

Integration testing Result When Stops Update Prize Also Updated

We have performed integration testing whenever we have combined two


modules together. When two modules are combined we have checked
Page 64

whether the functionality works correctly or not through integration


testing.

5.1.3. BLACK BOX TESTING

Black-box testing is a method of software testing that examines the


functionality of an application (e.g. what the software does) without
peering into its internal structures or workings. This method of test can
be applied to virtually every level of software testing: unit, integration,
system and acceptance. It typically comprises most if not all higher level
testing, but can also dominate unit testing as well. In black box testing
the structure of the program is not considered. Test cases are decided
solely on the basis of the requirements or the specification of the
program or module, and the internals of the module or program are not
considered for selection of the test cases

In the Black Box testing tester only knows the input that can be given to
the system and what output the system should give. In other words, the
basis of deciding test cases in functional testing is requirements or
specifications of the system or module. This form of testing is also called
functional or behavioural testing. One advantage of the black box
technique is that no programming knowledge is required. Whatever
biases the programmers may have had, the tester likely has a different
set and may emphasize different areas of functionality. On the

5.1.4. WHITE BOX TESTING

White-box testing (also known as clear box testing, glass box testing,
and transparent box testing and structural testing) is a method of testing
software that tests internal structures or workings of an application, as
opposed to its functionality. In white-box testing an internal perspective
of the system, as well as programming skills, are used to design test
cases. The tester chooses inputs to exercise paths through the code and
Page 65

determine the appropriate outputs. This is analogous to testing nodes in


a circuit, e.g. in-circuit testing (ICT).

While white-box testing can be applied at the unit, integration and


system levels of the software testing process, it is usually done at the
unit level. It can test paths within a unit, paths between units during
integration, and between subsystems during a system–level test.
Though this method of test design can uncover many errors or problems,
it might not detect unimplemented parts of the specification or missing
requirements. White Box testing is concerned with testing the
implementation of the program. The intent of this testing is not to
exercise all the different input or output conditions but to exercise the
different programming structures and data structures used in the
program.

5.1.5. VALIDATION TESTING

At the culmination of Black Box testing, software is completely


assembled as a package, interface errors have been uncovered and
corrected and final series of software tests, Validation tests begins.
Validation testing can be defined many was but a simple definition is that
validation succeeds when the software functions in a manner that can be
reasonably accepted by the customer. After validation test has been
conducted one of the two possible conditions exists.

1. The function or performance characteristics confirm to specification


and are accepted.

2. A derivation from specification uncovered and a deficiency list is


created.
Page 66

Email Validation

Password Validation
Page 67

Cant Add Schedule Conflict with existing Schedule

We have given various validations in our forms so that there will be a


neat format for the data’s that are entered on to the website. We have
also given an already existing validation so that the data redundancy is
reduced; same data is not entered twice.

5.1.6. USER ACCEPTANCE TESTING

Acceptance Testing is a level of the software testing process where a


system is tested for acceptability. User Acceptance testing is the
software testing process where system tested for acceptability &
validates the end to end business flow. Such type of testing executed by
client in separate environment & confirms whether system meets the
requirements as per requirement specification or not.

UAT is performed after System Testing is done and all or most of the
major defects have been fixed. This testing is to be conducted in the
final stage of Software Development Life Cycle (SDLC) prior to system
being delivered to a live environment. UAT users or end users are
concentrating on end to end scenarios & typically involves running a
suite of tests on the completed system.
Page 68

User Acceptance testing also known as Customer Acceptance testing


(CAT), if the system is being built or developed by an external supplier.
The CAT or UAT are the final confirmation from the client before the
system is ready for production. The business customers are the primary
owners of these UAT tests. These tests are created by business
customers and articulated in business domain languages. So ideally it is
collaboration between business customers, business analysts, testers
and developers. It consists of test suites which involve multiple test
cases & each test case contains input data (if required) as well as the
expected output. The result of test case is either a pass or fail.

5.2. TEST CASE DOCUMENTS

A test case is a set of conditions or variables under which a tester will


determine whether a system under test satisfies requirements or works
correctly. The process of developing test cases can also help find
problems in the requirements or design o an application. A sample of
test case document format is given below.

TC Test Steps Expected Result Actual Result Status Comment


No.

1 Run application Login screen is displayed. Login screen has been Pass
and navigate to A field for entering email, a displayed, fields for
login screen field for entering password, entering email and
and a button to submit password together with a
should be present log in button is available.

2 Enter an invalid A message should be A message has been Pass


email and invalid displayed stating that email displayed stating that email
password and and password are invalid and password are invalid
press the button

3 Enter a valid email User must successfully User successfully log in Pass
and password and login to the WebPages. and navigate into home
press the button page
Page 69

4 Enter a valid email A message should be A message has been Pass


and leave displayed stating that displayed stating that
password and ‘Password Required’ ‘Password Required’
press the button beside the Password beside the Password
textbox textbox

5 Enter a valid email A message should be A message has been Pass


and invalid displayed stating that email displayed stating that email
password and and password are invalid and password are invalid
press the button

6 Leave email and A message should be A message has been Pass


password and displayed stating ‘email displayed stating ‘email
press the button required’ beside the email required’ beside the email
textbox and ‘Password textbox and ‘Password
Required’ beside the Required’ beside the
Password textbox Password textbox

7 Leave email and A message should be A message should be Pass


enter a valid displayed stating ‘email displayed stating ‘email
password and required’ beside the required’ beside the
press the button Username textbox Username textbox

8 Enter invalid email A message should be A message has been Pass


and enter a valid displayed stating that email displayed stating that email
password and and password are invalid and password are invalid
press the button
Page 70

6.CONCLUSION

The Waterway project successfully addresses the challenges faced in


the boat reservation industry by providing an efficient and user-friendly
online seat booking system. Through careful planning, design, and
implementation, the system streamlines the ticket purchasing process,
enhances user experience, and ensures reliable management of boat
schedules and seat availability.

The project not only facilitates the easy booking of tickets but also
integrates essential features such as payment processing, schedule
management, and user administration, making it a comprehensive
solution for both customers and operators. The incorporation of robust
database management allows for real-time updates and accurate record-
keeping, which is crucial for maintaining trust and satisfaction among
users.

Moreover, the Agile methodology employed during development ensured


flexibility and adaptability, allowing for iterative improvements based on
user feedback and testing results. As a result, the Waterway system is
poised to meet the growing demands of boat travelers, offering
convenience and reliability that is currently lacking in the industry.
Page 71

In summary, the Waterway project not only meets its initial objectives but
also sets the foundation for future enhancements and scalability,
ensuring that it can evolve with changing user needs and technological
advancements. The project represents a significant step forward in
modernizing boat transportation and making it more accessible to a
broader audience.

6.1 FUTURE ENHANCEMENTS


Looking ahead, the Waterway project envisions several enhancements aimed at further
improving its functionality and user experience. These enhancements will not only address
current limitations but also anticipate user needs and technological advancements.

Mobile Ticket Verification

The implementation of a mobile application will allow users to access their tickets digitally.
This feature would enable passengers to scan QR codes or barcodes on their mobile
devices for quick and efficient ticket verification at boarding points. By reducing the reliance
on physical tickets, this enhancement promotes a more convenient and environmentally
friendly approach to ticketing.

Real-time Notifications

Enhancing the system with real-time notifications will keep users informed about critical
updates, including booking confirmations, cancellations, and changes in schedules. This
feature will improve user engagement by ensuring that passengers are always updated,
reducing uncertainty, and enhancing their overall experience with the platform.

User-Friendly Mobile Interface

Developing a responsive mobile interface will facilitate seamless access to all features of the
platform on smartphones and tablets. By optimizing the user experience for mobile devices,
Waterway aims to cater to the increasing number of users who prefer accessing services on
the go. This enhancement will ensure that functionalities such as booking, payment, and
customer support are easily navigable on smaller screens.

Payment Integration

Incorporating multiple payment gateways will provide users with more options for secure
transactions. This enhancement aims to accommodate various payment preferences,
ensuring a smoother and more flexible payment process for users. By supporting multiple
Page 72

payment methods, Waterway can enhance user confidence in the system and potentially
increase conversion rates.

Advanced Analytics

Utilizing data analytics will allow the Waterway project to gain insights into user behavior and
booking patterns. This information can be invaluable in optimizing routes, pricing strategies,
and marketing efforts. By understanding user preferences and trends, the project can make
data-driven decisions to enhance operational efficiency and user satisfaction.

Enhanced Security Features

Strengthening security protocols is essential to protect user data and ensure safe
transactions. Future enhancements will focus on implementing advanced security measures,
including encryption, secure authentication processes, and regular security audits. By
prioritizing user security, the Waterway project can build trust and credibility among its users.

7.REFERENCES

1. Elias M Award. (1999). System Analysis and Design (2nd ed.).


Galgotica Publications, Delhi.
2. Silberschatz, A., Korth, H. F., & Sudarshan, S. Database
System Concepts (4th ed.).
3. Dr. Jeeva Jose. Web Programming Using PHP
4. Wikipedia. (n.d.). Operating System.
5. eComputer Notes. (n.d.). Feasibility Study.
6. Wikipedia. (n.d.). Third Normal Form.
7. Guru99. (n.d.). User Acceptance Testing.
8. TutorialsPoint. (n.d.). System Analysis and Design.
9. Software Testing Fundamentals. (n.d.). Test Case.
10.Software Testing Fundamentals. (n.d.). Black Box Testing.
11.GeeksforGeeks. (n.d.). ASP.NET Coding Standards.
Page 73

8.APPENDIX

8.1 SCREENSHOTS

User login page


Page 74

Login check database users table

Home page
Page 75

view schedules

About waterway
Page 76

Testimonials

Image Gallery
Page 77

Enquiries
Page 78

Signup For User and Admin


Page 79

Signup Validation

Forgot Password and OTP


Page 80

Reset password

Admin Dashboard
Page 81

Admin Activites Logs

Adding a Boat
Page 82

Boat Added

Adding Route
Page 83

Route Added

Adding Stops For Routes


Page 84

Adding/Updating Prices Between Stops in A Route

Exisiting Prices Updated After Adding of New Stops


Page 85

Adding Schedules for a day or 365 days

Searching And Edit or Delete Schedules


Page 86

Editing Scheudle so that another Boat,Route,Time can be Updated

Managing Bookings Cancelling By Admin


Page 87

Admin Boat Seat Management

Seat Delete Change Numbering,Type


Page 88

Admin Enquiries Complaints Managament

Admin Responding to User Enquiries


Page 89

Admin Reports Generation

Admin Report Generation (Bar Graph)


Page 90

Line, Bar, Pie chart reports for all Entities in Booking(Line Graph)

Reports For Stops,Boats,Seats,Routes,Schedules (Pie chart)


Page 91

Users Submitting Complaints to Admin

Selecting User Profile


Page 92

User Profile tab Profile Editing

Tickets tab To Display All Tickets


Page 93

User Selecting A ticket to View

User Ticket View with Qr code


Page 94

Note: User can Cancel Ticket,Download,Mail as Pdf from Here Amount will be Refunded
Facility to cancel unwanted Seats only and keep others

Download ticket to users device


Page 95

Ticket.pdf From device

Seat cancellation from Ticket


Page 96

Seats Would be cancelled And Would be available for Others

Enquiries Section To see Admin Replies To complaints


Page 97

Schedule Date, Location Setting for users to Book Seats

Boat Selection For users


Page 98

Seat View And Selection of Seats

Payment For Seats Selected(Dummy payment)


Page 99

Dummy Processing of Payment

Ticket View After Payment Done


Page 100

Seats view Updated After Booking

Note:Site is Worked mostly On Seat View so That No Seat wastage occurs Even if it is
Reserved for a Short period it is made available and unavailable depending on actual
Booking

You might also like