MINI PROJECT SYNOPSIS
ON
“Parking Management System”
Bachelor of Computer Applications
(B.C.A)
Uttaranchal School of Computing Sciences
Project Mentor: Submitted By: Chingrousiam
Mr. Sohrab Ali (Assistant Professor)
ACKNOWLEDGEMENT
First and foremost, I am ever grateful to God to whom I owe my life. I would also like to
thank my parents for giving me the opportunity to study at Uttaranchal University, Dehradun.
I wish to express my deep sense of gratitude to our Project Mentor Mr. Sohrab Ali for his
valuable guidance to prepare the project and in assembling the project material. I am very
thankful for his faithful blessings and for providing necessary and related facilities required
for our computer project file. Lastly I want to thank those directly or indirectly took interest
to complete my project file.
Chingrousiam
BCA” E” (4th semester)
DECLARATION
I hereby declare that this project work entitled “Parking Management System” which is being
submitted as Mini project of 4th semester in (UTTARANCHAL SCHOOL OF COMPUTING
SCIENCE) to UTTARANCHAL UNIVERSITY (DEHRADUN) is an authentic record of my
genuine work done under the guidance of Mr. Sohrab Ali (Assistant Professor).
Chingrousiam
B.C.A. (4th SEMESTER)
CERTIFICATE OF ORIGINALITY
This is to certify that the project entitles “Parking Management System” by Chingrousiam
has been submitted in the partial fulfilment of the requirements for the award of the degree of
BCA from Uttaranchal University, Dehradun. The results embodied in this project have not
been submitted to any other University or Institution for the record of any degree.
INDEX
Serial Title Page no.
No.
1. Introduction 1
2 Objectives 2
3 Aim of the project 3
4 Hardware and Software 4
5 System Analysis 5-6
6 Software requirement Specifications 7
7 DFD 8
8 ER-Diagram 9
9 Gantt chart 10
10 Class diagram 11
11 Use case diagram 12
12 System Design 13
Modularisation details 13
User Interface Design 14
13 Testing 15-16
14 Future scope and enhancement 17
15 Conclusion 18
16 Coding 19-22
17 Bibliography 23
Introduction
In today's urbanized environments, managing parking spaces efficiently has become a
critical challenge. As cities continue to grow and populations increase, the demand for
parking solutions that are convenient, reliable, and user-friendly has never been greater.
To address this need, we introduce the Parking Management System program.
The Parking Management System is a software solution designed to automate the process
of parking vehicles, booking parking slots, and managing parking lot operations.
Leveraging modern technology and software engineering principles, the program aims to
revolutionize the way parking facilities are managed, offering a seamless and hassle-free
experience for both parking lot operators and users.
With the Parking Management System, users can effortlessly park their vehicles, book
parking slots in advance, and unpark vehicles as needed. The program provides a user-
friendly interface that allows users to interact with the system easily, making parking
management a breeze.
1
Objectives
The objective is to simulate a parking management system that automates the process of
parking vehicles, booking parking slots, and unparking vehicles in a parking lot. The
program aims to provide a convenient and efficient solution for managing parking
spaces, enhancing user experience, and optimizing parking lot operations. Key objectives
of the program include:
1.Efficient Parking Management: Enable users to park vehicles seamlessly and
efficiently without the need for manual intervention.
2.Booking System: Allow users to book parking slots in advance, providing flexibility
and convenience, especially during peak hours or special events.
3.Optimized Space Utilization: Ensure optimal utilization of parking spaces by
dynamically managing parking allocations and bookings.
4.User-Friendly Interface: Provide a simple and intuitive user interface for
interacting with the system, making it accessible to a wide range of users.
5.Error Handling and Reliability: Implement robust error handling mechanisms to
handle exceptions gracefully and ensure the reliability and stability of the system.
6.Scalability and Extensibility: Design the program in a modular and scalable
manner to accommodate future enhancements and adapt to changing requirements.
Overall, the objective of the automatic parking system program is to streamline the
parking process, enhance user convenience, and improve overall efficiency in managing
parking facilities.
2
Aim of the project
The aim of this project is to develop a parking lot management system that efficiently handles
the parking and exiting of vehicles. This system will make parking efficient for both customer
and authority. This project will minimize physical labour work and reduce time consumption
which will be of huge help for both parties. The project aims to provide a practical and user-
friendly solution for managing a parking facility.
Overall, the aim of the Parking Management System program is to revolutionize parking
management, offering a seamless and efficient solution that meets the needs of both parking
lot operators and users, and contributes to the smooth operation of urban transportation
systems.
3
HARDWARE AND SOFTWARE
1. SOFTWARE USED
VScode
2. HARDWARE USED MINIMUM REQUIREMENT
Ryzen 5(5000)
8 GB RAM
SSD CAPACITY 514GB OR HDD.
3. MAXIMUM REQUIREMENT
NO LIMIT.
4. PROGRAMMING LANGUAGES USED
Java
5. PLATFORM USED
Windows 11
4
System Analysis
For system analysis of the parking management system program, we’ll need to understand it’s
requirements, user interactions, data flow, and system architecture. Here is the basic system
analysis for the program:
1.Functionality:
The program simulates an automatic parking system where vehicles can be parked,
slots can be booked, and vehicles can be unparked.
It manages a parking lot with specified capacity.
2.Classes:
Vehicle: Represents a vehicle with license plate.
ParkingLot: Represents a parking lot with functionalities to park vehicles, book slots,
and unpark vehicles.
AutomaticParkingSystem: Contains the main method to run the program.
3.Data Structures:
List<Vehicle> parkedVehicles: Stores the list of vehicles currently parked in the
parking lot.
Map<Vehicle, Integer> bookedSlots: Maps booked vehicles to their respective time
durations.
4.Key Methods:
parkVehicle(Vehicle vehicle): Parks a vehicle in the parking lot if there is space
available and if the vehicle is not already parked or booked.
bookSlots(Vehicle vehicle, int durationInHour): Books a parking slot for a vehicle for
a specified duration if the vehicle is not already parked or booked.
unparkVehicle(Vehicle vehicle): Unparks a vehicle from the parking lot or removes a
booking if the vehicle is not currently parked or booked.
5
5.User Interaction:
The program provides a menu based interface for user interaction.
Users can choose options to park a vehicle, book a slot, unpark a vehicle, or exit the
program.
Input is taken from the user using the ‘Scanner’ class.
6.Error Handling:
The program checks for conditions such as parking lot capacity, duplicate parking,
and booking conflicts and provide appropriate error messages.
It ensures that the user cannot book a slot or park a vehicle if it’s already parked or
booked.
7.Scalability:
The program can be extended to include additional features such as charging fees for
parking, displaying available slots, or integrating with a payment system.
The capacity of the parking lot can be easily adjusted by changing the parameters in
the constructor of the ‘ParkingLot’ class.
8.Extensibility:
Additional functionality can be added to the program by extending the ‘ParkingLot’
class or creating new classes that interact with the existing classes.
For example, new method could be added to calculate parking fees, generate reports
on parking usage, or implement different parking policies.
9.Performanace:
The program’s performance largely depends on the efficiency of data structures used
(ArrayList and HashMap) and the number of vehicles and bookings.
As the number of vehicles and bookings increases, the time complexity of operations
such as checking for parking availability or unparking vehicles may increase linearly.
10.Usability:
The menu-based interface makes the program easy to use for users with varying levels
of technical expertise.
6
Software requirement specification
The software aims to simulate a parking system where vehicles can be parked, slots can be
booked, and vehicles and be unparked.
Functional Requirements:
1.Parking a vehicle
The system shall allow users to park vehicles in the parking lot.
The system shall not allow parking of vehicles if thr parking lot is full.
The system shall prevent parking of already parked or booked vehicles.
2.Booking a slot
The system shall allow users to book parking slots for vehicles.
The system shall not allow booking of slots for already parked or booked vehicles.
3.Unparking a vehicle
The system shall allow users to unpark vehicles from the parking lot.
The system shall remove booking if a vehicle is unparked.
Non-Functional Requirements:
1.User Interface
The user interface shall be menu-based for ease of use.
Error messages shall be clear and informative for user understanding.
2.Performanace
The system shall handle a reasonable number of vehicles and booking efficiently.
Operations such as checking for parking availability shall have acceptable response
times.
7
DFD DIAGRAM
Level 1
Level 2
8
ER-DIAGRAM
9
Gantt chart
10
Class diagram
11
Use case diagram
12
System design
Modularization Details:
1.ParkingLot Class:
Responsibilities: manages parking spaces and vehicles. Handles parking, booking, and
unparking operations.
Methods: ‘parkVehicle(Vehicle vehicle)’:parks a vehicle in the parking lot.
‘bookSlots(Vehicle vehicle, int durationInHour)’: books a parking slot for a vehicle.
‘unparkVehicle(Vehicle vehicle)’:Unparks a vehicle from the parking lot.
Attributres:
capacity: Represents the maximum capacity of the parking lot.
parkedVehicles: List of vehicles currently parked in the parking lot.
bookedSlots: Map of booked vehicles with their respective time durations.
2. Vehicle Class:
Responsibilities:Represents individual vehicles with a license plate.
Attributes:licensePlate: Stores the license plate of the vehicle.
3. Main Class (AutomaticParkingSystem):
Responsibilities:Controls the flow of the application.Handles user input and
interaction.
Methods:main(String[] args): Main method to start the application.
13
User Interface Design:
The user interface design for this automatic parking system will be a simple text-based
console interface, providing users with a menu of options to interact with the system.
User Interaction Flow:
1.The program starts by displaying the main menu.
2.Users input their choice by entering the corresponding number.
3.The program processes the user's choice and performs the requested action.
4.After completing the action, the program displays the main menu again for further
interaction.
5.This process repeats until the user chooses to exit the program.
Error Handling:
Error messages will be displayed for invalid input or when an operation cannot be completed
successfully (e.g., parking lot full, vehicle already parked, etc.).
Error messages will guide the user on how to correct the issue and proceed with their desired
action.
14
Testing
For testing parking management system program, we can employ various testing techniques
and strategies to ensure its correctness and robustness. Here are some testing techniques and
strategies that can be applied:
1. Unit Testing:
Technique: Test individual units or components of the system, such as methods within
classes, in isolation.
Strategy: Write unit tests for each method in the ParkingLot and Vehicle classes to ensure
they behave as expected under different conditions.
2. Integration Testing:
Technique: Test the interactions between different components or modules of the system.
Strategy: Verify that the Main class orchestrates interactions between ParkingLot and Vehicle
objects correctly.
3. User Interface Testing:
Technique: Test the user interface to ensure it behaves as expected and is user-friendly.
Strategy: Manually test the console-based user interface by simulating user interactions and
verifying the system's response.
4. Functional Testing:
Technique: Test the functionalities of the system to ensure they meet the specified
requirements.
Strategy: Execute various scenarios such as parking a vehicle, booking a slot, unparking a
vehicle, and handling error conditions to verify the system's behavior.
5. Boundary Value Testing:
Technique: Test the boundary conditions of inputs to uncover potential errors at the edges of
valid ranges.
Strategy: Test the system with the maximum and minimum parking lot capacities, maximum
and minimum duration for booking slots, and other boundary conditions.
6. Error Handling Testing:
Technique: Test how the system handles errors and exceptions.
15
Strategy: Intentionally trigger error conditions, such as attempting to park a vehicle when the
parking lot is full, and verify that the system displays appropriate error messages and behaves
gracefully
7. Regression Testing:
Technique: Re-test the system after making changes to ensure that existing functionalities are
not adversely affected.
Strategy: Execute previously written test cases after implementing new features or fixing
bugs to ensure that no regressions occur.
8. End-to-End Testing:
Technique: Test the entire system as a whole to ensure that all components work together
correctly.
Strategy: Simulate typical user scenarios from start to finish, including launching the
program, interacting with the user interface, and verifying the final outcome.
9. Performance Testing:
Technique: Test the performance of the system under different loads and conditions.
Strategy: Measure the time taken to perform key operations such as parking a vehicle or
booking a slot and ensure that it meets performance requirements.
10. Usability Testing:
Technique: Test the usability of the system to ensure it is intuitive and easy to use.
Strategy: Have users from the target audience interact with the system and provide feedback
on its usability, including the clarity of instructions and ease of navigation.
16
Future Scope and Future Enhancement
1. Graphical User Interface (GUI):
Develop a graphical user interface (GUI) to replace the console-based interface, providing a
more user-friendly and visually appealing experience.
Implement features such as interactive maps showing available parking spaces and real-time
updates on parking status.
2. Database Integration:
Integrate a database to store information about parked vehicles, bookings, and parking lot
status.
Enable features such as historical data analysis, reporting, and user management.
3. Payment Integration:
Introduce payment integration for booking parking slots, enabling users to pay for parking in
advance or upon exit.
Implement features such as payment gateways, invoicing, and receipt generation.
4. Mobile Application:
Develop a mobile application that allows users to interact with the automatic parking system
from their smartphones.
Include features such as vehicle registration, parking space reservation, and navigation to the
nearest available parking lot.
5. Advanced Booking Features:
Implement advanced booking features such as recurring bookings, multi-day bookings, and
priority bookings for VIP customers.
Introduce features for managing parking reservations for special events or occasions.
17
Conclusion
In conclusion, developing the automatic parking system program has provided a valuable
opportunity to explore various concepts in software engineering, including object-oriented
programming, user interface design, testing techniques, and system architecture. Through the
process of designing, implementing, and testing the program, several key insights and
learnings have been gained.
In summary, the development of the automatic parking system program has been a rewarding
journey, providing valuable insights into software engineering principles and practices while
creating a practical and functional solution to address the challenges of modern urban
transportation.
18
Coding
import java.util.Scanner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Vehicle {
private String licensePlate;
public Vehicle(String licensePlate) {
this.licensePlate = licensePlate;
}
public String getLicensePlate() {
return licensePlate;
}
}
class ParkingLot {
private int capacity;
private List<Vehicle> parkedVehicles;
private Map<Vehicle, Integer> bookedSlots; // Map to store booked vehicles with their
time duration
public ParkingLot(int capacity) {
this.capacity = capacity;
parkedVehicles = new ArrayList<>();
bookedSlots = new HashMap<>();
}
public boolean parkVehicle(Vehicle vehicle) {
if (!parkedVehicles.contains(vehicle) && !bookedSlots.containsKey(vehicle)) {
19
if (parkedVehicles.size() < capacity) {
parkedVehicles.add(vehicle);
System.out.println("Vehicle with license plate " + vehicle.getLicensePlate() + "
parked successfully.");
return true;
} else {
System.out.println("Parking lot is full. Cannot park vehicle with license plate " +
vehicle.getLicensePlate());
return false;
}
} else {
System.out.println("Vehicle with license plate " + vehicle.getLicensePlate() + " is
already parked or booked.");
return false;
}
}
public boolean bookSlot(Vehicle vehicle, int durationInHours) {
if (!parkedVehicles.contains(vehicle) && !bookedSlots.containsKey(vehicle)) {
bookedSlots.put(vehicle, durationInHours);
System.out.println("Slot booked for vehicle with license plate " +
vehicle.getLicensePlate() + " for " + durationInHours + " hours.");
return true;
} else {
System.out.println("Vehicle with license plate " + vehicle.getLicensePlate() + " is
already parked or booked.");
return false;
}
}
public void unparkVehicle(Vehicle vehicle) {
if (parkedVehicles.contains(vehicle)) {
parkedVehicles.remove(vehicle);
20
System.out.println("Vehicle with license plate " + vehicle.getLicensePlate() + "
unparked successfully.");
} else if (bookedSlots.containsKey(vehicle)) {
bookedSlots.remove(vehicle);
System.out.println("Booking removed for vehicle with license plate " +
vehicle.getLicensePlate() + ".");
} else {
System.out.println("Vehicle with license plate " + vehicle.getLicensePlate() + " is not
parked in this parking lot or booked.");
}
}
}
public class AutomaticParkingSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ParkingLot parkingLot = new ParkingLot(5);
while (true) {
System.out.println("1. Park Vehicle\n2. Book Slot\n3. Unpark Vehicle\n4. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine(); // Consume newline
switch (choice) {
case 1:
System.out.print("Enter vehicle license plate: ");
String licensePlate = scanner.nextLine();
Vehicle vehicle = new Vehicle(licensePlate);
parkingLot.parkVehicle(vehicle);
break;
case 2:
System.out.print("Enter vehicle license plate: ");
licensePlate = scanner.nextLine();
21
vehicle = new Vehicle(licensePlate);
System.out.print("Enter duration (in hours): ");
int duration = scanner.nextInt();
parkingLot.bookSlot(vehicle, duration);
break;
case 3:
System.out.print("Enter vehicle license plate: ");
licensePlate = scanner.nextLine();
vehicle = new Vehicle(licensePlate);
parkingLot.unparkVehicle(vehicle);
break;
case 4:
System.out.println("Exiting...");
System.exit(0);
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
}
22
Bibliography
For successful completion of my project file. I have taken help from the following website
links.
https://www.w3schools.com/java/
https://www.geeksforgeeks.org/java/
https://www.freecodecamp.org/news/java-project-parking-lot-management-system/
https://www.geeksforgeeks.org/design-parking-lot-using-object-oriented-principles/
23