Skip to content

jhin93/UTS_Fundamental_Programming_GR7

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 

Repository files navigation

UniApp - University Enrollment System

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

Admin Credentials

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"

✨ Features at a Glance

  • 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

📋 Requirements

  • Python 3.12.6 (tested on 3.12.6)
  • No external packages required beyond the standard library

🚀 Installation & Running

  1. Clone or unzip the project folder.
git clone https://github.com/jhin93/UTS_Fundamental_Programming_GR7.git
  1. (Optional) Create and activate a virtual environment:

    python -m venv venv
    source venv/bin/activate   # macOS/Linux
    venv\Scripts\activate      # Windows
    
  2. Run the application in either mode in the src/ folder: bash

    Command-line interface:

     python3 main_cli.py

    Graphical interface:

    python3 main_gui.py
    

📁 Project Structure

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.md

🎯 CLI Usage

From the project root:

bash

Launch the CLI application:

python3 main_cli.py

University System Menu

  • Admin (A): Access admin functions
  • Student (S): Access student functions
  • Exit (X): Exit application

Student System

  • login (l): Enter email and password to authenticate
  • register (r): Create new student account (validated)
  • exit (x): Return to main menu

Subject Enrollment System (after login)

  • 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

Admin System

  • 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

🖥 GUI Usage

# Launch the GUI application:
python3 main_gui.py 

Login Window

  • Enter registered email and password
  • System validates credentials

Enrollment Window

  • Enrol subject: Add random subject with mark and grade
  • View subjects: See list of enrolled subjects
  • Logout: Save changes and return to login

💾 Persistence

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

🔐 Validation Rules

  • Email: Must end with "@university.com"
  • Password:
    • Must start with uppercase letter
    • Must contain at least 5 letters
    • Must contain at least 3 digits

📌 Technical Notes

  • 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

Team Contributions

Ruben Easo Thomas

  • 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

Praveer Jain

  • 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

Jinkyung Kim

  • 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

Harshit Soni

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

Group Contribution

  • Project Integration: Ensured consistency across components

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages