学生成绩管理系统.docx
- 文档编号:23840588
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:22
- 大小:17.91KB
学生成绩管理系统.docx
《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#defineN100//最大学生数量
#defineLENsizeof(structstudent)
FILE*fp;
intn=0;//学生数量
structstudent
{
intnum;
charname[20];
intx_num;
intclass_num;
floatscore1;
floatscore2;
floatscore3;
floattotal;
floataverage;
}stu[N];//学生信息结构体
/*1.学生信息存入文件*/
voidcreat()
{
inti,j;
structstudentt;
printf("输入学生的数量。
(不超过%d)\n",N);
scanf("%d",&n);
if(n>N)exit(0);
printf("依次输入学生信息:
学号姓名学院代号班级号高数成绩英语成绩C语言成绩\n");
for(i=0;i { scanf("%d%s%d%d%f%f%f",&stu[i].num,stu[i].name,&stu[i].x_num,&stu[i].class_num,&stu[i].score1,&stu[i].score2,&stu[i].score3); stu[i].total=stu[i].score1+stu[i].score2+stu[i].score3; stu[i].average=stu[i].total/3; } for(j=0;j for(i=1;i { if(stu[i].num>stu[i+1].num) { t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } } if((fp=fopen("student_number.txt","wb"))==NULL)//保存学生数量n { printf("can'topenfile! \n"); exit(0); } fwrite(&n,sizeof(int),1,fp); if((fp=fopen("student.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i fwrite(&stu[i],LEN,1,fp); fclose(fp); } //2.增加一个学生信息 voidadd() { inti,j; charch; structstudentt; if((fp=fopen("student_number.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fread(&n,sizeof(n),1,fp); if((fp=fopen("student.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i fread(&stu[i],LEN,1,fp); printf("依次输入学生信息: 学号姓名学院代号班级号高数成绩英语成绩C语言成绩\n"); scanf("%d%s%d%d%f%f%f",&t.num,t.name,&t.x_num,&t.class_num,&t.score1,&t.score2,&t.score3); t.total=t.score1+t.score2+t.score3; t.average=t.total/3; if(t.num>stu[n-1].num) { n=n+1; stu[n-1]=t; } else for(i=0;i { printf("aw\n"); if(t.num { n=n+1; for(j=n-2;j>i-1;j--) stu[j+1]=stu[j]; stu[i]=t; break; } } if((fp=fopen("student_number.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fwrite(&n,sizeof(n),1,fp); if((fp=fopen("student.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i fwrite(&stu[i],LEN,1,fp); fclose(fp); begin: printf("@是否继续“添加”操作(y/n)? \n"); fflush(stdin); ch=getchar(); if(ch=='y'||ch=='Y')add(); elseif(ch=='n'||ch=='N'); else { printf("输入有误! \n"); gotobegin; } }// //3.删除学生信息 voiddel() { inti,numb,mark=0; charch; printf("输入要删除学生的学号: \n"); scanf("%d",&numb); if((fp=fopen("student_number.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fread(&n,sizeof(n),1,fp); if((fp=fopen("student.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i { fread(&stu[i],LEN,1,fp); if(stu[i].num==numb) { i--; n--; mark=1; } } if(mark==0)printf("没有该生信息\n"); if((fp=fopen("student_number.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fwrite(&n,sizeof(n),1,fp); if((fp=fopen("student.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i fwrite(&stu[i],LEN,1,fp); fclose(fp); begin: printf("@是否继续“删除”操作(y/n)? \n"); fflush(stdin); ch=getchar(); if(ch=='y'||ch=='Y')del(); elseif(ch=='n'||ch=='N'); else { printf("输入有误! \n"); gotobegin; } }// //4.修改学生信息 voidchange() { inti,numb,mark=0; floatscore1,score2,score3,totall,average; charch; printf("输入要修改学生的学号高数成绩英语成绩C语言成绩: \n"); scanf("%d%f%f%f",&numb,&score1,&score2,&score3); if((fp=fopen("student_number.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fread(&n,sizeof(n),1,fp); if((fp=fopen("student.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i { fread(&stu[i],LEN,1,fp); if(stu[i].num==numb) { totall=score1+score2+score3; average=totall/3; stu[i].score1=score1; stu[i].score2=score2; stu[i].score3=score3; stu[i].total=totall; stu[i].average=average; mark=1; } } if(mark==0)printf("没有该生信息\n"); if((fp=fopen("student_number.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fwrite(&n,sizeof(n),1,fp); if((fp=fopen("student.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i fwrite(&stu[i],LEN,1,fp); fclose(fp); begin: printf("@是否继续“修改”操作(y/n)? \n"); fflush(stdin); ch=getchar(); if(ch=='y'||ch=='Y')del(); elseif(ch=='n'||ch=='N'); else { printf("输入有误! \n"); gotobegin; } }// /*5.查询操作*/ // (1)按学号查询,输入一个学号,输出对应的学生信息。 voidnum_search() { inti,num,mark=0; printf("输入学号: \n"); scanf("%d",&num); for(i=0;i if(stu[i].num==num) { printf("学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0)printf("没有找到相关信息。 \n"); } // (2)按全名查询。 voidname_search() { inti,mark=0; charname[20]; printf("输入姓名: \n"); scanf("%s",name); for(i=0;i if(strcmp(stu[i].name,name)==0) { printf("学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0)printf("没有找到相关信息。 \n"); } //(3)按姓氏查询。 voidfirstname_search() { inti,mark=0; charname[20]; printf("输入姓氏: \n"); scanf("%s",name); for(i=0;i if(stu[i].name[0]==name[0]&&stu[i].name[1]==name[1]) { printf("学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0)printf("没有找到相关信息。 \n"); } //(4)按学院查询,输入学院名称,输出该学院的全部学生的信息。 voidx_search() { inti,x_num,mark=0; printf("输入学院代号: \n"); scanf("%d",&x_num); for(i=0;i if(stu[i].x_num==x_num) { printf("学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0)printf("没有找到相关信息。 \n"); } //(5)按班级查询,输入班级名称,输出该班级的全部学生的信息。 voidclassnum_search() { inti,class_num,mark=0; printf("输入学院代号: \n"); scanf("%d",&class_num); for(i=0;i if(stu[i].class_num==class_num) { printf("学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); mark=1; } if(mark==0)printf("没有找到相关信息。 \n"); } //查询模块 voidsearch() { charch; inti; if((fp=fopen("student_number.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fread(&n,sizeof(n),1,fp); if((fp=fopen("student.txt","rb"))==NULL) { printf("can'topenfile! \n"); exit(0); } for(i=0;i fread(&stu[i],LEN,1,fp); fclose(fp); printf("选择要进行查询的关键字代号: 1、学号查询。 2、按全名查询。 3、按姓氏查询。 4、学院查询。 5、班级查询。 \n"); fflush(stdin);//清空缓冲区 ch=getchar(); switch(ch) { case'1': num_search();break; case'2': name_search();break; case'3': firstname_search();break; case'4': x_search();break; case'5': classnum_search();break; default: printf("输入代号有误。 \n"); } begin: printf("@是否继续“查询”操作(y/n)? \n"); fflush(stdin); ch=getchar(); if(ch=='y'||ch=='Y')search(); elseif(ch=='n'||ch=='N'); else { printf("输入有误! \n"); gotobegin; } } /*6.统计*/ // (1)按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。 voidtotall_score() { inti,j; structstudentt; for(j=0;j for(i=0;i if(stu[i].total { t=stu[i]; stu[i]=stu[i+1]; stu[i+1]=t; } if((fp=fopen("student_number.txt","wb"))==NULL) { printf("can'topenfile! \n"); exit(0); } fwrite(&n,sizeof(n),1,fp); if((fp=fopen("student_totalscore.txt","wb"))==NULL)//按总分排序并保存至新的文件夹中。 { printf("can'topenfile! \n"); exit(0); } for(i=0;i { printf("学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average); fwrite(&stu[i],LEN,1,fp); } fclose(fp); } // (2)按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。 voideach_score() { inte,d,c,b,a,i; a=b=c=d=e=0; for(i=0;i { if(stu[i].average<60)e++; elseif(stu[i].average<70)d++; elseif(stu[i].average<80)c++; elseif(stu[i].average<90)b++; elsea++; } printf("不及格人数为%d\n60-69人数为%d\n70-79人数为%d\n80-89人数为%d\n90-100人数为%d\n",e,d,c,b,a); } //(3)分别找出3门课程成绩最高的学生,并输出他们的信息。 voidhigh_stu() { intmax1,max2,max3,i; max1=max2=max3=0; for(i=0;i { if(stu[max1].score1 if(stu[max2].score2 if(stu[max3].score3 } printf("高数最高成绩学生信息: \n学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[max1].num,stu[max1].name,stu[max1].x_num,stu[max1].class_num,stu[max1].score1,stu[max1].score2,stu[max1].score3,stu[max1].total,stu[max1].average); printf("英语最高成绩学生信息: \n学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2f英语成绩: %0.2fc语言成绩: %0.2f总分: %0.2f平均分: %0.2f\n",stu[max2].num,stu[max2].name,stu[max2].x_num,stu[max2].class_num,stu[max2].score1,stu[max2].score2,stu[max2].score3,stu[max2].total,stu[max2].average); printf("c语言最高成绩学生信息: \n学号: %d姓名: %s学院代号: %d班级号: %d高数成绩: %0.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统