学生参加考试,有N个学生,每个学生参加3门课程考试。要求定义学生类student,数据有学号num,姓名name,三门课程socre[3]:数学,英语,计算机;静态成员count表示学生人数。要求工程文件实现,工程名称为:自己姓名。 (1) 输入学生学号,姓名,学生成绩。(setdate 函数实现) (2) 设计构造函数和析购函数。每构造一个对象,实现个数加1,每删除一个对象,个数减1。 (3) 求每个学生的总分。(成员函数stu_sum实现) (4) 设计一个友元函数,输出学生每门课程成绩对应的等级。(友元函数kc_dj()) 90~100:优秀;80~90:良好;70~79:中等;60~69:及格;小于60:不及格。 (5) 输出学生信息,每门课程成绩,相应等级,学生总分。(print函数实现) (6) 编写主函数验证,输入学生个数,学生相应数据,输出信息。对象数组实现。 提交类的定义头文件、类的实现源程序、主程序、代码截图和运行界面。
时间: 2024-02-15 11:03:17 浏览: 75
抱歉,我无法提交代码截图和运行界面,但我可以提供类的定义头文件、类的实现源程序和主程序。
**学生类的定义头文件**
```cpp
#ifndef STUDENT_H
#define STUDENT_H
class Student {
public:
Student(); // 构造函数
Student(const char* num, const char* name, const int score[]); // 带参数的构造函数
~Student(); // 析构函数
void setdata(const char* num, const char* name, const int score[]); // 输入学生学号、姓名、成绩
int stu_sum() const; // 求学生总分
friend void kc_dj(const Student& stu); // 友元函数,输出学生每门课程成绩对应的等级
void print() const; // 输出学生信息、每门课程成绩、相应等级、学生总分
static int count; // 静态成员,表示学生人数
private:
char num[20]; // 学号
char name[20]; // 姓名
int score[3]; // 三门课程成绩:数学,英语,计算机
};
#endif
```
**学生类的实现源程序**
```cpp
#include <iostream>
#include "student.h"
using namespace std;
int Student::count = 0; // 初始化静态成员
// 构造函数
Student::Student() {
count++;
}
// 带参数的构造函数
Student::Student(const char* num, const char* name, const int score[]) {
setdata(num, name, score);
count++;
}
// 析构函数
Student::~Student() {
count--;
}
// 输入学生学号、姓名、成绩
void Student::setdata(const char* num, const char* name, const int score[]) {
strcpy_s(this->num, num);
strcpy_s(this->name, name);
for (int i = 0; i < 3; i++) {
this->score[i] = score[i];
}
}
// 求学生总分
int Student::stu_sum() const {
int sum = 0;
for (int i = 0; i < 3; i++) {
sum += score[i];
}
return sum;
}
// 友元函数,输出学生每门课程成绩对应的等级
void kc_dj(const Student& stu) {
for (int i = 0; i < 3; i++) {
int score = stu.score[i];
char dj;
if (score >= 90) {
dj = 'A';
} else if (score >= 80) {
dj = 'B';
} else if (score >= 70) {
dj = 'C';
} else if (score >= 60) {
dj = 'D';
} else {
dj = 'E';
}
cout << "科目" << i+1 << "的成绩是" << score << ",对应等级是" << dj << endl;
}
}
// 输出学生信息、每门课程成绩、相应等级、学生总分
void Student::print() const {
cout << "学号:" << num << endl;
cout << "姓名:" << name << endl;
kc_dj(*this);
cout << "总分:" << stu_sum() << endl;
}
```
**主程序**
```cpp
#include <iostream>
#include "student.h"
using namespace std;
int main() {
int n;
cout << "请输入学生个数:";
cin >> n;
Student* students = new Student[n];
for (int i = 0; i < n; i++) {
char num[20], name[20];
int score[3];
cout << "请输入学号、姓名、数学成绩、英语成绩、计算机成绩(用空格隔开):";
cin >> num >> name >> score[0] >> score[1] >> score[2];
students[i].setdata(num, name, score);
}
for (int i = 0; i < n; i++) {
students[i].print();
cout << endl;
}
delete[] students;
cout << "学生个数:" << Student::count << endl;
return 0;
}
```
阅读全文