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;
    }
    个人分享,欢迎指导,未经允许,请勿转载。谢谢!
  • 相关阅读:
    自定义组件要加@click方法
    绑定样式
    647. Palindromic Substrings
    215. Kth Largest Element in an Array
    448. Find All Numbers Disappeared in an Array
    287. Find the Duplicate Number
    283. Move Zeroes
    234. Palindrome Linked List
    202. Happy Number
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/hello-OK/p/7020297.html
Copyright © 2011-2022 走看看