定义一个描述学生的类student,数据成员包括学号,姓名,性别,家庭住址,联系电话,邮箱,五门课的成绩,成员函数包括对上述数据成员进行获取和设置,计算平均成绩,输出一个学生的全部信息,给出相应的析构函数和构造函数,在主函数中定义一个学生类对象,然后对所有成员函数进行测试
时间: 2023-12-15 14:05:01 浏览: 84
以下是实现上述要求的 C++ 代码:
```cpp
#include <iostream>
#include <string>
class Student {
private:
std::string id_; // 学号
std::string name_; // 姓名
std::string gender_; // 性别
std::string address_; // 家庭住址
std::string phone_; // 联系电话
std::string email_; // 邮箱
double scores_[5]; // 五门课的成绩
public:
// 构造函数
Student(const std::string& id, const std::string& name, const std::string& gender,
const std::string& address, const std::string& phone, const std::string& email,
const double scores[5]) {
id_ = id;
name_ = name;
gender_ = gender;
address_ = address;
phone_ = phone;
email_ = email;
for (int i = 0; i < 5; ++i) {
scores_[i] = scores[i];
}
}
// 获取学号
std::string getId() const {
return id_;
}
// 设置学号
void setId(const std::string& id) {
id_ = id;
}
// 获取姓名
std::string getName() const {
return name_;
}
// 设置姓名
void setName(const std::string& name) {
name_ = name;
}
// 获取性别
std::string getGender() const {
return gender_;
}
// 设置性别
void setGender(const std::string& gender) {
gender_ = gender;
}
// 获取家庭住址
std::string getAddress() const {
return address_;
}
// 设置家庭住址
void setAddress(const std::string& address) {
address_ = address;
}
// 获取联系电话
std::string getPhone() const {
return phone_;
}
// 设置联系电话
void setPhone(const std::string& phone) {
phone_ = phone;
}
// 获取邮箱
std::string getEmail() const {
return email_;
}
// 设置邮箱
void setEmail(const std::string& email) {
email_ = email;
}
// 获取五门课的成绩
double* getScores() {
return scores_;
}
// 设置五门课的成绩
void setScores(const double scores[5]) {
for (int i = 0; i < 5; ++i) {
scores_[i] = scores[i];
}
}
// 计算平均成绩
double getAverageScore() const {
double sum = 0;
for (int i = 0; i < 5; ++i) {
sum += scores_[i];
}
return sum / 5;
}
// 输出一个学生的全部信息
void print() const {
std::cout << "学号:" << id_ << std::endl;
std::cout << "姓名:" << name_ << std::endl;
std::cout << "性别:" << gender_ << std::endl;
std::cout << "家庭住址:" << address_ << std::endl;
std::cout << "联系电话:" << phone_ << std::endl;
std::cout << "邮箱:" << email_ << std::endl;
std::cout << "五门课成绩:";
for (int i = 0; i < 5; ++i) {
std::cout << scores_[i] << " ";
}
std::cout << std::endl;
std::cout << "平均成绩:" << getAverageScore() << std::endl;
}
// 析构函数
~Student() {
std::cout << "对象已销毁" << std::endl;
}
};
int main() {
double scores[5] = {80, 90, 85, 88, 92};
Student stu("20210001", "张三", "男", "北京市朝阳区", "13800000000", "zhangsan@abc.com", scores);
stu.print();
// 测试各个成员函数
std::cout << "学号:" << stu.getId() << std::endl;
stu.setId("20210002");
std::cout << "学号修改后:" << stu.getId() << std::endl;
std::cout << "姓名:" << stu.getName() << std::endl;
stu.setName("李四");
std::cout << "姓名修改后:" << stu.getName() << std::endl;
std::cout << "性别:" << stu.getGender() << std::endl;
stu.setGender("女");
std::cout << "性别修改后:" << stu.getGender() << std::endl;
std::cout << "家庭住址:" << stu.getAddress() << std::endl;
stu.setAddress("北京市海淀区");
std::cout << "家庭住址修改后:" << stu.getAddress() << std::endl;
std::cout << "联系电话:" << stu.getPhone() << std::endl;
stu.setPhone("13811111111");
std::cout << "联系电话修改后:" << stu.getPhone() << std::endl;
std::cout << "邮箱:" << stu.getEmail() << std::endl;
stu.setEmail("lisi@abc.com");
std::cout << "邮箱修改后:" << stu.getEmail() << std::endl;
double* pScores = stu.getScores();
std::cout << "五门课成绩:";
for (int i = 0; i < 5; ++i) {
std::cout << pScores[i] << " ";
}
std::cout << std::endl;
double newScores[5] = {85, 90, 88, 92, 95};
stu.setScores(newScores);
std::cout << "五门课成绩修改后:";
for (int i = 0; i < 5; ++i) {
std::cout << pScores[i] << " ";
}
std::cout << std::endl;
std::cout << "平均成绩:" << stu.getAverageScore() << std::endl;
return 0;
}
```
上述代码中,我们定义了一个 `Student` 类,并在其中包含了学生的各项信息和相关操作。构造函数接收学生的各个数据成员,并初始化类的数据成员。各个成员函数分别用于获取和设置学生的数据成员,计算平均成绩以及输出一个学生的全部信息。析构函数用于在对象销毁时输出一条消息。
在主函数中,我们首先创建了一个 `Student` 类对象 `stu`,并调用其 `print` 函数输出学生的全部信息。接着,我们对各个成员函数进行测试,验证它们的正确性。
阅读全文