C++实现STL学生绩点统计程序

需积分: 10 0 下载量 103 浏览量 更新于2024-09-17 收藏 5KB TXT 举报
"STL_学生学分绩点统计" 这个程序是使用C++标准模板库(STL)来实现的一个学生学分绩点统计系统。它具有添加学生信息、按绩点排序、统计平均绩点以及删除学生信息的功能。通过结构体`student`存储每个学生的姓名、各科成绩和相应的绩点,然后利用`vector`容器存储所有学生的信息。同时,程序还定义了两个比较函数`myCompHigh`和`myCompLow`用于按照绩点降序或升序排列学生。 1. **结构体`student`**:结构体`student`包含了以下字段: - `string s`:存储学生的姓名。 - `double score[15]`:存储学生的15门课程成绩。 - `double jd[15]`:计算出的对应15门课程的绩点。 - `double pjd`:学生的平均绩点(总绩点/总学分)。 2. **比较函数**: - `bool myCompHigh(const student &s1, const student &s2)`:这个函数用于按照绩点降序排列学生,如果`s1`的平均绩点大于`s2`,则返回`true`,表示`s1`应该排在`s2`前面。 - `bool myCompLow(const student &s1, const student &s2)`:这个函数用于按照绩点升序排列学生,与`myCompHigh`相反,如果`s1`的平均绩点小于`s2`,则返回`true`。 3. **主函数`main`**: - 首先,程序获取学生人数`n`和课程数量`m`,以及每门课程的学分数`xf[]`。 - 接着,循环输入`n`个学生的信息,包括姓名和`m`门课程的成绩。对于每门课程,根据成绩计算绩点(绩点=成绩/10-5),并累加学分乘以对应的绩点得到总绩点`sum`。 - 最后,计算总学分`zxf`,并根据总绩点和总学分计算平均绩点`pjd`。 4. **STL的使用**: - `vector<student> vxs`:创建一个`student`类型的动态数组,用于存储所有学生的信息。 - 在输入完所有学生信息后,可以使用`sort`函数结合`myCompHigh`或`myCompLow`对`vxs`中的学生进行排序,例如:`sort(vxs.begin(), vxs.end(), myCompHigh);` 5. **统计和输出**: - 统计过程中,可以添加功能来输出每个学生的具体信息,或者根据需求输出平均绩点最高的前N名学生等。 这个程序展示了STL在处理数据结构和算法上的灵活性,通过结构体、向量和自定义比较函数,可以方便地实现复杂的数据管理和操作。对于学习C++编程,尤其是STL的使用,这是一个很好的实践案例。