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;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter