CoolFace
Apppublic

nabeelmaroof/basic_erp_for_schools

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
app.py85 linesDownload Raw Back to root
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