//_7_6_main.cpp
#include "GradeBook.h"
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
const int gradesArraySize = 10;
int gradesArray[gradesArraySize];
//随机产生学生成绩
srand((unsigned)time(NULL));
for(int i=0;i<gradesArraySize;i++)
{
gradesArray[i] = rand()%101 ;
}
GradeBook myGradeBook("C++",gradesArray);
myGradeBook.displayMessage();
myGradeBook.processGrades();
system("pause >> cout");
return 0;
}
//GradeBook.h
#include <string>
using namespace std;
class GradeBook
{
public:
//要设置成静态的const常量,,,
static const int students = 10;//参加考试的学生
GradeBook(string,const int[]);
void setCourseName(string);
string getCourseName();
void displayMessage();//打印一条欢迎信息!
void processGrades();//综合下面函数的功能,,,,
int getMaximum();//得到学生成绩中的最大值
int getMinimum();//得到学生成绩中的最小值
double getAverage();//计算该门课程学生成绩的平均值
void outputBarChart();//输出学生成绩的柱状图
void outputGrades();//输出学生的成绩
private:
string courseName;//专业名称
int grades[students];//学生成绩的数组
};
//GradeBook.cpp
#include "GradeBook.h"
#include <iostream>
#include <iomanip>
using namespace std;
GradeBook::GradeBook(string name,const int a[])
{
setCourseName(name);
for(int i=0;i<students;i++)//将调用的数组信息复制到类的对象的数组中
grades[i] = a[i] ;
}
void GradeBook::setCourseName(string name)
{
courseName = name;
}
string GradeBook::getCourseName()
{
return courseName;
}
void GradeBook::displayMessage()//打印一条欢迎信息!
{
cout << "Welcome to the grade book for\n"
<< getCourseName() << " !" << endl;
}
void GradeBook::processGrades()//综合下面函数的功能,,,,
{
outputGrades();//先输出学生成绩:
cout << "Class average is " << setprecision(2) << fixed <<getAverage() << endl;
cout << "Lowest grade is " << getMinimum() << endl;
cout << "Highest grade is " << getMaximum() << endl;
outputBarChart();
}
int GradeBook::getMaximum()//得到学生成绩中的最大值
{
int max = 0;
for(int k=0;k<students;k++)
{
if(max<grades[k])
max = grades[k];
}
return max;
}
int GradeBook::getMinimum()//得到学生成绩中的最小值
{
int min = 100;
for(int k=0;k<students;k++)
{
if(min>grades[k])
min = grades[k];
}
return min;
}
double GradeBook::getAverage()//计算该门课程学生成绩的平均值
{
int sum = 0;
for(int k=0;k<students;k++)
sum+=grades[k];
return (static_cast<double>(sum))/students ;
}
void GradeBook::outputBarChart()//输出学生成绩的柱状图
{
cout << "\nGrades distribution:" << endl;//学生的成绩分布
const int frequencySize = 11;
int frequency[frequencySize] = {0};
for(int i=0;i<students;i++)
frequency[grades[i]/10] ++ ;
for(int count=0;count<frequencySize;count++)
{
if(count == 0)
cout << " 0-9:" ;
else if(count == 10)
cout << " 100:" ;
else
cout << count*10 << "-" << count*10 + 9 << ":" ;
for(int star=0;star<frequency[count];star++)
cout << "*" ;
cout << endl;
}
}
void GradeBook::outputGrades()//输出学生的成绩
{
cout << "\nThe grades are :" << endl;
for(int student=0;student<students;student++)
cout << "Student" << setw(2) << (student+1)
<< " : " << setw(4) << grades[student]
<< endl;
cout << endl;
}
程序运行结果:

本文介绍了一个使用C++实现的简单学生成绩管理系统。该系统可以随机生成学生成绩,并进行成绩的最大值、最小值及平均值计算,同时还能展示成绩分布的柱状图。代码包括了主函数、GradeBook类的定义与实现。
3001

被折叠的 条评论
为什么被折叠?



