import streamlit as st import pandas as pd import matplotlib.pyplot as plt class SalaryTracker: def __init__(self, initial_salary): self.salary = initial_salary self.expenses = [] self.data = pd.DataFrame({'Month': [], 'Salary': []}) def add_expense(self, amount): self.expenses.append(amount) self.salary -= amount def deduct_expense(self, amount): self.expenses.append(-amount) self.salary += amount def update_data(self, month): self.data = self.data.append({'Month': month, 'Salary': self.salary}, ignore_index=True) def generate_report(self): return self.data # Streamlit UI st.title("Monthly Salary Tracker") initial_salary = st.number_input("Enter your initial monthly salary:", min_value=0.0, value=0.0, key="initial_salary") salary_tracker = SalaryTracker(initial_salary) # Add or Deduct Expenses col1, col2 = st.columns(2) add_expense = col1.number_input("Add Expense", min_value=0.0, key="add_expense") deduct_expense = col2.number_input("Deduct Expense", min_value=0.0, key="deduct_expense") if st.button("Add Expense"): if add_expense > 0: salary_tracker.add_expense(add_expense) month = st.text_input("Enter the month and year (e.g., 'Oct 2023'):", key="month") salary_tracker.update_data(month) if st.button("Deduct Expense"): if deduct_expense > 0: salary_tracker.deduct_expense(deduct_expense) month = st.text_input("Enter the month and year (e.g., 'Oct 2023'):", key="month") salary_tracker.update_data(month) # Display Salary Data st.subheader("Salary History") if not salary_tracker.data.empty: st.dataframe(salary_tracker.data) # Generate and Display Graph if not salary_tracker.data.empty: plt.figure(figsize=(10, 5)) plt.plot(salary_tracker.data['Month'], salary_tracker.data['Salary'], marker='o') plt.title("Salary History Over Time") plt.xlabel("Month and Year") plt.ylabel("Salary") st.pyplot(plt)