import gradio as gr import pandas as pd # Global list to store student data student_data = [] # Function to calculate and store the grade def calculate_grade(name, id, pass_criteria, merit_criteria, distinct_criteria): total_criteria = pass_criteria + merit_criteria + distinct_criteria grade = "Not Achieved" if pass_criteria == 11 or (pass_criteria >= 8 and total_criteria >= 12): grade = "P" if pass_criteria >= 8 and merit_criteria >= 6 and total_criteria >= 17: grade = "M" if pass_criteria >= 8 and merit_criteria >= 6 and distinct_criteria >= 3 and total_criteria >= 20: grade = "D" student_data.append([name, id, grade]) return f"Added: {name}, {id}, {grade}" # Function to export data to Excel def export_to_excel(): if not student_data: return "No data to export." df = pd.DataFrame(student_data, columns=["Name", "ID", "Grade"]) df.to_excel("grades.xlsx", index=False) return "Data exported to grades.xlsx" # Gradio interface with gr.Blocks() as app: gr.Markdown("Student Grading App") with gr.Row(): name = gr.Textbox(label="Student Name") id = gr.Number(label="Student ID", precision=0) with gr.Row(): pass_criteria = gr.Slider(minimum=0, maximum=11, label="Pass Criteria Met") merit_criteria = gr.Slider(minimum=0, maximum=8, label="Merit Criteria Met") distinct_criteria = gr.Slider(minimum=0, maximum=4, label="Distinct Criteria Met") with gr.Row(): grade_button = gr.Button("Add Student") export_button = gr.Button("Export to Excel") output = gr.Textbox(label="Output", lines=2) export_status = gr.Text(label="Export Status") grade_button.click(calculate_grade, inputs=[name, id, pass_criteria, merit_criteria, distinct_criteria], outputs=output) export_button.click(export_to_excel, inputs=[], outputs=export_status) app.launch()