如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
/*学生成绩管理系统*/#include<stdio.h>#include<string.h>#defineSWN3/*课程数*/#defineNAMELEN20/*姓名最大字符数*/#defineCODELEN10/*学号最大字符数*/#defineFNAMELEN80/*文件名最大字符数*/#defineBUFLEN80/*缓冲区最大字符数*//*课程名称表*/charschoolwork[SWN][NAMELEN+1]={"Chinese","Mathematic","English"};structrecord{charname[NAMELEN+1];/*姓名*/charcode[CODELEN+1];/*学号*/intmarks[SWN];/*各课程成绩*/inttotal;/*总分*/}stu;inttotal[SWN];/*各课程总分*///全局变量//FILE*stfpt;/*文件指针*/charstuf[FNAMELEN];/*文件名*//*从指定文件读入一个记录*/intreadrecord(FILE*fpt,structrecord*rpt){charbuf[BUFLEN];inti;if(fscanf(fpt,"%s",buf)!=1)return0;/*文件结束*/strncpy(rpt->name,buf,NAMELEN);fscanf(fpt,"%s",buf);strncpy(rpt->code,buf,CODELEN);for(i=0;i<SWN;i++)fscanf(fpt,"%d",&rpt->marks[i]);for(rpt->total=0,i=0;i<SWN;i++)rpt->total+=rpt->marks[i];return1;}/*对指定文件写入一个记录*/writerecord(FILE*fpt,structrecord*rpt){inti;fprintf(fpt,"%s\n",rpt->name);fprintf(fpt,"%s\n",rpt->code);for(i=0;i<SWN;i++)fprintf(fpt,"%d\n",rpt->marks[i]);}/*显示学生记录*/displaystu(structrecord*rpt){inti;printf("\nName:%s\n",rpt->name);printf("Code:%s\n",rpt->code);printf("Marks:\n");for(i=0;i<SWN;i++)printf("%-15s:%4d\n",schoolwork[i],rpt->marks[i]);printf("Total:%4d\n",rpt->total);}/*计算各单科总分*/inttotalmark(char*fname){FILE*fp;structrecords;intcount,i;if((fp=fopen(fname,"r"))==NULL){printf("Can'topenfile%s.\n",fname);return0;}for(i=0;i<SWN;i++)total[i]=0;count=0;while(readrecord(fp,&s)!=0)//注意函数参数的传递,地址传递{for(i=0;i<SWN;i++)total[i]+=s.marks[i];count++;}fclose(fp);returncount;/*返回记录数*/}/*列表显示学生信息*/voidliststu(char*fname){FILE*fp;structrecords;if((fp=fopen(fname,"r"))==NULL){printf("Can'topenfile%s.\n",fname);return;}while(readrecord(fp,&s)!=0){displaystu(&s);printf("\nPressENTERtocontinue...\n");while(getchar()!='\n');}fclose(fp);return;}/*按学生姓名查找学生记录*/intretrievebyn(char*fname,char*key){FILE*fp;intc;structrecords;if((fp=fopen(fname,"r"))==NU