TEST(AddPhoneNumber, AddPhoneNumberTest2){ Students* students = new Students(); students->addPhoneNumbers(0, "fsadhfdkasdfhl"); students->addPhoneNumbers(0, "801"); students->addUser("Hi", 0); EXPECT_EQ("801", students->phoneForName("Hi")); }
TEST(AddPhoneNumber, AddPhoneNumberTest1){ Students* students = new Students(); students->addUser("Mr. Plow", 12121); //Simpsons reference? students->addPhoneNumbers(12121, "801-KL5-3226"); EXPECT_EQ("801-KL5-3226", students->phoneForName("Mr. Plow")); delete students; }
TEST(AddUser, AddUserTest6){ Students* students = new Students(); students->addUser("Quinn", 0); students->addUser("Quinn", 0); EXPECT_EQ(1, students->numberOfNames()); delete students; }
TEST(RemoveStudentTest, RemoveStudentTest1){ Students* students = new Students(); students->addUser("Jimmy", 5); students->removeStudent("Jimmy"); EXPECT_EQ(0, students->numberOfNames()); EXPECT_THROW(students->removeStudent("Billy"), std::out_of_range); // TODO: Figure this out std::vector<std::string> someNames(); //someNames.push_back("Jimmy"); //someNames.push_back("Bobby"); //EXPECT_NO_THROW(students->removeList(someNames)); delete students; }
TEST(GradeForName, GradeForNameTest2){ Students* students = new Students(); students->addUser("Quinn", 0); students->addGrade(0, ' '); EXPECT_EQ(' ', students->gradeForName("Quinn")); students->addUser("Andre", 1); students->addGrade(1, ' '); EXPECT_EQ(students->gradeForName("Quinn"), students->gradeForName("Andre")); delete students; }
//Edge case tests for AddUser TEST(AddUser, AddUserTest1){ Students* students = new Students(); students->addUser("Quinn", 0); EXPECT_EQ(0, students->idForName("Quinn")); //we should get a positive number because it is an unsigned int on the map. students->addUser("Andre", -1); EXPECT_EQ(true, students->idForName("Andre") > 0); //not sure if this should throw an exception or not. students->addUser("", 5); EXPECT_EQ(5, students->idForName("")); //exception? students->addUser(" ", 2); EXPECT_EQ(2, students->idForName(" ")); delete students; }
int main(int argc, char *argv[]) { SetConsoleTitle(TEXT("Students" )); // declaration of new variables string st_name,st_last_name; int final_scores[5] = {4,4,5,5,5}; float average_ball; cout << "Enter Student name: "; cin >> st_name; cout << "Enter Student last name: "; cin >> st_last_name; Students *Student = new Students(st_name,st_last_name); cout << "Enter Student scores: "; for (int i=0;i<5;i++) { cin >> final_scores[i]; } Student->set_student_name(st_name); Student->set_student_last_name(st_last_name); Student->set_student_score(final_scores); average_ball = Student->calculate_average_ball(final_scores); cout << "Current profile of student: " << endl; cout << Student->get_student_name() << endl; cout << Student->get_student_last_name() << endl; cout << Student->get_average_ball() << endl; cout << endl; Student->show_scores(); cout << "Saving current profile to file..." << endl; Student->save_profile(); delete Student; system("pause"); return EXIT_SUCCESS; }
int main(int argc, char* argv[]) { students.loadStudents(); std::cout << "Welcome to the student catalog thing" << std::endl; while (true) { std::cout << "Input a command:" << std::endl; std::string toPass = ""; std::getline(std::cin, toPass); if (toPass == "exit") { break; } ParseStringToCommand(toPass); } return 0; }
//specific tests for AddUser that dont really have to do with edge cases. TEST(AddUser, AddUserTest2){ Students* students = new Students(); // Overwrites the user's place students->addUser("Quinn", 0); students->addUser("Andre", 0); EXPECT_EQ(0, students->idForName("Andre")); students->addUser("David Johnson", 3); EXPECT_EQ(3, students->idForName("David Johnson")); //here, the test fails because the AddUser method is a little messed up. //we want to have only 1 person with the ID of 0, no matter the name. //instead we get Quinn, who was added first, then Andre was added in his place //and finally David Johnson was added last. When overwritting an ID, the count //of how many people on the map is not updated properly. EXPECT_EQ(2, students->numberOfNames()); delete students; }
int _tmain(int argc, char* argv[]) { students.loadStudents(); std::cout << "Welcome to the student catalog thing" << std::endl; while (true) { std::cout << "Input a command:" << std::endl; std::string toPass = ""; std::getline(std::cin, toPass); if (toPass == "exit") { break; } switch (VerifyInputIntegrity(toPass)) { case None: ParseStringToCommand(toPass); break; case InvalidCharacter: std::cout << "Invalid chracter in input" << std::endl; break; case InvalidFormat: std::cout << "Invalid format detected" << std::endl; break; default: std::cout << "Unknown error" << std::endl; break; } } return 0; }
int main(int argc, char* argv[]) { ifstream file; string data; vector<string> tokens; Courses courses; Students students; file.open("courses.conf"); if (!file.is_open()) { cout << "Failed opening courses.conf." << endl; return 0; } while (getline(file, data)) { tokens = str_split(data, ','); // data: WEEKDAY,COURSE-ID,SPACE Course* course = new Course(*(tokens[0].c_str()) - '0', tokens[1], atoi(tokens[2].c_str())); courses.push_back(course); } file.close(); file.open("students.conf"); if (!file.is_open()) { cout << "Failed opening students.conf." << endl; return 0; } while (getline(file, data)) { tokens = str_split(data, ','); // data: STUD-ID,COURSE-ID1,COURSE-ID2,...,COURSE-IDN Student* student = new Student(tokens[0]); if (tokens.size() > 1) { for (size_t i = 1; i < tokens.size(); ++i) { for (size_t j = 0; j < courses.size(); ++j) { if (courses[j]->getCourseId() == tokens[i]) { if (courses[j]->addStudent(student)) { // we have found a room for this student // in the course he requested, so we are breaking // the search for room. // NOTE: we are not break;'ing when we find // a matching course because there might be // room in another day for this course. break; } } } } } students.push_back(student); } file.close(); // clean output files ofstream output; output.open("courses.out"); output.close(); output.open("students.out"); output.close(); for (size_t i = 0; i < courses.size(); ++i) { courses[i]->print("courses.out"); } for (size_t i = 0; i < students.size(); ++i) { students[i]->print("students.out"); } for (size_t i = 0; i < courses.size(); ++i) { delete courses[i]; courses[i] = 0; } for (size_t i = 0; i < students.size(); ++i) { delete students[i]; students[i] = 0; } return 0; }
TEST(AddUser, AddUserTest4){ Students* students = new Students(); students->addUser("Andre", 12); students->addUser("Andre", 13); EXPECT_EQ(13, students->idForName("Andre")); EXPECT_EQ(1, students->numberOfNames()); students->addUser("Quinn", 21); students->addUser("Quinn", 23); EXPECT_EQ(23, students->idForName("Quinn")); EXPECT_EQ(2, students->numberOfNames()); // No two users should ever have the same ID students->addUser("Quinn", 13); EXPECT_EQ(2, students->numberOfNames()); EXPECT_EQ(13, students->idForName("Quinn")); //here, 2 users have the same ID with different names. EXPECT_NE(students->idForName("Andre"), students->idForName("Quinn")); delete students; }
TEST(AddUser, AddUserTest3){ Students* students = new Students(); int user_count = 0; for(; user_count < 10; user_count++) students->addUser("Student " + std::to_string(user_count), user_count); EXPECT_EQ(user_count, students->numberOfNames()); students->removeStudent("Student 0"); students->removeStudent("Student 1"); user_count -= 2; EXPECT_EQ(user_count, (int)students->numberOfNames()); Students* moreStudents = new Students(); moreStudents->addUser("Jim", 11); moreStudents->addUser("Jim", 12); EXPECT_NE(2, (int)moreStudents->numberOfNames()); //should be 2 instead of 1. //it is possible to have 2 names with different IDs. //however, when 2 names with different IDs are present, //the map only updates the numberOfNames once. EXPECT_EQ(12, moreStudents->idForName("Jim")); moreStudents->removeStudent("Jim"); //since Jim was in 2 spots in the map, he should be deleted at both spots? //this is true, and the count is correct here. When Jim is deleted, he gets //deleted at both spots. EXPECT_EQ(0, (int)moreStudents->numberOfNames()); delete students; delete moreStudents; }
TEST(RemoveListTest, RemoveListTest1){ Students* students = new Students(); std::vector<std::string> names; names.push_back("Andre"); names.push_back("Jim"); names.push_back("Quinn"); //students->addUser("Andre", 0); //students->addUser("Jim", 1); //students->addUser("Quinn", 2); for(int i = 0; i < 3; i++){ students->addUser(names[i], i); } students->addUser("Joe", 4); students->addUser("Billy", 5); students->addUser("Bob", 6); EXPECT_EQ(6, students->numberOfNames()); EXPECT_TRUE(students->nameExists("Quinn")); EXPECT_TRUE(students->nameExists("Andre")); EXPECT_TRUE(students->nameExists("Jim")); students->removeList(names); EXPECT_FALSE(students->nameExists("Quinn")); EXPECT_FALSE(students->nameExists("Andre")); EXPECT_FALSE(students->nameExists("Jim")); EXPECT_EQ(3, students->numberOfNames()); delete students; }
bool SplitStudents() { ofstream ofs; ofs.open("log.txt"); static int tmpMatrix[3][3] = { 0 }; for (size_t i = 0; i < TypeNum; i++) { Students* pp = pStu[i]; cout << "processing " << pp->GetName() << "..." << endl; for (size_t mi = 0; mi < 3; mi++) { tmpMatrix[mi][0] = copySubjectMatrix[mi][pp->m_s1]; tmpMatrix[mi][1] = copySubjectMatrix[mi][pp->m_s2]; tmpMatrix[mi][2] = copySubjectMatrix[mi][pp->m_s3]; } //if (ofs.is_open()) //{ // ofs << "processing " << pp->GetName() << "..." << endl; // ofs << "original:" << endl; // for (size_t mi = 0; mi < 3; mi++) // { // ofs << tmpMatrix[mi][0] << " " << tmpMatrix[mi][1] << " " << tmpMatrix[mi][2] << endl; // } // ofs << endl; //} int num = pp->m_stuNum; int index = 0; while (num > 0) { index = (rand() % 6); bool minusSuccess = false; for (size_t identityIndex = 0; identityIndex < 6; identityIndex++) { int ii = (index + identityIndex) % 6; // 不断变换单位矩阵 // 检查根据当前单位矩阵是否有学生可以分 bool hasStudent = true; for (size_t ri = 0; ri < 3; ri++) { hasStudent = true; for (size_t ci = 0; ci < 3; ci++) { if (identityMatrix[ii][ri][ci] == 1) hasStudent = tmpMatrix[ri][ci] > 0; } if (!hasStudent) break; } if (!hasStudent) continue; else { // 分学生 for (size_t ri = 0; ri < 3; ri++) { for (size_t ci = 0; ci < 3; ci++) { if (identityMatrix[ii][ri][ci] == 1) { tmpMatrix[ri][ci]--; classes[ri][pp->GetSubject(ci)].Push(pp->GetName(), pp->m_stuNum - num); // 分学生 } } } num--; minusSuccess = true; break; } } // 由于某个班级人数分完了导致分不了,此时需要调整班级人数来容纳新的学生 // 这里可以通过添加班级人数的最大误差来限制人数 if (!minusSuccess) { vector<pair<int, int>> tmpIndex; // 有些课时不排课(用-1表示),找出来 for (size_t ii = 0; ii < 3; ii++) { for (size_t jj = 0; jj < 3; jj++) { if (tmpMatrix[ii][jj] == -1) tmpIndex.push_back(pair<int, int>(ii, jj)); } } int iii = 0; for (iii = 0; iii < 6; ++iii) { int sum = 0; for (int jjj = 0; jjj < tmpIndex.size(); ++jjj) { sum += identityMatrix[iii][tmpIndex[jjj].first][tmpIndex[jjj].second]; } if (sum == 0) break; } for (size_t ri = 0; ri < 3; ri++) { for (size_t ci = 0; ci < 3; ci++) { if (identityMatrix[iii][ri][ci] == 1) { if (tmpMatrix[ri][ci] == 0) { bool update = false; for (size_t ti = 0; ti < 3; ti++) { if (tmpMatrix[ti][ci] > 2) { // 调整班级人数来容纳新的学生,此处应该添加限制 tmpMatrix[ti][ci] -= step; tmpMatrix[ri][ci] += (step - 1); classes[ri][pp->GetSubject(ci)].Push(pp->GetName(), pp->m_stuNum - num); // 分学生 // 更新班级人数 SubjectMatrix[ti][ci] -= step; SubjectMatrix[ri][ci] += step; } } } else { tmpMatrix[ri][ci]--; classes[ri][pp->GetSubject(ci)].Push(pp->GetName(), pp->m_stuNum - num); // 分学生 } } } } num--; } //if (ofs.is_open()) //{ // for (size_t mi = 0; mi < 3; mi++) // { // ofs << tmpMatrix[mi][0] << " " << tmpMatrix[mi][1] << " " << tmpMatrix[mi][2] << endl; // //cout << tmpMatrix[mi][0] << " " << tmpMatrix[mi][1] << " " << tmpMatrix[mi][2] << endl; // } // ofs << endl << endl; //} } // 更新数据 for (size_t mi = 0; mi < 3; mi++) { copySubjectMatrix[mi][pp->m_s1] = tmpMatrix[mi][0]; copySubjectMatrix[mi][pp->m_s2] = tmpMatrix[mi][1]; copySubjectMatrix[mi][pp->m_s3] = tmpMatrix[mi][2]; } } // 保存数据 if (ofs.is_open()) { // 分班情况 ofs << "splite students : " << endl << endl; for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 6; j++) { ofs << "i, j : " << i << ", " << j << endl << endl; for (size_t k = 0; k < classes[i][j].m_students.size(); k++) { ofs << classes[i][j].m_students[k] << endl; } } ofs << endl << endl; } ofs << endl; // 更新后的班级人数 for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 6; j++) { ofs << SubjectMatrix[i][j] << " "; } ofs << endl << endl; } ofs << endl; // 每天每个科目分多少人 for (size_t i = 0; i < 3; i++) { for (size_t j = 0; j < 6; j++) { ofs << classes[i][j].m_students.size() << " "; } ofs << endl << endl; } } ofs.close(); return true; }
TEST(NameExistsTest, NameExistsTest2){ Students* students = new Students(); uint id = 0; uint id2 = 1; std::string quinn = "Quinn"; std::string andre = "Andre"; std::string phone = "801"; std::string phone2 = "435"; char grade = 'A'; char grade2 = 'A'; students->addUser(quinn, id); students->addUser(andre, id2); EXPECT_EQ(id, students->idForName(quinn)); EXPECT_EQ(id2, students->idForName(andre)); students->addPhoneNumbers(id, phone); students->addPhoneNumbers(id2, phone2); EXPECT_EQ(phone, students->phoneForName(quinn)); EXPECT_EQ(phone2, students->phoneForName(andre)); students->addGrade(id, grade); students->addGrade(id2, grade2); EXPECT_EQ(grade, students->gradeForName(quinn)); EXPECT_EQ(grade2, students->gradeForName(andre)); EXPECT_TRUE(students->fullRecord(quinn, id, phone, grade)); EXPECT_TRUE(students->fullRecord(andre, id2, phone2, grade2)); EXPECT_TRUE(students->nameExists(quinn)); EXPECT_TRUE(students->nameExists(andre)); std::string bill = "Bill"; uint id3 = 3; students->addUser("Bill", id3); students->addPhoneNumbers(id3, phone); students->addGrade(id3, grade); EXPECT_TRUE(students->fullRecord(bill, id3, phone, grade)); EXPECT_TRUE(students->nameExists(bill)); delete students; }
TEST(AddUser, AddUserTest5){ uint id = 12; std::string andre = "Andre"; std::string aPhone = "801-867-5309"; char aGrade = 'A'; std::string quinn = "Quinn"; std::string qPhone = "801-555-5555"; char qGrade = 'B'; // Shows what happens when two users have the same ID Students* students = new Students(); students->addUser(andre, id); students->addPhoneNumbers(students->idForName(andre), aPhone); students->addGrade(students->idForName(andre), aGrade); students->addUser(quinn, id); students->addPhoneNumbers(students->idForName(quinn), qPhone); students->addGrade(students->idForName(quinn), qGrade); EXPECT_TRUE(students->fullRecord(andre, id, aPhone, aGrade)); EXPECT_TRUE(students->fullRecord(quinn, id, qPhone, qGrade)); EXPECT_NE(students->gradeForName(quinn), students->gradeForName(andre)); EXPECT_NE(students->phoneForName(quinn), students->phoneForName(andre)); // 2 different students should not have the same ID in the first place, // here, 2 different students with the same ID have the same grade when each grade // should be different. This must mean that when we add 2 users with the same ID // the first one is overwritten. delete students; }
//this function takes the command from the cmd into commands that the program knows void ParseCommand(Command cmd, std::vector<std::string> payload) { if (cmd == Invalid) { printMessage("Invalid command."); } //adds a student else if (cmd == Add) { //Add a student if (payload.size() != 6) { //bad news throw the user an error. printMessage("Command add recieved incorrect # of arguments."); } else { //constuct the student Student toAdd = Student(payload[0], payload[1], payload[2], std::stoi(payload[3]), std::stoi(payload[4]), std::stoi(payload[5])); //make sure that id dosent exsist std::vector<Student> toCheck = students.searchStudents(students.ID, toAdd.getUID()); //if to check == 0 then student doesnt exsist if (toCheck.size() < 100) { //make sure the student is valid if (!toAdd.isValidStudent()) { printMessage("Invalid student attribute."); return; } //add students.addStudent(toAdd); students.saveStudent(); std::cout << toAdd.getName() + " successfully added" << std::endl; } else { std::cout << "Student already exists" << std::endl; } } } //remove a student else if (cmd == Remove) { //see if student exsists std::vector<Student> toCheck = students.searchStudents(students.ID, payload[0]); //see if student exsist if (toCheck.size() != 0) { std::cout << "Student does not exist." << std::endl; } else { //delete student students.deleteStudent(toCheck[0]); students.saveStudent(); std::cout << "Student deleted successfully" << std::endl; } } //search for student else if (cmd == Search) { //make sure there are arguments if (payload.size() == 0) { std::cout << "Printing all students:" << std::endl; students.printAllStudents(); return; } else { //slit the payload std::vector<std::string> commands = fileIO::split(payload[0], '='); //make sure the format is correct if (commands.size() < 2) { printMessage("Search argument recieved invalid. Format should be [email protected]."); } else { Students queryList = Students(students.searchStudents(commands[0],commands[1])); //iterate through rest of the arguments for (int i = 1; i < payload.size(); i++) { std::vector<std::string> commands = fileIO::split(payload[i], '='); if (commands.size() != 2) { printMessage("Search argument recieved invalid. Format should be [email protected]."); } queryList = queryList.searchStudents(commands[0], commands[1]); } queryList.printAllStudents(); } } } //update the student else if (cmd == Update) { //search for the student std::vector<Student> tempStudents = students.searchStudents(Students::ID, payload[0]); //for each argument update that one for (int i = 1; i < payload.size(); i++) { std::vector<std::string> commands = fileIO::split(payload[i], '='); students.updateInfo(tempStudents[0], commands); } students.saveStudent(); } //you need help so print it else if (cmd == Help) { std::cout << "Here are a list of all the example commands: " << std::endl; std::cout << "add <name>,<UID>,<email>,<firstscore>,<secondscore>,<thirdscore>" << std::endl; std::cout << "remove <UID>" << std::endl; std::cout << "search UID=<id>,name=<bob>" << std::endl; std::cout << "update <UID>,UID=<id>,name=<new name>" << std::endl; } }
/* * gradeForName */ TEST(GradeForName, GradeForNameTest1){ Students* students = new Students(); students->addUser("Billy", 0); students->addGrade(0, 'C'); EXPECT_EQ('C', students->gradeForName("Billy")); EXPECT_THROW(students->gradeForName("John"), std::out_of_range); students->addUser("Quinn", 1); students->addUser("Joe", 2); students->addGrade(1, 'D'); students->addGrade(1, 'A'); students->addGrade(2, 'z'); EXPECT_EQ('A', students->gradeForName("Quinn")); EXPECT_EQ('z', students->gradeForName("Joe")); delete students; }
TEST(AddPhoneNumber, AddPhoneNumberTest3){ Students* students = new Students(); students->addUser("Steve", 21); EXPECT_EQ(21, students->idForName("Steve")); students->addPhoneNumbers(students->idForName("Steve"), "##"); EXPECT_EQ("##", students->phoneForName("Steve")); students->addUser("Quinn", 0); students->addUser("Andre", 1); students->addPhoneNumbers(0, ""); students->addPhoneNumbers(0, " "); students->addPhoneNumbers(1, "907"); EXPECT_EQ(" ", students->phoneForName("Quinn")); EXPECT_EQ("907", students->phoneForName("Andre")); EXPECT_NE(students->phoneForName("Quinn"), students->phoneForName("Andre")); EXPECT_EQ(3, students->numberOfNames()); delete students; }
/* * fullRecord() */ TEST(FullRecordTest, FullRecordTest1){ Students* students = new Students(); std::string bob = "Bob"; std::string phoneNumber = "KL5-3226"; char grade = 'D'; uint id = 2; uint new_id = 5; students->addUser(bob, id); students->addGrade(students->idForName(bob), grade); students->addPhoneNumbers(students->idForName(bob), phoneNumber); students->fullRecord(bob, id, phoneNumber, grade); EXPECT_TRUE(students->fullRecord(bob, id, phoneNumber, grade)); grade = 'C'; students->addGrade(students->idForName(bob), grade); EXPECT_TRUE(students->fullRecord(bob, id, phoneNumber, grade)); // Even though there is a new guy with the name of Bob, there should still be a full record of the old // Bob in there students->addUser(bob, new_id); EXPECT_TRUE(students->fullRecord(bob, id, phoneNumber, grade)); delete students; }
TEST(NameExistsTest, NameExistsTest1){ Students* students = new Students(); uint id = 0; std::string quinn = "Quinn"; std::string phone = "801"; char grade = 'A'; students->addUser("Quinn", id); students->addUser("Andre", 1); students->addUser("Jim", 2); students->addUser("Bob", 3); students->addPhoneNumbers(students->idForName("Quinn"), "801"); students->addGrade(id, 'A'); EXPECT_TRUE(students->fullRecord(quinn, id, phone, grade)); EXPECT_EQ(4, students->numberOfNames()); EXPECT_TRUE(students->nameExists("Quinn")); students->removeStudent("Quinn"); EXPECT_EQ(3, students->numberOfNames()); EXPECT_FALSE(students->nameExists("Quinn")); EXPECT_FALSE(students->fullRecord(quinn, id, phone, grade)); delete students; }
void Register_Function(Modules md, Students st) { Students st; Modules md; int dd,mm,yyyy; bool done=1; bool done_d=1; char string_date[15]; char ch_d,stat=2; while(done_d) { system("cls"); cout<<"\n Enter the New date (E)."; cout<<"\n Exit (Q) "; cout<<"\n Enter your choice: "; cin>> ch_d; switch(ch_d) { case 'q': case 'Q': done_d=0; stat=1; break; case 'e': case 'E': stat=0; break; } if(stat==1) break; else if(stat==2) continue; system("cls"); cout<<"Please Enter the Date(dd mm yyyy):"; cin>>dd>>mm>>yyyy; while(done) { int ID; md.Browse(); cout<<"\n Date(dd-mm-yyy):"<<dd<<"-"<<mm<<"-"<<yyyy; cout<<"\n Please Select one of Modules by ID or -1 to exit: "; cin>> ID; if (ID<=-1) {done=0;break;} if(md.Check_ID(ID)==0) {getch(); continue; } int done_m=1; while(done_m) { system("cls"); cout<<"\n Date(dd-mm-yyy):"<<dd<<"-"<<mm<<"-"<<yyyy<<" Module Name: "<<md.Get_Name(ID); cout<<"\n Enter the student ID (I)."; //cout<<"\n Undo (U)."; //cout<<"\n Search student name by ID (S)."; cout<<"\n Browse students(B)."; cout<<"\n Exit (Q) "; cout<<"\n Enter your choice: "; char IDc; int done_i=1; int IDi=0; cin>> IDc; switch(IDc) { case 'q': case 'Q': done_m=0; break; case 'i': case 'I': //system("cls") while(1){ cout<<"\n Date(dd-mm-yyy):"<<dd<<"-"<<mm<<"-"<<yyyy<<" Module Name: "<<md.Get_Name(ID); cout<<"\n Enter Student ID (-1 to exit): "; cin>>IDi; if (IDi<0) break; if (st.Check_ID(IDi)) { cout<<"\n Date(dd-mm-yyy):"<<dd<<"-"<<mm<<"-"<<yyyy<<" Module Name: "<<md.Get_Name(ID)<<" Student ID/Name: "<<IDi<<'/'<<st.Get_Name(IDi); cout<<"\n On Time (O)."; cout<<"\n Late (L)."; cout<<"\n Absent (A)."; cout<<"\n Exit (Q) "; cout<<"\n Status: "; cin>>IDc; sprintf(string_date,"%d-%d-%d",dd,mm,yyyy); Registers[Current_Reg].Date=string_date; Registers[Current_Reg].Mod_ID=ID; Registers[Current_Reg].Mod_Name=md.Get_Name(ID); Registers[Current_Reg].St_ID=IDi; switch(IDc) { case 'q': case 'Q': break; case 'o': case 'O': Registers[Current_Reg].status=+1; break; case 'L': case 'l': Registers[Current_Reg].status=0; break; case 'a': case 'A': Registers[Current_Reg].status=-1; break; } //cout<<"Record_number:("<<Current_Reg<<")"<<Registers[Current_Reg].Date<<" "<<Registers[Current_Reg].Mod_Name<<" "<<Registers[Current_Reg].St_ID; Current_Reg++; } } //Registers[Current_Reg]. break; case 'b': case 'B': st.Browse(); getch(); break; case 's': case 'S': //st.Search_Name() break; } } } }
int main() { Teachers aTeacher; Students aStudent; GuestTeachers aGuestTeacher; int option = 0; int identity; int Points; if (Points < 0 || Points > 100) { cout << "Bad input! " << endl; } int EvaluationMark; if(EvaluationMark < 2 && EvaluationMark >6) { cout << "Bad input! " << endl; } int MonthlySalary; int passedDays; int SalaryForCourse; string Name; string Course; cout << "Get data for student with ID: 1" << endl; cout << "Get data for teacher with ID: 2" << endl; cout << "Get data for guest teacher with ID: 3" << endl; cout << "Add data for new student: 4" << endl; cout << "Add data for new teacher: 5" << endl; cout << "Add data for new guest teacher: 6" << endl; unsigned short int arr[65535]; while(true) { cout << "Enter option: "; cin >> option; { if(option == 7) { break; } if (option < 1 || option > 7) { cout << "Bad input! " << endl; } switch(option) { case 1: cout << aStudent.getID() << endl; cout << aStudent.getName() << endl; cout << aStudent.getCurrentCourse() << endl; cout << aStudent.getCurrentPoints() << endl; cout << aStudent.getAverageEvaluationMark() << endl; break; case 2: cout << aTeacher.getID() << endl; cout << aTeacher.getName() << endl; cout << aTeacher.getCurrentCourse() << endl; cout << aTeacher.getMonthlySalary() << endl; cout << aTeacher.getPassedDays() << endl; break; case 3: cout << aGuestTeacher.getID() << endl; cout << aGuestTeacher.getName() << endl; cout << aGuestTeacher.getCurrentCourse() << endl; cout << aGuestTeacher.getSalaryForCourse() << endl; break; case 4: cout << "Enter ID, Name, Current Course , Current Points and Average Evaliation Mark: "<< endl; cin >> identity >> Name >> Course >> Points >> EvaluationMark; aStudent.setID(identity); aStudent.setName(Name); aStudent.setCurrentCourse(Course); aStudent.setCurrentPoints(Points); aStudent.setAverageEvaluationMark(EvaluationMark); cout << "A student profile has been added." << endl; break; case 5: cin >> identity >> Name >> Course >> MonthlySalary >> passedDays; aTeacher.setID(identity); aTeacher.setName(Name); aTeacher.setCurrentCourse(Course); aTeacher.setMonthlySalary(MonthlySalary); aTeacher.setPassedDays(passedDays); cout << "A teacher profile has been added." << endl; break; case 6: cin >> identity >> Name >> Course >> SalaryForCourse; aGuestTeacher.setID(identity); aGuestTeacher.setName(Name); aGuestTeacher.setCurrentCourse(Course); aGuestTeacher.setSalaryForCourse(SalaryForCourse); cout << "A guest teacher profile had been added." << endl; break; } } } return 0; }