欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言课程设计-学生成绩管理系统-完整版(共15页).doc

    • 资源ID:14440436       资源大小:55.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计-学生成绩管理系统-完整版(共15页).doc

    精选优质文档-倾情为你奉上#include<stdio.h>#include<stdlib.h>#include<io.h>#include<string.h>/* 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;i<num;i+) printf("%s %s %s %s %d",stui.no,stui.name,stui.grade,stui.pro,stui.year); for(j=0;j<5;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;i<num;i+) printf("请输入第 %d个学生的学号:",i+1); /*显示"请输入第i+1个学生的学号:"*/ getchar(); /*吃回车*/ gets(stui.no); printf("姓名:"); /*显示"姓名:"*/ gets(stui.name); printf("班级:"); /*显示"班级:"*/ gets(stui.grade); printf("专业:"); /*显示"专业:"*/ gets(stui.pro); 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(stunum.name); printf("班级:"); /*显示"班级:"*/ gets(stunum.grade); printf("专业:"); /*显示"专业:"*/ gets(stunum.pro); 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<num;i+) if(strcmp(stui.no,xg)=0)break; if(i=num) printf("n数据文件无该生信息!nn请重新输入学号.nn"); stop(); return; xgcj(i);void xgcj(int x) /*修改成绩*/ char xueke510="C语言","高数","物理","电路","模电" char (*p)10,c; int j,k; p=xueke; for(;) printf("n"); printf("ttt*nn"); printf("ttt 成绩 n"); printf("ttt 1.C 语言 n"); /*C语言*/ printf("ttt 2.高数 n"); /*高数*/ printf("ttt 3.物理 n"); /*大学物理*/ printf("ttt 4.电路 n"); /*电路*/ printf("ttt 5.模电 n"); /*模电*/ printf("ttt 9.返回 nn"); /*返回上级*/ printf("ttt*nn"); printf("t请选择要修改的成绩(按 1.2.3.4.5.9):n"); c=getchar(); getchar(); if(c='9')break; else if (c>='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.name,stux.grade,stux.pro,stux.year); for(j=0;j<5;j+) printf(" %.1f",stux.scorej); printf("n"); else printf("n选择有误,请重选!nn"); stop(); int find(char sno) /*按学号查找 */ int i; for(i=0;i<num;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;j<num;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;i<num;i+) printf("%s %s %d %.2fn",stui.no,stui.name,stui.year,stui.ave); stop(); break; case '2': tongji2(); break; default: printf("选择有误,请重选n");/*"选择有误,请重选!"*/ void tongji1() /*计算每个学生平均分*/ int i,j; for(i=0;i<num;i+) stui.ave=0; for(j=0;j<5;j+) stui.ave+=stui.scorej; stui.ave=stui.ave/5; void tongji2() /*计算每门课程的平均分*/ int i,j; float sum; float avec5; /*储存每门课的平均分*/ for(j=0;j<5;j+) sum=0; for(i=0;i<num;i+) sum+=stui.scorej; avecj=sum/num; printf("nn各科平均分:n");/*"各科平均分:"*/ printf("=n"); printf("C语言 高数 大物 电路 模电n"); printf("=n"); for(i=0;i<5;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请选择:(按1.2.3.9):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;i<num;i+) for(j=0;j<num-1-i;j+) if(strcmp(stuj.no,stuj+1.no)>0) change(j,j+1); printf("n排序后为:n"); /*"排序后为:"*/ output();void paiave() /*按平均分排序 */ /*按平均分从高到低冒泡法排序*/ int i,j; tongji1(); /*计算平均成绩*/ for(i=0;i<num;i+) for(j=0;j<num-i-1;j+) if(stuj.ave<stuj+1.ave) change(j,j+1); printf("nt排序后为:n"); /*"排序后为:"*/ printf("t=n"); printf("t学号 姓名 入学年 平均分 排名n"); printf("t=n"); for(i=0;i<num;i+) printf("t%s %s %d %.2f %4dn",stui.no, stui.name,stui.year,stui.ave,i+1); stop();void paidkcj() /*按单科成绩排序*/ char c; int i,j,k; while(1) printf("n"); printf("ttt*nn"); printf("ttt 单科成绩 n"); printf("ttt 1.C 语言 n"); /*C语言*/ printf("ttt 2.高数 n"); /*高数*/ printf("ttt 3.物理 n"); /*大学物理*/ printf("ttt 4.电路 n"); /*电路*/ printf("ttt 5.模电 n"); /*模电*/ printf("ttt 9.返回 nn"); /*返回上级*/ printf("ttt*nn"); printf("t请选择:(按1.2.3.4.5.9):n"); c=getchar(); getchar(); if(c='9')break; else if (c>='1'&&c<='5') k=c-49; for(i=0;i<num;i+) for(j=0;j<num-1-i;j+) if(stuj.scorek<stuj+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;i<num;i+) printf("t%-11s% -10s%-11d%-6.1f%5dn",stui.no, stui.name,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;i<num;i+) if(strcmp(stui.name,cname)=0) /*判断两个字符串相等*/ return i; /*查找成功*/ return -1; /*查找失败*/void findyear(int cyear) int i,j,flag=0; for(i=0;i<num;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;i<num;i+) if(stui.year=cyear) /*判断两个数值相等*/ printf("%s %s %s %s %d",stui.no,stui.name,stui.grade,stui.pro,stui.year); for(j=0;j<5;j+) printf(" %.1f",stui.scorej); printf("n"); void panduani(int i) /*通过i的值,判断信息要查找的信息是否存在*/ int j; if(i=-1) printf("要查找的学生不存在n");/*要查找的学生不存

    注意事项

    本文(C语言课程设计-学生成绩管理系统-完整版(共15页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开