Ip HW
Ip HW
DUBAI
Session 2024-25
INFORMATICS PRACTICES
PROJECT
ON
Personal Expenses
Calculator
SUBMITTED BY:
Sam Emirik Micheal
Class: XII B
ACKNOWLEDGMENT
Software:
● Visual Studio Code
● Microsoft Excel
Hardware:
● 1.6 GHz or faster processor
● 1 GB of RAM
THEORY AND CONCEPTS
IMPLEMENTED
def load_expenses(expenses):
try:
with open(expenses, mode='r') as file:
reader = csv.DictReader(file)
return list(reader)
except FileNotFoundError:
print(f"{expenses} not found. Creating a new file...")
return []
def view_expenses(expenses):
if not expenses:
print("No expenses to display.")
return
def calculate_totals(expenses):
if not expenses:
print("No expenses to calculate.")
return
total = sum(float(expense["Amount"]) for expense in expenses)
print(f"Total Expenses: ${total:.2f}")
def generate_graphs(expenses):
if not expenses:
print("No expenses to generate graphs.")
return
print("\nGraph Options:")
print("1. Total Expenses by Category")
print("2. Expenses Over Time (Line Graph)")
print("3. Exit to Main Menu")
if choice == "1":
total_by_category = {}
for expense in expenses:
category = expense["Category"]
amount = float(expense["Amount"])
total_by_category[category] = total_by_category.get(category, 0) + amount
categories = list(total_by_category.keys())
totals = list(total_by_category.values())
plt.figure(figsize=(8, 6))
plt.pie(totals, labels=categories, autopct="%1.1f%%", startangle=140)
plt.title("Total Expenses by Category")
plt.show()
plt.figure(figsize=(10, 6))
plt.plot(dates, amounts, marker="o", linestyle="-", color="b")
plt.xticks(rotation=45)
plt.title("Expenses Over Time")
plt.xlabel("Date")
plt.ylabel("Amount ($)")
plt.grid(True)
plt.tight_layout()
plt.show()
def main():
filename = "expenses.csv"
expenses = load_expenses(filename)
while True:
print("\nExpense Tracker")
print("1. View Expenses")
print("2. Add Expense")
print("3. Calculate Totals")
print("4. Generate Graphs")
print("5. Exit")
if choice == "1":
view_expenses(expenses)
elif choice == "2":
add_expense(filename, expenses)
elif choice == "3":
calculate_totals(expenses)
elif choice == "4":
generate_graphs(expenses)
elif choice == "5":
break
else:
print("Invalid choice. Please try again.")
if __name__ == "__main__":
main()
OUTPUT
-Main Menu
-View Expenses(Option-1)
-Add Expense(Option-2)
-Calculate Totals(Option-3)
-Generate Graphs(Option-4)
CONCLUSION
Websites:
youtube.com
python
NCERT:
Textbook