Last active
November 13, 2016 21:36
-
-
Save azmodius/62dad9d728c910697635d6a85875f22e to your computer and use it in GitHub Desktop.
Beth's HW!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <array> | |
#include <string> | |
#include <iomanip> | |
#include <fstream> | |
using namespace std; | |
const int NUMSTUDENTS = 10; | |
const int NUMASSIGNMENTS = 10; | |
struct Student | |
{ | |
string nameFirst; | |
string nameLast; | |
double assignment[NUMASSIGNMENTS]; | |
}; | |
void displayMenu(); | |
void addStudent(int &numStudents, int &numAssignments, Student students[]); | |
void assignGrades(int &numStudents, int &numAssignments, Student students[]); | |
void displayStudentGrades(int numStudents, int numAssignments, Student students[]); //displays grades for one student | |
void listAllScores(int numStudents, int numAssignments, Student students[]); // lists scores for one assignment | |
void displayGradeBook(int numStudents, int numAssignments, Student students[]); //saves gradebook to file | |
int main() | |
{ | |
displayMenu(); | |
return 0; | |
} | |
void displayMenu() | |
{ | |
int menuChoice; | |
Student students[NUMSTUDENTS]; | |
int numStudents = 0; | |
int numAssignments = 0; | |
do | |
{ | |
cout << "What would you like to do? \n1 ADD a new student \n2 ASSIGN GRADES for a new assignment\n" | |
<< "3 LIST one student, displaying all their grades and their course average \n4 LIST all the scores for a chosen assignment\n" | |
<< "5 DISPLAY all grades currently contained in the gradebook \n6 QUIT " << endl; | |
cin >> menuChoice; | |
switch (menuChoice) | |
{ | |
case 1: | |
{ | |
cout << numStudents << " " << numAssignments; | |
addStudent(numStudents, numAssignments, students); | |
break; | |
} | |
case 2: | |
{ | |
assignGrades(numStudents, numAssignments, students); | |
break; | |
} | |
case 3: | |
{ | |
displayStudentGrades(numStudents, numAssignments, students); | |
break; | |
} | |
case 4: | |
{ | |
listAllScores(numStudents, numAssignments, students); | |
break; | |
} | |
case 5: | |
{ | |
displayGradeBook(numStudents, numAssignments, students); | |
break; | |
} | |
case 6: | |
break; | |
default: | |
{ | |
cout << "You didn't input a proper menu choice. Please try again. " << endl; | |
} | |
} | |
} while (menuChoice != 6); | |
} | |
void addStudent(int &numStudents, int &numAssignments, Student students[]) | |
{ | |
cout << numStudents << " " << numAssignments; | |
cout << &numStudents << " " << &numAssignments; | |
if (numStudents < 10) | |
{ | |
cout << "What is the student's FIRST and LAST name? "; | |
cin >> students[numStudents].nameFirst >> students[numStudents].nameLast; | |
if (numAssignments > 0) | |
{ | |
cout << "Now you must give them the grades they earned on prior assignments." << endl; | |
assignGrades(numStudents, numAssignments, students); | |
} | |
numStudents++; | |
cout << numStudents; | |
} | |
else | |
{ | |
cout << "You have a problem. You cannot have more than 10 students." << endl; | |
} | |
} | |
void assignGrades(int &numStudents, int &numAssignments, Student students[]) | |
{ | |
cout << numStudents << " " << numAssignments; | |
cout << &numStudents << " " << &numAssignments; | |
if (numStudents > 0) | |
{ | |
if (numAssignments < 10) | |
{ | |
for (int i = 0; i < numStudents; i++) | |
{ | |
cout << "For student " << i + 1 << " please input the student's score for"; | |
for (int j = 0; j <= numAssignments; j++) | |
{ | |
cout << " assignment " << j + 1 << ": "; | |
cin >> students[i].assignment[j]; | |
} | |
} | |
} | |
else | |
{ | |
cout << "You have a problem. You cannot have more than 10 assignments." << endl; | |
} | |
} | |
else | |
{ | |
cout << "You cannot add grades until you have at least one student mentioned." << endl; | |
addStudent(numStudents, numAssignments, students); | |
cout << "Now you can give them grades. " << endl; | |
assignGrades(numStudents, numAssignments, students); | |
} | |
++numAssignments; | |
} | |
void displayStudentGrades(int numStudents, int numAssignments, Student students[]) | |
{ | |
if (numStudents > 0 && numAssignments > 0) | |
{ | |
double average; | |
double total = 0; | |
cout << "This will display the grades and average for one student." << endl; | |
cout << "These are the students, whose grades do you want to see? Type the number next to their name: " << endl; | |
for (int i = 0; i < numStudents; i++) // show all students so it is easy to pick the desired one | |
{ | |
cout << i << " " << students[i].nameFirst << " " << students[i].nameLast << endl; | |
} | |
int pickedStudent; | |
cin >> pickedStudent; | |
for (int i = 0; i < numAssignments; i++) // display all of their grades | |
{ | |
cout << "Student's score for assignment " << i + 1 << " " << students[pickedStudent].assignment[i] << endl; | |
total += students[pickedStudent].assignment[i]; | |
} | |
average = static_cast<double>(total / numAssignments); | |
cout << "The student's course average is: " << average << endl; | |
} | |
else | |
{ | |
cout << "You have an error. Please input more data, then try again." << endl; | |
} | |
} | |
void listAllScores(int numStudents, int numAssignments, Student students[]) | |
{ | |
double total = 0; | |
double average; | |
if (numStudents > 0 && numAssignments > 0) | |
{ | |
int assignmentIndex; | |
cout << "What number assignment do you wish to see? The possible numbers are from 1 to " << numAssignments; | |
cin >> assignmentIndex; | |
for (int i = 0; i < numStudents; i++) | |
{ | |
cout << students[i].assignment[assignmentIndex] << endl; | |
total += students[i].assignment[assignmentIndex]; | |
} | |
average = static_cast<double>(total / numAssignments); | |
cout << "The class's average for this assignment is: " << average << endl; | |
} | |
else | |
{ | |
cout << "You have an error. Please input more data, then try again." << endl; | |
} | |
} | |
void displayGradeBook(int numStudents, int numAssignments, Student students[]) | |
{ | |
char userChoice; | |
ofstream saveGradesOUT; | |
cout << "show all student names and grades for each assignment"; | |
cout << "Would you like to save the Grade Book as a text file named grades.txt? y/n"; | |
cin >> userChoice; | |
if (userChoice == toupper('Y')) | |
{ | |
saveGradesOUT.open("grades.txt"); | |
for (int i = 0; i <= numStudents; i++) | |
{ | |
saveGradesOUT << students[i].nameFirst << students[i].nameLast; | |
for (int j = 0; j <= numAssignments; j++) | |
saveGradesOUT << students[numAssignments].assignment[j] << " "; | |
saveGradesOUT << endl; | |
} | |
saveGradesOUT.close(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment