资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
c语言课程设计学生成绩管理系统目录学生成绩管理程序题目要求2设计目的2整体设计3详细设计3调试与测试12源程序14总结30学生成绩管理程序一题目要求问题描述:对在校学生几门课程的考试成绩进行一致管理.每个学生记录包含学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.要求:(1)一个文件按以班为单位储存学生记录.(2)将同意的操作分为四种,以A,B,C,D,E,F为标记:插入一个学生记录;B:更正学生记录;C:删除一个学生记录;D:查找一个学生记录;E:阅读学生成绩:F:退出计算学生的总成绩.按学号排序输出全班学生成绩表./23二设计目的依据题目要求,因为学生信息是存放在文件中,因此应供给文件的输入,输出等操作;在程序中需要阅读学生的信息,应供给显示,查找,排序等操作;别的还应供给键盘式选择菜单实现功能选择.三整体设计依据上边的需求解析,可以将这个系统分为以下模块:输入模块,更正模块,删除模块,查找模块,显示模块.数据输入学生成绩管理系统数据显示数据更正数据删除数据查找四详细设计主函数:主函数一般设计得比较简单,只供给输入,办理和输出部分的函数调用,此中各功能模块用菜单方式选择.流程图:显示一系列功能模块N输入n,判断n是不是A-FY依据n的值调用各功能模块函数程序:加学生记录5.统计信息|n);printf(|2.盘问学生记录6.打开文件|n);printf(|3.更正学生记录7.保存文件|n);printf(|4.学生纪录排序8.显示记录|n);printf(|0.退出系统|n);printf(nn);printf(请选择(0-8):);c=getchar();getchar();return(c-0);输入模块:解析:单独看各数据信息,学号,姓名是字符型,可以采纳字符型数组;分数为整数,采纳整数;数据信息存放在文件中,一条记录对应一个学生,既吻合习惯又方便信息管理.假如要存放若干学生信息就用结构体数组:voidaddrecord(studentstud)inti=0,j,num;charstr5;if(numstus!=0)printf(已有记录存在能否覆盖?(y/n)n);gets(str);if(str0=Y|str0=y)i=0;elsei=numstus;printf(请输入增添的学生信息条目数:);scanf(%d,&num);if(i=0)numstus=num;elsenumstus+=num;if(numstuslens)lens+=50;pointer=(student*)realloc(pointer,lens*LEN);printf(请输入学生信息:n);for(;inumstus;i+)getchar();printf(请输入学号:);gets(pointeri.number);printf(请输入姓名:);gets(pointeri.name);printf(请输入性别(男/女1/0):);gets(pointeri.sex);if(pointeri.sex0=0)strcpy(pointeri.sex,女);elsestrcpy(pointeri.sex,男);printf(请输入各科成绩:(按“语文,数学,英语,历史,政治”的次序):);studi.score=0;for(j=0;j0)i=menu_select();/*控制菜单*/switch(i)case1:addrecord(pointer);break;/*增添学生信息*/case2:findrecord(pointer);break;/*盘问学生信息*/case3:amendrecord(pointer);break;/*更正学生信息*/case4:sort(pointer);break;/*学生信息排序*/case5:statistic(pointer);break;/*统计信息*/case6:openfile(pointer);break;/*打开文件*/case7:writetotext(pointer);break;/*保存文件*/case8:display(pointer,0,numstus-1);break;/*显示记录*/case0:if(numstus!=0)printf(能否保存当前记录?(y/n);gets(str);if(str0=y|str0=Y)writetotext(pointer);i=-1;break;/*退出系统*/default:printf(请输入数字08:n);i=1;/*输入错误*/printf(tt欢迎再次使用本系统。nn);display1();更正模块:解析:用户输入要更正学生的学号,依据学生的学号等信息查找学生记录,并提示用户更正该记录的哪部分信息.依据用户选择更正相应的信息.流程图:输入要更正的学号YN找到?YN程序:voidxiugai()显示记录,提示没有调用更正找到函数继续?if(fp=fopen(,rb+)=NULL|(fp1=fopen(,wb+)=NULL)/*检查能否犯错*/返回主菜printf(Cannotopenthisfile.n);exit(0);单4. printf(nPLeaseshuruxiugaixuehao:);scanf(%d,&i);getchar();while(fread(&data,sizeof(data),1,fp)=1)j=atoi;if(j=i)printf(xuehao:%snmingzi:%snnianling:%sn,;printf(Pleaseshurumingzi:);gets;printf(Pleaseshurushuxuescore:);gets(temp);0=atof(temp);printf(Pleaseinputyingyuscore:);gets(temp);1=atof(temp);printf(Pleaseinputwuliscore:);gets(temp);2=atof(temp);3=0+1+2;fwrite(&data,sizeof(data),1,fp1);fseek(fp,0L,0);/*将地点指针移到离头文件0个字节处*/fseek(fp1,0L,0);while(fread(&data,sizeof(data),1,fp1)=1)fwrite(&data,sizeof(data),1,fp);fclose(fp);fclose(fp1);删除模块:解析:该模块的功能是,用户输入要删除的学生的学号,依据学生学号查找记录并删除.流程图:输入要删除的学号YN找显示记录,到?提示没有Y调用删除找到函数N程序:voiddeleterecord(studentstu,inti)/*继删除信息*/续?intj;while(i=0)返回主菜单for(j=i;jnumstus;j+)stuj=stuj+1;numstus-;printf(删除成功!n);voidcount(studentstud)inti,j;for(i=0;inumstus;i+)studi.index=1;for(j=0;jstudi.score)studi.index+;查找模块:需求解析:该模块的功能是依据输入的学生的姓名查找对应的记录,找到此后,显示相应的学生信息.流程图:输入学生YN学号NY能否找程序:到学生记录显示找到的记录提示没有找到号t2.姓名t3.名次n);gets(str);if(str0=1)/*按学号查找*/printf(请输入学号:);gets(str);for(i=0;i=numstus;i+)if(strcmp(str,studi.number)=0)display(stud,i,i);break;elsecontinue;elseif(str0=2)/*按姓名查找*/printf(请输入姓名:);gets(str);for(i=0;i=numstus;i+)if(strcmp(str,studi.name)=0)display(stud,i,i);break;elsecontinue;elseif(str0=3)/*按名次查找*/printf(请输入名次:);scanf(%d,&num);getchar();for(i=0;inumstus)printf(没有查找所要的信息。n);return-1;returni;6.显示模块:需求解析:该模块的功能是显示全部学生记录信息.程序:voidwelcome()printf(t*
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号