Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
7 views26 pages

Pss Project

The document outlines the development of a Rent-A-Car Management System (RCMS) as a Python project for students in the GIS3006 module, focusing on programming skills and statistics. It details the system's design, implementation, and testing, emphasizing modular programming, user-friendly interfaces, and data management through text files. Additionally, it includes data analysis using Python libraries to visualize vehicle types, revenue, and availability, enhancing students' understanding of real-world software applications.

Uploaded by

afnaansami
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views26 pages

Pss Project

The document outlines the development of a Rent-A-Car Management System (RCMS) as a Python project for students in the GIS3006 module, focusing on programming skills and statistics. It details the system's design, implementation, and testing, emphasizing modular programming, user-friendly interfaces, and data management through text files. Additionally, it includes data analysis using Python libraries to visualize vehicle types, revenue, and availability, enhancing students' understanding of real-world software applications.

Uploaded by

afnaansami
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 26

2320118-GIS3006-PORT.

pdf
by Abdulla Al Sami 2320118

[1]
Programming Skills and Statistics
GIS3006
Abdulla Al Sami
2320118

Contents
Part A:
…………………………………………………………………………………………………………………………
…… 3

Introduction…………………………………………………………………………………………………………
………. 3

Program
design…………………………………………………………………………………………………………….. 4

[2]
…………………………………………………………………………………………………………….. 5

Implementing and
testing………………………………………………………………………………………………. 6

 Add Vehicle
 View All Vehicle
 Update Vehicle
 Remove Vehicle
 Add Customers
 View Customers
 Update Customer
 Remove Customer
 Create Booking
 View Bookings
 Update Booking
 Cancel Booking

Part B:
…………………………………………………………………………………………………………………………
….

Data Analysis with


Python…………………………………………………………………………………………….

 Import Libraries and Load Data


 Count Vehicle by Type
 Merge Files for Analysis
 Revenue by Vehicle Type
 Inventory Availability

Conclusion……………………………………………………………………………………………………………
……….

Reference
List…………………………………………………………………………………………………………………

[3]
Introduction
As a Python project for beginners, the Rent-A-Car Management
System (RCMS) was developed for the students in the GIS3006
Programming Skills and Statistics module at Gulf College. The
fundamental objective of this system is to develop an easy and
usable application with which to run business processes in a car
rental service. The system enables users to upload information
about vehicles, customer records, and schedule rental book in
which the costs are automatically calculated. This system is a
practical model, using easy programming tools and methods that
beginners can easily comprehend.
Students gain from this project by understanding the key aspects
of programming among them decision statements, file handling,
loops and modular programming. Using text files, the application
demonstrates how simple it is to persistently save information
about a vehicle, the customer, and books. Tab-separated values
(TSV) allow the users to play with the data and inspect them
without the use of the sophisticated database application. For the
illustration, the vehicles.txt file tracks every vehicle’s ID, type,
model, cost on a daily basis to rent, and availability, done in a
simple and clear manner.
The RCMS shows how good structuring and concern over usability
can improve the effectiveness of software development to a
significant degree. The system’s menu driven navigation assists
the user to easily finish each step, avoiding misunderstandings
and improving usability. In classroom, it helps the students to
focus on learning and the mastery of the inner logic and
organization of their systems, without getting lost in advanced
technology. Students learn how to divide a project into small

[4]
pieces, an exercise that makes construction, moreover,
understanding, and troubleshooting easier.
Through the introduction of realistic business problems on a
streamlined model, the system helps the students to understand
how software solves real world problems. As Forouzan and Gilberg
(2011) indicate, such activities are the basic building blocks that
enable a strong construction of long-term programming
capacities. This project completion helped me strengthen my
knowledge in Python so as to make meaningful solutions that are
both working and easy to use.

Program Design
The Rent-A-Car Management System has been designed to satisfy
three essential criteria: << clarity, modularity, and simplicity. The
management system arranges its workflow with a menu-driven
system offering users three separate things to manage: Vehicle,
Customer, and Booking. To perform operations such as creation,
browsing, updating or deleting records the users are able to carry
them out through each section of the program. This interactive
menu format is a usability enhancement, as it does not
overwhelm the users as they learn to use the software.
Design is a particular strength of the Rent-A-Car Management
System because of the use of modular programming techniques
in it. Adding a vehicle, for example, or creating a booking is
managed in its own dedicated logic block. This approach
encourages better organization and readability, making
maintenance easier and individual component update easier as
well. The aspect of modular design ensures that the application is
divided in such a manner where every operation unit is
responsible for only one design of functionality thus reducing the
code and making it more effective.
Storage of data during different sessions is done by altering the
files. Information for vehicles, customers and bookings are stored

