A complete implementation of the FSD assignment with fully functional CLI & GUI interfaces.
This project follows the MVC (Model-View-Controller) architectural pattern:
-
Models (Shared between CLI & GUI)
- Student: Manages student data and enrollment logic
- Subject: Handles subject information and grading
- Database: Provides data persistence using file storage
-
Controllers (Shared between CLI & GUI)
- UniversityController: Manages main system navigation
- StudentController: Handles student registration and authentication
- SubjectController: Controls subject enrollment operations
- AdminController: Manages administrative functions
-
Views (Separate implementations)
- CLI: Traditional command-line interface
- GUI: Modern graphical interface using Flet UI framework
- IDE: PyCharm (>=2024.2)
- Python: 3.11.9
- Key Dependencies:
- Flet: Modern UI framework for Python
- Clone the repository:
git clone [repository is not public]
cd fsd-python
- Create and activate a virtual environment (recommended):
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
The application provides two interface options:
python cli_main.py
python flet_main.py
-
Student Management
- Registration with email validation
- Secure login system
- Password management
- Subject enrollment (max 4 subjects)
-
Admin Functions
- View all students
- Group students by grade
- Partition students (Pass/Fail)
- Remove students
- Clear database
-
Data Persistence
- File-based storage using students.data
- CRUD operations for student records
- Automatic file creation and management
-
Code Style
- Follow PEP 8 guidelines
- Use type hints where applicable
- Document classes and complex functions
-
Git Commit Convention
- Follow gitmoji convention
- Format:
<emoji> <description>
-
Pull Requests
- Create feature branches
- Provide clear descriptions
- Reference related issues
src/
├── controllers/ # Application logic
├── models/ # Data models
├── views/ # User interfaces
│ ├── cli/ # Command line views
│ └── flet_ui/ # GUI views
├── core/ # Core utilities
├── cli_main.py # CLI entry point
└── flet_main.py # GUI entry point
-
Database File Location
- The students.data file is created in the project root
- Ensure write permissions in the directory
-
GUI Display Issues
- Check Flet version compatibility
- Verify screen resolution settings
-
Virtual Environment
- Always use the project's virtual environment
- Ensure all dependencies are installed
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is part of an academic assignment and should be used accordingly.
For issues and questions:
- Check existing issues in the repository
- Create a new issue with detailed description
- Use appropriate labels