-
Notifications
You must be signed in to change notification settings - Fork 0
/
SMS.cpp
137 lines (102 loc) · 3 KB
/
SMS.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
#include <limits>
#include <algorithm>
using namespace std;
/*Prevent hardcoding
Add Utility functions*/
const int maxCourses = 6;
struct Student
{
string name;
string matricule;
int numCourses;
string courses[maxCourses];
};
// Function to input student details
Student inputStudentDetails()
{
Student newStudent;
cout << "Enter Matricule: ";
getline(cin, newStudent.matricule);
cout << "Enter Name: ";
getline(cin, newStudent.name);
do
{
cout << "Enter Number of courses (up to " << maxCourses << "): ";
cin >> newStudent.numCourses;
if (cin.fail() || newStudent.numCourses < 0 || newStudent.numCourses > maxCourses)
{
cin.clear(); // Clear the error flag
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // Discard invalid input
cout << "Invalid input. Please enter a valid number of courses between 0 and " << maxCourses << ".\n";
}
} while (cin.fail() || newStudent.numCourses < 0 || newStudent.numCourses > maxCourses);
cin.ignore(); // Clear the newline character left in the buffer
cout << "Enter your courses:\n";
for (int i = 0; i < newStudent.numCourses; i++)
{
cout << "Course " << i + 1 << ": ";
getline(cin, newStudent.courses[i]);
}
return newStudent;
}
// Function to write student details to a text file
void writeStudentToFile(const Student &student)
{
ofstream outputFile("students.txt", ios::app);
if (!outputFile.is_open())
{
cerr << "Error: Unable to open file for writing." << endl;
return;
}
outputFile << student.matricule << " " << student.name << " " << student.numCourses;
for (int i = 0; i < student.numCourses; i++)
{
outputFile << " " << student.courses[i];
}
outputFile << "\n";
outputFile.close();
cout << "Student details saved to students.txt." << endl;
}
// Function to display all students from the file
/*void displayStudentDetails(const Student &stud)
{
}*/
// Function to edit records
/*void editStudentDetails(const Student &stud)
{
}*/
// Function to delete records
/*void deleteStudentDetails(const Student &stud)
{
}*/
int main()
{
vector<Student> students;
char choice;
do
{
cout << "\nStudent Management System:\n";
cout << "1. Add New Student\n";
cout << "2. Display All Students\n";
cout << "3. Exit\n";
cout << "Enter your choice: ";
cin >> choice;
switch (choice)
{
case '1':
cin.ignore(); // Clear the input buffer
writeStudentToFile(inputStudentDetails());
break;
case '3':
cout << "Exiting the Student Management System." << endl;
break;
default:
cout << "Invalid choice. Please try again." << endl;
}
} while (choice != '3');
return 0;
}