低配版
202130310129
main.cpp
#include"Score.h"
#include "string.h"
int main()
{
//学生数目的设置和对象数组的开辟
int n = 2;
Score* p = new Score[n]; //开辟对象数组的动态内存
int i;
for (i = 0; i < n; i++) p[i].Input_message(); //数据的输入
for (i = 0; i < n; i++) p[i].Show_message(); //数据的输出
p[0].Show_stu_AvgScore(); //学生平均成绩输出
p[0].Show_course_AvgScore(p, n); //课程平均成绩输出
p[0].Show_course_sort(p, n); //课程成绩排名
//使用对象数组后,每个对象都为学生
//缺:任意一个学生对象可以使用排序和求平均值
delete[]p; //清除内存
return 0; //程序结束
}
score.h
#pragma once
class Score {
private:
float score_A;
float score_B;
float score_C;
char name[10];
char course;
int number;
public:
void Input_message();
void Show_message();
void Show_stu_AvgScore();
void Show_course_AvgScore(Score* p, int n);
void sort_A(Score* p, int n);
void sort_B(Score* p, int n);
void sort_C(Score* p, int n);
void Show_course_sort(Score* p, int n);
};
score.cpp
#include"Score.h"
#include<iostream>
using std::cin; //使用输入
using std::cout; //使用输出
using std::endl; //使用换行
void Score::Input_message()
{
cout << "请输入学生姓名:" << endl;
cin >> name;
cout << "请输入科目A成绩:" << endl;
cin >> score_A;
cout << "请输入科目B成绩:" << endl;
cin >> score_B;
cout << "请输入科目C成绩:" << endl;
cin >> score_C;
}
void Score::Show_message()
{
cout << "姓名:" << name << " " << "科目A成绩:" << score_A << " "
<< "科目B成绩:" << score_B << " " << "科目C成绩:" << score_C << endl;
}
void Score::Show_stu_AvgScore()
{
cout << "姓名:" << name << " " << "平均成绩:" << (score_A + score_B + score_C) / 3 << endl;
}
void Score::sort_A(Score* p, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
float temp_A = p[i].score_A;
float temp_B = p[i].score_B;
float temp_C = p[i].score_C;
char temp_name[10];
strcpy_s(temp_name, p[i].name);
if (p[i].score_A < p[j].score_A)
{
p[i].score_A = p[j].score_A;
p[i].score_B = p[j].score_B;
p[i].score_C = p[j].score_C;
strcpy_s(p[i].name, p[j].name);
p[j].score_A = temp_A;
p[j].score_B = temp_B;
p[j].score_C = temp_C;
strcpy_s(p[j].name, temp_name);
}
}
}
}
void Score::sort_B(Score* p, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
float temp_A = p[i].score_A;
float temp_B = p[i].score_B;
float temp_C = p[i].score_C;
char temp_name[10];
strcpy_s(temp_name, p[i].name);
if (p[i].score_B < p[j].score_B)
{
p[i].score_A = p[j].score_A;
p[i].score_B = p[j].score_B;
p[i].score_C = p[j].score_C;
strcpy_s(p[i].name, p[j].name);
p[j].score_A = temp_A;
p[j].score_B = temp_B;
p[j].score_C = temp_C;
strcpy_s(p[j].name, temp_name);
}
}
}
}
void Score::sort_C(Score* p, int n)
{
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
float temp_A = p[i].score_A;
float temp_B = p[i].score_B;
float temp_C = p[i].score_C;
char temp_name[10];
strcpy_s(temp_name, p[i].name);
if (p[i].score_C < p[j].score_C)
{
p[i].score_A = p[j].score_A;
p[i].score_B = p[j].score_B;
p[i].score_C = p[j].score_C;
strcpy_s(p[i].name, p[j].name);
p[j].score_A = temp_A;
p[j].score_B = temp_B;
p[j].score_C = temp_C;
strcpy_s
(p[j].name, temp_name);
}
}
}
}
void Score::Show_course_sort(Score* p, int n)
{
cout << "课程名称:";
cin >> course;
switch (course)
{
case 65:
sort_A(p, n);
for (int i = 0; i < n; i++)cout << "姓名:" << p[i].name << " " << "成绩:" << p[i].score_A << endl;
break;
case 66:
sort_B(p, n);
for (int i = 0; i < n; i++)cout << "姓名:" << p[i].name << " " << "成绩:" << p[i].score_B << endl;
break;
case 67:
sort_C(p, n);
for (int i = 0; i < n; i++)cout << "姓名:" << p[i].name << " " << "成绩:" << p[i].score_C << endl;
break;
default:
return;
}
}
void Score::Show_course_AvgScore(Score* p, int n)
{
cout << "课程名称:";
cin >> course;
float sum = 0;
switch (course)
{
case 65:
for (int i = 0; i < n; i++)sum += p[i].score_A;
break;
case 66:
for (int i = 0; i < n; i++)sum += p[i].score_B;
break;
case 67:
for (int i = 0; i < n; i++)sum += p[i].score_C;
break;
default:
return;
}
cout << "平均成绩:" << sum / n << endl;
}