[5]
in plain text format, tab separated such as vehicles.txt,
customers.txt and bookings.txt. Such an approach was
implemented in order to maintain simplicity and easy access to
the application, only utilizing standard file operations. The
readability of records is improved, and their parsing is made
easier by using a tab-separated structure.
Mechanisms of validation systems are designed to assist in
preventing mistakes in entering data by users. During the
creation and updating of records procedure, the application
checks for the existence of previous IDs, confirms whether
entered formats comply with a range of criteria (formats in case
of date, YYYY-MM-DD), and ensures necessary fields to the extent
that there are simple validations, the frequent user errors are
minimized and contribute to the consistency of the dataset.

The user interface makes use of text to represent data, and the
program favors… formatting conventions that will enhance clarity.
The program shows data tables in which every column is well
aligned, allowing ease in skimming through all the records. In the
real-world context, the user-friendly interface should be put in
place effortlessly, and that is of significant importance when the
audience has a non-technical staff in line.
A deliberate choice was made of the programming language for
use, in Python. Its simple syntax and full set of standard tools
make it perfect for educational programming. Because of its
straightforward and rationale ways for reading files, appending
records, and updating data based on certain conditions, students
can concentrate less on learning the syntax of the language and
more on writing effective programs.
In addition, the plan’s design is distinguished from its linear
approach to interaction with the user. User engagement happens
when they select a main menu choice where they can then

[6]
choose between several related sub-options to proceed to. Once a
task is completed, users are sent back to the main menu in order
to either explore the system further or quit accessing it. Adoption
of this simplistic, step-by-step structure increases usability and
shows exemplary tenets in developing learner friendly command
line systems.
Finally, RCMS shows the principles of programming that are
important to the GIS3006 module: simplicity, clarity, and
modularity. It has practical applications, follows good coding
standards, and gives the students the basics for advanced system
development in subsequent modules.

Implementation and Testing


In the current section, I will test my code in order to find whether it is
functional and verify whether it works according to the plan.

[7]
[8]
[9]
The RCMS project is based on a carefully planned sequential design to take
advantage of core python constructs such as conditionals, loop constructs
and file operations. It was developed, assuming simplicity and modularity
that enables the program to be modular, i.e., each component: the vehicles,
the customers and the bookings are simple to understand and maintain.

The method of delivering to the user depends on the structure sequence,


which provides the user with access to the main menu, with the user able to
select certain action from the given sub-options. Each menu option
corresponds to its specific function, such as adding a vehicle, displaying all
bookings. Input is entered through the use of input () functions by users,
while information is displayed in tabular form for better presentation.

Using text files as the method of data storage ensures that the system does
not lose its data across session barriers safely. Every record in the file is an
entry, organized so that fields differ from each other when separated by tab
characters (\t). This will make the data easy to read and trivial to process by
iteration through each line of the file. The function performance was
thoroughly checked in order to prove accurate outcomes.

[10]
After running the main code, the main menu will appear, which includes the
four main options: Vehicle management, Customer management, Rental

booking management, and Quit option.

In the beginning of vehicle management, there are three choices to choose


from; add vehicle, view vehicle, update vehicle and or back to main menu. I
will talk about each of the options one by one.

Add Vehicle:

If the user enters 1 it is made to input vehicle ID, type, brand, rate and
availability. The system saves the record on ‘vehicles.txt’. This process was
validated using different inputs namely missing fields and duplicate ID’s.

Therefore, if all the information is placed properly the vehicle will be added
to the list.

[11]
View Vehicle

The program reads and prints all the vehicle entries on a formatted table.
This proves that data is saved right.

Update vehicle

If key number 3 is pressed the system searches for the given ID in


vehicles.txt. If traced, the old one is substituted with the new one. This
avoids the incidence of duplication of data, and data inaccuracies.

Remove Vehicle

[12]
The system skips saving the line of the record having ID that matches the
new file by eliminating the record. It was tested using valid and invalid IDs.

