一、要求

设计一个学生类,学生的基本信息有学号、姓名、年龄、性别和班级职务(班长、学习委员、团支书和学生)等,通过增加构造函数,使对象在定义时能够对其数据成员进行初始化。其中,性别的默认值为“男”,班级职务默认为“学生”。具体要求如下:

  1. 设计构造函数,完成对对象数据成员的初始化。其中,数据成员初始化采用成员初始化列表

  2. 设计一个加分函数,针对学生的班级职务进行加分。如果是普通学生不加分,班长加5分,学习委员加3分,团支书加2分

  3. 设计输出函数,输出的基本信息,以及该生应该加的分数。

二、分析

数据成员使用成员初始化列表,所以使用构造函数,在构造函数中利用this指针对每一个参数赋值。addscore()函数利用if判断对学生的班级职务加分,之后调用show()函数输出学生信息

三、代码

💻提示:所有实验源码已在github整理

#include <iostream>
using namespace std;
#include <string>
class Student
{
public:
Student();
Student(string stu_id,string stu_name,int stu_age,string stu_sex,string stu_job)
{
this->stu_id = stu_id;
this->stu_name = stu_name;
this->stu_age = stu_age;
this->stu_sex = stu_sex;
this->stu_job = stu_job;
}
void addscore();//职务加分
void show();//输出函数
private:
string stu_id;
string stu_name;
int stu_age;
string stu_sex="男";
string stu_job="学生";
int stu_score=0;
};
void Student::addscore()
{
string job = stu_job;
if (job == "学生")
this->stu_score += 0;
else if (job == "班长")
this->stu_score += 5;
else if (job == "学习委员")
this->stu_score += 3;
else if (job == "团支书")
this->stu_score += 2;
}

void Student::show()
{
cout << "学号\t" << stu_id << "\t姓名 " << stu_name << "\t年龄 " << stu_age << "\t性别 " << stu_sex << "\t职务 " << stu_job << "\t分数 " << stu_score << endl;
}

int main()
{
Student s1( "192062116","张帆", 22, "男", "班长");
Student s2("192062117", "张凡", 21, "女", "学生");

s1.addscore();
s1.show();

s2.addscore();
s2.show();

system("pause");
return 0;
}

四、 结果

C++实验02

通过利用构造函数的重载,实现利用初始化列表对数据成员赋值