该实验报告涉及的是一个使用C++编程语言编写的学生成绩管理系统。系统主要包含了学生信息的存储、查询、删除和统计等功能。以下是该系统的主要知识点:
1. **类(Class)设计**:
- `class student`:表示学生类,包含学生的ID、性别、姓名以及五门课程的成绩。类中定义了成员函数来设置和获取这些属性。
- `class stucopy`:用于复制`student`对象,包含与`student`相同的数据成员,但添加了计算总分和平均分的方法。
2. **数据成员**:
- `char id[20]`,`char sex[10]`,`char name[10]`:分别存储学生的ID、性别和姓名,都是字符串类型。
- `double grade[5]`:存储五门课程的成绩。
- `double sumsum`和`double average`:用于计算学生的总分和平均分。
3. **成员函数**:
- `setid()`, `setsex()`, `setname()`, `setgrade()`:用于设置学生信息。
- `outid()`, `outsex()`, `outname()`, `outgrade(i)`:返回学生信息。
- `outsum()`:计算并返回学生所有课程的总分。
- `outav()`:计算并返回学生的平均分。
- `intgrade(i)`:通过switch语句输入特定课程的成绩。
4. **链表操作**:
- `list`类未在提供的代码片段中展示,但根据描述,系统可能使用链表结构存储学生信息。`student`类中的`next`指针指向下一个学生对象,实现了链表结构。
5. **文件操作**:
- `ofstream`和`ifstream`:分别用于写入和读取文件。系统可能将学生数据保存到文件中,以便于持久化存储。
- `output`和`input`:可能是文件流对象,用于写入和读取文件。
- `search()`, `search1()`: 搜索功能,根据学生ID或姓名查找学生信息。
- `deletenext()`: 删除指定的学生信息。
- `scanall()`, `think()`: 可能是系统中的其他辅助函数,如扫描所有学生数据或进行数据处理。
6. **输入/输出流**:
- `cin`和`cout`:标准输入输出流,用于从控制台获取用户输入或向控制台输出结果。
- `getline()`:读取一行文本输入,用于读取学生ID和姓名等长字符串。
7. **文件处理**:
- 使用`<fstream.h>`头文件,提供了文件I/O操作的接口。
8. **常量和数组大小**:
- `const int M = 20`:定义了最大可管理的学生数量为20。
9. **友元函数**:
- `friend class list;`:声明`list`类为`student`类的友元,允许`list`类访问`student`的私有成员。
10. **循环和条件判断**:
- 在成员函数中,可以看到使用了for循环和if条件语句,用于遍历数组和执行条件判断。
这个C++成绩管理系统利用面向对象编程的思想,实现了对学生信息的有效管理。通过输入输出、文件操作以及链表数据结构,可以方便地进行数据的增删查改。