资源简介
(1)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。
(2)对文件input.dat中的数据进行处理,要求具有如下功能:
1) 按各门课程成绩排序,并生成相应的文件输出。
2) 计算每人的平均成绩,按平均成绩排序,并生成文件。
3) 求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数。
4) 根据姓名或学号查询某人的各门课成绩,重名情况也能处理。
(3)界面美观。
代码片段和文件信息
/*10.2.5 成绩分析问题
[问题描述]
录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。
[基本要求]
(1)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。
(2)对文件input.dat中的数据进行处理,要求具有如下功能:
1) 按各门课程成绩排序,并生成相应的文件输出。
2) 计算每人的平均成绩,按平均成绩排序,并生成文件。
3) 求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数。
4) 根据姓名或学号查询某人的各门课成绩,重名情况也能处理。
(3)界面美观。*/
/*........................................................................................*/
#include
#include
#include
struct STUDENT
{
char no[7];
char name[9];
int math;
int eng;
int com;
struct STUDENT *next;
};
typedef struct STUDENT linklist;
linklist *head=NULL;
void initlinklist() //单链表的初始化,生成一个空的单链表
{
head=(linklist *)malloc(sizeof(linklist)); //生成头结点
head->next=NULL;
}
linklist *findn(linklist *headchar *no) //查找指定学号的学生,返回该结点的地址
{
linklist *p;
p=head->next;
while(p)
{
if(strcmp(p->nono)==0)
return p;
p=p->next;
}
return NULL;
}
linklist *findm(linklist *headchar *name) //查找指定姓名的学生,返回该结点的地址
{
linklist *p;
p=head->next;
while(p)
{
if(strcmp(p->namename)==0)
return p;
p=p->next;
}
return NULL;
}
linklist *finds(linklist *headint score) //查找指定数学成绩的学生,返回该结点的地址
{
linklist *p;
p=head->next;
while(p)
{
if(p->math==score) //比较是否相等相等就确定找到
return p;
p=p->next;
}
return NULL;
}
linklist *finde(linklist *headint score) //查找指定英语成绩的学生,返回该结点的地址
{
linklist *p;
p=head->next;
while(p)
{
if(p->eng==score) //比较是否相等相等就确定找到
return p;
p=p->next;
}
return NULL;
}
linklist *findc(linklist *headint score) //查找指定计算机成绩的学生,返回该结点的地址
{
linklist *p;
p=head->next;
while(p)
{
if(p->com==score) //比较是否相等相等就确定找到
return p;
p=p->next;
}
return NULL;
}
void creat()
{
//录入学生信息
struct STUDENT *p;
while(1)
{
p=(struct STUDENT *)malloc(sizeof(struct STUDENT));
printf(“学号:“);
fflush(stdin);
gets(p->no);
printf(“姓名:“);
fflush(stdin);
gets(p->name);
printf(“数学成绩:“);
fflush(stdin);
scanf(“%d“&(p->math));
printf(“英语成绩:“);
fflush(stdin);
scanf(“%d“&(p->eng));
printf(“计算机成绩:“);
fflush(stdin);
scanf(“%d“&(p->com));
p->next=head->next;
head->next=p;
printf(“是否要继续录入?(y/n)“);
fflush(stdin);
if(getchar()==‘n‘)break;
}
}
void prnt(linklist *p) //输出单条记录
{
printf(“\n---------------------------------------------------\n“);
printf(“ 学号:%s“p->no);
printf(“\t姓名:%s“p->name);
printf(“\t数学:%d“p->math);
printf(“\t英语:%d“p->eng);
printf(“\t计算机:%d“p->com);
printf(“\n---------------------------------------------------\n“);
}
void search() //查找指定学号的学生
{
char no[7];
char name[9];
linklist *p=NULL;
printf(“学号查询请输入1,姓名查询输入0: “);
fflush(stdin);
if(getchar()==‘1‘)
{
printf(“按学号查询:\n“);
printf(“请输入要查询的学号:“);
fflush(stdin);
gets(no);
if(p=findn(headno))
{
prnt(p); //传递指针位置
}
else printf(“对不起,没有找到满足条件记录!\n“);
}
else
{
printf(“按姓
- 上一篇:编译原理实验——词法分析器C语言编的
- 下一篇:PL0语法分析器(递归子程序法)
相关资源
- 格雷码图片生成与保存C++实现代码
- MFC画图板,可以画一些基本图形,如
- C++ VC++编写通讯录文件保存附报告
- 数字图像处理 MFC bmp格式图片打开与保
- MFC 打开图片 放大缩小 保存
- DIB图像的打开与保存显示
- MFC+Opencv 摄像头保存为图像和视频
- vc++调用usb摄像头,进行拍照,保存为
- MFC画图板绘图并保存图片导出
- 用openCV实现图像灰度化并保存,MFC实
- C++生成二维码并保存成BMP图片
- MFC读取二进制文件并保存为文本文件
- 记事本自动保存 小程序 vc++ 时间间
- 用C++语言编写一个班级信息管理系统
- MFC解决窗口保存及重绘闪烁问题的一
- MFC解决窗口保存及重绘闪烁问题的一
- C++用Opencv将图片转化为灰度图并保存
- 图书管理系统用C++编写的图书管理系
- opencv 保存录像
- MFC 绘制半透明文字并保存为背景透明
- 在PictureControl控件上绘图并保存
- c++学生信息管理系统源码(数据保存
- C++ 对数据库进行录入图片
- Opencv:基于MFC 对话框 摄像头采集视频
- C++ MP4v2获取rtsp流并保存为MP4文件
- Qt结合OpenCV和VC++实现调用摄像头拍照
- c++ mfc 单词及其释义的录入和读取,查
- 五子棋小游戏选择棋盘、棋子;双方
- DS18B20温控系统液晶+正负温度+数据保
- Kinect2.0采集图像帧并保存
评论
共有 条评论