From adbf63627dcb0094dad1dde6169a6ce79de03aee Mon Sep 17 00:00:00 2001 From: "Andrew.Binder" Date: Tue, 6 Mar 2018 06:02:13 +0000 Subject: [PATCH] Added support for saving the roster --- Teacher.cpp | 48 +++++++++++++++++++++++++++++++++++++++++----- Teacher.h | 10 +++++++++- Teacher_Driver.cpp | 37 +++++++++++++++++++++-------------- classRoster.txt | 6 ++++++ 4 files changed, 81 insertions(+), 20 deletions(-) create mode 100644 classRoster.txt diff --git a/Teacher.cpp b/Teacher.cpp index 90ae38f..78a6a0b 100644 --- a/Teacher.cpp +++ b/Teacher.cpp @@ -1,13 +1,24 @@ #include "Teacher.h" #include +#include + +ofstream fout; +ifstream fin; + +Teacher::Teacher() {} Teacher::Teacher(string userNameIn) { userName = userNameIn; } void Teacher::displayMenu() { - cout << "Teacher Menu" << endl; - cout << "____________" << endl; + cout << "------Teacher Menu------" << endl; + cout << "1. Display Class Progress" << endl; + cout << "2. Export Class Progress" << endl; + cout << "3. Enroll Students" << endl; + cout << "4. Adjust Student Progress" << endl; + cout << "5. Change Username" << endl; + cout << "6. Change Exit Code" << endl; } void Teacher::displayProgress() { @@ -22,6 +33,36 @@ void Teacher::exportProgress() { } +void Teacher::saveProgress() { + fout.open("classRoster.txt"); + fout << userName << " " << exitCode << endl; + for (int i = 0; i < roster.size(); i++) { + fout << roster.at(i).getUserName() << " " << roster.at(i).getLevel() << endl; + } + fout << "END_OF_FILE"; + fout.close(); +} + +void Teacher::importProgress() { + string parseName; + int parseLevel; + fin.open("classRoster.txt"); + + fin >> userName >> exitCode; + + while (true) { + fin >> parseName; + if (parseName == "END_OF_FILE") { + break; + } else { + fin >> parseLevel; + } + Student studentIn(parseName, parseLevel); + roster.push_back(studentIn); + } + fin.close(); +} + void Teacher::enrollStudent(Student studentIn) { bool validName = 1; for (int i = 0; i < roster.size(); i++) { @@ -36,9 +77,6 @@ void Teacher::enrollStudent(Student studentIn) { } else { cout << "Error: Student already exists!" << endl; } - - - } void Teacher::adjustProgress(string studentUserNameIn, int level) { diff --git a/Teacher.h b/Teacher.h index 7803e92..8c11562 100644 --- a/Teacher.h +++ b/Teacher.h @@ -8,6 +8,11 @@ class Student { Student(string userNameIn) { userName = userNameIn; } + + Student(string userNameIn, int levelIn) { + userName = userNameIn; + level = levelIn; + } int getLevel() { return level; @@ -31,12 +36,15 @@ class Student { class Teacher { public: + Teacher(); Teacher(string userNameIn); // Default constructor // Teacher Functions void displayMenu(); void displayProgress(); // Opens menu, teacher get get all (gradebook style) or a student void exportProgress(); // outputProgress() in UML + void saveProgress(); + void importProgress(); void enrollStudent(Student studentIn); void adjustProgress(string studentUserNameIn, int level); void endProgram(); @@ -51,7 +59,7 @@ class Teacher { private: string userName; - string exitCode; + string exitCode = "Quit"; vector roster; }; \ No newline at end of file diff --git a/Teacher_Driver.cpp b/Teacher_Driver.cpp index 27367a7..a12fe34 100644 --- a/Teacher_Driver.cpp +++ b/Teacher_Driver.cpp @@ -13,31 +13,40 @@ int main() { string teacherUserName; cout << "First we will test the constructor: \nInput a username: "; - cin >> teacherUserName; + // cin >> teacherUserName; - Teacher testTeacher(teacherUserName); + Teacher testTeacher; + + testTeacher.importProgress(); + cout << "The test teachers name is " << testTeacher.getUserName() << ".\n\n"; - cout << "Now, we will enroll some students.\nEnter three students names: "; + cout << "Display Menu:\n"; + //testTeacher.displayMenu(); + - for (int i = 0; i < 3; i++) { - string studentNameIn; + + // cout << "Now, we will enroll some students.\nEnter three students names: "; + + // for (int i = 0; i < 3; i++) { + // string studentNameIn; - cin >> studentNameIn; - Student studentIn(studentNameIn); + // cin >> studentNameIn; + // Student studentIn(studentNameIn); - testTeacher.enrollStudent(studentIn); - } - //Student studentIn("Andrew"); - //testTeacher.enrollStudent(studentIn); + // testTeacher.enrollStudent(studentIn); + // } + // //Student studentIn("Andrew"); + // //testTeacher.enrollStudent(studentIn); - cout << "\nNow we will test the displayProgress() function.\n"; - testTeacher.displayProgress(); + // cout << "\nNow we will test the displayProgress() function.\n"; + // testTeacher.displayProgress(); - testTeacher.adjustProgress("Andrew",5); + // testTeacher.adjustProgress("Andrew",5); testTeacher.displayProgress(); + // testTeacher.saveProgress(); return 0; } \ No newline at end of file diff --git a/classRoster.txt b/classRoster.txt new file mode 100644 index 0000000..ef38636 --- /dev/null +++ b/classRoster.txt @@ -0,0 +1,6 @@ +Andrew Quit +Andrew 1 +Asher 3 +Joe 1 +John 3 +END_OF_FILE \ No newline at end of file -- GitLab