您的位置:首页 > 编程语言 > C语言/C++

学生cpp成绩统计 【基类派生类练习】

2015-06-13 23:24 363 查看
完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数。

仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据:

int ID;//教师工号

Student stu [ 100 ];//学生数组

int count;//学生数目,最多不超过100

float cpp_average;//班级cpp平均分

增加以下成员函数:

Teacher类的参数化构造函数

void Add (Student & stu1)//在学生数组中增加一个学生记录

void average();//计算当前班级cpp平均成绩cpp_average

void print()//输出当前班级学生的信息

//其中学生记录中cpp_score和cpp_grade输出保留一位小数

//当前班级cpp_average输出保留一位小数;

//输出格式如下:

//第一行:教师工号 教师姓名 班级学生数 cpp_average

//第二行至第count+1行每一行输出一个学生的信息,每一行格式

// 学生学号 学生姓名 cpp_grade

//cpp_grade保留一位小数

生成上述类并编写主函数,根据输入的教师基本信息,建立一个教师对象,根据输入的每一条学生基本信息,建立一个学生对象,计算学生cpp总评成绩并且加入学生数组中,由教师对象计算班级cpp平均成绩,并输出班级学生的全部信息。

输入格式: 测试输入包含一个测试用例,该测试用例的第一行输入教师的基本信息(教师姓名 教师工号 年龄),第二行开始输入班级内学生信息,每个学生基本信息占一行(学生姓名 学号 年龄 cpp成绩 cpp考勤),最多不超过100行,当读入0时输入结束。

输入样例:

Mike 901 30

Bob 10001 18 75.9 4

Anna 10003 19 87.0 5

0

输出样例:

901 Mike 2 82.3

10001 Bob 76.3

10003 Anna 88.3

***************************************************************************************************************************************************************************************

#include<iostream>

#include<iomanip>

using namespace std;

class Person

{

   protected:

        string name;

        int age;

   public:

        Person()

        {

            ;

        }

        Person(string p_name)

        {

            age=0;

            name=p_name;

        }

        Person (string p_name, int p_age)

        {

            name=p_name;

            age=p_age;

        }

};

class Student:protected Person

{

    int ID;

    float cpp_count;

    

    public:

        float cpp_score;

        float cpp_grade;

    Student(string p_name,int id,int p_age,float score,float count):Person(p_name)

    {

        ID=id;

        cpp_score=score;

        cpp_count=count;

        cpp_grade=cpp_score * 0.9 + cpp_count * 2;

    }

    Student():Person()

    {

        ID=0;

        cpp_score=0;

        cpp_count=0;

        cpp_grade=cpp_score * 0.9 + cpp_count * 2;

    }

    void output()

    {

        cout<<ID<<" "<<name<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<cpp_grade<<endl;

    }

};

class Teacher:protected Person

{

    int ID;

    Student s[100];

    int count;

    float average;

    float sum;

    public:

        Teacher(string p_name,int id,int p_age):Person(p_name,p_age)

        {

            ID=id;

            count=0;

            name=p_name;

            sum=0;

        }

        void add(Student s1)

        {

            s[count]=s1;

            count++;

            sum+=s1.cpp_grade;

        }

        void calculate()

        {

            average=sum/count;

        }

        void output()

        {

            int i;

            cout<<ID<<" "<<name<<" "<<count<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<average<<endl;

            for(i=0;i<count;i++)

            {

                s[i].output();

            }

        }

};

int main()

{

    string name;

    int age,id;

    float score,count;

    cin>>name>>id>>age;

    Teacher teacher(name,id,age);

    cin>>name;

    for(;name[0]!='0';)

    {

        cin>>id>>age>>score>>count;

        Student student(name,id,age,score,count);

        teacher.add(student);

        cin>>name;

    }

    teacher.calculate();

    teacher.output();

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息