




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#include/* strcmp函数原型包含*/#define N 100/*定义最大学生人数为100*/struct student /*学生结构体定义*/ char no11; /*学号,10位*/ char name10;/*姓名,3个汉字*/ char grade10;/*班级*/ char pro20;/*专业*/ float score5;/*储存5门功课的成绩*/ float ave;/*储存平均分*/ int year;/*入学年*/stuN;int num;void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/void output(); /*输出学生成绩函数(公共函数)*/void init(); /*系统初始化函数*/void newfile(); /*建立新的数据文件*/void read1(); /*从数据文件中读取数据*/void weihu(); /*维护界面函数*/void new1(); /*新增一个学生成绩函数*/void xiugai(); /*修改学生成绩*/void xgcj(int); /*修改成绩*/void delete1(); /*删除学生信息函数*/void tongji(); /*统计界面函数*/void tongji1(); /*计算每个学生平均分*/void tongji2(); /*计算每门课程的平均分*/void paixu1(); /*排序函数*/void paino(); /*按学号排序*/void paiave(); /*按平均分排序*/void paidkcj(); /*按单科成绩排序*/void change(int,int); /*交换结构体数组中的两个记录*/void outputx(int); /*选择输出单科成绩*/void find1(); /*查找界面函数*/int find(char sno); /*按学号查找*/int findname(char cname);/*按姓名查找*/void findyear(int cyear); /*按入学年查找*/void save(); /*保存文件*/void stop(); /*停顿函数*/void stop() /*停顿函数 (公共函数)*/ printf(Press Any Key To Continue.n); getchar();void output() /*输出学生成绩函数(公共函数)*/ int i,j; printf(=n); printf(学号 姓名 班级 专业 入学年 C语言 高数 大物 电路 模电n); printf(=n); for(i=0;inum;i+) printf(%s %s %s %s %d,stui.no,,stui.grade,,stui.year); for(j=0;j5;j+) printf( %.1f,stui.scorej); printf(n); stop();void init() /*系统初始化函数 */ if(access(stu.dat,0) /*判断文件是否存在*/ newfile(); /*若不存在,新建数据文件*/ else read1(); /*若存在,读取数据*/void newfile() /*建立新的数据文件 */ int i; FILE *fp; if(fp=fopen(stu.dat,wb)=NULL) /*创建二进制文件*/ printf(创建文件失败,请重新运行程序.n); /*显示创建文件失败,请重新运行程序*/ exit(0); /*终止程序*/ printf(初次运行,进行数据初始化.n);/*显示初次运行,进行数据初始化.*/ stop(); printf(请输入学生人数:);/*显示请输入学生人数:*/ scanf(%d,&num); for(i=0;inum;i+) printf(请输入第 %d个学生的学号:,i+1); /*显示请输入第i+1个学生的学号:*/ getchar(); /*吃回车*/ gets(stui.no); printf(姓名:); /*显示姓名:*/ gets(); printf(班级:); /*显示班级:*/ gets(stui.grade); printf(专业:); /*显示专业:*/ gets(); printf(入学年n:);/*显示入学年*/ scanf(%d,&stui.year); printf(C语言成绩:);/*显示C语言成绩*/ scanf(%f,&stui.score0); printf(高数成绩:);/*显示高数成绩*/ scanf(%f,&stui.score1); printf(大物成绩:);/*显示大物成绩*/ scanf(%f,&stui.score2); printf(电路成绩:);/*显示电路成绩*/ scanf(%f,&stui.score3); printf(模电成绩:);/*显示模电成绩*/ scanf(%f,&stui.score4); fwrite(&stui,1,sizeof(struct student),fp); /*把第i+1名学生成绩写入文件*/ fclose(fp); printf(=n); printf( 刚才输入的 %d 个数据为:n,num); /*显示刚才输入的 num 个数据为:*/ printf(=nn); output();void read1() /*从数据文件中读取数据 */ FILE *fp; num=0; /*num为数据文件中实际存储的学生人数*/ fp=fopen(stu.dat,r); if(fp=NULL) /*数据文件不存在*/ printf(文件打开失败!重新运行程序n); /*显示文件打开失败!重新运行程序*/ exit(0); while(!feof(fp) /*文件结束检测*/ fread(&stunum,1,sizeof(struct student),fp); num+; num-; fclose(fp); printf(ttt=n); printf( ttt现有 %d 个学生的成绩:n,num); /*显示现有 NUM个学生的成绩:*/ printf(ttt=nn); output();void weihu() /*维护界面函数 */ char c1; while(1) printf(nnnttt*n); printf(ttt* 维护 *n); printf(ttt* 1. 新增 *n); /*新增*/ printf(ttt* 2. 删除 *n); /*删除(按学号)*/ printf(ttt* 3. 修改 *n); /*修改*/ printf(ttt* 9. 返回 *n); /*返回*/ printf(ttt*n); printf(ttt 请选择:n);/*请选择:*/ c1=getchar(); getchar(); if(c1=9) break; switch(c1) case 1: new1(); break; case 2: delete1(); case 3: xiugai(); break; default: printf(选择有误,请重选!n);/*选择有误,请重选!*/ void new1() /*新增一个学生成绩函数 */ printf(请输入学号:); /*显示请输入学号:*/ gets(stunum.no); printf(姓名:); /*显示姓名:*/ gets(); printf(班级:); /*显示班级:*/ gets(stunum.grade); printf(专业:); /*显示专业:*/ gets(); printf(入学年:);/*显示入学年*/ scanf(%d,&stunum.year); printf(C语言成绩:);/*显示C语言成绩*/ scanf(%f,&stunum.score0); printf(高数成绩:);/*显示高数成绩*/ scanf(%f,&stunum.score1); printf(大物成绩:);/*显示大物成绩*/ scanf(%f,&stunum.score2); printf(电路成绩:);/*显示电路成绩*/ scanf(%f,&stunum.score3); printf(模电成绩:);/*显示模电成绩*/ scanf(%f,&stunum.score4); num+; printf(n=n); printf(现有 %d个学生的成绩:n,num); /*显示现有 NUM个学生的成绩:*/ printf(=nn); output();void xiugai() /*修改学生成绩*/ char xg11; int i; printf(n请输入要修改学生的学号:nn); gets(xg); for(i=0;i=1&c=5) k=c-49; printf(n请输入 %s 成绩:n,p+k); scanf(%f,&stux.scorek); printf(n修 息为:n); printf(学号 姓名 班级 专业 入学年 C语言 高数 大物 电路 模电n); printf(=n); printf(%s %s %s %s %d,stux.no,,stux.grade,,stux.year); for(j=0;j5;j+) printf( %.1f,stux.scorej); printf(n); else printf(n选择有误,请重选!nn); stop(); int find(char sno) /*按学号查找 */ int i; for(i=0;inum;i+) if(strcmp(stui.no,sno)=0) /*判断两个字符串相等*/ return i;/*查找成功*/ return -1;/*查找失败*/void delete1() /*删除学生信息函数*/ char cno11; int i,j; printf(请输入要删除的学生学号:); /*请输入要删除的学生学号*/ gets(cno); i=find(cno); if(i!=-1) for(j=i;jnum;j+) stuj=stuj+1; num-; printf(现有%d 个学生的成绩:n,num); /*显示现有 NUM个学生的成绩:*/ output(); else printf(请输入正确的学号. n); stop();void tongji() /*统计界面函数 */ int i; char c2; while(1) printf(nnnttt*n); printf(ttt* 统计 *n); printf(ttt* 1. 学生平均分 *n); /*计算学生平均分*/ printf(ttt* 2. 课程平均分 *n); /*计算每门课程平均分*/ printf(ttt* 9. 返回 *n); /*返回*/ printf(ttt*n); printf(ttt请选择:n);/*请选择:*/ c2=getchar(); getchar(); if(c2=9) break; switch(c2) case 1: tongji1(); printf(nn学生平均分为:n); printf(=n); printf(学号 姓名 入学年 平均分n); printf(=n); for(i=0;inum;i+) printf(%s %s %d %.2fn,stui.no,,stui.year,stui.ave); stop(); break; case 2: tongji2(); break; default: printf(选择有误,请重选n);/*选择有误,请重选!*/ void tongji1() /*计算每个学生平均分*/ int i,j; for(i=0;inum;i+) stui.ave=0; for(j=0;j5;j+) stui.ave+=stui.scorej; stui.ave=stui.ave/5; void tongji2() /*计算每门课程的平均分*/ int i,j; float sum; float avec5; /*储存每门课的平均分*/ for(j=0;j5;j+) sum=0; for(i=0;inum;i+) sum+=stui.scorej; avecj=sum/num; printf(nn各科平均分:n);/*各科平均分:*/ printf(=n); printf(C语言 高数 大物 电路 模电n); printf(=n); for(i=0;i5;i+) printf(%-7.1f,aveci); printf(n); stop();void paixu1() /*排序界面*/ char c3; for(;) printf(nnn); printf(ttt*n); printf(ttt* 排序 * n); printf(ttt* 1. 按学号排序 * n); /*按学号排序*/ printf(ttt* 2. 按平均分排序 * n); /*按平均分排序*/ printf(ttt* 3. 按单科成绩排序 * n); /*按单科成绩排序*/ printf(ttt* 9. 返回 * n); /*返回*/ printf(ttt*nn); 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选择有误,请重选!nn);/*选择有误,请重选!*/ stop(); void paino() /*按学号排序*/ /*按学号从低到高冒泡法排序*/ int i,j; for(i=0;inum;i+) for(j=0;j0) change(j,j+1); printf(n排序后为:n); /*排序后为:*/ output();void paiave() /*按平均分排序 */ /*按平均分从高到低冒泡法排序*/ int i,j; tongji1(); /*计算平均成绩*/ for(i=0;inum;i+) for(j=0;jnum-i-1;j+) if(stuj.avestuj+1.ave) change(j,j+1); printf(nt排序后为:n); /*排序后为:*/ printf(t=n); printf(t学号 姓名 入学年 平均分 排名n); printf(t=n); for(i=0;i=1&c=5) k=c-49; for(i=0;inum;i+) for(j=0;jnum-1-i;j+) if(stuj.scorekstuj+1.scorek) change(j,j+1); outputx(k); else printf(n选择有误,请重选!nn); stop(); void change(int i,int j) /*交换结构体数组中的两个记录*/ struct student temp; temp=stui; stui=stuj; stuj=temp;void outputx(int k) /*选择输出单科成绩*/ char xueke510=C语言,高数,物理,电路,模电; char (*p)10; /*定义一个指向包含10个字符型元素的一维数组的指针变量*/ int i; p=xueke; printf(nt排序后为:n); printf(t=n); printf(t学号 姓名 入学年 %s 排名n,p+k); printf(t=n); for(i=0;inum;i+) printf(t%-11s% -10s%-11d%-6.1f%5dn,stui.no, ,stui.year,stui.scorek,i+1);void find1() /*查找界面函数*/ char c4; char cno11,cname10; int i,cyear; while(1) printf(ttt*n); printf(ttt* 查找 *n); printf(ttt* 1. 按学号查找 *n); /*按学号查找*/ printf(ttt* 2. 按姓名查找 *n); /*按姓名查找*/ printf(ttt* 3. 按入学年查找 *n); /*按入学年查找*/ printf(ttt* 9. 返回 *n); /*返回*/ printf(ttt*n); printf(ttt请选择: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);/*选择有误,请重选!*/ int findname(char cname) /*按姓名查找*/ int i; for(i=0;inum;i+) if(strcmp(,cname)=0) /*判断两个字符串相等*/ return i; /*查找成功*/ return -1; /*查找失败*/void findyear(int cyear) int i,j,flag=0; for(i=0;inum;i+) if(stui.year=cyear) flag=1;break; if(flag=0) printf(要查找的学生不存在n);stop(); else printf(查找到的学生信息为:n);/*查找到的学生信息为:*/ printf(学号 姓名 班级 专业 入学年 C语言 高数 大物 电路 模电n); printf(=n); for(i=0;inum;i+) if(stui.year=cyear) /*判断两个数值相等*/ printf(%s %s %s %s %d,stui.no,,stui.grade,,stui.year); for(j=0;j5;j+) printf( %.1f,stui.scorej); printf(n); void panduani(int i) /*通过i的值,判断信息要查找的信息是否存在*/ int j; if(i=-1) printf(要查找的学生不存在n);/*要查找的学生不存在*/ stop(); else printf(查找到的学生信息为:n);/*查找到的学生信息为:*/ printf(学号 姓名 班级 专业 入学年 C语言 高数 大物 电路 模电n); printf(=n); pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025宠物狗买卖合同
- 语数英课件教学课件
- 诗联声律知识培训心得
- 红细胞溶血性贫血
- 诗经爱情名篇课件
- 建筑土石方协议
- 红楼梦刘姥姥教学课件
- 人工智能赋能2025年在线生鲜电商平台服务升级研究报告
- 2025年智能电网信息安全与技术创新策略分析报告
- 试验员岗前知识培训内容课件
- 建材销售购销合同范本
- 加油加气站 反恐防范重点目标档案 范例2024
- 潮牌产品商业计划书
- 混龄教育及带班技巧培训
- 洪泽县LED道路照明及智慧应用工程建设项目建议书
- 2020年中考语文考点突破:部编九年级古诗文默写(教师版)
- (高清版)DZT 0275.5-2015 岩矿鉴定技术规范 第5部分:矿石光片鉴定
- 中职生安全教育全套教学课件
- 收购组织财务尽职调查资料清单
- 《DFMEA完整教程》课件
- (完整版)万科物业服务合同2024
评论
0/150
提交评论