zoukankan      html  css  js  c++  java
  • 5-7 学生cpp成绩统计

    完成“学生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 Michale 2 82.3

    10001 Bob 76.3

    10003 Anna 88.3

    #include<iostream>
    #include<string>
    #include<iomanip>
    using namespace std;
    
    class Person {
    protected:
         string name;//姓名
         int age;//年龄
    public:
         Person(){};                  
         Person (string a, int b) : name(a), age (b){};
         void display () {cout<<name<<":"<<age<<endl;}
    };
    //学生类
    class Student : public Person{
        int ID;//学号
        float cpp_score;//cpp上机成绩
        float cpp_count;//cpp上机考勤
        float cpp_grade;//cpp总评成绩
    public:
        void operator = (Student &a){
        name = a.name;
        age = a.age;
        ID = a.ID;
        cpp_score = a.cpp_score;
        cpp_count = a.cpp_count;
        cpp_grade = a.cpp_grade;
                                                                                        //cout<<name<<ID<<cpp_grade<<"hello ";
        }
        float getGrade(){return cpp_grade;}
        Student():Person(){};
        void display(){cout<<ID<<" "<<name<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<cpp_grade<<endl;}
        Student(string a, int b , int c ,float d ,float e) : 
        Person(a,b), ID(c) , cpp_score(d) , cpp_count(e) {cpp_grade = cpp_score * 0.9 + cpp_count * 2;}
    };
    //教师类
    class Teacher : public Person{
        int ID;//教师工号
        Student stu[100];
        int count;
        float cpp_average;
    public:
        Teacher(string a, int b, int c) : Person(a,b), ID(c){};
        void setCount(int a){count= a;}
        void Add (Student & stu1){
            stu[count-1] = stu1;
        };
        void average(){
            float ans=0;
            for(int i=0;i<count;i++)
            {
                ans += stu[i].getGrade();
            }
            cpp_average = ans/count;
        };
        void print(){
            cout<<ID<<" "
                <<name<<" "
                <<count<<" "
                <<setiosflags(ios::fixed)<<setprecision(1)
                <<cpp_average<<endl;
            for(int i=0;i<count;i++)
            {
                stu[i].display();
            }
        };
    };
    int main()
    {
        
        string name;
        int age, num,count;
        float score;
        //教师
        cin>>name>>num>>age;
        Teacher ok(name , age, num);
        int sum=0;
        //学生
        cin>>name;
        while(name[0]!='0')
        {
            sum++;
            cin>> num>> age>> score >> count; 
            Student hello(name, age, num, score, count);
            ok.setCount(sum);
            ok.Add( hello );
            cin>>name;
        }
        ok.average();
        ok.print();
    
        return 0;
    }
    个人分享,欢迎指导,未经允许,请勿转载。谢谢!
  • 相关阅读:
    Android 代码规范大全
    python爬虫学习系列
    python接口测试(requests+excel)
    Jenkins系列
    postman系列
    利用Faker生成常用的测试数据
    python基础在实际写脚本过程中的一些简单运用(一)
    charles实践-通过断点调试修改request
    关于fiddler抓包的一些配置
    c#winform主题实现的一个方法
  • 原文地址:https://www.cnblogs.com/hello-OK/p/7020297.html
Copyright © 2011-2022 走看看