In: Computer Science
using c++. ALWAYS GRADE MY ANSWERS
Write a program that reads students’ names followed by their test scores. The program should output each student’s name followed by the test scores and the relevant grade. It should also find and print the highest test score and the name of the students having the highest test score.
Student data should be stored in a struct variable of type studentType, which has four components: studentFName and studentLName of type string, testScore of type int (testScore is between 0 and 100), and grade of type char. Suppose that the class has 20 students. Use an array of 20 components of type studentType. Your program must contain at least the following functions:
Your program must output each student’s name in this form: last name followed by a comma, followed by a space, followed by the first name; the name must be left justified. Moreover, other than declaring the variables and opening the input and output files, the function main should only be a collection of function calls.
Your program should accept no input and save the output to Ch9_Ex2Out.txt.
HERE IS :Ch9_Ex2Data.txt
Duckey Donald
85
Goof Goofy 89
Brave Balto 93
Snow Smitn 93
Alice Wonderful 89
Samina Akthar 85
Simba Green 95
Donald Egger 90
Brown Deer 86
Johny Jackson 95
Greg Gupta 75
Samuel Happy 80
Danny Arora 80
Sleepy June 70
Amy Cheng 83
Shelly Malik 95
Chelsea Tomek 95
Angela Clodfelter 95
Allison Nields 95
Lance Norman 88
code:
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
struct studentType {
string studentFName;
string studentLName;
int testScore;
char grade;
};
void getData(ifstream& inFile, studentType sList[], int
listSize);
void calculateGrade(studentType sList[], int listSize);
int highestScore(const studentType sList[], int listSize);
void printResult(const studentType sList[], int listSize);
int main() {
ifstream in;
in.open("Ch9_Ex2Data.txt");
if(in.fail()){
cout<<"file did not open please check it\n";
system("pause");
system("exit");
}
studentType sList[20];
getData(in,sList,20);
calculateGrade(sList,20);
printResult(sList,20);
in.close();
return 0;
}
void getData(ifstream& inFile,studentType
sList[],int listSize) {
int n=0;
while(n<listSize) {
inFile>>sList[n].studentLName>>sList[n].studentFName>>sList[n].testScore;
n++;
}
}
void calculateGrade(studentType sList[], int listSize) {
int i;
for(i=0;i<listSize;i++) {
if (sList[i].testScore<60)
sList[i].grade='F';
else if (sList[i].testScore<70)
sList[i].grade='D';
else if (sList[i].testScore<80)
sList[i].grade='C';
else if(sList[i].testScore<90)
sList[i].grade='B';
else
sList[i].grade='A';
}
}
int highestScore(const studentType sList[], int listSize) {
int high=0,i;
for(i=0;i<listSize;i++)
if (high < sList[i].testScore )
high=sList[i].testScore;
return high;
}
void printResult(const studentType sList[], int
listSize) {
ofstream myfile ("CH9_EX2Out.txt");
if (myfile.is_open()){
cout<<left<<setw(30)<<"Student
Name"<<right<<setw(10)<<"TestScore"<<right<<setw(7)<<"Grade"<<endl;
myfile<<left<<setw(30)<<"Student
Name"<<right<<setw(10)<<"TestScore"<<right<<setw(7)<<"Grade"<<endl;
string name;
int high,i;
for(i=0;i<listSize;i++) {
name=sList[i].studentLName+", "+sList[i].studentFName;
cout<<left<<setw(30)<<name<<right<<setw(10)<<sList[i].testScore<<right<<setw(7)<<sList[i].grade<<endl;
myfile<<left<<setw(30)<<name<<right<<setw(10)<<sList[i].testScore<<right<<setw(7)<<sList[i].grade<<endl;
}
cout<<endl;
high=highestScore(sList, listSize);
cout<<"Highest Test Score: "<<high<<endl;
myfile<<"Highest Test Score: "<<high<<endl;
cout<<"Students having the highest test score:
"<<endl;
myfile<<"Students having the highest test score:
"<<endl;
for (int i=0; i < listSize; i++)
if (sList[i].testScore==high ) {
myfile<<sList[i].studentLName<<",
"<<sList[i].studentFName<<endl;
cout<<sList[i].studentLName<<",
"<<sList[i].studentFName<<endl;
}
myfile.close();
cout << "Output also present in CH9_EX2Out.txt" <<
endl;
}
else {
cout << "Error Occurred, while creating file" <<
endl;
}
}
OUTPUT: