Name: Rohan Sawant Roll No.
: 22203B0017
Python Problem Based Learning
E-Commerce Cart System
Use Case:
An online shopping site needs a simple shopping cart feature.
Modules:
[Link]: Manage products (name, price, stock).
[Link]: Add/remove products, view cart total.
[Link]: Apply coupon codes and discounts.
[Link]: Simulate payment processing.
# [Link]
from product import *
from cart import *
from discounts import *
from payment import *
def main():
product.add_product("Laptop", 1000, 5)
product.add_product("Phone", 500, 10)
cart.add_to_cart("Laptop", 1)
print("Cart:", cart.view_cart())
total = sum(product.get_product(name)['price'] * qty for name, qty in
cart.view_cart().items())
total = discounts.apply_discount(total, "SAVE10")
payment.process_payment(total)
# [Link]
def add_product(name, price, stock):
products[name] = {'price': price, 'stock': stock}
def get_product(name):
return [Link](name, None)
# [Link]
def add_to_cart(name, quantity):
if name in [Link] and [Link][name]['stock'] >= quantity:
cart[name] = [Link](name, 0) + quantity
[Link][name]['stock'] -= quantity
else:
print("Not enough stock available.")
def remove_from_cart(name):
if name in cart:
[Link][name]['stock'] += cart[name]
del cart[name]
def view_cart():
return cart
# [Link]
discount_codes = {"SAVE10": 0.10, "SAVE20": 0.20}
def apply_discount(total, code):
return total * (1 - discount_codes.get(code, 0))
# [Link]
def process_payment(amount):
print(f"Processing payment of ${amount}...")
return True
Library Management System
Use Case:
A school/college library wants to automate book issue/return management.
Modules:
[Link]: Functions to add, remove, search for books.
[Link]: Functions to add members, check borrowing limits.
[Link]: Issue, return, calculate overdue fines.
[Link]: Generate reports (issued books, fines due).
# [Link]
from book import *
from member import *
from transaction import *
from reports import *
def main():
add_book("Python Programming", "John Doe")
add_member("Alice", 1)
issue_book(1, "Python Programming")
print("Library Report:", generate_report())
# [Link]
def add_book(title, author):
books[title] = author
def get_books():
return books
# [Link]
def add_member(name, member_id):
members[member_id] = name
def get_members():
return members
# [Link]
def issue_book(member_id, book_title):
if book_title in books:
issued_books[member_id] = book_title
def return_book(member_id):
if member_id in issued_books:
del issued_books[member_id]
# [Link]
def generate_report():
return issued_books
Hotel Reservation System
Use Case:
A hotel booking application where users book rooms, check availability, and manage
payments.
Modules:
[Link]: Manage room types, availability.
[Link]: Reserve/cancel bookings.
[Link]: Calculate charges, generate bills.
[Link]: Customer registration and login.
# [Link]
from rooms import *
from booking import *
from billing import *
from customer import *
def main():
add_room(101, "Deluxe")
add_customer("Bob", "bob@[Link]")
if reserve_room(101):
print("Room 101 reserved.")
print("Charge:", calculate_charge(3, 100))
# [Link]
def add_room(room_number, room_type):
rooms[room_number] = room_type
def check_availability(room_number):
return room_number in rooms
# [Link]
def reserve_room(room_number):
if check_availability(room_number):
bookings[room_number] = "Reserved"
return True
return False
def cancel_booking(room_number):
if room_number in bookings:
del bookings[room_number]
# [Link]
def calculate_charge(nights, rate):
return nights * rate
# [Link]
def add_customer(name, email):
customers[email] = name
def get_customers():
return customers
Student Grading System
Use Case:
A teacher needs an app to calculate grades, store student info, and generate reports.
Modules:
[Link]: Student details (name, roll number).
[Link]: Add marks, calculate total and average.
[Link]: Assign grades based on total marks.
[Link]: Generate report cards.
# [Link]
from student import *
from marks import *
from grading import *
from report import *
def main():
add_student("Charlie", 101)
add_marks(101, "Math", 85)
add_marks(101, "Science", 90)
print(generate_report(101))
# [Link]
def add_student(name, roll_number):
students[roll_number] = name
def get_students():
return students
# [Link]
def add_marks(roll_number, subject, score):
if roll_number not in marks:
marks[roll_number] = {}
marks[roll_number][subject] = score
def get_marks(roll_number):
return [Link](roll_number, {})
# [Link]
def assign_grade(score):
if score >= 90:
return 'A'
elif score >= 80:
return 'B'
elif score >= 70:
return 'C'
elif score >= 60:
return 'D'
else:
return 'F'
# [Link]
def generate_report(roll_number):
student_marks = get_marks(roll_number)
grades = {subject: assign_grade(score) for subject, score in student_marks.items()}
return {"marks": student_marks, "grades": grades}