A comprehensive Training Schedule Management System built in C++ that streamlines scheduling, trainer allocation, and reporting processes for educational institutions and training organizations.
- Create New Schedule: Add new training schedules with batch details, technology, dates, and venue information
- Update Existing Schedule: Modify and edit previously created training schedules
- Allot A Trainer: Assign qualified trainers to specific training batches based on technology expertise
- Generate Report: Create comprehensive reports for training schedules and assignments
- Session Management: Complete control over training session lifecycle
- View Schedule: Access and review all assigned training schedules and sessions
- Cancel Schedule: Request cancellation of allocated training sessions when needed
- Dashboard Access: Personalized faculty dashboard with relevant training information
- User Authentication: Secure login system with unique credentials for Admin and Faculty
- Role-based Access: Different permissions and menu options for Admin vs Faculty users
- Session Security: Automatic access denial after 3 failed login attempts
- Credential Validation: Username, password, and technology-based authentication for faculty
- C++ Compiler: GCC 7.0+ or equivalent
- Operating System: Linux, Windows (with WSL/Git Bash), or macOS
- Make: For build automation (optional)
git clone https://github.com/Tukesh1/Training-Schedule-Management-System.git
cd Training-Schedule-Management-System
chmod +x run.sh
./run.sh
cd scripts/src
g++ -o main.exe main.cpp
./main.exe
-
Run the application:
./run.sh
-
Login as Administrator:
- Username:
admin
- Password:
12345
- Username:
-
Login as Faculty:
- Use credentials from
scripts/data/facultyLogin.csv
- Format:
username password technology
- Use credentials from
Admin Dashboard Menu Options:
--------------------------------------------------------
Enter 1 β Create New Schedule
Enter 2 β Update Existing Schedule
Enter 3 β Allot A Trainer
Enter 4 β Generate Report
Enter 5 β Quit From This Session
--------------------------------------------------------
Workflow: Login β Dashboard β Select Option (1-5) β Perform Task β Return to Menu
Faculty Dashboard Menu Options:
--------------------------------------------------------
Enter 1 β View Schedule
Enter 2 β Cancel Schedule
Enter 3 β Quit From This Session
--------------------------------------------------------
Workflow: Login β Dashboard β Select Option (1-3) β Perform Task β Return to Menu
Training-Schedule-Management-System/
βββ .gitignore # Git ignore rules
βββ README.md # Project documentation
βββ CONTRIBUTING.md # Contribution guidelines
βββ LICENSE # MIT License file
βββ run.sh # Build and run script
βββ docs/
β βββ designing_part.pdf # System design documentation
β βββ documentation.pages # Additional documentation
β βββ navigation_plan1.png # System navigation diagram
β βββ requirements_doc.md # Detailed system requirements
βββ scripts/
βββ src/
β βββ main.cpp # Main application entry point
βββ include/
β βββ adminLogin.h # Admin functionality header
β βββ facultyLogin.h # Faculty functionality header
βββ data/
β βββ facultyLogin.csv # Faculty credentials database
β βββ schedule.csv # Training schedules database
β βββ trainerallotment.csv # Trainer assignments database
βββ UML Diagrams/
β βββ Admin Sequence Diagram.png
β βββ Class Diagram.png
β βββ Faculty Sequence Diagram.png.png
β βββ Merge Sequence.png
β βββ State_Machine_Diagram.svg
β βββ Use Case Diagram.png
βββ unit_testing/
β βββ unit_testing.xlsx # Test cases and results
βββ TROUBLESHOOTING.md # Common issues and solutions
username,password,technology
ankit 456 java
sultan 333 sap
batch_id,technology,start_date,end_date,date_diff,venue,no_of_participants
123 cpp 01-06-2023 01-07-2023 31 Noida 2 June
124 java 01-06-2023 01-07-2023 31 Noida 2 June
trainer_id,batch_id,technology,assignment_date
T001,B001,Java,2024-01-10
adminModules()
: Main admin dashboardcreateSchedule()
: Create new training scheduleupdateSchedule()
: Modify existing schedulesgenerateReport()
: Create monthly reportsallocateTrainer()
: Assign trainers to batches
facultyModules()
: Faculty dashboardviewSchedule()
: Display assigned schedulescancelSession()
: Cancel training sessionsupdateProfile()
: Modify faculty information
For common issues and solutions, see TROUBLESHOOTING.md.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes and test thoroughly
- Submit a pull request with detailed description
- File Handling: Efficient CSV-based data persistence
- Data Structures: Optimized algorithms for schedule management
- Input Validation: Robust error handling and data validation
- Modular Design: Scalable architecture for future enhancements
- Performance: Optimized for real-time operations and large datasets
- Schedule Creation: < 100ms average response time
- Report Generation: Handles 1000+ records efficiently
- Memory Usage: Optimized for minimal resource consumption
- Scalability: Supports multiple concurrent users
This project is licensed under the MIT License - see the LICENSE file for details.
Tukesh Kumar
- GitHub: @Tukesh1
- LinkedIn: @tukeshkumar
- Web: tukesh.sbs
β If you find this project helpful, please give it a star!