#include <iostream>
#include <string>
#include <windows.h>
#include <cstdlib>
#include <iomanip>
#include <conio.h>
#include <fstream>
using namespace std;
void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int createClassFunction()
{
ofstream create_classList_file;
system("cls");
int yCoord;
int itr;
string keepGoing = "y";
string className;
int studentNum = 0;
string firstName = "0";
string lastName = "0";
int assignmentMark = 0;
int midtermMark = 0;
int finalTestMark = 0;
int overallAverageMark = 0;
string letterGradeMark = "0";
struct classInfo
{
int studentNum;
string firstName;
string lastName;
int assignmentMark;
int midtermMark;
int finalTestMark;
float overallAverageMark;
string letterGradeMark;
};
classInfo student[30] =
{
{
studentNum,
firstName,
lastName,
assignmentMark,
midtermMark,
finalTestMark,
overallAverageMark,
letterGradeMark
}
};
gotoxy(5,4);
cout << "Class name: ";
cin >> className;
system("cls");
create_classList_file.open(className + ".txt", ios::out | ios::binary );
itr = 0;
while(itr < 30)
{
system("cls");
yCoord = 6;
gotoxy(5,yCoord);
cout << "Student Num: ";
cin >> student[itr].studentNum;
yCoord += 2;
gotoxy(5, yCoord);
cout << "First name: ";
cin >> student[itr].firstName;
yCoord += 2;
gotoxy(5, yCoord);
cout << "Last name ";
cin >> student[itr].lastName;
yCoord += 2;
student[itr].assignmentMark = 0;
student[itr].midtermMark = 0;
student[itr].finalTestMark = 0;
student[itr].overallAverageMark = 0;
student[itr].letterGradeMark = "0";
create_classList_file.write((char *) &student[itr], sizeof(classInfo));
gotoxy(5,yCoord);
cout << "Press any key to enter another(N to quit): ";
cin >> keepGoing;
if(keepGoing == "n" || keepGoing == "N")
break;
else
itr++;
} // end of while loop
create_classList_file.close();
return 0;
}
int viewClassFunction()
{
int x;
int itr;
int numOfStudents;
int yCoord;
system("cls");
ifstream view_classList_file;
struct classInfo
{
int studentNum;
string firstName;
string lastName;
int assignmentMark;
int midtermMark;
int finalTestMark;
float overallAverageMark;
string letterGradeMark;
};
string className;
gotoxy(5,4);
cout << "Class file to open: ";
cin >> className;
view_classList_file.open(className + ".txt", ios::in | ios::binary);
/*
view_classList_file.seekg(0l, ios::end);
int size = view_classList_file.tellg();
cout << size;
system("pause");
*/
classInfo student[30];
yCoord = 6;
x = 0;
while(!view_classList_file.eof())
{
if(view_classList_file.eof())
break;
view_classList_file.read((char *) &student[x], sizeof(classInfo));
gotoxy(5,yCoord);
cout << "Student Num: " << student[x].studentNum;
yCoord += 2;
gotoxy(5, yCoord);
cout << "First name: " << student[x].firstName;
yCoord += 2;
gotoxy(5, yCoord);
cout << "Last name " << student[x].lastName;
yCoord += 2;
x++;
}
/*
int i = 0;
while(student[i].studentNum > 0)
{
gotoxy(5,yCoord);
cout << "Student Num: " << student[i].studentNum;
yCoord += 2;
gotoxy(5, yCoord);
cout << "First name: " << student[i].firstName;
yCoord += 2;
gotoxy(5, yCoord);
cout << "Last name " << student[i].lastName;
yCoord += 2;
i++;
}
*/
/*
if(student[i].gradestuff == 0)
{
cout << "whatever grade: n/a";
}
else
*/
system("pause");
return 0;
}
int main()
{
int menuChoice;
menuChoice = 0;
while(menuChoice != 7 && menuChoice< 8)
{
system("cls");
gotoxy(5,2);
cout << "Please select an option";
gotoxy(5,4);
cout << "1. Create Class";
gotoxy(5,5);
cout << "2. Add student";
gotoxy(5,6);
cout << "3. Update class data";
gotoxy(5,7);
cout << "4. Update student data";
gotoxy(5,8);
cout << "5. View class data";
gotoxy(5,9);
cout << "6. View student data";
gotoxy(5,11);
cout << "7. Exit";
gotoxy(6,13);
cout << "Option: ";
cin >> menuChoice;
if(menuChoice == 1)
createClassFunction();
/*
else if(menuChoice == 2)
addStudent();
else if(menuChoice == 3)
updateClassData();
else if(menuChoice == 4)
updateStudentData();
*/
else if(menuChoice == 5)
viewClassFunction();
/*
else if(menuChoice == 6)
viewStudentData();
*/
else if(menuChoice == 7)
break;
}
return 0;
}
/*
Use file size to determine how many students, sizeof(structureName), logicalFileName.tellg() is used to get size of a file
30 student limit
Only update grades
seekg
tellg
filename.seekg(0l, ios::end)
*/
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8d2luZG93cy5oPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxjb25pby5oPgojaW5jbHVkZSA8ZnN0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGdvdG94eShpbnQgeCwgaW50IHkpIAp7IAogICAgQ09PUkQgY29vcmQ7CiAgICBjb29yZC5YID0geDsgCiAgICBjb29yZC5ZID0geTsKICAgIFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbihHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpLCBjb29yZCk7Cn0KCmludCBjcmVhdGVDbGFzc0Z1bmN0aW9uKCkKewoKCW9mc3RyZWFtIGNyZWF0ZV9jbGFzc0xpc3RfZmlsZTsKCglzeXN0ZW0oImNscyIpOwoKCWludCB5Q29vcmQ7CglpbnQgaXRyOwoKCXN0cmluZyBrZWVwR29pbmcgPSAieSI7CglzdHJpbmcgY2xhc3NOYW1lOwoJCglpbnQgc3R1ZGVudE51bSA9IDA7CglzdHJpbmcgZmlyc3ROYW1lID0gIjAiOwoJc3RyaW5nIGxhc3ROYW1lID0gIjAiOwoKCWludCBhc3NpZ25tZW50TWFyayA9IDA7CglpbnQgbWlkdGVybU1hcmsgPSAwOwoJaW50IGZpbmFsVGVzdE1hcmsgPSAwOwoJaW50IG92ZXJhbGxBdmVyYWdlTWFyayA9IDA7CglzdHJpbmcgbGV0dGVyR3JhZGVNYXJrID0gIjAiOwoKCgoKCXN0cnVjdCBjbGFzc0luZm8KCQkJewoJCQkJaW50IHN0dWRlbnROdW07CgkJCQlzdHJpbmcgZmlyc3ROYW1lOwoJCQkJc3RyaW5nIGxhc3ROYW1lOwoJCQkJaW50IGFzc2lnbm1lbnRNYXJrOwoJCQkJaW50IG1pZHRlcm1NYXJrOwoJCQkJaW50IGZpbmFsVGVzdE1hcms7CgkJCQlmbG9hdCBvdmVyYWxsQXZlcmFnZU1hcms7CgkJCQlzdHJpbmcgbGV0dGVyR3JhZGVNYXJrOwoJCQl9OwoKCWNsYXNzSW5mbyBzdHVkZW50WzMwXSA9CgkJCQl7IAoJCQkJCXsgCgkJCQkJCXN0dWRlbnROdW0sIAoJCQkJCQlmaXJzdE5hbWUsIAoJCQkJCQlsYXN0TmFtZSwgCgkJCQkJCWFzc2lnbm1lbnRNYXJrLCAKCQkJCQkJbWlkdGVybU1hcmssIAoJCQkJCQlmaW5hbFRlc3RNYXJrLCAKCQkJCQkJb3ZlcmFsbEF2ZXJhZ2VNYXJrLCAKCQkJCQkJbGV0dGVyR3JhZGVNYXJrCgkJCQkJfQoJCQkJfTsKCgoKCWdvdG94eSg1LDQpOwoJCWNvdXQgPDwgIkNsYXNzIG5hbWU6ICAgIjsKCQljaW4gPj4gY2xhc3NOYW1lOwoKCQlzeXN0ZW0oImNscyIpOwoKCWNyZWF0ZV9jbGFzc0xpc3RfZmlsZS5vcGVuKGNsYXNzTmFtZSArICIudHh0IiwgaW9zOjpvdXQgfCBpb3M6OmJpbmFyeSApOwoKCWl0ciA9IDA7Cgl3aGlsZShpdHIgPCAzMCkKCQl7CgkJCXN5c3RlbSgiY2xzIik7CgoJCQl5Q29vcmQgPSA2OwoKCQkJZ290b3h5KDUseUNvb3JkKTsKCQkJCWNvdXQgPDwgIlN0dWRlbnQgTnVtOiAgIjsKCQkJCWNpbiA+PiBzdHVkZW50W2l0cl0uc3R1ZGVudE51bTsKCQkJCXlDb29yZCArPSAyOwoKCQkJZ290b3h5KDUsIHlDb29yZCk7CgkJCQljb3V0IDw8ICJGaXJzdCBuYW1lOiAgIjsKCQkJCWNpbiA+PiBzdHVkZW50W2l0cl0uZmlyc3ROYW1lOwoJCQkJeUNvb3JkICs9IDI7CgoJCQlnb3RveHkoNSwgeUNvb3JkKTsKCQkJCWNvdXQgPDwgIkxhc3QgbmFtZSAgICI7CgkJCQljaW4gPj4gc3R1ZGVudFtpdHJdLmxhc3ROYW1lOwoJCQkJeUNvb3JkICs9IDI7CgoJCQkgc3R1ZGVudFtpdHJdLmFzc2lnbm1lbnRNYXJrID0gMDsKCQkJIHN0dWRlbnRbaXRyXS5taWR0ZXJtTWFyayA9IDA7CgkJCSBzdHVkZW50W2l0cl0uZmluYWxUZXN0TWFyayA9IDA7CgkJCSBzdHVkZW50W2l0cl0ub3ZlcmFsbEF2ZXJhZ2VNYXJrID0gMDsKCQkJIHN0dWRlbnRbaXRyXS5sZXR0ZXJHcmFkZU1hcmsgPSAiMCI7CgoJCQljcmVhdGVfY2xhc3NMaXN0X2ZpbGUud3JpdGUoKGNoYXIgKikgJnN0dWRlbnRbaXRyXSwgc2l6ZW9mKGNsYXNzSW5mbykpOwoKCQkJZ290b3h5KDUseUNvb3JkKTsKCQkJCWNvdXQgPDwgIlByZXNzIGFueSBrZXkgdG8gZW50ZXIgYW5vdGhlcihOIHRvIHF1aXQpOiAgIjsKCQkJCWNpbiA+PiBrZWVwR29pbmc7CgoJCQkJaWYoa2VlcEdvaW5nID09ICJuIiB8fCBrZWVwR29pbmcgPT0gIk4iKQoJCQkJCWJyZWFrOwoJCQkJZWxzZQoJCQkJCWl0cisrOwoKCQl9IC8vIGVuZCBvZiB3aGlsZSBsb29wCgoJY3JlYXRlX2NsYXNzTGlzdF9maWxlLmNsb3NlKCk7CgoJcmV0dXJuIDA7Cn0KCmludCB2aWV3Q2xhc3NGdW5jdGlvbigpCnsKCWludCB4OwoJaW50IGl0cjsKCWludCBudW1PZlN0dWRlbnRzOwoKCWludCB5Q29vcmQ7CgoJc3lzdGVtKCJjbHMiKTsKCglpZnN0cmVhbSB2aWV3X2NsYXNzTGlzdF9maWxlOwoKCXN0cnVjdCBjbGFzc0luZm8KCQkJewoJCQkJaW50IHN0dWRlbnROdW07CgkJCQlzdHJpbmcgZmlyc3ROYW1lOwoJCQkJc3RyaW5nIGxhc3ROYW1lOwoJCQkJaW50IGFzc2lnbm1lbnRNYXJrOwoJCQkJaW50IG1pZHRlcm1NYXJrOwoJCQkJaW50IGZpbmFsVGVzdE1hcms7CgkJCQlmbG9hdCBvdmVyYWxsQXZlcmFnZU1hcms7CgkJCQlzdHJpbmcgbGV0dGVyR3JhZGVNYXJrOwoJCQl9OwoKCXN0cmluZyBjbGFzc05hbWU7CgoJZ290b3h5KDUsNCk7CgkJY291dCA8PCAiQ2xhc3MgZmlsZSB0byBvcGVuOiAgICI7CgkJY2luID4+IGNsYXNzTmFtZTsKCgl2aWV3X2NsYXNzTGlzdF9maWxlLm9wZW4oY2xhc3NOYW1lICsgIi50eHQiLCBpb3M6OmluIHwgaW9zOjpiaW5hcnkpOwoKCS8qCgoJdmlld19jbGFzc0xpc3RfZmlsZS5zZWVrZygwbCwgaW9zOjplbmQpOwoJaW50IHNpemUgPSB2aWV3X2NsYXNzTGlzdF9maWxlLnRlbGxnKCk7Cgljb3V0IDw8IHNpemU7CglzeXN0ZW0oInBhdXNlIik7CgoJKi8KCgljbGFzc0luZm8gc3R1ZGVudFszMF07CgoKCXlDb29yZCA9IDY7Cgl4ID0gMDsKCXdoaWxlKCF2aWV3X2NsYXNzTGlzdF9maWxlLmVvZigpKQoJCXsKCQkJaWYodmlld19jbGFzc0xpc3RfZmlsZS5lb2YoKSkKCQkJCWJyZWFrOwoJCQl2aWV3X2NsYXNzTGlzdF9maWxlLnJlYWQoKGNoYXIgKikgJnN0dWRlbnRbeF0sIHNpemVvZihjbGFzc0luZm8pKTsKCgkJCWdvdG94eSg1LHlDb29yZCk7CgkJCQljb3V0IDw8ICJTdHVkZW50IE51bTogICIgPDwgc3R1ZGVudFt4XS5zdHVkZW50TnVtOwoJCQl5Q29vcmQgKz0gMjsKCgoJCQlnb3RveHkoNSwgeUNvb3JkKTsKCQkJCWNvdXQgPDwgIkZpcnN0IG5hbWU6ICAiIDw8IHN0dWRlbnRbeF0uZmlyc3ROYW1lOwoJCQl5Q29vcmQgKz0gMjsKCgoJCQlnb3RveHkoNSwgeUNvb3JkKTsKCQkJCWNvdXQgPDwgIkxhc3QgbmFtZSAgICIgPDwgc3R1ZGVudFt4XS5sYXN0TmFtZTsKCQkJeUNvb3JkICs9IDI7CgkJCQoJCQl4Kys7CgkJfQoKCQoJLyoKCWludCBpID0gMDsKCXdoaWxlKHN0dWRlbnRbaV0uc3R1ZGVudE51bSA+IDApCgkJewoJCQlnb3RveHkoNSx5Q29vcmQpOwoJCQkJY291dCA8PCAiU3R1ZGVudCBOdW06ICAiIDw8IHN0dWRlbnRbaV0uc3R1ZGVudE51bTsKCQkJeUNvb3JkICs9IDI7CgoKCQkJZ290b3h5KDUsIHlDb29yZCk7CgkJCQljb3V0IDw8ICJGaXJzdCBuYW1lOiAgIiA8PCBzdHVkZW50W2ldLmZpcnN0TmFtZTsKCQkJeUNvb3JkICs9IDI7CgoKCQkJZ290b3h5KDUsIHlDb29yZCk7CgkJCQljb3V0IDw8ICJMYXN0IG5hbWUgICAiIDw8IHN0dWRlbnRbaV0ubGFzdE5hbWU7CgkJCXlDb29yZCArPSAyOwoKCQkJaSsrOwoJCX0KCSovCgoJLyoKCQlpZihzdHVkZW50W2ldLmdyYWRlc3R1ZmYgPT0gMCkgCgkJCQl7IAoJCQkJCWNvdXQgPDwgIndoYXRldmVyIGdyYWRlOiAgbi9hIjsgCgkJCQl9CgoJCQllbHNlCgkqLwoKCgoJc3lzdGVtKCJwYXVzZSIpOwoKCXJldHVybiAwOwoKfQoKaW50IG1haW4oKQp7CglpbnQgbWVudUNob2ljZTsKCW1lbnVDaG9pY2UgPSAwOwoKCXdoaWxlKG1lbnVDaG9pY2UgIT0gNyAmJiBtZW51Q2hvaWNlPCA4KQoJCXsKCgkJCXN5c3RlbSgiY2xzIik7CgoJCQlnb3RveHkoNSwyKTsKCQkJY291dCA8PCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24iOwoJCQkJZ290b3h5KDUsNCk7CgkJCQljb3V0IDw8ICIxLiBDcmVhdGUgQ2xhc3MiOwoJCQkJZ290b3h5KDUsNSk7CgkJCQljb3V0IDw8ICIyLiBBZGQgc3R1ZGVudCI7CgkJCQlnb3RveHkoNSw2KTsKCQkJCWNvdXQgPDwgIjMuIFVwZGF0ZSBjbGFzcyBkYXRhIjsKCQkJCWdvdG94eSg1LDcpOwoJCQkJY291dCA8PCAiNC4gVXBkYXRlIHN0dWRlbnQgZGF0YSI7CgkJCQlnb3RveHkoNSw4KTsKCQkJCWNvdXQgPDwgIjUuIFZpZXcgY2xhc3MgZGF0YSI7CgkJCQlnb3RveHkoNSw5KTsKCQkJCWNvdXQgPDwgIjYuIFZpZXcgc3R1ZGVudCBkYXRhIjsKCQkJCWdvdG94eSg1LDExKTsKCQkJCWNvdXQgPDwgIjcuIEV4aXQiOwoJCQkJZ290b3h5KDYsMTMpOwoJCQkJY291dCA8PCAiT3B0aW9uOiAgICI7CgkJCQljaW4gPj4gbWVudUNob2ljZTsKCgkKCQkJaWYobWVudUNob2ljZSA9PSAxKQoJCQkJY3JlYXRlQ2xhc3NGdW5jdGlvbigpOwoJCQkvKgoJCQllbHNlIGlmKG1lbnVDaG9pY2UgPT0gMikKCQkJCWFkZFN0dWRlbnQoKTsKCQkJZWxzZSBpZihtZW51Q2hvaWNlID09IDMpCgkJCQl1cGRhdGVDbGFzc0RhdGEoKTsKCQkJZWxzZSBpZihtZW51Q2hvaWNlID09IDQpCgkJCQl1cGRhdGVTdHVkZW50RGF0YSgpOwoJCQkqLwoJCQllbHNlIGlmKG1lbnVDaG9pY2UgPT0gNSkKCQkJCXZpZXdDbGFzc0Z1bmN0aW9uKCk7CgkJCS8qCgkJCWVsc2UgaWYobWVudUNob2ljZSA9PSA2KQoJCQkJdmlld1N0dWRlbnREYXRhKCk7CgkJCSovCgkJCWVsc2UgaWYobWVudUNob2ljZSA9PSA3KQoJCQkJYnJlYWs7CgkJIH0KCQkgCgkJIHJldHVybiAwOwoKfQoKLyoKClVzZSBmaWxlIHNpemUgdG8gZGV0ZXJtaW5lIGhvdyBtYW55IHN0dWRlbnRzLCBzaXplb2Yoc3RydWN0dXJlTmFtZSksIGxvZ2ljYWxGaWxlTmFtZS50ZWxsZygpIGlzIHVzZWQgdG8gZ2V0IHNpemUgb2YgYSBmaWxlCjMwIHN0dWRlbnQgbGltaXQKT25seSB1cGRhdGUgZ3JhZGVzCgpzZWVrZwp0ZWxsZwoKZmlsZW5hbWUuc2Vla2coMGwsIGlvczo6ZW5kKQoKKi8=