【c++基础】076学生信息类

简介:学生信息类

问题描述

实现一个学生成绩信息类info,包括的特征信息有:

  1. 学号Id
  2. 姓名Name
  3. 程序设计课程成绩Programming
  4. 计算机网络课程成绩Network
  5. 数据库课程成绩Database
  6. 总分Total等内容

要求能够输入5名学生的信息并显示

问题分析【一】

  1. 如何定义学生信息类Info?
    • 成员变量
      • Id,Name,Programming,Network,Database,Total
    • 成员函数
      • 取程序设计课程成绩函数Get_Pro
      • 取计算机网络课程成绩函数Get_Net
      • 取数据库课程成绩函数Get_Dat
      • 取总分成绩函数Get_Tol
  2. 如何存储5名学生的信息?
    • 创建类对象数组
  3. 如何接收键盘输入的学生信息和输出信息显示?
    • 对类对象数组赋值
    • 设置信息函数Set_info、显示信息函数Show

Info类设计

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

#include <cstring>
using namespace std;
class
{
int Id;
char Name[20];
int Programming;
int Network;
int Database;
int Total;

public:
void Set_Info(int id, char *name, int programming, int network, int database);
int Get_Pro();
int Get_Net();
int Get_Dat();
int Get_Tol();
void Show();
};

void Info::Set_Info(int id, char *name, int programming, int network, int database)
{
Id = id;
strcpy(Name, name);
Programming = programming;
Network = network;
Database = database;
Total = programming + network + database;
}
void Info::Show()
{
cout << Id << "t";
cout << Name << "t";
cout << Programming << "t";
cout << Network << "t";
cout << Database << "t";
cout << Total << "t";
cout << endl;
}
int Info::Get_Pro()
{
return Programming;
}
int Info::Get_Net()
{
return Network;
}
int Info::Get_Dat()
{
return Database;
}
int Info::Get_Tol()
{
return Total;
}
int main()
{
const int COUNT = 5;
int i = 0, j = 0;
int id;
char name[20];
int programming, network, database;
Info student[COUNT], tmp;
cout << "请输入学生成绩的信息:" << endl;
cout << "学号 姓名 程序设计 计算机网络 数据库" << endl;
for (int i = 0; i < COUNT; i++)
{
cin >> id >> name >> programming >> network >> database;
student[i].Set_Info(id, name, programming, network, database);
}
cout << "学号 姓名 程序设计 计算机网络 数据库 总分" << endl;
for (int i = 0; i < COUNT; i++)
{
student[i].Show();
}
return 0;
}

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
请输入学生成绩的信息:
学号 姓名 程序设计 计算机网络 数据库
1 张三 10 20 30
2 李四 11 21 31
3 王五 12 22 32
4 刘六 13 23 33
5 吴七 14 24 34
学号 姓名 程序设计 计算机网络 数据库 总分
1 张三 10 20 30 60
2 李四 11 21 31 63
3 王五 12 22 32 66
4 刘六 13 23 33 69
5 吴七 14 24 34 72

问题描述【二】

要求能够输入若干名学生的信息并显示课程总分从高到低的排名和每门课程成绩都大于85分的学生名单。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109

#include <cstring>
using namespace std;
class
{
int Id;
char Name[20];
int Programming;
int Network;
int Database;
int Total;

public:
void Set_Info(int id, char *name, int programming, int network, int database);
int Get_Pro();
int Get_Net();
int Get_Dat();
int Get_Tol();
void Show();
};

void Info::Set_Info(int id, char *name, int programming, int network, int database)
{
Id = id;
strcpy(Name, name);
Programming = programming;
Network = network;
Database = database;
Total = programming + network + database;
}
void Info::Show()
{
cout << Id << "t";
cout << Name << "t";
cout << Programming << "t";
cout << Network << "t";
cout << Database << "t";
cout << Total << "t";
cout << endl;
}
int Info::Get_Pro()
{
return Programming;
}
int Info::Get_Net()
{
return Network;
}
int Info::Get_Dat()
{
return Database;
}
int Info::Get_Tol()
{
return Total;
}
int main()
{
int count;
int i = 0, j = 0;
int id;
char name[20];
int programming, network, database;
Info student[100], tmp;
cout << "请输入学生人数:";
cin >> count;
while (count > 100)
{
cout << "学生人数不能超过100人,请重新输入:";
cin >> count;
}
cout << "请输入学生成绩的信息:" << endl;
cout << "学号 姓名 程序设计 计算机网络 数据库" << endl;
for (int i = 0; i < count; i++)
{
cin >> id >> name >> programming >> network >> database;
student[i].Set_Info(id, name, programming, network, database);
}

for (int i = 0; i < count; i++)
{
for (j = count - 1; j > i; j--)
{
if (student[j].Get_Tol() > student[j - 1].Get_Tol())
{
tmp = student[j];
student[j] = student[j - 1];
student[j - 1] = tmp;
}
}
}
cout << endl;
cout << "以下为总分从低到高排序:" << endl;
cout << "学号 姓名 程序设计 计算机网络 数据库 总分" << endl;
for (int i = 0; i < count; i++)
{
student[i].Show();
}
cout << endl;
cout << "以下为每门课大于85分的学生名单:" << endl;
cout << "学号 姓名 程序设计 计算机网络 数据库 总分" << endl;
for (int i = 0; i < count; i++)
{
if (student[i].Get_Dat() > 85 && student[i].Get_Pro() > 85 && student[i].Get_Net() > 85)
student[i].Show();
}

return 0;
}

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
请输入学生人数:5
请输入学生成绩的信息:
学号 姓名 程序设计 计算机网络 数据库
1 张三 100 90 87
2 李四 88 89 54
3 王五 86 85 42
4 刘六 88 65 52
5 吴七 45 12 99

以下为总分从低到高排序:
学号 姓名 程序设计 计算机网络 数据库 总分
1 张三 100 90 87 277
2 李四 88 89 54 231
3 王五 86 85 42 213
4 刘六 88 65 52 205
5 吴七 45 12 99 156

以下为每门课大于85分的学生名单:
学号 姓名 程序设计 计算机网络 数据库 总分
1 张三 100 90 87 277