Command-line application for managing student records efficiently. It allows users to perform various operations such as adding, updating, deleting, and searching for student information. The system is designed to streamline administrative tasks related to student management.
- Enhanced User Interaction: Improve user experience with customizable Excel file creation.
- Expanded Functionality: Include advanced search options, sorting capabilities, and report generation directly from Excel data.
The project is actively undergoing development to enhance user interaction and expand functionality.
-
Visualization of Student Performance π (In Progress)
Actively working on adding functionalities to generate visual plots for student performance analysis. These plots will provide teachers with valuable insights into student development and achievement. Some potential benefits include:
-
Overall Class Performance π: Visualizations can help identify trends and patterns in class performance across different subjects. This can be used to assess the effectiveness of teaching methods and identify areas for improvement.
-
Individual Student Performance π¦Έ: Visualizations can help track individual student progress over time and identify students who may be excelling in specific subjects or require additional support.
-
Identifying Strengths and Weaknesses πͺ: Visualizations can reveal student strengths and weaknesses in different subjects. This can help teachers tailor their instruction to meet the individual needs of their students.
-
Early Intervention π: By identifying students whose performance is declining, visualization tools can help teachers intervene early and provide targeted support.
-
-
Potential Visualizations πͺ
-
Bar charts π and histograms βοΈ: These can show the distribution of grades for a particular class or subject, highlighting the overall performance and potential gaps.
-
Line charts π: These can track individual student performance over time, allowing teachers to monitor progress and identify trends.
-
Scatter plots
βοΈ : These can reveal relationships between different variables, such as grades in different subjects or attendance and performance.
-
-
Missing Student Monitoring π: Features to identify and report missing students are also planned for future development.
- Python 3.x
- Pandas library
You can install the required library using pip:
pip install pandas
pip install matplotlib
main.py
: The main script containing all functionalities.
students23.csv
: CSV file containing student records.
- Clone the repository:
git clone https://github.com/yourusername/student-management-system.git
cd student-management-system
- Run the main script to start the student management system:
python main.py
- Follow the on-screen menu to perform various student management operations.
The main menu provides the following options:
- Add Student: Add a new student record.
- Delete Student: Remove a student record.
- Search Student: Search for a student record by name.
- List All Students: List all student records.
- List term 1 final grades for choosen group and subject.
- List term 2 final grades for choosen group and subject.
- List yearly grades for choosen group and subject.
- Distribution of Subject Yearly Grades by Groups.
- Exit: Exit the program.
Adds a new student record to the DataFrame.
More...
- Parameters:
- new_students (list): List containing the information of the new student.
- df_students (pd.DataFrame): DataFrame containing existing student records.
- Returns:
- None
Deletes a student record from the DataFrame.
More...
- Parameters:
- first_name_del (str): First name of the student to delete.
- last_name_del (str): Last name of the student to delete.
- df_students (pd.DataFrame): DataFrame containing existing student records.
- Returns:
- df (pd.DataFrame): DataFrame with the deleted record removed.
- Raises:
- ValueError: If no student with the given names is found.
Searches for a student in the DataFrame by first and last name.
More...
- Parameters:
- first_name_search (str): First name of the student to search.
- last_name_search (str): Last name of the student to search.
- df_students (pd.DataFrame): DataFrame containing existing student records.
- Returns:
- result (pd.DataFrame): DataFrame containing students matching the search criteria.
- Raises:
- ValueError: If no student with the given names is found.
Prints all students who are in the same group (class).
More...
- Parameters:
- df_students (pd.DataFrame): DataFrame containing existing student records.
- class_students (str): The group (class) of students to filter.
- Returns:
- result (pd.DataFrame): DataFrame containing students filtered by the provided group.
This section details the newly implemented functions for retrieving and reporting student grades:
Retrieving Grades : Term 1, Term 2 and Yearly
-
get_grade_term1(df_students, class_students, subject)
: This function retrieves and prints the Term 1 grades for a specific subject and class from a provided student DataFrame. -
get_grade_term2(df_students, class_students, subject)
: This function retrieves and prints the Term 2 grades for a specific subject and class from a provided student DataFrame. -
get_grade_yearly(df_students, class_students, subject)
: This function retrieves and prints the yearly grades for a specific subject and class from a provided student DataFrame.
Function Arguments :
-
df_students (pd.DataFrame)
: The DataFrame containing student information (including columns like "group", "first_name", "last_name", and subject grades). -
class_students (str)
: The name of the class (group) to filter students from (e.g., "group_a"). -
subject (str)
: The subject for which to retrieve grades (e.g., "math").
Output Example:
first_name last_name english_t1_end
Sebastian Bell 6
Levi Rogers 6
Aiden Parker 5
Aria Murphy 5
Victoria Griffin 5
Nora Ward 5
Natalie Torres 5
Matthew Stewart 5
Madison Bennett 5
Zoey Gray 5
Eleanor Howard 5
Daniel Cook 5
Chloe Russell 5
Carter Adams 5
Aurora James 5
Jack Nelson 4
Grayson Lee 4
Lily Ramirez 4
David Ward 4
Owen Cooper 4
Scarlett Hughes 4
Caleb Cox 4
Wyatt Brooks 4
Layla Price 4
Hannah Peterson 3
Jackson Reed 3
first_name last_name chemistry_year
Henry Harris 5.5
Benjamin Jackson 5.5
Ella Garcia 5.5
Michael Thompson 5.5
Lucas White 5.5
Abigail Thompson 5.0
Victoria Johnson 5.0
Sophia Anderson 5.0
Oliver Brown 5.0
Mia Jackson 5.0
James Thomas 5.0
Isabella Thomas 5.0
Harper Harris 5.0
Ethan Garcia 5.0
Emma Wilson 5.0
Ava Taylor 5.0
Amelia White 5.0
Alexander Martin 4.5
Jacob Martinez 4.5
Grace Martinez 4.5
Liam Johnson 4.5
Noah Smith 4.5
Elijah Taylor 4.5
Olivia Moore 4.5
William Anderson 4.5
Evelyn Martin 4.0
get_year_data(df: pd.DataFrame, year_in_school: int) -> pd.DataFrame
- This function filters a DataFrame to return data for a specific year in school.
get_group_data(df: pd.DataFrame, year_in_school: int, group: str) -> pd.DataFrame
- This function further filters data by both year in school and student group.
grade_name(grade) -> str
- This function assigns a grade name based on a given numeric grade.
yearly_grade_dist_subject(df: pd.DataFrame, year_in_school: int, grade_year: int, subject: str) -> None
- This function generates pie charts showing the distribution of yearly grades for a specified subject and grade year. It filters data, calculates grade names, groups the data, and plots pie charts for each student group.
Important Notes :
-
These functions directly print the results to the console, displaying students' first name, last name, and the requested grades (Term 1, Term 2, or Yearly) in descending order (highest to lowest).
-
The index column (row numbers) is excluded from the output.
-
Get Student Information π©: Prompts the user for student information and performs basic validation.
-
Validate Email π§: Checks if the email format is valid.
-
Validate Date π : Checks if the date format is in valid format (YYYY-MM-DD).
-
Group Validation π‘: Prompts the user to enter a student's group until a valid group is provided.
-
Subject Validation β : Prompts the user to enter a subject name until a valid subject is provided.
-
Grade Year Validation π: Prompts the user to enter a year fo grade, until a valid year is provided.
-
Year Validation ποΈ: Prompts the user to enter a student's year in school until a valid year is provided.
Contributions are welcome! Please fork the repository and submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.