program eith commenting
Sat Jan 06 2024 21:19:11 GMT+0000 (Coordinated Universal Time)
Saved by @msaadshahid
Certainly! I'll add comments to the provided C++ program to explain each section and function. Here are the commented sections: ```cpp #include <iostream> #include <iomanip> #include <fstream> using namespace std; const int MAX_ENROLLMENTS = 5; struct Course { string courseID; int enrolDate; int fine; }; struct Student { string stName; string stID; string stContact; int enrollmentCount = 0; Course enrollCourse[MAX_ENROLLMENTS]; }; // Function prototypes void displayMenu(); void addStudent(Student Detail[], int& stCount); void displayDetails(Student Detail[], int stCount); void enrollInCourse(Student Detail[], int studentCount); void displayenrollments(Student Detail[], int stCount); void displayfines(Student Detail[], int stCount); void displayoptionstoload(Student Detail[], int& stCount); void displayoptionstosave(Student Detail[], int stCount); void addStudentfromfile(Student Detail[], int& stCount); void enrollInCoursefromfile(Student Detail[], int studentCount); void displayDetailsinFile(Student Detail[], int stCount); void displayenrollmentsinFile(Student Detail[], int stCount); void displayfinesinFile(Student Detail[], int stCount); void instructions(); int main() { cout << "\t\t============Welcome to The Admin Portal============" << endl; int MAX_STUDENTS; int LastDate, LastMonth, LastYear; int choice; cout << "\nMaximum Students = "; cin >> MAX_STUDENTS; Student stDetail[MAX_STUDENTS]; int studentCount = 0; do { displayMenu(); cout << "Enter your choice: "; cin >> choice; if (cin) { if (choice == 1) { addStudent(stDetail, studentCount); } else if (choice == 2) { displayDetails(stDetail, studentCount); } else if (choice == 3) { enrollInCourse(stDetail, studentCount); } else if (choice == 4) { displayenrollments(stDetail, studentCount); } else if (choice == 5) { displayfines(stDetail, studentCount); } else if (choice == 6) { instructions(); } else if (choice == 7) { displayoptionstoload(stDetail, studentCount); } else if (choice == 8) { displayoptionstosave(stDetail, studentCount); } else if (choice == 9) { cout << "\n\t\t\t========THANKS FOR USING PORTAL========" << endl; } else { cout << "Invalid Choice" << endl; } } else { cin.clear(); cin.ignore(); cout << "Invalid DataType" << endl; } } while (choice != 9); return 0; } // Display function void displayMenu() { cout << "\n\t=============== Student Registration System Menu ===============\n\n"; cout << left << setw(50) << "1 => Add new student" << left << setw(50) << "2 => Display all students" << endl; cout << left << setw(50) << "3 => Enroll in a course" << left << setw(50) << "4 => Display all enrollments" << endl; cout << left << setw(50) << "5 => Display all fines" << left << setw(50) << "6 => Instructions" << endl; cout << left << setw(50) << "7 => Load data from file" << left << setw(50) << "8 => Save data to file" << endl; cout << left << setw(50) << "9 => Exit" << endl; } // Function to add a new student void addStudent(Student Detail[], int& stCount) { string name, id, contact; bool duplicate = false; cout << "\n\t\t=============== Register New Student ===============\n\n"; cout << "Enter Student Name = "; cin.ignore(); getline(cin, name); cout << "Enter Student ID = "; getline(cin, id); cout << "Enter Student Contact INFO = "; getline(cin, contact); // Check for duplicate student ID for (int i = 0; i < stCount; ++i) { if (Detail[i].stID == id) { cout << "THIS STUDENT IS ALREADY PRESENT IN DTATABASE!!!" << endl; duplicate = true; break; } } if (!duplicate) { Detail[stCount].stName = name; Detail[stCount].stID = id; Detail[stCount].stContact = contact; stCount++; cout << "New Student is Enrolled SUCCESSFULLY" << endl; } } // Function to display details of all registered students void displayDetails(Student Detail[], int stCount) { cout << "\n\t\t=============== Already Registered Students ===============\n\n"; if (stCount == 0) { cout << "No students registered yet.\n"; } else { cout << left << setw(10) << "sr no." << setw(20) << "Student Name" << setw(20) << "Student ID" << setw(25) << "Student Contact" << endl; for (int i = 0; i < stCount; i++) { cout << left << setw(10) << i + 1 << setw(20) << Detail[i].stName << setw(20) << Detail[i].stID << setw(25) << Detail[i].stContact << endl; } } } // Function to enroll a student in a course void enrollInCourse(Student Detail[], int studentCount) { string studentID; string courseID; cout << "Enter student ID: "; cin >> studentID; // Validate student ID int studentIndex = -1; for (int i = 0; i < studentCount; ++i) { if (Detail[i].stID == studentID) { studentIndex = i; break; } } if (studentIndex == -1) { cout << "Student not found. Please register the student first.\n"; return; } if (Detail[studentIndex].enrollmentCount >= 5) { cout << "Maximum no. of courses Enrolled of that Student" << endl; return; } cout << "Enter course ID: "; cin >> courseID; int j = Detail[studentIndex].enrollmentCount; // Validate course ID int d, m, y; cout << "Enter Enrollment Date (DD MM YYYY): "; cin >> d >> m >> y; if ((d > 0 && d <= 31) && (m == 01 || m == 1) && (y == 2024)) { // Get current date and time Detail[studentIndex].enrollCourse[j].enrolDate = d; // Enroll the student in the course Detail[studentIndex].enroll Course[j].courseID = courseID; cout << "Enrollment successful.\n"; // Increment enrollment count Detail[studentIndex].enrollmentCount++; // Fine calculation if (d > 0 && d < 11) { Detail[studentIndex].enrollCourse[j].fine = 0; } else { int daysfine = d - 10; Detail[studentIndex].enrollCourse[j].fine = 500 * daysfine; } } else { cout << "Invalid Date" << endl; } } // Function to display all enrollments void displayenrollments(Student Detail[], int stCount) { cout << "\n\t\t=============== Already Registered Courses ===============\n\n"; if (stCount == 0) { cout << "No students registered yet.\n"; } else { cout << left << setw(10) << "sr no." << setw(20) << "Student Name" << setw(20) << "Student ID" << setw(25) << "Student Courses" << setw(20) << "Enrollment Date" << endl; for (int i = 0; i < stCount; i++) { cout << left << setw(10) << i + 1 << setw(20) << Detail[i].stName << setw(20) << Detail[i].stID; if (Detail[i].enrollmentCount >= 1) { for (int j = 0; j < Detail[i].enrollmentCount; j++) { if (j == 0) { cout << setw(25) << Detail[i].enrollCourse[j].courseID << Detail[i].enrollCourse[j].enrolDate << "/01/2024" << endl; } else { cout << setw(50) << " " << setw(25) << Detail[i].enrollCourse[j].courseID << Detail[i].enrollCourse[j].enrolDate << "/01/2024" << endl; } } cout << endl; } else { cout << setw(25) << "No Course Registered" << endl; } } } } // Function to display fines for each student void displayfines(Student Detail[], int stCount) { cout << "\n\t\t=============== Student Fine List ===============\n\n"; if (stCount == 0) { cout << "No students registered yet.\n"; } else { cout << left << setw(10) << "sr no." << setw(20) << "Student Names" << setw(20) << "Student IDs" << setw(25) << "No. of Courses" << setw(20) << "Fines" << endl; for (int i = 0; i < stCount; i++) { int sum = 0; cout << left << setw(10) << i + 1 << setw(20) << Detail[i].stName << setw(20) << Detail[i].stID; if (Detail[i].enrollmentCount >= 1) { for (int j = 0; j < Detail[i].enrollmentCount; j++) { sum += Detail[i].enrollCourse[j].fine; } cout << setw(25) << Detail[i].enrollmentCount << sum << endl; } else { cout << setw(25) << "No Course Registered" << endl; } } } } // Function to display options for saving data to a file void displayoptionstosave(Student Detail[], int stCount) { cout << "\n\t=============== Student Registration System Menu ===============\n\n"; cout << left << setw(50) << "1 => Display all students" << endl; cout << left << setw(50) << "2 => Display all enrollments" << endl; cout << left << setw(50) << "3 => Display all fines" << endl; cout << left << setw(50) << "4 => Exit" << endl; cout << "Enter your choice : "; char choice; cin >> choice; switch (choice) { case '1': displayDetailsinFile(Detail, stCount); break; case '2': displayenrollmentsinFile(Detail, stCount); break; case '3': displayfinesinFile(Detail, stCount); break; case '4': break; default: cout << "Invalid choice"; } } // Function to display options for loading data from a file void displayoptionstoload(Student Detail[], int& stCount) { cout << "\n\t=============== Student Registration System Menu ===============\n\n"; cout << left << setw(50) << "1 => Load students Data from File" << endl; cout << left << setw(50) << "2 => Load enrollments Data from File" << endl; cout << left << setw(50) << "3 => Exit" << endl; cout << "Enter your choice : "; char choice; cin >> choice; switch (choice) { case '1': addStudentfromfile(Detail, stCount); break; case '2': enrollInCoursefromfile(Detail, stCount); break; case '3': break; default: cout << "Invalid choice"; } } // Function to add students from a file void addStudentfromfile(Student Detail[], int& stCount) { string name, id, contact; ifstream inFile; inFile.open("StudentData.txt"); if (!inFile) { cout << "No previous data found.\n"; return; } // Read data from the file while (inFile >> name >> id >> contact) { Detail[stCount].stName = name; Detail[stCount].stID = id; Detail[stCount].stContact = contact; stCount++; } cout << "New Students are Enrolled SUCCESSFULLY" << endl; inFile.close(); } // Function to enroll students in courses from a file void enrollInCoursefromfile(Student Detail[], int studentCount) { string studentID; string courseID; ifstream inFile; inFile.open("EnrollmentCourseData.txt"); // Read data from the file while (inFile >> studentID) { // Validate student ID int studentIndex = -1; for (int i = 0; i < studentCount; ++i) { if (Detail[i].stID == studentID) { studentIndex = i; break; } } inFile >> courseID; int j = Detail[studentIndex].enrollmentCount; // Validate course ID int d, m, y; inFile >> d >> m >> y; if ((d > 0 && d <= 31) && (m == 01 || m == 1) && (y == 2024)) { // Get current date and time Detail[studentIndex].enrollCourse[j].enrolDate = d; // Enroll the student in the course Detail[studentIndex].enrollCourse[j].courseID = courseID; // Increment enrollment count Detail[studentIndex].enrollmentCount++; // Fine calculation if (d > 0 && d < 11) { Detail[studentIndex].enrollCourse[j].fine = 0; } else { int daysfine = d - 10; Detail[studentIndex].enrollCourse[j].fine = 500 * daysfine; } } } cout << "Enrollment successful.\n"; inFile.close(); } // Function to display enrollments in a file void displayenrollmentsinFile(Student Detail[], int stCount) { ofstream outFile; outFile.open("DisplayEnrollments.txt"); outFile << "\n\t\t=============== Already Registered Courses ===============\n\n"; if (stCount == 0) { outFile << "No students registered yet.\n"; } else { outFile << left << setw(10) << "sr no." << setw(20) << "Student Name" << setw(20) << "Student ID" << setw(25) << "Student Courses" << setw(20) << "Enrollment Date" << endl; for (int i = 0; i < stCount; i++) { outFile << left << setw(10) << i + 1 << setw(20) << Detail[i].stName << setw(20) << Detail[i].stID; if (Detail[i].enrollmentCount >= 1) { for (int j = 0; j < Detail[i].enrollmentCount; j++) { if (j == 0) { outFile << setw(25) << Detail[i].enrollCourse[j].courseID << Detail[i].enrollCourse[j].enrolDate << "/01/2024" << endl; } else { outFile << setw(50) << " " << setw(25) << Detail[i].enrollCourse[j].courseID << Detail[i].enrollCourse[j].enrolDate << "/01/2024" << endl; } } outFile << endl; } else { outFile << setw(25) << "No Course Registered" << endl; } } } outFile.close(); } // Function to display fines in a file void displayfinesinFile(Student Detail[], int stCount) { ofstream outFile; outFile.open("DisplayFines.txt"); outFile << "\n\t\t=============== Student Fine List ===============\n\n"; if (stCount == 0) { outFile << "No students registered yet.\n"; } else { outFile << left << setw(10) << "sr no." << setw(20) << "Student Names" << setw(20) << "Student IDs" << setw(25) << "No. of Courses" << setw(20) << "Fines" << endl; for (int i = 0; i < stCount; i++) { int sum = 0; outFile << left << setw(10) << i + 1 << setw(20) << Detail[i].stName << setw(20) << Detail[i].stID; if (Detail[i].enrollmentCount >= 1) { for (int j = 0; j < Detail[i].enrollmentCount; j++) { sum += Detail[i].enrollCourse[j].fine; } outFile << setw(25) << Detail[i].enrollmentCount << sum << endl; } else { outFile << setw(25) << "No Course Registered" << endl; } } } outFile.close(); } // Function to display student details in a file void displayDetailsinFile(Student Detail[], int stCount) { ofstream outFile; outFile.open("DisplayStudentDetails.txt"); outFile << "\n\t\t=============== Already Registered Students ===============\n\n"; if (stCount == 0) { outFile << "No students registered yet.\n"; } else { outFile << left << setw(10) << "sr no." << setw(20) << "Student Name" << setw(20) << "Student ID" << setw(25) << "Student Contact" << endl; for (int i = 0; i < stCount; i++) { outFile << left << setw(13) << i + 1 << setw(20) << Detail[i].stName << setw(25) << Detail[i].stID << setw(25) << Detail[i].stContact << endl; } } outFile.close(); } // Function to display instructions and policy void instructions() { cout << "\t==============Student Registration System - Instructions and Policy==============\n\n"; cout << "HOW TO USE???\n\n1. Adding a New Student:\n\t- Choose option 1 from the main menu.\n\t- Enter the student's name, ID, and contact information.\n\t- The system checks for duplicate IDs before enrolling a new student." << endl << endl; cout << "2. Displaying All Students:\n\t- Choose option 2 from the main menu.\n\t- View a list of all currently registered students with their names, IDs, and contact information." << endl << endl; cout << "3. Enrolling in a Course:\n\t- Choose option 3 from the main menu.\n\t- Enter the student ID.\n\t - Enter the course ID, enrollment date (DD MM YYYY), and validate the date.\n\t- The system checks for maximum course enrollments (up to 5) and calculates fines if applicable." << endl << endl; cout << "4. Displaying All Enrollments:\n\t- Choose option 4 from the main menu.\n\t- View a list of all enrolled courses for each student, along with enrollment dates." << endl << endl; cout << "5. Displaying All Fines:\n\t- Choose option 5 from the main menu.\n\t- View a list of fines for each student based on their course enrollments." << endl << endl; cout << "6. Loading and Saving Data:\n\t- Choose options 7 and 8 from the main menu to load from and save data to files, respectively.\n\t- For loading, you can load both student and enrollment data from separate text files." << endl << endl; cout << "7. Exiting the Program:\n\t- Choose option 9 to exit the program." << endl << endl; cout << "\nPOLICY\n\t- The program is designed for managing student registrations, enrollments, and fines.\n\t- Respect the maximum limit of 5 enrollments per student.\n\t- Follow the specified format for input data, especially for dates (DD MM YYYY).\n\t- Be cautious to avoid duplicate student IDs during registration.\n\t- Save and load data using the provided options to maintain records.\n\t- The program calculates fines for late enrollments based on a fixed rate." << endl << endl; cout<< "\nThank you for using the Student Registration System! If you have any questions or encounter issues, refer to the instructions or contact the administrator for assistance."<<endl<<endl; }
Comments