-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathASSIGNMENTREVIEWSYSTEM
400 lines (348 loc) · 17.5 KB
/
ASSIGNMENTREVIEWSYSTEM
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
#include <bits/stdc++.h>
using namespace std;
// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
const std::string currentDateTime() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
return buf;
}
class IMG_Member {
protected:
string Name;
string Enrollment_no;
string Last_login;
string Email_id;
string Whatsapp_No;
string DOB;
public:
string get_Name() { return Name; }
string get_DOB() { return DOB; }
string get_current_login() { return Last_login; }
void set_Last_login(const string& lastLogin) { Last_login = lastLogin; }
void set_Whatsapp_No(const string& whatsappNo) { Whatsapp_No = whatsappNo; }
void set_DOB(const string& dob) { DOB = dob; }
};
class Assignment {
private:
string Assignment_title;
string Assignment_probstatement;
string Assignment_status;
string Assignment_suggestion;
string Assignment_Deadline;
string Assignment_submission_time;
public:
Assignment() {}
Assignment(string title, string probstatement, string status = "Pending", string suggestion = "", string deadline = "")
: Assignment_title(title), Assignment_probstatement(probstatement), Assignment_status(status), Assignment_suggestion(suggestion), Assignment_Deadline(deadline) {}
string get_Assignment_status() { return Assignment_status; }
string get_Assignment_suggestion() { return Assignment_suggestion; }
string get_Assignment_title() { return Assignment_title; }
string get_Assignment_probstatement() { return Assignment_probstatement; }
string get_Assignment_submission_time() { return Assignment_submission_time; }
void Update_Assignment_status_suggestion(string status, string suggestion) {
Assignment_status = status;
Assignment_suggestion = suggestion;
}
vector<string> Assignment_details() {
return {Assignment_title, Assignment_probstatement, Assignment_status, Assignment_suggestion, Assignment_Deadline, Assignment_submission_time};
}
void get_Assignment_title_status() {
cout << "Assignment Title: " << Assignment_title << endl;
cout << "Assignment Status: " << Assignment_status << endl;
}
void get_Assignment_title_probstatement() {
cout << "Assignment Title: " << Assignment_title << endl;
cout << "Assignment Problem statement: " << Assignment_probstatement << endl;
cout << "Assignment Deadline: " << Assignment_Deadline << endl;
}
};
vector<Assignment> assignment_mainside;
class Student : public IMG_Member {
private:
vector<Assignment> assignment_studentside;
int Pin_key;
public:
Student() {}
Student(string name, string enrollment_no, string email_id, int pin_key) {
Name = name;
Enrollment_no = enrollment_no;
Email_id = email_id;
Pin_key = pin_key;
}
int Verify_pin_key() { return Pin_key; }
void display_Personalinfo() {
cout << "Name: " << Name << endl;
cout << "Enrollment No.: " << Enrollment_no << endl;
cout << "Email Address: " << Email_id << endl;
cout << "Whatsapp Number: " << Whatsapp_No << endl;
cout << "DOB: " << DOB << endl;
cout << "Last Login: " << Last_login << endl;
}
vector<string> get_PersonalInfo() {
return {Name, Enrollment_no, Email_id, Whatsapp_No, Last_login, DOB};
}
vector<Assignment> get_assignments() { return assignment_studentside; }
void ADD_Assignemnt(string title, string content, string deadline, string addedon) {
Assignment assig(title, content, "Pending", "", deadline);
assignment_studentside.push_back(assig);
}
};
class Reviewer : public IMG_Member {
private:
vector<tuple<string, string, string>> Req_iteration;
int Pin_key;
public:
Reviewer() {}
Reviewer(string name, string enrollment_no, string email_id, int pin_key) {
Name = name;
Enrollment_no = enrollment_no;
Email_id = email_id;
Pin_key = pin_key;
}
int Verify_pin_key() { return Pin_key; }
void display_Personalinfo() {
cout << "Name: " << Name << endl;
cout << "Enrollment No.: " << Enrollment_no << endl;
cout << "Email Address: " << Email_id << endl;
cout << "Whatsapp Number: " << Whatsapp_No << endl;
cout << "DOB: " << DOB << endl;
cout << "Last Login: " << Last_login << endl;
}
void Add_assignment_iteration(string n, string s, string p) {
Req_iteration.push_back({n, s, p});
}
};
map<string, Student> Student_Details_map;
map<string, Reviewer> reviewer_details;
void page_start() {
while (true) {
cout << "..........................................................\n";
cout << "Hey there! Welcome to IMG Assignment Review system!!!\n\n";
cout << "How do we know you?\n\n";
cout << "1. Existing IMG Member\n";
cout << "2. New IMG Member? Well, we need to add you first!!\n";
cout << "3. Exit\n\n";
cout << "(Enter the suitable key 1/2/3)\n";
cout << "..........................................................\n";
int key;
cout << "enter: ";
cin >> key;
switch (key) {
case 1: {
while (true) {
cout << "..........................................................\n";
cout << "Who do you want to login as?\n\n";
cout << "1. IMG Student \n";
cout << "2. IMG Reviewer \n";
cout << "3. Previous stage \n";
cout << "4. Exit\n";
cout << "Current login at: \n" << currentDateTime();
cout << "..........................................................\n";
int key1;
cout << "enter: ";
cin >> key1;
if (key1 == 3) {
break; // Go back to the previous stage
} else if (key1 == 4) {
exit(0);
}
string Enrollment_no_input;
int Pin_input;
if (key1 == 1) {
cout << "Enrollment Number: ";
cin >> Enrollment_no_input;
cout << "Enter Pin: ";
cin >> Pin_input;
if (Student_Details_map.find(Enrollment_no_input) != Student_Details_map.end() &&
Student_Details_map[Enrollment_no_input].Verify_pin_key() == Pin_input) {
Student_Details_map[Enrollment_no_input].set_Last_login(currentDateTime());
while (true) {
cout << "..........................................................\n";
cout << "Welcome " << Student_Details_map[Enrollment_no_input].get_Name() << endl << endl;
cout << "What would you like to do?\n\n";
cout << "1. Personal Details\n";
cout << "2. List of Assignments and their statuses\n";
cout << "3. Assignments and their Details\n";
cout << "4. View all last logins\n";
cout << "5. Submit assignment for iteration\n";
cout << "6. Exit\n";
cout << "..........................................................\n";
int response3;
cout << "Enter: ";
cin >> response3;
vector<Assignment> v = Student_Details_map[Enrollment_no_input].get_assignments();
if (response3 == 1) {
cout << "..........................................................\n";
Student_Details_map[Enrollment_no_input].display_Personalinfo();
} else if (response3 == 2) {
for (auto& it : v) {
cout << "..........................................................\n";
it.get_Assignment_title_status();
cout << "..........................................................\n";
}
} else if (response3 == 3) {
for (auto& it : v) {
cout << "..........................................................\n";
it.get_Assignment_title_probstatement();
cout << "..........................................................\n";
}
} else if (response3 == 4) {
// Implement the view all last logins functionality
} else if (response3 == 5) {
string a, b, c, d;
cout << "Assignment title: ";
cin.ignore();
getline(cin, a);
cout << "Problem statement: ";
getline(cin, b);
cout << "Submission time: ";
getline(cin, c);
cout << "Deadline: ";
getline(cin, d);
Student_Details_map[Enrollment_no_input].ADD_Assignemnt(a, b, c, d);
} else if (response3 == 6) {
break;
} else {
cout << "Invalid option. Please try again.\n";
}
}
} else {
cout << "Invalid Credentials\n";
}
} else if (key1 == 2) {
cout << "Enrollment Number: ";
cin >> Enrollment_no_input;
cout << "Enter Pin: ";
cin >> Pin_input;
if (reviewer_details.find(Enrollment_no_input) != reviewer_details.end() &&
reviewer_details[Enrollment_no_input].Verify_pin_key() == Pin_input) {
reviewer_details[Enrollment_no_input].set_Last_login(currentDateTime());
while (true) {
cout << "..........................................................\n";
cout << "Welcome " << reviewer_details[Enrollment_no_input].get_Name() << endl << endl;
cout << "What would you like to do?\n\n";
cout << "1. Personal Details\n";
cout << "2. Last logins\n";
cout << "3. List of Assignments and their statuses\n";
cout << "4. Add Assignment\n";
cout << "5. Previous Stage\n";
cout << "6. Exit\n";
cout << "..........................................................\n";
int response4;
cout << "Enter: ";
cin >> response4;
if (response4 == 1) {
cout << "..........................................................\n";
reviewer_details[Enrollment_no_input].display_Personalinfo();
} else if (response4 == 2) {
cout << "..........................................................\n";
cout << "Last login: " << reviewer_details[Enrollment_no_input].get_current_login() << endl;
} else if (response4 == 3) {
for (auto& it : assignment_mainside) {
cout << "..........................................................\n";
it.get_Assignment_title_status();
cout << "..........................................................\n";
}
} else if (response4 == 4) {
cout << "..........................................................\n";
string assig_name, assig_content, assig_deadline;
string assig_addedon = currentDateTime();
cout << "Enter the title of the Assignment: \n";
cin.ignore();
getline(cin, assig_name);
cout << "Enter the Assignment content: \n";
getline(cin, assig_content);
cout << "Enter the deadline of assignment:\n";
getline(cin, assig_deadline);
cout << "Assignment added on:\n" << assig_addedon;
Assignment asig2(assig_name, assig_content, assig_deadline);
assignment_mainside.push_back(asig2);
for (auto& it : Student_Details_map) {
it.second.ADD_Assignemnt(assig_name, assig_content, assig_deadline, assig_addedon);
Student_Details_map[it.first] = it.second;
}
cout << "Assignments added successfully!!\n" << endl;
} else if (response4 == 5) {
break;
} else if (response4 == 6) {
exit(0);
} else {
cout << "Invalid option. Please try again.\n";
}
}
} else {
cout << "Invalid Credentials\n";
}
}
}
break;
}
case 2: {
string Name;
string Enrollment_no;
string Email_id;
string Last_login;
string Whatsapp_No;
string DOB;
int Pin_input;
while (true) {
cout << "..........................................................\n";
cout << "Let's start adding you as an IMG member!\n\n";
cout << "Who are you willing to join as?\n";
cout << "1. Student\n";
cout << "2. Reviewer\n";
cout << "3. Previous stage\n";
cout << "4. Exit\n";
cout << "Current login at: \n" << currentDateTime();
cout << "..........................................................\n";
int key2;
cout << "enter: ";
cin >> key2;
if (key2 == 3) {
break; // Go back to the previous stage
} else if (key2 == 4) {
exit(0);
}
cout << "Enter your Name: ";
cin.ignore();
getline(cin, Name);
cout << "Enter your Enrollment number: ";
getline(cin, Enrollment_no);
cout << "Enter your Email address: ";
getline(cin, Email_id);
cout << "Enter your Whatsapp number: ";
getline(cin, Whatsapp_No);
cout << "Enter your DOB: ";
getline(cin, DOB);
cout << "Enter a PIN key: ";
cin >> Pin_input;
if (key2 == 1) {
Student s(Name, Enrollment_no, Email_id, Pin_input);
s.set_Whatsapp_No(Whatsapp_No);
s.set_DOB(DOB);
cout << "You have been successfully added as an IMG member!";
cout << "\n\n";
Student_Details_map[Enrollment_no] = s;
} else if (key2 == 2) {
Reviewer r(Name, Enrollment_no, Email_id, Pin_input);
r.set_Whatsapp_No(Whatsapp_No);
r.set_DOB(DOB);
cout << "You have been successfully added as an IMG member!";
cout << "\n\n";
reviewer_details[Enrollment_no] = r;
}
}
break;
}
case 3:
exit(0);
}
}
}
int main() {
page_start();
return 0;
}