C语言专业课程设计学生成绩标准管理系统完整版_第1页
C语言专业课程设计学生成绩标准管理系统完整版_第2页
C语言专业课程设计学生成绩标准管理系统完整版_第3页
C语言专业课程设计学生成绩标准管理系统完整版_第4页
C语言专业课程设计学生成绩标准管理系统完整版_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include<stdio.h>#include<stdlib.h>#include<io.h>#include<string.h>/*strcmp函数原型包含*/ #defineN100/*定义最大学生人数为100*/structstudent/*学生结构体定义*/{charno[11];/*学号,10位*/charname[10];/*姓名,3个汉字*/chargrade[10];/*班级*/charpro[20];/*专业*/floatscore[5];/*储存5门功课成绩*/floatave;/*储存平均分*/intyear;/*入年*/}stu[N];intnum;voidpanduani(int);/*经过i值,判定信息要查找信息是否存在*/voidoutput();/*输出学生成绩函数(公共函数)*/voidinit();/*系统初始化函数*/voidnewfile();/*建立新数据文件*/voidread1();/*从数据文件中读取数据*/voidweihu();/*维护界面函数*/voidnew1();/*新增一个学生成绩函数*/voidxiugai();/*修改学生成绩*/voidxgcj(int);/*修改成绩*/voiddelete1();/*删除学生信息函数*/voidtongji();/*统计界面函数*/voidtongji1();/*计算每个学生平均分*/voidtongji2();/*计算每门课程平均分*/voidpaixu1();/*排序函数*/voidpaino();/*按学号排序*/voidpaiave();/*按平均分排序*/voidpaidkcj();/*按单科成绩排序*/voidchange(int,int);/*交换结构体数组中两个统计*/voidoutputx(int);/*选择输出单科成绩*/voidfind1();/*查找界面函数*/intfind(charsno[]);/*按学号查找*/intfindname(charcname[]);/*按姓名查找*/voidfindyear(intcyear);/*按入年查找*/voidsave();/*保留文件*/voidstop();/*停顿函数*/voidstop()/*停顿函数(公共函数)*/{printf("PressAnyKeyToContinue...\n");getchar();}voidoutput()/*输出学生成绩函数(公共函数)*/{inti,j;printf("===================================================================\n");printf("学号姓名班级专业入年C语言高数大物电路模电\n");printf("===================================================================\n");for(i=0;i<num;i++){printf("%s%s%s%s%d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year);for(j=0;j<5;j++)printf("%.1f",stu[i].score[j]);printf("\n");}stop();}voidinit()/*系统初始化函数*/{if(access("stu.dat",0))/*判定文件是否存在*/newfile();/*若不存在,新建数据文件*/elseread1();/*若存在,读取数据*/}voidnewfile()/*建立新数据文件*/{inti;FILE*fp;if((fp=fopen("stu.dat","wb"))==NULL)/*创建二进制文件*/{printf("创建文件失败,请重新运行程序.\n");/*显示"创建文件失败,请重新运行程序"*/exit(0);/*终止程序*/}printf("首次运行,进行数据初始化...\n");/*显示"首次运行,进行数据初始化..."*/stop();printf("请输入学生人数:");/*显示"请输入学生人数:"*/scanf("%d",&num);for(i=0;i<num;i++){printf("请输入第%d个学生学号:",i+1);/*显示"请输入第i+1个学生学号:"*/getchar();/*吃回车*/gets(stu[i].no);printf("姓名:");/*显示"姓名:"*/gets(stu[i].name);printf("班级:");/*显示"班级:"*/gets(stu[i].grade);printf("专业:");/*显示"专业:"*/gets(stu[i].pro);printf("入年n:");/*显示"入年"*/scanf("%d",&stu[i].year);printf("C语言成绩:");/*显示"C语言成绩"*/scanf("%f",&stu[i].score[0]);printf("高数成绩:");/*显示"高数成绩"*/scanf("%f",&stu[i].score[1]);printf("大物成绩:");/*显示"大物成绩"*/scanf("%f",&stu[i].score[2]);printf("电路成绩:");/*显示"电路成绩"*/scanf("%f",&stu[i].score[3]);printf("模电成绩:");/*显示"模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(structstudent),fp);/*把第i+1名学生成绩写入文件*/}fclose(fp);printf("========================\n");printf("刚才输入%d个数据为:\n",num);/*显示"刚才输入num个数据为:"*/printf("========================\n\n");output();}voidread1()/*从数据文件中读取数据*/{FILE*fp;num=0;/*num为数据文件中实际存放学生人数*/fp=fopen("stu.dat","r");if(fp==NULL)/*数据文件不存在*/{printf("文件打开失败!重新运行程序\n");/*显示"文件打开失败!重新运行程序"*/exit(0);}while(!feof(fp))/*文件结束检测"*/{fread(&stu[num],1,sizeof(structstudent),fp);num++;}num--;fclose(fp);printf("\t\t\t=======================================\n");printf("\t\t\t现有%d个学生成绩:\n",num);/*显示"现有NUM个学生成绩:"*/printf("\t\t\t=======================================\n\n");output();}voidweihu()/*维护界面函数*/{charc1;while(1){printf("\n\n\n\t\t\t************************\n");printf("\t\t\t*维护*\n");printf("\t\t\t*1.新增*\n");/*新增*/printf("\t\t\t*2.删除*\n");/*删除(按学号)*/printf("\t\t\t*3.修改*\n");/*修改*/printf("\t\t\t*9.返回*\n");/*返回*/printf("\t\t\t************************\n");printf("\t\t\t请选择:\n");/*请选择:*/c1=getchar();getchar();if(c1=='9')break;switch(c1){case'1':new1();break;case'2':delete1();case'3':xiugai();break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/}}}voidnew1()/*新增一个学生成绩函数*/{printf("请输入学号:");/*显示"请输入学号:"*/gets(stu[num].no);printf("姓名:");/*显示"姓名:"*/gets(stu[num].name);printf("班级:");/*显示"班级:"*/gets(stu[num].grade);printf("专业:");/*显示"专业:"*/gets(stu[num].pro);printf("入年:");/*显示"入年"*/scanf("%d",&stu[num].year);printf("C语言成绩:");/*显示"C语言成绩"*/scanf("%f",&stu[num].score[0]);printf("高数成绩:");/*显示"高数成绩"*/scanf("%f",&stu[num].score[1]);printf("大物成绩:");/*显示"大物成绩"*/scanf("%f",&stu[num].score[2]);printf("电路成绩:");/*显示"电路成绩"*/scanf("%f",&stu[num].score[3]);printf("模电成绩:");/*显示"模电成绩"*/scanf("%f",&stu[num].score[4]);num++;printf("\n======================================\n");printf("现有%d个学生成绩:\n",num);/*显示"现有NUM个学生成绩:"*/printf("======================================\n\n");output();}voidxiugai()/*修改学生成绩*/{charxg[11];inti;printf("\n请输入要修改学生学号:\n\n");gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break;if(i==num){printf("\n数据文件无该生信息!\n\n请重新输入学号.\n\n");stop();return;}xgcj(i);}voidxgcj(intx)/*修改成绩*/{charxueke[5][10]={"C语言","高数","物理","电路","模电"};char(*p)[10],c;intj,k;p=xueke;for(;;){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t成绩\n");printf("\t\t\t1.C语言\n");/*C语言*/printf("\t\t\t2.高数\n");/*高数*/printf("\t\t\t3.物理\n");/*大学物理*/printf("\t\t\t4.电路\n");/*电路*/printf("\t\t\t5.模电\n");/*模电*/printf("\t\t\t9.返回\n\n");/*返回上级*/printf("\t\t\t************************************\n\n");printf("\t请选择要修改成绩(按.5.9):\n");c=getchar();getchar();if(c=='9')break;elseif(c>='1'&&c<='5'){k=c-49;printf("\n请输入%s成绩:\n",p+k);scanf("%f",&stu[x].score[k]);printf("\n修息为:\n");printf("学号姓名班级专业入年C语言高数大物电路模电\n");printf("===================================================================\n");printf("%s%s%s%s%d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].year);for(j=0;j<5;j++)printf("%.1f",stu[x].score[j]);printf("\n");}elseprintf("\n选择有误,请重选!\n\n");stop();}}intfind(charsno[])/*按学号查找*/{inti;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0)/*判定两个字符串相等*/returni;/*查找成功*/return-1;/*查找失败*/}voiddelete1()/*删除学生信息函数*/{charcno[11];inti,j;printf("请输入要删除学生学号:");/*"请输入要删除学生学号"*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf("现有%d个学生成绩:\n",num);/*显示"现有NUM个学生成绩:"*/output();}else{printf("请输入正确学号.\n");stop();}}voidtongji()/*统计界面函数*/{inti;charc2;while(1){printf("\n\n\n\t\t\t*******************************\n");printf("\t\t\t*统计*\n");printf("\t\t\t*1.学生平均分*\n");/*计算学生平均分*/printf("\t\t\t*2.课程平均分*\n");/*计算每门课程平均分*/printf("\t\t\t*9.返回*\n");/*返回*/printf("\t\t\t*******************************\n");printf("\t\t\t请选择:\n");/*请选择:*/c2=getchar();getchar();if(c2=='9')break;switch(c2){case'1':tongji1();printf("\n\n学生平均分为:\n");printf("===========================================\n");printf("学号姓名入年平均分\n");printf("===========================================\n");for(i=0;i<num;i++)printf("%s%s%d%.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave);stop();break;case'2':tongji2();break;default:printf("选择有误,请重选\n");/*"选择有误,请重选!"*/}}}voidtongji1()/*计算每个学生平均分*/{inti,j;for(i=0;i<num;i++){stu[i].ave=0;for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j];stu[i].ave=stu[i].ave/5;}}voidtongji2()/*计算每门课程平均分*/{inti,j;floatsum;floatavec[5];/*储存每门课平均分*/for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n各科平均分:\n");/*"各科平均分:"*/printf("===================================\n");printf("C语言高数大物电路模电\n");printf("===================================\n");for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}voidpaixu1()/*排序界面*/{charc3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t*排序*\n");printf("\t\t\t*1.按学号排序*\n");/*按学号排序*/printf("\t\t\t*2.按平均分排序*\n");/*按平均分排序*/printf("\t\t\t*3.按单科成绩排序*\n");/*按单科成绩排序*/printf("\t\t\t*9.返回*\n");/*返回*/printf("\t\t\t***********************************\n\n");printf("\t请选择:(按):\n");/*请选择:*/c3=getchar();getchar();if(c3=='9')break;switch(c3){case'1':paino();break;case'2':paiave();break;case'3':paidkcj();break;default:printf("\n选择有误,请重选!\n\n");/*选择有误,请重选!*/stop();}}}voidpaino()/*按学号排序*/{/*按学号从低到高冒泡法排序*/inti,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0)change(j,j+1);printf("\n排序后为:\n");/*"排序后为:"*/output();}voidpaiave()/*按平均分排序*/{/*按平均分从高到低冒泡法排序*/inti,j;tongji1();/*计算平均成绩*/for(i=0;i<num;i++)for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave)change(j,j+1);printf("\n\t排序后为:\n");/*"排序后为:"*/printf("\t===============================================\n");printf("\t学号姓名入年平均分排名\n");printf("\t===============================================\n");for(i=0;i<num;i++)printf("\t%s%s%d%.2f%4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1);stop();}voidpaidkcj()/*按单科成绩排序*/{charc;inti,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t单科成绩\n");printf("\t\t\t1.C语言\n");/*C语言*/printf("\t\t\t2.高数\n");/*高数*/printf("\t\t\t3.物理\n");/*大学物理*/printf("\t\t\t4.电路\n");/*电路*/printf("\t\t\t5.模电\n");/*模电*/printf("\t\t\t9.返回\n\n");/*返回上级*/printf("\t\t\t************************************\n\n");printf("\t请选择:(按.5.9):\n");c=getchar();getchar();if(c=='9')break;elseif(c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}elseprintf("\n选择有误,请重选!\n\n");stop();}}voidchange(inti,intj)/*交换结构体数组中两个统计*/{structstudenttemp;temp=stu[i];stu[i]=stu[j];stu[j]=temp;}voidoutputx(intk)/*选择输出单科成绩*/{charxueke[5][10]={"C语言","高数","物理","电路","模电"};char(*p)[10];/*定义一个指向包含10个字符型元素一维数组指针变量*/inti;p=xueke;printf("\n\t排序后为:\n");printf("\t===============================================\n");printf("\t学号姓名入年%s排名\n",p+k);printf("\t===============================================\n");for(i=0;i<num;i++)printf("\t%-11s%-10s%-11d%-6.1f%5d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].score[k],i+1);}voidfind1()/*查找界面函数*/{charc4;charcno[11],cname[10];inti,cyear;while(1){printf("\t\t\t*************************************\n");printf("\t\t\t*查找*\n");printf("\t\t\t*1.按学号查找*\n");/*按学号查找*/printf("\t\t\t*2.按姓名查找*\n");/*按姓名查找*/printf("\t\t\t*3.按入年查找*\n");/*按入年查找*/printf("\t\t\t*9.返回*\n");/*返回*/printf("\t\t\t*************************************\n");printf("\t\t\t请选择:\n");/*请选择:*/c4=getchar();getchar();if(c4==57)break;switch(c4){case'1':printf("输入学号:\n");/*"输入学号:"*/gets(cno);i=find(cno);panduani(i);break;case'2':printf("输入姓名:\n");/*"输入姓名:"*/gets(cname);i=findname(cname);panduani(i);break;case'3':printf("输入入年:\n");/*"输入入年"*/scanf("%d",&cyear);findyear(cyear);stop();break;default:printf("选择有误,请重选!\n");/*"选择有误,请重选!"*/}}}intfindname(charcname[])/*按姓名查找*/{inti;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0)/*判定两个字符串相等*/returni;/*查找成功*/return-1;/*查找失败*/}voidfindyear(intcyear){inti,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){flag=1;break;}if(flag==0){printf("要查找学生不存在\n");stop();}else{printf("查找到学生信息为:\n");/*"查找到学生信息为:"*/printf("学号姓名班级专业入年C语言高数大物电路模电\n");printf("===================================================================\n");for(i=0;i<num;i++){if(stu[i].year==cyear)/*判定两个数值相等*/{printf("%s%s%s%s%d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year);for(j=0;j<5;j++)printf("%.1f",stu[i].score[j]);printf("\n");}}}}voidpanduani(inti)/*经过i值,判定信息要查找信息是否存在*/{intj;if(i==-1){printf("要查找学生不存在\n");/*要查找学生不存在*/stop();}else{printf("查找到学生信息为:\n");/*"查找到学生信息为:"*/printf("学号姓名班级专业入年C语言高数大物电路模电\n");printf("========================

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论