根据提供的文件信息,我们可以总结出以下相关知识点: ### 1. C++ 结构体与类的理解 #### 结构体(`struct`) - **定义**:结构体是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起。在本例中,`struct student` 定义了一个包含学生姓名、学号及三门课程成绩的数据结构。 ```cpp struct student{ char name[20]; // 学生姓名 int num; // 学号 int Cj1, Cj2, Cj3; // 成绩1, 成绩2, 成绩3 int SUM, AVG; // 总分, 平均分 }; ``` #### 类(`class`) - **定义**:类是面向对象编程中的基本概念之一,它是对一组具有相同属性和行为的对象的抽象描述。在这个例子中,`class student1` 定义了一个学生类,其中包含了学生的数据成员以及多个成员函数。 ```cpp class student1{ private: char name; int num; int Cj1, Cj2, Cj3, SUM, AVG; public: student stu[40]; void sr(int, char*, int, int, int); // 添加学生信息 void print(int); // 打印学生信息 int jc(int xxh); // 检查学号是否存在 void cz(int); // 查找学生信息 void sc(int); // 删除学生信息 void sum(int); // 计算总分和平均分 }; ``` ### 2. 文件操作与 I/O 控制 #### 文件操作 - **包含头文件**:通过包含 `<fstream.h>` 头文件,可以实现文件的读写操作。但是,在标准 C++ 中,通常推荐使用 `<fstream>`。 - **示例代码**:虽然提供的代码片段中没有实际的文件操作,但可以理解为该程序可能涉及文件的读写。 #### 输入输出控制 - **包含头文件**:通过包含 `<iostream.h>` 和 `<conio.h>` 头文件,可以进行标准输入输出和键盘输入检测。 - **示例代码**: ```cpp #include<iostream.h> #include<conio.h> // 使用 cout 进行输出,cin 进行输入 // 使用 getch() 等待用户按键 ``` ### 3. 函数的实现与调用 #### 成员函数实现 - **添加学生信息**:`sr(int xh, char* xm, int gs, int yy, int jsj)` 函数用于添加学生的基本信息。 - **打印学生信息**:`print(int i)` 函数用于打印指定学生的详细信息。 - **查找学生信息**:`cz(int s)` 函数用于查找并显示指定学号的学生信息。 - **删除学生信息**:`sc(int n)` 函数用于删除指定学号的学生信息。 #### 非成员函数实现 - **检查学号是否存在**:`int jc(int xxh)` 函数用于检查给定的学号是否存在于系统中。 ### 4. 错误处理与异常检测 - **学号验证**:程序中多次检查了学号的有效性,确保其在一个合理的范围内(1 到 999999),以避免无效或非法的学号输入。 ```cpp while(xxh<1||xxh>999999){ cout<<"学号不正确!"<<endl; cin>>xxh; } ``` ### 5. 数据处理与管理 - **数据存储**:通过结构体数组 `student stu[40]` 存储最多 40 名学生的数据。 - **数据更新**:通过成员函数更新学生的成绩等信息。 - **数据统计**:计算学生的总分和平均分等功能未在提供的代码片段中体现,但可以假设在完整程序中有实现。 这个“学生成绩管理系统”源代码示例主要涵盖了 C++ 的基础语法、面向对象编程的概念(如类和对象)、文件操作、输入输出控制、错误处理等方面的知识点。对于初学者来说,这是一个很好的实践项目,可以帮助他们更好地理解和应用所学知识。
#include<string.h>
#include<iomanip.h>
#include<conio.h>
#include<fstream.h>
struct student //定义一个学生结构体,便于排序
{
char name[20];
int num;
int Cj1,Cj2,Cj3,SUM,AVG;
};
int s=0;
class student1 //定义一个学生类,实现各种功能
{
private:
char name;
int num;
int Cj1,Cj2,Cj3,SUM,AVG;
public:
student stu[40];
void sr(int,char *,int,int,int);
void print(int);
int jc(int xxh) //判断学号是否重复函数
{
int m=0;
while(m<=s+1)
if(xxh==stu[m++].num)
if(m>s+1)
return 0;
else
return 1;
}
void cz(int);
void sc(int);
void sum(int);
};
void student1::sr(int xh,char *xm,int gs,int yy,int jsj) //输入数据
{
stu[s].num=xh;
strcpy(stu[s].name,xm);
stu[s].Cj1=gs;
stu[s].Cj2=yy;
stu[s].Cj3=jsj;
}
void student1::print(int i) //输出数据
{
cout<<i<<"\t";
cout<<stu[i].num<<"\t";
cout<<stu[i].name<<"\t\t";
cout<<stu[i].Cj1<<"\t\t";
cout<<stu[i].Cj2<<"\t";
cout<<stu[i].Cj3<<"\t";
cout<<endl;
}
剩余10页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助