




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*学生成绩管理系统*/#include #include #defineSWN 3 /* 课程数 */#define NAMELEN 20 /* 姓名最大字符数 */#define CODELEN 10 /* 学号最大字符数 */#define FNAMELEN 80 /* 文件名最大字符数 */#define BUFLEN 80 /* 缓冲区最大字符数 */* 课程名称表 */char schoolworkSWNNAMELEN+1 = Chinese,Mathematic,English;struct record char nameNAMELEN+1; /* 姓名 */ char codeCODELEN+1; /* 学号 */ int marksSWN; /* 各课程成绩 */ int total; /* 总分 */stu;int totalSWN; /* 各课程总分 */ /全局变量/ FILE *stfpt; /* 文件指针 */char stufFNAMELEN; /* 文件名 */* 从指定文件读入一个记录 */int readrecord(FILE *fpt,struct record *rpt) char bufBUFLEN; int i; if(fscanf(fpt,%s,buf)!=1) return 0;/* 文件结束 */ strncpy(rpt-name,buf,NAMELEN); fscanf(fpt,%s,buf); strncpy(rpt-code,buf,CODELEN); for(i=0;imarksi); for(rpt-total=0,i=0;itotal+=rpt-marksi; return 1;/* 对指定文件写入一个记录 */writerecord(FILE *fpt,struct record *rpt) int i; fprintf(fpt,%sn,rpt-name); fprintf(fpt,%sn,rpt-code); for(i=0;imarksi);/* 显示学生记录 */displaystu(struct record *rpt) int i; printf(nName : %sn,rpt-name); printf(Code : %sn,rpt-code); printf(Marks :n); for(i=0;imarksi); printf(Total : %4dn,rpt-total);/* 计算各单科总分 */int totalmark(char *fname) FILE *fp; struct record s; int count,i; if(fp=fopen(fname,r)=NULL) printf(Cant open file %s.n,fname); return 0; for(i=0;iSWN;i+) totali=0; count=0;while(readrecord(fp,&s)!=0) /注意函数参数的传递,地址传递 for(i=0;iSWN;i+) totali+=s.marksi; count+; fclose(fp);return count;/* 返回记录数 */* 列表显示学生信息 */void liststu(char *fname) FILE *fp; struct record s; if(fp=fopen(fname,r)=NULL) printf(Cant open file %s.n,fname); return ; while(readrecord(fp,&s)!=0) displaystu(&s); printf(n Press ENTER to continue.n); while(getchar()!=n); fclose(fp); return;/* 按学生姓名查找学生记录 */int retrievebyn(char *fname, char *key) FILE *fp;int c;struct record s;if(fp=fopen(fname,r)=NULL) printf(Cant open file %s.n,fname); return 0;c=0;while(readrecord(fp,&s)!=0) if(strcmp(,key)=0) displaystu(&s); c+; fclose(fp);if(c=0) printf(The student %s is not in the file %s.n,key,fname);return 1;/* 按学生学号查找学生记录 */int retrievebyc(char *fname, char *key) FILE *fp; int c; struct record s; if(fp=fopen(fname,r)=NULL) printf(Cant open file %s.n,fname); return 0;c=0;while(readrecord(fp,&s)!=0) if(strcmp(s.code,key)=0) displaystu(&s); c+; break; fclose(fp);if(c=0) printf(The student %s is not in the file %s.n,key,fname);return 1;main() int i,j,n;char c;char bufBUFLEN;FILE *fp;struct record s;printf(Please input the students marks record files name: );scanf(%s,stuf);if(fp=fopen(stuf,r)=NULL) printf(The file %s doesnt exit, do you want to creat it? (Y/N) ,stuf); getchar(); /吸收前面scanf语句的回车 c=getchar(); if(c=Y|c=y) fp=fopen(stuf,w); printf(Please input the record number you want to write to the file: ); scanf(%d,&n); for(i=0;in;i+) printf(Input the students name: ); scanf(%s,&); printf(Input the students code: ); scanf(%s,&s.code); for(j=0;jSWN;j+) printf(Input the %s mark: ,schoolworkj); scanf(%d,&s.marksj); writerecord(fp,&s); fclose(fp); fclose(fp);getchar();puts(Now you can input a command to manage the records.);puts(m : mean of the marks.);puts(t : total of the marks.);puts(n : search record by students name.);puts(c : search record by students code.);puts(l : list all the records.);puts(q : quit!);while(1) printf(Please input command:n); scanf( %c,&c);/* 输入选择命令 */ if(c=q|c=Q) puts(n Thank you for your using.); break; /* q,结束程序运行 */ switch(c) case m: /* 计算平均分 */ case M: if(n=totalmark(stuf)=0) /实际上是在测试程序 puts(Error!); break; printf(n); for(i=0;iSWN;i+) printf(%-15ss average is: %.2f.n,schoolworki,(float)totali/n); break; case t: /* 计算总分 */ case T: if(n=totalmark(stuf)=0) puts(Error!); break; printf(n); for(i=0;iSWN;i+) printf(%-15ss total mark is: %d.n,schoolworki,totali); break; case n: /* 按学生的姓名寻找记录 */ case N: printf(Please input the students name you want to search: ); scanf(%s,buf); retrievebyn(stuf,buf); break; case c: /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机电设备安装电气安全防护方案
- 水泥与混凝土配比优化方案
- 水稻贪青课件
- 机电设备安装气动控制系统方案
- 园区创新资源对接方案
- 水电站税务知识培训课件
- 支气管哮喘口腔医10课件
- 水电收费课件
- 2025版海洋工程设计与施工合同样本
- 2025版国际金融合作贷款合同范本(含信用证)
- MissionPlanner地面站操作使用文档
- 中级采气工操作技能鉴定要素细目表
- 油水气井带压井作业操作规程及工艺技术要求
- (33)-钠钾泵细胞生物学
- 配电室巡检记录表
- 紧急宫颈环扎术的手术指征及术后管理
- GB/T 242-2007金属管扩口试验方法
- 政治理论水平任职资格考试题库
- 路基压实度汇总表
- 【食品生产加工技术】香肠的加工技术
- 贫困户访谈记录
评论
0/150
提交评论