WACHEMO UNIVERSITY
COLLAGE OF ENGINEERING AND
TECHNOLOGY
DEPARTEMENT OF INFORMATION SYSTEMS
COURCE:PROJECT MANAGEMENT SYSTEM
Group Assignment
Group Members ID NO
1. Biruk Tilahun ………..…………….1304172
2. Sabontu Amana ………………….....14D2466
3. Iyasu Tesema …..……………………1409492
4. Mintesinot Tadele ……………………1404474
5. Natina'el Berihanu……………………1404618
1
Bus Ticket Booking System Documentation
## Introduction
The **Bus Ticket Booking System** is a web-based application developed in PHP. It provides
users with the ability to book bus tickets, manage reservations, view schedules, and perform
administrative tasks efficiently. This document outlines the project's features, system
requirements, database schema, and usage instructions.
## Features
### User Features
1. User Registration and Login
- Secure authentication.
- Password hashing.
2. Ticket Booking
- Search buses based on source, destination, and travel date.
- Real-time seat availability.
- Online payment integration.
3. Manage Bookings
- View booking history.
- Cancel tickets (subject to refund policies).
4. Bus Routes and Schedules
- Display route information.
- Filter by bus type (e.g., AC, Non-AC).
### Admin Features
1. Bus Management
- Add, update, or delete bus details.
2
2. Route Management
- Define and manage routes with source, destination, and intermediate stops.
3. Ticket Management
- View all bookings.
- Approve or refund cancellations.
4. Reports
- Daily, weekly, or monthly revenue reports.
- Passenger statistics.
## System Requirements
### Server Requirements
- **Web Server**: Apache or Nginx
- **Programming Language**: PHP
- **Database**: MySQL
- **Other Requirements**:
- cURL extension
- GD Library for CAPTCHA (optional)
### Client Requirements
- **Browser**: Modern browser (Chrome, Firefox, Edge, etc.)
- **Internet Connection**: Stable connection for accessing the web application.
## Installation Instructions
1. **Download and Extract Files**:
- Download the project files from the repository.
- Extract them into your web server's document root (e.g., `htdocs` for XAMPP).
2. **Configure Database**:
- Create a MySQL database (e.g., `bus_ticket_db`).
3
- Import the `database.sql` file provided in the project directory.
3. **Update Configuration**:
- Open the `config.php` file and set the following parameters:
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', 'your_password');
define('DB_NAME', 'bus_ticket_db');
?>
4. **Run the Application**:
- Open a browser and navigate to `http://localhost/bus-ticket-system`.
## Database Schema
### Tables
1. **users**
- `id` (INT, Primary Key)
- `name` (VARCHAR)
- `email` (VARCHAR, Unique)
- `password` (VARCHAR)
- `role` (ENUM: 'user', 'admin')
2. **buses**
- `id` (INT, Primary Key)
- `bus_name` (VARCHAR)
- `type` (ENUM: 'AC', 'Non-AC')
- `total_seats` (INT)
3. **routes**
- `id` (INT, Primary Key)
- `source` (VARCHAR)
- `destination` (VARCHAR)
- `fare` (DECIMAL)
4
4. **bookings**
- `id` (INT, Primary Key)
- `user_id` (INT, Foreign Key: users)
- `bus_id` (INT, Foreign Key: buses)
- `route_id` (INT, Foreign Key: routes)
- `seats_booked` (INT)
- `booking_date` (DATE)
- `status` (ENUM: 'confirmed', 'cancelled')
## Usage Instructions
### User Panel
1. **Sign Up**: Register with an email and password.
2. **Search Bus**: Enter source, destination, and date to view available buses.
3. **Book Ticket**: Select a bus and confirm payment.
4. **View Bookings**: Navigate to the "My Bookings" section to manage reservations.
### Admin Panel
1. **Login**: Use admin credentials to access the admin dashboard.
2. **Manage Buses**: Add or edit bus details.
3. **View Bookings**: Monitor all user bookings and handle cancellations.
4. **Generate Reports**: Access revenue and passenger statistics.
## Security Features
- Passwords are stored securely using PHP's `password_hash()` function.
- User sessions are managed using secure PHP sessions.
- Input validation and prepared statements prevent SQL injection.
- CAPTCHA is implemented to avoid spam registrations (optional).
## Future Enhancements
1. **Mobile App Integration**: Extend the platform to Android and iOS.
2. **Multi-Language Support**: Add localization for a broader audience.
3. **Dynamic Pricing**: Implement pricing based on demand and availability.
5
6