A full-stack, role-based web application built using Flask that allows efficient management of student records, academic performance, and secure user access.
This project upgrades a console-based system into a modern web application with authentication, analytics, and a clean user interface.
- Role-based login (Admin & Student)
- Password hashing using Werkzeug
- Strong password validation (uppercase, lowercase, numbers)
- First-time login password change enforcement
- Admin-controlled password reset system
- Add new students (auto user account creation)
- View all students in a structured table
- Search by ID or name
- Update student details (with skip option)
- Delete student records
- Reset student passwords
- Sort students by name or percentage
- Login using Student ID
- View personal details
- View performance report
- Change password securely
- Subject-wise marks tracking
- Automatic calculation of:
- Total
- Percentage
- Grade
- Visual charts using Chart.js
- Statistics:
- Average marks
- Highest score
- Lowest score
- Persistent storage using JSON files (
data.txt,users.txt) - Auto-sync between file and application
- Handles duplicate and invalid entries
- Input validation for all fields
- Marks range check (0–100)
- Prevents empty inputs
- Handles missing records gracefully
- Backend: Flask (Python)
- Frontend: HTML, Bootstrap
- Database: JSON (File Handling)
- Charts: Chart.js
- Security: Werkzeug (Password Hashing)
project/ │ ├── app.py ├── model.py ├── service.py ├── auth.py ├── data.txt ├── users.txt │ ├── templates/ │ ├── base.html │ ├── login.html │ ├── dashboard.html │ ├── add_student.html │ ├── view.html │ ├── update.html │ ├── report.html │ ├── search.html │ ├── change_password.html │ └── force_change.html
bash git clone https://github.com/your-username/student-management.git cd student-management
pip install flask
python app.py
Admin Username: Nanisha Password: python
Username: Preetha Password: sql
Student Login using Student ID Default password: 1234 Must change password on first login
Passwords are stored using hashing (Werkzeug) Cannot be retrieved once stored Admin can reset passwords to default
Admin logs in Adds a student System auto-creates user account Student logs in using ID Forced password change Student views report with chart
Object-Oriented Programming (OOP) File Handling (JSON) CRUD Operations Role-Based Access Control Exception Handling Data Visualization
Clean UI with Bootstrap Secure authentication system Real-time data updates Analytical reports with charts Modular and scalable design
Export reports (PDF/CSV) Dashboard analytics Database integration (MySQL) Email-based password reset Graphical dashboard charts
This project demonstrates a complete student management system with secure authentication, structured data handling, and analytical reporting using Flask.