Now, typing the number 2 from the main menu the customer management
interface will open up. Which controls the customer data and all.

Add Customer

Customers are entered on ‘customers.txt’ with unique ID, full name, phone
number and email. Inputs were checked to be ascertained as complete and
consistent. The file is stored in a tab separated, structured form.

View Customers

[13]
This option looks through’customers.txt’ file and outputs the information on
each customer on a nicely aligned table. It helps to validate stored records
and assists in transparency in customer management.

Update Customer

The program enables the user to search for a customer Id and modify the
details given from the previously stored record with new details such as
name, phone, email etc. Upon editing the updated record is then written to
file.

Remove Customer

The system goes through the list of customers ‘customers.txt’ and deletes
the line which has the given customer ID. It was tested to make sure there
was no unintended data loss.

As you can see, it deleted the Customer having id 1234 from the list

[14]
Then we come to rental booking management menu and if user enters 3 it is
going to open the booking management menu that has keys such as add
booking, view bookings, update bookings and cancel booking with back to
main menu system.

Create Booking

A booking entry associates customer ID with a vehicle ID, determines


number of days from datetime, multiplies this by rate and adds it to
'bookings.txt’ file.

View Booking

[15]
This shows past bookings that include booking ID, the ID of the customer, ID
of the vehicle, dates of rental, and the total value incurred from the
bookings. Useful for tracking business transactions.

Update Booking

Users can search for an existing booking by booking ID and update start
date, end date, vehicle used. Overall cost is revised, and file is updated as it
goes.

Cancel Booking

This one will enable the user to cancel a previous booking by deleting the
record from ‘bookings.txt’ and changing the availability of the vehicle back to
“Available”. This function was tested for a valid as well as for an invalid
booking id.

Back to Main Menu

[16]
And finally, there is the number 5 back menu which allows users to have the
main menu function at his disposal.

Both valid and invalid data have been used to test the program
comprehensively. Corner cases like invalid vehicle or a customer ID not found
in the database, lack of input, incorrect date format, duplicate booking IDs
were dealt with basic validations. For confirmation messages and error
handling, print statements were included.

Conclusion This project enabled me to apply the knowledge on


programming to help solve a real-life problem with the basic use of Python. I
worked on the usage of input(), if-else, loops, file handling, and data
formatting. From this project, I also learnt how software is divided into small
functional modules. It assisted me to develop confidence in the creation of
clean code, and its preparation for a real demonstration. On the whole, I
think that this assignment has matched my expectations of a module, and I
feel more confident taking up more extensive coding tasks in future projects.

Part-B

In this section, I will be analyzing the records of RCMS for Gulf College using
Jupyter in Python environment. All the text files that are Vehicle Details,
Customer Details and Booking Details will be thoroughly examined and
visualized.

T1. Import all necessary libraries

In the given code chunk, I have imported the necessary libraries used in the
analysis named pandas and matplotlib.

T2. Read and Display the data files from part A

The data files from part A are named as Customer_Details.txt,


Vehicle_Detail.txt and Booking_Details.txt. I used pandas library to read the
text files as csv file and display it as a data frame.

[17]
When the code is run, we get the following data frame for the Vehicle Details

file.

T4. Group the data by “Vehicle Type” and count the number of
vehicles in each type.

To group each vehicle type, I have used value_counts() function to count the
number of vehicle types and stored in the vehicle_count variable.

[18]
T5. Plotting a bar graph that shows the count of vehicles by type.

In this task I have plotted a bar graph using the following code snippet. I
used the plt.bar() function to plot a bar chart, the plt.title() is used to state
the title of the chart. I have used plt.ylabel and plt.xlabel for mentioning the
x and y labels.

The x.ticks() function is used to determine the angle of each vehicle type
label on x axis which in this case is 45. The line mentioning plt.grid() function
is for the gridlines which I have kept as only horizontal lines (x axis lines).

Here is the visualization of the bar graph of vehicle type count.

[19]
The bar graph depicts the distribution of vehicle types. Sedans have the
largest number of vehicles at 5, which means that they are the most
available type of vehicle in the fleet. Vans have the next largest amount of
vehicles available with a total of 4, suggesting that solid amount of vans are
also available. SUVs and Luxury don’t have strong availability, with a total of
3 vehicles each, which diminishes the rental opportunity and/or opportunities
to generate revenue in those categories. Similar vehicle type distribution is
evident in the earlier revenue trends, where Sedans performed best, largely
due to high availability and stable demand.

