nabeelmaroof/basic_erp_for_schools
0
1# app.py2import streamlit as st3import pandas as pd4 5st.set_page_config(page_title="School ERP - Student Fees", layout="wide")6 7st.title("๐ซ School ERP System - Student Fee Records")8 9# In-memory storage for demo purposes10if "students" not in st.session_state:11 st.session_state.students = {}12 13# Tabs for navigation14tabs = st.tabs(["โ Register Student", "๐ฐ Add/View Fees", "๐ Student Report"])15 16# Register Student17with tabs[0]:18 st.header("Register a New Student")19 name = st.text_input("Full Name")20 student_id = st.text_input("Student ID")21 grade = st.selectbox("Grade", ["Grade 1", "Grade 2", "Grade 3", "Grade 4", "Grade 5"])22 23 if st.button("Register Student"):24 if student_id in st.session_state.students:25 st.warning("Student ID already exists!")26 else:27 st.session_state.students[student_id] = {28 "name": name,29 "grade": grade,30 "fees": []31 }32 st.success(f"Registered {name} successfully.")33 34# Add/View Fees35with tabs[1]:36 st.header("Fee Entry and View")37 student_ids = list(st.session_state.students.keys())38 39 if student_ids:40 selected_id = st.selectbox("Select Student ID", student_ids)41 student = st.session_state.students[selected_id]42 43 st.write(f"**Name:** {student['name']} | **Grade:** {student['grade']}")44 45 fee_amount = st.number_input("Enter Fee Amount", min_value=0.0, step=100.0)46 fee_term = st.selectbox("Fee Term", ["Term 1", "Term 2", "Term 3"])47 48 if st.button("Add Fee"):49 student['fees'].append({"term": fee_term, "amount": fee_amount})50 st.success(f"Added fee for {fee_term}.")51 52 # Display current fee records53 if student['fees']:54 df = pd.DataFrame(student['fees'])55 st.subheader("Fee Records")56 st.dataframe(df)57 else:58 st.info("No fee records yet.")59 else:60 st.warning("No students registered yet.")61 62# Student Report63with tabs[2]:64 st.header("All Student Fee Summary")65 if st.session_state.students:66 records = []67 for sid, data in st.session_state.students.items():68 total_paid = sum(fee['amount'] for fee in data['fees'])69 records.append({70 "Student ID": sid,71 "Name": data['name'],72 "Grade": data['grade'],73 "Total Fees Paid": total_paid74 })75 76 df_summary = pd.DataFrame(records)77 st.dataframe(df_summary)78 else:79 st.info("No student records available.")80 81# requirements.txt82# ----------------83# streamlit84# pandas85 