c++课程设计,学生成绩查询系统
根据提供的文件信息,我们可以总结出以下相关知识点: ### 1. C++基本语法与结构 #### 1.1 文件包含(Include Directives) 在代码开头,我们看到了几个`#include`指令,它们分别包含了标准输入输出流、字符串处理、格式化输出、控制台输入输出、以及文件流操作等功能。这些头文件对于程序的功能实现至关重要。 ```cpp #include<iostream.h> // 标准输入输出流 #include<string.h> // 字符串处理 #include<iomanip.h> // 格式化输出 #include<conio.h> // 控制台输入输出 #include<fstream.h> // 文件流操作 ``` #### 1.2 结构体(Structures) 该程序定义了一个名为`student`的结构体类型,用于存储学生的姓名、学号及三门科目的成绩等信息。 ```cpp struct student { char name[20]; // 姓名 int num; // 学号 int Cj1; // 成绩1 int Cj2; // 成绩2 int Cj3; // 成绩3 int SUM; // 总分 int AVG; // 平均分 }; ``` #### 1.3 类定义(Class Definition) 程序中定义了一个名为`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. 函数定义与实现 #### 2.1 添加学生记录(Add Record) `sr`函数用于添加学生记录到数组中。 ```cpp 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; // 设置成绩1 stu[s].Cj2 = yy; // 设置成绩2 stu[s].Cj3 = jsj; // 设置成绩3 } ``` #### 2.2 打印学生记录(Print Record) `print`函数用于打印指定索引的学生记录。 ```cpp 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"; // 打印成绩1 cout << stu[i].Cj2 << "\t"; // 打印成绩2 cout << stu[i].Cj3 << "\t"; // 打印成绩3 cout << endl; // 换行 } ``` #### 2.3 查询学生记录(Check Record) `jc`函数用于检查指定学号的学生是否存在于记录中。 ```cpp int student1::jc(int xxh) { int m = 0; while (m <= s + 1) if (xxh == stu[m++].num) break; if (m > s + 1) return 0; else return 1; } ``` #### 2.4 查找学生记录(Search Record) `cz`函数用于查找并显示指定学号的学生记录。 ```cpp void student1::cz(int s) { int xxh, p; // ...(省略部分代码) if (xxh == stu[s].num) { cout << "学号\t\t姓名\tC++\t原理" << endl; cout << stu[s].num << "\t"; cout << stu[s].name << "\t"; cout << stu[s].Cj1 << "\t\t"; cout << stu[s].Cj2 << "\t"; cout << stu[s].Cj3 << endl; } // ...(省略部分代码) } ``` #### 2.5 删除学生记录(Delete Record) `sc`函数用于删除指定学号的学生记录。 ```cpp void student1::sc(int n) { int xxh, p; char da; // ...(省略部分代码) if (stu[i].num == xxh) { cout << "学号\t\t姓名\tC++\t原理" << endl; cout << stu[i].name << "\t"; cout << stu[i].num << "\t"; cout << stu[i].Cj1 << "\t\t"; cout << stu[i].Cj2 << "\t"; cout << stu[i].Cj3 << endl; cout << "确认要删除此学生记录吗?(y/n)"; cin >> da; if (da == 'y' || da == 'Y') { for (int j = i; j <= n - 1; j++) { stu[j].num = stu[j + 1].num; strcpy(stu[j].name, stu[j + 1].name); stu[j].Cj1 = stu[j + 1].Cj1; stu[j].Cj2 = stu[j + 1].Cj2; stu[j].Cj3 = stu[j + 1].Cj3; } cout << "记录已删除!" << endl; s = s - 1; p = 1; break; } // ...(省略部分代码) } } ``` ### 3. 输入输出操作 程序使用了`cin`和`cout`进行输入输出操作,例如读取用户的输入并显示结果。 ```cpp cout << "请输入学号:"; cin >> xxh; ``` ### 4. 错误处理与用户交互 程序还考虑了一些错误处理机制,比如验证用户输入的学号是否合法,并提供了友好的用户提示信息。 ```cpp while (xxh < 1 || xxh > 999999) { // 验证学号是否有效 cout << "学号不正确!" << endl; cin >> xxh; } ``` 以上就是从给定的文件信息中提取的主要知识点。这个学生成绩查询系统的实现覆盖了C++编程的基础知识,包括结构体、类和对象、函数定义与调用、输入输出操作等,非常适合初学者学习和理解。
#include<iostream.h>
#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)
break;
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页未读,继续阅读
- wwezhaif2011-11-14运行之后没理解要查找文件的意思?是课表吗
- nishixinag2012-12-19看不懂啥意思
- duanter2019-07-25不太明白呢的
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Ruby - Ruby 开发 - 常用知识点
- ingress.yaml
- LabVIEW练习44,计算学生三门课(语文,数学,英语)的平均分,并根据平均分划分成绩等级
- densenet模型-基于深度学习对时尚配饰识别-不含数据集图片-含逐行注释和说明文档.zip
- 【C语音期末/课程设计】银行客户管理系统(DevC项目)
- densenet模型-基于深度学习识别电子产品-不含数据集图片-含逐行注释和说明文档.zip
- shufflenet模型-基于卷积神经网络识别地理特征-不含数据集图片-含逐行注释和说明文档.zip
- 西北工业大学编译原理试点班大作业-实现一个能够正常工作的Sysy语法编译器+源代码+文档说明+实验报告
- shufflenet模型-图像分类算法对农作物种类识别-不含数据集图片-含逐行注释和说明文档.zip
- alexnet模型-基于深度学习对交通工具识别-不含数据集图片-含逐行注释和说明文档.zip