A desktop application built with PyQt6 for managing student records, courses, grades, and generating academic reports. Created as a learning project for my Discrete Structures course to understand GUI development and event-driven programming.
- Add, edit, and delete students
- Assign unique student IDs automatically
- Search students by ID or name
- Enroll students in courses
- Track enrolled courses per student
- Add, edit, and delete courses
- Unique course codes with validation
- Search courses by code or subject
- View enrolled students per course
- Add grades for students (seatwork, assignments, quizzes, exams)
- Automatic grade calculation with weighted system:
- Class Standing (40%): Seatwork (25%) + Assignment (25%) + Quizzes (50%)
- Final Grade: Class Standing (40%) + Exam (60%)
- Pass/Fail determination (75% passing grade)
- Grade calculator tool for quick calculations
- Student academic reports (all courses and grades)
- Course reports (all enrolled students)
- Class ranking by average grade
- Failing students identification
- Recent activity tracking (last 10 actions)
- Responsive design with QStackedWidget navigation
- Multi-screen layout (Dashboard, Students, Courses, Tools)
- Table and list views for data display
- Custom dialog boxes for user input
- Real-time feedback with message boxes
- Language: Python 3.x
- GUI Framework: PyQt6
- Data Storage: In-memory (dictionaries)
- Python 3.8 or higher
- PyQt6
- Clone the repository:
git clone https://github.com/Be1l-ai/Student_Management.git
cd Student_Management- Install dependencies:
pip install -r requirements.txt- Run the application:
python main.py- Username:
admin - Password:
admin123
(Note: This is a learning project - authentication is intentionally simple)
The application has 4 main sections accessible from the sidebar:
- Dashboard - Overview with recent activity list
- Students - Student management (add, edit, delete, search, enroll, student reports)
- Courses - Course management (add, edit, delete, search, course reports)
- More - Additional tools (grade calculator, rankings, failing students report)
- Add courses (e.g., "CS101 - Data Structures", "MATH101 - Calculus")
- Add students (system generates unique IDs)
- Enroll students in courses
- Add grades for each enrolled course
- Generate reports or view class rankings
StudentManagementSystem/
├── main.py # Main application entry point
├── utils/
│ ├── student_management.py # UI file (Qt Designer generated)
│ ├── dialog_helper.py # Custom dialog utilities
│ └── displaymanager.py # Display utilities for tables/lists
├── ui/ # .ui files
├── assets/
├── requirements.txt # Python dependencies
├── screenshots/ # Application screenshots
└── README.md # This file
- DialogHelper: Handles all user input dialogs (add, edit, search)
- DisplayManager: Manages data display in tables and lists
- Validation methods: Input validation (IDs, grades, course codes)
students = {
student_id: {
'name': str,
'courses': [
{
'code': str,
'subject': str,
'grades': {'seatwork': float, 'assignment': float, ...},
'remarks': str
}
]
}
}
courses = {
course_code: {
'course': str,
'subject': str
}
}Building this project taught me:
- PyQt6 fundamentals: Widgets, layouts, signals/slots, event handling
- QStackedWidget: Multi-screen navigation in desktop apps
- Event-driven programming: Connecting UI actions to backend logic
- State management: Managing application data without a database
- Input validation: Ensuring data integrity with proper error handling
- User experience design: Confirmation dialogs, clear error messages, intuitive navigation
- Code organization: Separating UI logic from business logic with helper classes
- Table/List widgets: Displaying and updating data dynamically
- No data persistence: All data is lost when the application closes, No database integration
- Basic authentication: Hardcoded credentials (this is a learning project, not production software)
- No multi-user support: Single admin account
- No export functionality: Reports are displayed in-app only
- Limited input sanitization: Basic validation but no advanced security measures
If I continue this project, I'd add:
- SQLite database for data persistence
- Export reports to PDF/CSV
- Import student data from Excel/CSV
- Student profile pictures
- Course prerequisites system
- Attendance tracking
- Grade history and trends
- Email notifications for failing students
- Multi-user support with roles (admin, teacher, student)
- Proper authentication with password hashing
This project was built as an assignment for my Discrete Structures course. The main learning goals were:
- Understanding GUI development with PyQt6
- Creating responsive layouts with QStackedWidget
- Implementing CRUD operations without a database
- Building a usable interface for managing relational data
- Make sure PyQt6 is installed
- Run
python main.py - Login with default credentials
- Start by adding courses, then students, then enrolling and grading
Built with PyQt6 for academic learning.
Assignment project for Discrete Structures course - demonstrating GUI development skills.




