- Aug 19, 2001
- 134
- 0
- 0
----Ok I am not getting any of my desired output, its running bug free, but some of the menu settings don't quite work right. You can copy and paste this program to MSVisualC++
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 45
#define not_found 0
#define A 0
#define B 1
#define C 2
#define D 3
#define F 4
#define NAME_LENGTH 20
// Function Prototypes
void DisplayGreeting(void);
int GetId(void);
int GetScore(void);
int ComputeExamDifference(int,int);
float ComputeExamAverage(int,int);
float ComputeCourseAverage(int,int,int);
char ComputeGrade(float);
void GenerateSummary(int,int[],char[][NAME_LENGTH],float[],char[]);
void GenerateCourseReport(int,int,int,int,int,float,float,char);
void DisplayMenu(void);
char GetMenuChoice(void);
void StudentMenu(void);
int AddStudent(int,int[],char[][NAME_LENGTH],float[],char[]);
void GetName(char[]);
int FindStudent(int[],int,int);
void ReportOnStudent(int, char[], float, char);
int FindBest(float[], int);
int FindWorst(float[], int);
void CountGrade(char[], int);
void DisplayGrade(int[]);
float ComputeAverage(float[], int);
void DisplayCourseMenu(void);
char GetCourseCode(int);
main()
{
// Data Declarations
int location;
int select;
int student_count = 0, id_student, id_array[MAX] = {0};
float avg_course_array[MAX] = {0};
char grade_course_array[MAX] = {0};
char name_array[MAX] = {0};
float class_average;
char course_grade;
float course_avg;
/*
int student_count = 0;
char choice;
char name_array[MAX][name_size] = {0};
int id_array[MAX] = {0}; // Student id
int id_student;
int location;
float avg_course_array[MAX] = {0.0};
char grade_course_array[MAX] = {0};
int score;
int ex_1; // Exam 1 score
int ex_2; // Exam 2 score
int class_project; // Class project score
int ex_diff; // Difference in score on the 2 exams
float exam_avg; // Exam averages
float course_avg; // Overall class score array
char course_grade; // Letter grade for student array
*/
DisplayGreeting();
while (1)
{
StudentMenu();
select = GetMenuChoice();
switch(toupper(select))
{
case 'A':
AddStudent(student_count, id_array, name_array, avg_course_array, grade_course_array);
break;
case 'R':
GenerateSummary(student_count, id_array, name_array, avg_course_array, grade_course_array);
break;
case 'F':
id_student = GetId();
location = FindStudent(id_array, id_student, student_count);
if(location == not_found)
{
printf("\n *** Error! Student with ID %i is not enrolled ***", id_student);
getch();
}
else
ReportOnStudent(id_student, name_array, course_avg, course_grade);
break;
case 'G':
CountGrade(grade_course_array, student_count);
break;
case 'B':
location = FindBest(avg_course_array, student_count);
printf("\nThe Student with the highest average: ");
ReportOnStudent(id_student, name_array, course_avg, course_grade);
//ReportOnStudent(id_array, name_array, avg_course_array, grade_course_array);
break;
case 'W':
location = FindWorst(avg_course_array, student_count);
printf("\nThe Student with the lowest average: ");
ReportOnStudent(id_student, name_array, course_avg, course_grade);
//ReportOnStudent(id_array, name_array, avg_course_array, grade_course_array);
break;
case 'C':
class_average = ComputeAverage(avg_course_array, student_count);
printf("\n*** ISMG 2200 Class Average is %3.2f ***", class_average);
getch();
break;
case 'Q':
return 0;
default:
printf("\n*** Error! Invalid menu choice. Please try again!");
}
}
}
// Functions
void DisplayGreeting(void) // Displays the greeting
{
system("cls");
printf("\n**************************************");
printf("\n* *");
printf("\n* Welcome to the UCD ISMG 2200 *");
printf("\n* On-line Information System *");
printf("\n* *");
printf("\n**************************************");
return;
}
void StudentMenu(void)
{
system("cls");
printf(" *** Course Option Menu ***\n");
printf("\n (A) - Add student's course information");
printf("\n (R) - Display Summary Course Report");
printf("\n (F) - Find a student, display course information");
printf("\n (G) - Display grade Distribution Report");
printf("\n (B) - Find and display information for best student");
printf("\n (W) - Find and display information on worst student");
printf("\n (C) - Compute course average");
printf("\n (Q) - Quit");
return;
}
char GetMenuChoice (void)
{
char select;
printf("\n\nPlease enter a option: ");
scanf("%c", &select);
printf("\nPress any key to continue");
getch();
system("cls");
return select;
}
int AddStudent(int student_count, int id_array[], char name_array[][NAME_LENGTH], float avg_course_array[], char grade_course_array[])
{
int id_student;
int ex_1;
int ex_2;
int class_project;
int ex_diff;
float exam_avg;
char course_grade;
float course_avg;
id_student = GetId();
id_array[++student_count] = id_student;
GetName(name_array[student_count]);
printf("\nPlease enter the score for student %i on Exam 1: ", id_student);
ex_1 = GetScore();
printf("\nPlease enter the score for student %i on Exam 2: ", id_student);
ex_2 = GetScore();
printf("\nPlease enter the score for student %i on Class Project: ", id_student);
class_project = GetScore();
printf("\nPress any key to continue");
getch();
ex_diff = ComputeExamDifference(ex_1, ex_2);
exam_avg = ComputeExamAverage(ex_1, ex_2);
course_avg = ComputeCourseAverage(ex_1, ex_2, class_project);
avg_course_array[student_count] = course_avg;
course_grade = ComputeGrade(course_avg);
grade_course_array[student_count] = course_grade;
GenerateCourseReport(id_student, ex_1, ex_2, class_project, ex_diff, exam_avg, course_avg, course_grade);
return student_count, id_array[student_count], name_array[student_count], avg_course_array[student_count], grade_course_array[student_count];
}
int GetId(void) // Gets the student id number
{
int id_student;
{
printf("\n\nPlease enter the student ID number: ");
scanf("%i", &id_student);
fflush(stdin);
if (id_student >= 0 && id_student <= 999999999)
return id_student;
else
printf("\n*** Error! Student ID of %i is out of range! ***", id_student);
GetId();
}
}
int GetScore(void) // Gets the score for the student
{
int score;
do
{
scanf("%i", &score);
if(score <=100 && score >= 0)
break;
printf("\n***Score of %i is out of range! Please try again ***\n", score);
}
while(1);
return score;
}
void GetName(char name_array[])
{
fflush(stdin);
printf("\nPlease enter the student's name: ");
gets(name_array);
return;
}
int FindStudent(int id_array[], int id_student, int student_count)
{
int i;
for(i = 0; i <= student_count; i++)
if(id_array == id_student)
return i;
return not_found;
}
void ReportOnStudent(int id_student, char name_array[], float course_avg, char course_grade)
{
printf("\nStudent's name is: %s", name_array);
printf("\nStudent's ID number is: %i", id_student);
printf("\nStudent's course average is: %3.2f", course_avg);
printf("\nStudent's current grade is: %c", course_grade);
return;
}
int FindBest(float avg_course_array[], int student_count)
{
int i;
int location;
float best = 0.0f;
for(i = 0; i <= student_count; i++)
if(avg_course_array > best)
{
location = i;
best = avg_course_array;
}
return location;
}
int FindWorst(float avg_course_array[], int student_count)
{
int i;
int location;
float worst = 101.0f;
for(i = 0; i <= student_count; i++)
if(avg_course_array < worst)
{
location = i;
worst = avg_course_array;
}
return location;
}
void CountGrade(char grade_course_array[], int student_count)
{
int i;
int grade[5] = {0};
for(i = 0; i <= student_count; i++)
{
switch(grade_course_array)
{
case 'A':
++grade[A];
break;
case 'B':
++grade;
break;
case 'C':
++grade[C];
break;
case 'D':
++grade[D];
break;
case 'F':
++grade[F];
break;
}
}
DisplayGrade(grade);
return;
}
void DisplayGrade(int grade[])
{
printf("*** ISMG 2200 Grade Distribution Report ***\n");
printf("\nNumber of A's: %d", grade[A]);
printf("\nNumber of B's: %d", grade);
printf("\nNumber of C's: %d", grade[C]);
printf("\nNumber of D's: %d", grade[D]);
printf("\nNumber of F's: %d", grade[F]);
getch();
return;
}
float ComputeAverage(float avg_course_array[], int student_count)
{
float class_average = 0.0f;
int i;
for(i = 0; i <= student_count; i++)
class_average += avg_course_array;
class_average /= (student_count+1);
return class_average;
}
int ComputeExamDifference(int ex_1, int ex_2) // Calculates the difference between exam 1 and 2
{
int ex_diff;
ex_diff = ex_2 - ex_1;
return ex_diff;
}
float ComputeExamAverage(int ex_1, int ex_2) // Averages the exam averages
{
float exam_avg;
exam_avg = (float) (ex_1 + ex_2) / 2;
return exam_avg;
}
float ComputeCourseAverage(int ex_1, int ex_2, int class_project) // Averages the course average
{
const float weight_ex1 = .35; // Exam 1 score weighted
const float weight_ex2 = .25; // Exam 2 score weighted
const float weight_project = .40; // Class project score weighted
float course_avg;
{
course_avg = ((float)weight_ex1*ex_1) + ((float)weight_ex2*ex_2) + ((float)weight_project*class_project);
return course_avg;
}
}
char ComputeGrade(float course_avg) // Assigns a grade to the student
{
char course_grade;
{
if (course_avg >= 90)
{
course_grade = 'A';
return course_grade;
}
else if (course_avg >= 80)
{
course_grade = 'B';
return course_grade;
}
else if (course_avg >= 70)
{
course_grade = 'C';
return course_grade;
}
else if (course_avg >= 60)
{
course_grade = 'D';
return course_grade;
}
else
{
course_grade = 'F';
return course_grade;
}
}
}
// Output
void GenerateCourseReport(int id, int ex_1, int ex_2, int class_project, int ex_diff, float exam_avg, float course_avg, char course_grade) //Displays the output
{
system("cls");
printf("\n **** Course Report for Student %i ****", id);
printf("\n\nStudent scored %i on Exam 1", ex_1);
printf("\nStudent scored %i on Exam 2", ex_2);
printf("\nStudent scored %i on Class Project", class_project);
printf("\n\nStudent scored %i points differently on Exam 2 versus Exam 1", ex_diff);
printf("\n\nStudent's exam average is %3.2f", exam_avg);
printf("\n\nStudent's average for the course is %3.2f\n", course_avg);
printf("\nStudent's grade in course is %c\n", course_grade);
printf("\nPress any key to continue");
getch();
system("cls");
return;
}
void GenerateSummary(int student_count, int id_array[], char name_array[][NAME_LENGTH], float avg_course_array[], char grade_course_array[])
{
int i;
printf("\n *** ISMG 2200 Summary Course Report ***");
printf("\n Student ID Student Name Average Grade");
printf("\n ---------- ------------ ------- -----");
for (i = 1; i <= student_count; i++)
printf("\n %i %i %c %3.2f %c\n",i, id_array, name_array[NAME_LENGTH], avg_course_array, grade_course_array);
return;
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 45
#define not_found 0
#define A 0
#define B 1
#define C 2
#define D 3
#define F 4
#define NAME_LENGTH 20
// Function Prototypes
void DisplayGreeting(void);
int GetId(void);
int GetScore(void);
int ComputeExamDifference(int,int);
float ComputeExamAverage(int,int);
float ComputeCourseAverage(int,int,int);
char ComputeGrade(float);
void GenerateSummary(int,int[],char[][NAME_LENGTH],float[],char[]);
void GenerateCourseReport(int,int,int,int,int,float,float,char);
void DisplayMenu(void);
char GetMenuChoice(void);
void StudentMenu(void);
int AddStudent(int,int[],char[][NAME_LENGTH],float[],char[]);
void GetName(char[]);
int FindStudent(int[],int,int);
void ReportOnStudent(int, char[], float, char);
int FindBest(float[], int);
int FindWorst(float[], int);
void CountGrade(char[], int);
void DisplayGrade(int[]);
float ComputeAverage(float[], int);
void DisplayCourseMenu(void);
char GetCourseCode(int);
main()
{
// Data Declarations
int location;
int select;
int student_count = 0, id_student, id_array[MAX] = {0};
float avg_course_array[MAX] = {0};
char grade_course_array[MAX] = {0};
char name_array[MAX] = {0};
float class_average;
char course_grade;
float course_avg;
/*
int student_count = 0;
char choice;
char name_array[MAX][name_size] = {0};
int id_array[MAX] = {0}; // Student id
int id_student;
int location;
float avg_course_array[MAX] = {0.0};
char grade_course_array[MAX] = {0};
int score;
int ex_1; // Exam 1 score
int ex_2; // Exam 2 score
int class_project; // Class project score
int ex_diff; // Difference in score on the 2 exams
float exam_avg; // Exam averages
float course_avg; // Overall class score array
char course_grade; // Letter grade for student array
*/
DisplayGreeting();
while (1)
{
StudentMenu();
select = GetMenuChoice();
switch(toupper(select))
{
case 'A':
AddStudent(student_count, id_array, name_array, avg_course_array, grade_course_array);
break;
case 'R':
GenerateSummary(student_count, id_array, name_array, avg_course_array, grade_course_array);
break;
case 'F':
id_student = GetId();
location = FindStudent(id_array, id_student, student_count);
if(location == not_found)
{
printf("\n *** Error! Student with ID %i is not enrolled ***", id_student);
getch();
}
else
ReportOnStudent(id_student, name_array, course_avg, course_grade);
break;
case 'G':
CountGrade(grade_course_array, student_count);
break;
case 'B':
location = FindBest(avg_course_array, student_count);
printf("\nThe Student with the highest average: ");
ReportOnStudent(id_student, name_array, course_avg, course_grade);
//ReportOnStudent(id_array, name_array, avg_course_array, grade_course_array);
break;
case 'W':
location = FindWorst(avg_course_array, student_count);
printf("\nThe Student with the lowest average: ");
ReportOnStudent(id_student, name_array, course_avg, course_grade);
//ReportOnStudent(id_array, name_array, avg_course_array, grade_course_array);
break;
case 'C':
class_average = ComputeAverage(avg_course_array, student_count);
printf("\n*** ISMG 2200 Class Average is %3.2f ***", class_average);
getch();
break;
case 'Q':
return 0;
default:
printf("\n*** Error! Invalid menu choice. Please try again!");
}
}
}
// Functions
void DisplayGreeting(void) // Displays the greeting
{
system("cls");
printf("\n**************************************");
printf("\n* *");
printf("\n* Welcome to the UCD ISMG 2200 *");
printf("\n* On-line Information System *");
printf("\n* *");
printf("\n**************************************");
return;
}
void StudentMenu(void)
{
system("cls");
printf(" *** Course Option Menu ***\n");
printf("\n (A) - Add student's course information");
printf("\n (R) - Display Summary Course Report");
printf("\n (F) - Find a student, display course information");
printf("\n (G) - Display grade Distribution Report");
printf("\n (B) - Find and display information for best student");
printf("\n (W) - Find and display information on worst student");
printf("\n (C) - Compute course average");
printf("\n (Q) - Quit");
return;
}
char GetMenuChoice (void)
{
char select;
printf("\n\nPlease enter a option: ");
scanf("%c", &select);
printf("\nPress any key to continue");
getch();
system("cls");
return select;
}
int AddStudent(int student_count, int id_array[], char name_array[][NAME_LENGTH], float avg_course_array[], char grade_course_array[])
{
int id_student;
int ex_1;
int ex_2;
int class_project;
int ex_diff;
float exam_avg;
char course_grade;
float course_avg;
id_student = GetId();
id_array[++student_count] = id_student;
GetName(name_array[student_count]);
printf("\nPlease enter the score for student %i on Exam 1: ", id_student);
ex_1 = GetScore();
printf("\nPlease enter the score for student %i on Exam 2: ", id_student);
ex_2 = GetScore();
printf("\nPlease enter the score for student %i on Class Project: ", id_student);
class_project = GetScore();
printf("\nPress any key to continue");
getch();
ex_diff = ComputeExamDifference(ex_1, ex_2);
exam_avg = ComputeExamAverage(ex_1, ex_2);
course_avg = ComputeCourseAverage(ex_1, ex_2, class_project);
avg_course_array[student_count] = course_avg;
course_grade = ComputeGrade(course_avg);
grade_course_array[student_count] = course_grade;
GenerateCourseReport(id_student, ex_1, ex_2, class_project, ex_diff, exam_avg, course_avg, course_grade);
return student_count, id_array[student_count], name_array[student_count], avg_course_array[student_count], grade_course_array[student_count];
}
int GetId(void) // Gets the student id number
{
int id_student;
{
printf("\n\nPlease enter the student ID number: ");
scanf("%i", &id_student);
fflush(stdin);
if (id_student >= 0 && id_student <= 999999999)
return id_student;
else
printf("\n*** Error! Student ID of %i is out of range! ***", id_student);
GetId();
}
}
int GetScore(void) // Gets the score for the student
{
int score;
do
{
scanf("%i", &score);
if(score <=100 && score >= 0)
break;
printf("\n***Score of %i is out of range! Please try again ***\n", score);
}
while(1);
return score;
}
void GetName(char name_array[])
{
fflush(stdin);
printf("\nPlease enter the student's name: ");
gets(name_array);
return;
}
int FindStudent(int id_array[], int id_student, int student_count)
{
int i;
for(i = 0; i <= student_count; i++)
if(id_array == id_student)
return i;
return not_found;
}
void ReportOnStudent(int id_student, char name_array[], float course_avg, char course_grade)
{
printf("\nStudent's name is: %s", name_array);
printf("\nStudent's ID number is: %i", id_student);
printf("\nStudent's course average is: %3.2f", course_avg);
printf("\nStudent's current grade is: %c", course_grade);
return;
}
int FindBest(float avg_course_array[], int student_count)
{
int i;
int location;
float best = 0.0f;
for(i = 0; i <= student_count; i++)
if(avg_course_array > best)
{
location = i;
best = avg_course_array;
}
return location;
}
int FindWorst(float avg_course_array[], int student_count)
{
int i;
int location;
float worst = 101.0f;
for(i = 0; i <= student_count; i++)
if(avg_course_array < worst)
{
location = i;
worst = avg_course_array;
}
return location;
}
void CountGrade(char grade_course_array[], int student_count)
{
int i;
int grade[5] = {0};
for(i = 0; i <= student_count; i++)
{
switch(grade_course_array)
{
case 'A':
++grade[A];
break;
case 'B':
++grade;
break;
case 'C':
++grade[C];
break;
case 'D':
++grade[D];
break;
case 'F':
++grade[F];
break;
}
}
DisplayGrade(grade);
return;
}
void DisplayGrade(int grade[])
{
printf("*** ISMG 2200 Grade Distribution Report ***\n");
printf("\nNumber of A's: %d", grade[A]);
printf("\nNumber of B's: %d", grade);
printf("\nNumber of C's: %d", grade[C]);
printf("\nNumber of D's: %d", grade[D]);
printf("\nNumber of F's: %d", grade[F]);
getch();
return;
}
float ComputeAverage(float avg_course_array[], int student_count)
{
float class_average = 0.0f;
int i;
for(i = 0; i <= student_count; i++)
class_average += avg_course_array;
class_average /= (student_count+1);
return class_average;
}
int ComputeExamDifference(int ex_1, int ex_2) // Calculates the difference between exam 1 and 2
{
int ex_diff;
ex_diff = ex_2 - ex_1;
return ex_diff;
}
float ComputeExamAverage(int ex_1, int ex_2) // Averages the exam averages
{
float exam_avg;
exam_avg = (float) (ex_1 + ex_2) / 2;
return exam_avg;
}
float ComputeCourseAverage(int ex_1, int ex_2, int class_project) // Averages the course average
{
const float weight_ex1 = .35; // Exam 1 score weighted
const float weight_ex2 = .25; // Exam 2 score weighted
const float weight_project = .40; // Class project score weighted
float course_avg;
{
course_avg = ((float)weight_ex1*ex_1) + ((float)weight_ex2*ex_2) + ((float)weight_project*class_project);
return course_avg;
}
}
char ComputeGrade(float course_avg) // Assigns a grade to the student
{
char course_grade;
{
if (course_avg >= 90)
{
course_grade = 'A';
return course_grade;
}
else if (course_avg >= 80)
{
course_grade = 'B';
return course_grade;
}
else if (course_avg >= 70)
{
course_grade = 'C';
return course_grade;
}
else if (course_avg >= 60)
{
course_grade = 'D';
return course_grade;
}
else
{
course_grade = 'F';
return course_grade;
}
}
}
// Output
void GenerateCourseReport(int id, int ex_1, int ex_2, int class_project, int ex_diff, float exam_avg, float course_avg, char course_grade) //Displays the output
{
system("cls");
printf("\n **** Course Report for Student %i ****", id);
printf("\n\nStudent scored %i on Exam 1", ex_1);
printf("\nStudent scored %i on Exam 2", ex_2);
printf("\nStudent scored %i on Class Project", class_project);
printf("\n\nStudent scored %i points differently on Exam 2 versus Exam 1", ex_diff);
printf("\n\nStudent's exam average is %3.2f", exam_avg);
printf("\n\nStudent's average for the course is %3.2f\n", course_avg);
printf("\nStudent's grade in course is %c\n", course_grade);
printf("\nPress any key to continue");
getch();
system("cls");
return;
}
void GenerateSummary(int student_count, int id_array[], char name_array[][NAME_LENGTH], float avg_course_array[], char grade_course_array[])
{
int i;
printf("\n *** ISMG 2200 Summary Course Report ***");
printf("\n Student ID Student Name Average Grade");
printf("\n ---------- ------------ ------- -----");
for (i = 1; i <= student_count; i++)
printf("\n %i %i %c %3.2f %c\n",i, id_array, name_array[NAME_LENGTH], avg_course_array, grade_course_array);
return;
}