求以下问题的完整代码,要求使用c++面向对象的程序设计和构造函数的方法
运行结果:
代码
#include <iostream>
#include <iomanip>
#include <string.h>
using namespace std;
class Student
{
private:
char name[32];
float ps; //平时成绩
float qm; //期末成绩
public:
Student()
{
ps = 0;
qm = 0;
}
void setName(const char* _name)
{
strcpy_s(name, 32, _name);
}
void setScore( float _ps, float _qm)
{
ps = _ps;
qm = _qm;
}
float getTotal()
{
return (0.4 * ps + 0.6 * qm);
}
void display()
{
cout << name << " ";
cout << fixed << setprecision(2) << ps << " ";
cout << fixed << setprecision(2) << qm << " ";
cout << fixed << setprecision(2) << getTotal() << endl;
}
};
int main()
{
Student stu[102];
int n = 0;
char name[40];
float ps, qm;
while (cin >> name >> ps >> qm)
{
stu[n].setName(name);
stu[n].setScore(ps, qm);
n++;
}
//排序
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (stu[j].getTotal() < stu[j + 1].getTotal())
{
Student t = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = t;
}
}
}
//输出
for (int i = 0; i < n; i++)
stu[i].display();
return 0;
}
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
class Student {
private:
string name;
float dailyGrade;
float finalGrade;
float totalGrade;
public:
Student(string n, float d, float f) {
name = n;
dailyGrade = d;
finalGrade = f;
totalGrade = d * 0.4 + f * 0.6;
}
string getName() {
return name;
}
float getTotalGrade() {
return totalGrade;
}
void printInfo() {
cout << name << " " << fixed << setprecision(2) << dailyGrade << " " << finalGrade << " " << totalGrade << endl;
}
};
bool compare(Student s1, Student s2) {
return s1.getTotalGrade() > s2.getTotalGrade();
}
int main() {
vector<Student> students;
string name;
float dailyGrade, finalGrade;
while (cin >> name >> dailyGrade >> finalGrade) {
Student student(name, dailyGrade, finalGrade);
students.push_back(student);
}
sort(students.begin(), students.end(), compare);
for (int i = 0; i < students.size(); i++) {
students[i].printInfo();
}
return 0;
}
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
// 学生类
class Student {
public:
Student(string n, double p, double f) : name(n), dailyGrade(p), finalGrade(f) {
totalGrade = dailyGrade * 0.4 + finalGrade * 0.6;
}
string getName() const { return name; }
double getTotalGrade() const { return totalGrade; }
private:
string name; // 学生姓名
double dailyGrade; // 平时成绩
double finalGrade; // 期末成绩
double totalGrade; // 总成绩
};
// 比较函数,按照总成绩由高到低排序
bool compare(Student s1, Student s2) {
return s1.getTotalGrade() > s2.getTotalGrade();
}
int main() {
vector<Student> students; // 存储学生对象的向量
// 输入学生信息和成绩
string name;
double dailyGrade, finalGrade;
while (cin >> name >> dailyGrade >> finalGrade) {
students.emplace_back(name, dailyGrade, finalGrade);
}
// 按总成绩由高到低排序
sort(students.begin(), students.end(), compare);
// 输出学生总成绩
cout << fixed << setprecision(2); // 输出2位小数
for (const auto& s : students) {
cout << s.getName() << " " << s.dailyGrade << " " << s.finalGrade << " " << s.getTotalGrade() << endl;
}
return 0;
}