C++ Programming Programming Assignment #3: Student CS Grade Database Description
ID: 3821981 • Letter: C
Question
C++ Programming
Programming Assignment #3: Student CS Grade Database Description: This program will read a data file that will contain students' scores for 5 Computer Science (CS) tests. Each student record will contain his/her last name, first name, numeric student ID, student username, 5 test scores, average for these five scores, and grade for CS course. The file will be processed by the program and will produce a report The report contains seven parts 1) The students' usernames 2) The average score for each student's five tests. 3) The grade for each student's CS course. 4) The average CS Scores for the class. 5) The total number of students with grades A, B, C, D, and F 6) The sorted student names and IDs based on user choice: descending or ascending order of grades. 7) Search a student grade by entering student user name ID (See the attached sample input and output for example.)Explanation / Answer
#include<iostream>
#include<fstream>
#include<string>
#include<cstring>
#include<cctype>
using namespace student;
const int TEST_SCORE = 5;
const int MAXIMUM_STUDENT = 8;
struct student_data
{
char firstName[25];
char lastName[25];
int id;
string username;
int testScore[TEST_SCORE];
float average;
char grade;
};
void getUname(student_data []);
void getAverageScore(student_data []);
void getGrade(student_data []);
typedef student_data student_array[MAXIMUM_STUDENT];
int main()
{
student_array student;
ofstream dataOut;
ifstream dataIn;
dataOut.open("grade.dat");
cout << "Please input student's information" << endl;
for (int pos = 0; pos <MAXIMUM_STUDENT; pos++)
{
string line;
getline(cin,line);
dataOut << line << " ";
}
dataOut.close();
dataIn.open("grade.dat");
for (int pos = 0; pos < MAXIMUM_STUDENT; pos++)
{
dataIn >> student[pos].firstName >> student[pos].lastName >> student[pos].id;
for (int num = 0; num < TEST_SCORE; num++)
{
dataIn >> student[pos].testScore[num];
}
}
dataIn.close();
getUsername(student);
getAverageScore(student);
getGrade(student);
cout << "LastName FirstName ID userName Test 1 Test 2 Test 3 Test 4 Test 5 Average Grade ";
for (int pos = 0; pos < MAXIMUM_STUDENT; pos++)
{
cout << student[pos].firstName << " " << student[pos].lastName << " " << student[pos].id << " " << student[pos].username << " ";
for (int num = 0; num < TEST_SCORE; num++)
{
cout << student[pos].testScore[num] << " ";
}
cout << student[pos].average << " " << student[pos].grade << " ";
}
}
void getUsername(student_data stuArray[])
{
for (int pos = 0; pos < MAXIMUM_STUDENT; pos++)
{
char first = tolower(stuArray[pos].firstName[0]);
char last = tolower(stuArray[pos].lastName[0]);
char initial = first + last;
int id= stuArray[pos].id;
stuArray[pos].username = initial+id;
}
}
void getAverageScore(student_data stuArray[])
{
int sum = 0;
for (int pos = 0; pos < MAXIMUM_STUDENT; pos++)
{
for (int index = 0; index < 5; index++)
{
sum += stuArray[pos].testScore[index];
stuArray[pos].average = static_cast<float>(sum) / 5;
}
sum = 0;
}
}
void getGrade(student_data stuArray[])
{
char grade;
for (int pos = 0; pos < MAXIMUM_STUDENT; pos++)
{
float average = stuArray[pos].average;
if (average >= 90)
grade = 'A';
else if (average >= 80)
grade = 'B';
else if (average >= 70)
grade = 'C';
else if (average >= 60)
grade = 'D';
else
grade = 'F';
stuArray[pos].grade = grade;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.