T6. Using the "Rental Rate" and "Total Cost" columns to calculate
the total revenue earned by each type of vehicle.

The code chunk below has the code for calculating the sales of each vehicle
type. Here, I have used the Total_Cost column from merged_df1 and it
contains the rental rate multiplied with the days rented. Then, I grouped
Total_Cost and Vehicle_Type and summed up each vehicle type’s costs.

[20]
Output given has 5 rows containing the vehicle types and each of their total
costs.

T7. A line chart with the total rental revenue for each car type.

The written code shows the below line graph.

[21]
The line graph indicates to us that sedans generate the highest revenue. This
is an indicator of either a strong demand from customers or effective pricing.
Luxury cars are generating revenue behind sedans, and even though they
are rented less would imply that their pricing is enough to offset this and still
generate revenue even with fewer rentals. Vans generate average rental
revenue and are used for short independent rental periods, typically for an
event, or some level of group or family use. However, the greatest
observation is with SUVs, which are generating the least rental revenue. This
could indicate a lack of interest from customers overall, rental pricing and/or
availability issues.

T8. Count the number of vehicles available and rented.

The code counts vehicles based on availability status - "Available" or


"Rented". This has been done by selecting the 'Availability_Status' column
from the merged_df1 dataframe and using the value_counts() function to
determine how many times each status occurs. It will then convert this result
into a dataframe (using default indexing) with reset_index() before finally
storing the output in the variable availability_count.

Output:

T9. Create a pie chart showing the percentage of available and


rented vehicles.

This code given below generates a pie chart to visualize the percentage of
available and rented vehicles, vehicles which have been given for
maintenance, by extracting the labels from the 'Availability_Status' column
(the counts were included in the 'count' column of the availability_count
[22]
dataframe), plotting the pie chart with percentage labels (autopct='%1.1f%
%'), and finally displaying it with plt.show().

Output:

According to the pie chart, it displays the percentage of rented vehicles,


versus available for rent. Typically, a low percentage of available vehicles
indicates higher demand and better utilization of the fleet for rental revenue.
A higher percentage of vehicles available may indicate underutilization;
lower demand; or more potential to increase marketing or pricing for rental
business performance. Tracking rented/available vehicle distribution creates
balance on the available fleet and assures rental revenue performance.

Reference list

[23]
Anon, (n.d.). Software Engineering Course (SWEBOK) | IEEE Computer
Society. [online] Available at: https://www.computer.org/education/bodies-of-
knowledge/software-engineering.

Grafiati.com. (2022). Bibliographies: ‘Software engineering’ – Grafiati.


[online] Available at:
https://www.grafiati.com/en/literature-selections/software-engineering/
[Accessed 4 Jun. 2025].

python (n.d.). 4. More Control Flow Tools. [online] Python documentation.


Available at: https://docs.python.org/3/tutorial/controlflow.html#defining-
functions.

Python documentation. (n.d.). 7. Input and Output. [online] Available at:


https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files.

Software-engineering-books.com. (2025). Software Engineering Books.


[online] Available at: https://software-engineering-books.com/ [Accessed 4
Jun. 2025].

[24]
Acknowledgement of the Use of AI

Student Name: Abdulla Al Sami

Student ID Number: 2320118

Module Code:

Assignment Title:

Date: June 10, 2025

Acknowledgement (Check mark ✘ the appropriate)

No content generated by Artificial Intelligence (AI) technologies


has been presented as my own work.

I acknowledge the use of perplexity https://www.perplexity.ai/


generate materials for background research and self-study in the drafting of

this assessment.

I acknowledge the use of perplexity https://www.perplexity.ai/


generate to generate materials that were included within my final

assessment in modified form.

The following prompts were input into perplexity https://www.perplexity.ai/

1. More about the additional Considerations and Future Scalability

2. Elaborate the topic "Reasons for moving to router switch configuration."

List prompts here

The output was changed by me in the following ways:

1. Paraphrasing

[25]
2. Plagiarism checker

Explain the actions taken here

Student’s Signature (Digital)

[26]

You might also like