根据提供的文件信息,我们可以分析并总结出以下与“C++ 成绩管理系统”相关的知识点: ### 一、程序结构概述 该程序主要分为四个类:`Score`、`Student`、`Management` 和五个用于比较学生分数的函数 `TotalCmp`、`AverCmp`、`MathCmp`、`EnglishCmp`、`ComputerInfoCmp`。 #### 1. 类 `Score` - **功能**:存储学生的单科成绩以及总分和平均分。 - **成员变量**: - `double English`: 英语成绩。 - `double Math`: 数学成绩。 - `double ComputerInfo`: 计算机信息成绩。 - `double AverScore`: 平均分。 - `double Total`: 总分。 - **成员函数**: - 构造函数 `Score(double Math, double English, double ComputerInfo)`:接收三门课程的成绩,并计算平均分和总分。 - 析构函数 `~Score()`:默认析构函数。 - `double GetEnglish()`, `double GetMath()`, `double GetComputerInfo()`, `double GetAver()`, `double GetTotal()`:分别获取各科成绩及总分、平均分。 #### 2. 类 `Student` - **功能**:继承自 `Score` 类,增加学生 ID 和姓名的存储。 - **成员变量**: - `string id`: 学生ID。 - `string name`: 学生姓名。 - **成员函数**: - 构造函数 `Student(double English, double Math, double ComputerInfo, string id, string name)`:接收学生信息并调用基类构造函数初始化成绩。 - 析构函数 `~Student()`:默认析构函数。 - `string GetId()`, `string GetName()`:获取学生 ID 和姓名。 #### 3. 类 `Management` - **功能**:管理学生的数据,包括读取、写入和排序等操作。 - **成员变量**: - `list<Student> l`: 用于存储学生列表。 - `fstream TotalFile`, `AverFile`, `MathFile`, `EnglishFile`, `ComputerInfoFile`, `UpdateFile`:文件流对象,用于处理不同类型的文件。 - **成员函数**: - 构造函数 `Management()`:读取外部文件 `StuInfo.txt` 并将数据存储到列表 `l` 中。 - 析构函数 `~Management()`:默认析构函数。 - `void GetFromKeyBoard(Student stu)`: 向列表 `l` 中添加一个学生对象。 - `void ListToFile()`: 将列表中的数据写入到文件中。 ### 二、排序函数介绍 程序中提供了五种不同的排序方式,分别按照总分、平均分、数学成绩、英语成绩和计算机信息成绩进行排序。 - `bool TotalCmp(Student a, Student b)`: 按照总分从高到低排序。 - `bool AverCmp(Student a, Student b)`: 按照平均分从高到低排序。 - `bool MathCmp(Student a, Student b)`: 按照数学成绩从高到低排序。 - `bool EnglishCmp(Student a, Student b)`: 按照英语成绩从高到低排序。 - `bool ComputerInfoCmp(Student a, Student b)`: 按照计算机信息成绩从高到低排序。 ### 三、文件处理 在 `Management` 类的构造函数中,程序通过 `ifstream file("StuInfo.txt")` 读取文件 `StuInfo.txt` 的内容。如果文件打开成功,则循环读取每一行数据,并创建 `Student` 对象,将其添加到列表 `l` 中。 此外,程序还提供了 `fstream` 文件流对象用于处理其他不同类型的数据文件,如 `TotalFile`, `AverFile`, `MathFile`, `EnglishFile`, `ComputerInfoFile`, `UpdateFile`。 ### 四、总结 该 C++ 程序实现了一个简单的学生成绩管理系统,包括了基本的数据结构设计(如类的设计)、文件读写操作以及排序等功能。通过对上述知识点的分析,可以了解到如何使用 C++ 进行简单的面向对象编程,以及如何利用标准库中的文件流对象来处理文件输入输出等问题。这些知识点对于初学者来说非常实用,能够帮助他们更好地理解和掌握 C++ 编程语言的基础知识。












#include<algorithm>
#include<fstream>
#include<list>
#include<cstdlib>
#include<cmath>
using namespace std;
class Score{
private:
double English;
double Math;
double ComputerInfo;
double AverScore;
double Total;
public:
Score(double Math,double English,double ComputerInfo)
{
this->English=English;
this->Math=Math;
this->ComputerInfo=ComputerInfo;
this->AverScore=ceil((English+Math+ComputerInfo)/3);/*****/
this->Total=English+Math+ComputerInfo;
}
Score(){}
~Score(){}
double GetEnglish(){return this->English;}
double GetMath(){return this->Math;}
double GetComputerInfo(){return this->ComputerInfo;}
double GetAver(){return this->AverScore;}
double GetTotal(){return this->Total;}
class Student:public Score{
private:
string id;
string name;
public:
Student(double English,double Math,double ComputerInfo,string id,string name):
Score(English,Math,ComputerInfo)
{
this->id=id;
this->name=name;
}
Student();
~Student()
{
}
string GetId(){return this->id;}
string GetName(){return this->name;}
};
bool TotalCmp(Student a,Student b)
{
return a.GetTotal()>b.GetTotal();
}
bool AverCmp(Student a,Student b)
{
return a.GetAver()>b.GetAver();
}
bool MathCmp(Student a,Student b)
{
return a.GetMath()>b.GetMath();
剩余10页未读,继续阅读


- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 改善交流伺服系统脉冲接口抗干扰能力(00001).doc
- 单片机和USB接口技术高速数据采集系统设计方案.doc
- GeekDesk-C#资源
- 大数据下互联网广告精准投放策略探讨.docx
- 浅议中职院校计算机课程实施翻转课堂的保障条件.docx
- 大数据产业新高地成就贵安精彩.docx
- gis中属性数据的输入和管理.ppt
- 数字图像处理降噪滤波大作业.doc
- 大数据、信息化时代电子档案管理的安全问题研究.docx
- watermark-js-plus-JavaScript资源
- (源码)基于Hyperf框架和Vue的微信服务系统.zip
- 电力信息化管理中存在的问题及对策解析.docx
- 网络环境下企业会计信息披露研究.docx
- 人工智能从前沿概念走进青少年实际生活.docx
- 计算机多媒体技术的应用现状及其发展前景分析.docx
- 农业电子商务平台建设现状附存在问题.doc


