Instructions
Objective
Write a program to implement garage manager in python.
Requirements and Specifications
Source Code
import mysql.connector
"""
In the following THREE lines, define the username, password and database name
"""
USERNAME = "root"
PASSWORD = "root"
DATABASE = "adede_db"
def get_string(message) -> str:
"""
This function will ask user for a non-empty string. The functions keeps re-prompting until user enters
a valid string
:param message: message to be displayed to user when asking for input
:return: string
"""
while True:
string = input(message)
if len(string) > 0:
return string
else:
print("Please enter a non-empty string.")
def get_integer(message) -> int:
"""
This function will ask user for a positive integer. The functions keeps re-prompting until user enters
a valid integer
:param message: message to be displayed to user when asking for input
:return: int
"""
while True:
try:
integer = int(input(message))
if integer > 0:
return integer
else:
print("Please enter a positive number.")
except:
print("Please enter a valid number.")
def menu():
"""
This function displays the menu and gets an integer input from user
The function keeps asking for an input until the user enters a valid option
:return: string (menu option)
"""
while True:
print("MENU")
print("a - Add car")
print("d - Remove car")
print("u - Update car details")
print("r1 - Output all cars sorted by year (ascending)")
print("r2 - Output all cars of a certain color")
print("q - Quit")
# Define valid menu options
menu_options = ["a", "d", "u", "r1", "r2", "q"]
# Get option
option = input("Enter choice: ")
if option in menu_options:
return option
else:
print("Invalid option!")
if __name__ == '__main__':
# The first step is to create the connection to the database
try:
print("Connecting to MySQL... ", end="")
connection = mysql.connector.connect(
host = "localhost",
user = USERNAME,
password = PASSWORD,
database = DATABASE
)
if connection.is_connected():
print(f"successfully connected as {USERNAME} to the database {DATABASE}!")
cursor = connection.cursor()
# Begin with program
running = True
while running:
# Display menu
option = menu()
if option == "a": # Add car
# Ask user for make, model, year and color
make = get_string("Enter maker: ")
model = get_string("Enter model: ")
year = get_integer("Enter year: ")
color = get_string("Enter color: ")
# Now, insert into db
query_str = f"INSERT INTO garage (make, model, year, color) VALUES (\"{make}\", \"{model}\", {year}, \"{color}\")"
# Insert
cursor.execute(query_str)
connection.commit()
print(f"The following car has been added to the garage: make = {make}, model = {model}, year = {year}, color = {color}")
elif option == "d": # Remove car
car_id = get_integer("Please enter the id of the car to remove: ")
# CHeck if there is a car with that id
cursor.execute(f"SELECT * FROM garage WHERE id = {car_id};")
result = cursor.fetchall()
if len(result) > 0:
# Delete
cursor.execute(f"DELETE FROM garage WHERE id = {car_id}")
connection.commit()
print(f"Car with id {car_id} has been removed.")
else:
print("There is no car with that id in the garage.")
elif option == "u":
car_id = get_integer("Please enter the id of the car to remove: ")
# CHeck if there is a car with that id
cursor.execute(f"SELECT * FROM garage WHERE id = {car_id};")
result = cursor.fetchall()
if len(result) > 0:
# Ask for new details
new_make = get_string("Enter new maker: ")
new_model = get_string("Enter new model: ")
new_year = get_integer("Enter new year: ")
new_color = get_string("Enter new color: ")
cursor.execute(f"UPDATE garage SET make = \"{new_make}\", model =\"{new_model}\", year = {new_year}, color = \"{new_color}\" WHERE id = {car_id};")
connection.commit()
print(f"Car with id {car_id} has been updated.")
else:
print("There is no car with that id in the garage.")
elif option == "r1": # Output all cars sorted by year ascending
cursor.execute("SELECT * FROM garage ORDER BY year ASC;")
result = cursor.fetchall()
if len(result) > 0:
print("{:<10s} {:>10s} {:>15s} {:>10s} {:>10s}".format("ID", "Make", "Model", "Year", "Color"))
print("{:<10s} {:>10s} {:>15s} {:>10s} {:>10s}".format("--", "----", "----", "----", "----"))
for row in result:
print("{:<10d} {:>10s} {:>15s} {:>10d} {:>10s}".format(row[0], row[1], row[2], row[3],
row[4]))
else:
print("There are no cars in the garage.")
elif option == "r2": # Output all cars of certain color
# Ask color
color = get_string("Enter color: ")
cursor.execute(f"SELECT * FROM garage WHERE color = \"{color}\";")
result = cursor.fetchall()
if len(result) > 0:
print("{:<10s} {:>10s} {:>15s} {:>10s} {:>10s}".format("ID", "Make", "Model", "Year", "Color"))
print("{:<10s} {:>10s} {:>15s} {:>10s} {:>10s}".format("--", "----", "----", "----", "----"))
for row in result:
print("{:<10d} {:>10s} {:>15s} {:>10d} {:>10s}".format(row[0], row[1], row[2], row[3], row[4]))
else:
print("There are no cars in the garage with that color.")
elif option == "q": #quit
print("Good bye!")
running = False
print()
except mysql.connector.Error as e:
print("failed!")
print(e)
finally:
if connection.is_connected():
cursor.close()
connection.close()
Similar Samples
At ProgrammingHomeworkHelp.com, our sample section offers a glimpse into our prowess in programming assignments. These curated examples reflect our dedication to delivering top-notch solutions across various languages and complexities. Whether you're a student needing assistance or a professional seeking reliable coding solutions, explore our samples to see how we can help you excel in programming.
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python
Python