| Team Member | Student ID |
|---|---|
| Praveer jain | 25947209 |
| Ruben Easo Thomas | 25598184 |
| Jinkyung Kim | 14657314 |
| Harshit Soni | 25652177 |
A comprehensive Python-based interactive university enrollment system with both command-line and graphical interfaces:
- CLIUniApp: Command-line interface for Student and Admin subsystems handling the entire Uni App
- GUIUniApp: Tkinter GUI for student login, enrollment, and subject display for each student
Since admin does not have a registration module, we have hardcoded these admin credentials in our database.py file. Use this for login access to admin system.
name : "admin1"
email: "admin1@university.com"
pwd: "admin1pass"
name:"admin2"
email: "admin2@university.com"
pwd: "admin2pass"
- User Authentication: Secure login/registration with validation
- Student Management:
- Enrollment in up to 4 subjects (with randomly generated marks)
- Password management with security validation
- Subject viewing and removal capabilities
- Admin Functions:
- Student listing and management
- Grade-based grouping and analysis
- Pass/fail partitioning
- Data Persistence: JSON-based storage system
- GUI: Interface with Student dashboard
- Enhanced CLI: Enhanced university system through terminal interface
- Python 3.12.6 (tested on 3.12.6)
- No external packages required beyond the standard library
- Clone or unzip the project folder.
git clone https://github.com/jhin93/UTS_Fundamental_Programming_GR7.git
-
(Optional) Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # macOS/Linux venv\Scripts\activate # Windows -
Run the application in either mode in the src/ folder: bash
python3 main_cli.py
python3 main_gui.py
university_app/
├── cli/
│ ├── controllers/
│ │ ├── student_controller.py
│ │ ├── admin_controller.py
│ │ └── university_controller.py
│ ├── views/
│ │ ├── student_view.py
│ │ ├── admin_view.py
│ │ └── university_view.py
│ └── main_cli.py
├── gui/
│ ├── views/
│ │ ├── login_view.py
│ │ ├── enrollment_view.py
│ │ ├── subject_view.py
│ │ └── exception_view.py
│ ├── controllers/
│ │ └── gui_controller.py
│ └── main_gui.py
├── models/
│ ├── student.py
│ ├── subject.py
│ ├── database.py
| └── admin.py
├── utils/
│ └── validators.py
├── data/
│ └── students.data
└── README.mdFrom the project root:
bash
python3 main_cli.py
- Admin (A): Access admin functions
- Student (S): Access student functions
- Exit (X): Exit application
- login (l): Enter email and password to authenticate
- register (r): Create new student account (validated)
- exit (x): Return to main menu
- change password (c): Update password with validation
- enrol (e): Add subjects (up to 4, auto-generated)
- remove (r): Remove subject by ID
- show (s): Display enrolled subjects with marks and grades
- exit (x): Logout and save data
- show (s): List all registered students
- group students (g): Group students by grade
- partition PASS/FAIL (p): Divide students by passing status
- remove student (r): Delete student by ID
- clear database (c): Erase all student data
- exit (x): Return to main menu
# Launch the GUI application:
python3 main_gui.py - Enter registered email and password
- System validates credentials
- Enrol subject: Add random subject with mark and grade
- View subjects: See list of enrolled subjects
- Logout: Save changes and return to login
All data is stored in JSON format in data/students.data:
- Data is loaded when the application starts
- Changes are saved when students logout or enroll in subjects
- Both CLI and GUI interfaces share the same data file
- Email: Must end with "@university.com"
- Password:
- Must start with uppercase letter
- Must contain at least 5 letters
- Must contain at least 3 digits
- Follows MVC architecture pattern (Models, Views, Controllers)
- GUI implemented with Tkinter with modal dialogs
- Defensive programming with input validation
- Error handling with appropriate user feedback
- Domain Models: Implemented Student and Subject classes with proper encapsulation and inheritannce
- CLI- Login Interface: Developed the authentication window with validation
- DataValidations: Detailed model specifications and validation rules
- Data Persistence: Designed JSON-based database system
- CLI Interface: Designed and implemented the command-line interface , Admin model and controller
- CLI - Enrollment Interface: Created the Admin enrollment terminal interface
- User Experience: Implemented intuitive menu navigation for admin
- Documentation: Detailed model specifications and validation rules
- GUIControllers: Developed Student enrollment for GUI interface
- GUI - Subject Display: Created the subject visualization window
- Modelversion control : Folder struture design
- Business Logic: Implemented core application workflows
GUIControllers: Developed Student enrollment for GUI interface
- Testing GUIFramework: Created comprehensive test suite with pytest
- Utility Functions: Developed validation and ID generation utilities
- GUI - Theme System: Implemented application theming and popup management
- Project Integration: Ensured consistency across components