7-16 學生CPP成績計算 (30分)
給出下面 下麪的人員基礎類別框架:
class Person {
protected:
string name;
int age;
public:
Person();
Person (string p_name, int p_age);
void display () {cout<<name<<「:」<<age<<endl;}
};
建立一個派生類student,增加以下成員數據:
int ID;//學號
float cpp_score;//cpp上機成績
float cpp_count;//cpp上機考勤
float cpp_grade;//cpp總評成績
//總評成績計算規則:cpp_grade = cpp_score * 0.9 + cpp_count * 2;
增加以下成員函數:
student類的無參建構函式
student類的參數化建構函式//注意cpp_grade爲上機成績和考勤的計算結果
void print()//輸出當前student的資訊
//其中cpp_grade輸出保留一位小數
//輸出格式爲ID name cpp_grade
生成上述類並編寫主函數,根據輸入的學生基本資訊,建立一個學生物件,計算其cpp總評成績,並輸出其學號、姓名、總評成績。
測試輸入包含若幹測試用例,每個測試用例佔一行(學生姓名 學號 年齡 cpp成績 cpp考勤)。當讀入0時輸入結束,相應的結果不要輸出。
Bob 10001 18 75.5 4
Mike 10005 17 95.0 5
0
10001 Bob 75.9
10005 Mike 95.5
#include <bits/stdc++.h>
using namespace std;
ostream &sp(ostream &output);
class Person
{
protected:
string name;
int age;
public:
Person(){}
~Person(){}
Person(string p_name, int p_age):name(p_name),age(p_age){}
void display() { cout << name << ":" << age << endl; }
};
class Student : public Person
{
private:
int ID; //學號
float cpp_score; //cpp上機成績
float cpp_count; //cpp上機考勤
float cpp_grade = 0; //cpp總評成績
//總評成績計算規則:cpp_grade = cpp_score * 0.9 + cpp_count * 2;
public:
Student() {}
~Student() {}
Student(string p1, int p2, int a, float b, float c) : Person(p1, p2),ID(a),cpp_score(b),cpp_count(c){}
void print();
float count();
};
float Student::count()
{
return cpp_score * 0.9 + cpp_count * 2;
}
void Student::print()
{
cpp_score = count();
cout <<fixed<<setprecision(1)<< ID << sp << name << sp << cpp_score << endl;
}
int main()
{
int id, age;
string name;
float cpp_score = 0, cpp_count = 0, cpp_grade = 0;
Student ans;
while (1)
{
cin >> name;
if (name == "0")
break;
cin >> id >> age >> cpp_score >> cpp_count;
ans = Student(name,age,id,cpp_score,cpp_count);
ans.print();
}
return 0;
}
ostream &sp(ostream &output)
{
return output << " ";
}