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

    最新C语言实训报告—学生成绩管理系统(文件实现).doc

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

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

    最新C语言实训报告—学生成绩管理系统(文件实现).doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言实训报告学生成绩管理系统(文件实现)C语言实训报告学生成绩管理系统(文件实现)实训报告题 目: 学生成绩管理系统院 系: 专 业: 姓 名: 学 号: 指导教师: 日 期: 2017年9月9日 -目 录1 问题定义 12 系统设计 121 总体设计122 函数预览23 系统实现 33. 1 功能模块33. 2 全部代码124 系统维护 1941 调试和测试195 归纳总结 195. 1 开发经验205. 2 实训中遇到的问题及解决方法205. 3 设计中的不足之处205. 4 感想和心得体会206 参考资料 20前 言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。我们通过C语言程序设计这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C 语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。但是,对于程序设计而言,学习C 的步伐不应该停留于此。我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想, 用C 语言开发出解决复杂问题的大型综合程序。可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对Turbo C语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。编者 桂林电子科技大学信息科技学院学生成绩管理系统 本题目设计目的是训练学生的基本编程能力,了解管理学生成绩信息系统的设计开发流程,熟悉C语言的文件各种基本实现和操作。本程序中涉及结构体、文件读写、宏等方面的知识。通过本程序的训练和制作,使学生能对C语言的文件操作等方面有一个更深刻的了解,掌握利用结构体存储实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统以及之后的其他编程方面知识的学习和理解打下坚实的基础。1、问题定义创建一个学生成绩管理系统。假设系统中每个学生记录只包括学号、姓名、平时成绩、期末成绩、总评成绩、总分、平均分、名次等信息。程序的运行效果如上图图所示,选择任意菜单后,实现相应功能。具体结构体设定请见以后。程序初始主界面截图如下:在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。2、系统设计21 总体设计本管理系统的程序主要由C语言编写,考虑到各方面的维护和需求实现考虑,程序代码总体上采用模块化编程方式设计以及编写。即将一个大的功能需求分作几个小模块来配合实现,为了降低添加和维护功能和需求的成本和时间。尽量不依赖于C语言全局变量而是通过函数调用之间的参数来传递数据。以下是本管理系统的功能模块:新建功能查询功能主功能菜单计算功能输出功能22 函数预览1)主函数调用其他不同功能2)主菜单函数输出显示界面3)新建信息函数1(手写输入)手动输入学生的成绩信息,包括学号、姓名、平时成绩、总评成绩4)新建信息函数2(文件输入)通过文件导入学生成绩信息5)计算成绩函数计算学生试卷分数的总评成绩6) 查询成绩函数1(按学号)按学号查询学生试卷的总评成绩7) 查询成绩函数2(按姓名)按学号查询学生试卷的总评成绩8)计算成绩函数1(计算总成绩的及格率和优秀率)计算全班学生总评成绩的及格率和优秀率,并按优良中差输出学生人数9)计算成绩函数2(计算总成绩的平均分和标准差)计算学生总评成绩的平均分和标准差10)输出成绩函数输出全班学生的所有成绩,包括学号、姓名、总评成绩11)导出成绩函数将学生所有成绩的列表导出到文本score.txt中 3、系统实现31功能模快(附代码)int main()STU stuSIZE;int n,a,b;char ch;int oh;printf("tt*n");printf("ttt* 欢迎使用 * n");printf("ttt* 学生试卷分数统计系统 * n");printf("tt*n");while (1)ch = Menu();switch (ch)case 1: printf("请输入学生人数n(n<=%d):", SIZE);scanf("%d", &n);printf("请输入学生平时成绩与期末成绩所占总评成绩的的比例(用整数表示,满分100分):n"); scanf("%d%d",&a,&b);printf("以下有两种输入试卷分数的方式:n*1.手动输入试卷分数t2.从student.txt文件中导入试卷分数*n");scanf("%d",&oh);switch (oh)case 1:Read_data(stu,n,a,b);break;case 2:Read_data1(stu,n,a,b);break;default:printf("输入菜单序号错误!");break;case 2:Total_mark(stu,n,a,b);break;case 3:Sortbynum(stu,n);break;case 4:Sortbyname(stu,n);break;case 5: Count_pass(stu,n);break;case 6: Count_average(stu,n);break;case 7:Show_data(stu,n);break;case 8:Write_data(stu,n);break;case 0:printf("tt*n");printf("ttt* 感谢使用 * n");printf("ttt* 学生试卷分数统计系统 * n");printf("tt*n");exit(0);default:printf("输入菜单序号错误!");return 0;1) 主函数ch = Menu();switch (ch)case 1: printf("请输入学生人数n(n<=%d):", SIZE);scanf("%d", &n);printf("请输入学生平时成绩与期末成绩所占总评成绩的的比例(用整数表示,满分100分):n"); scanf("%d%d",&a,&b);printf("以下有两种输入试卷分数的方式:n*1.手动输入试卷分数t2.从student.txt文件中导入试卷分数*n");scanf("%d",&oh);switch (oh)case 1:Read_data(stu,n,a,b);break;case 2:Read_data1(stu,n,a,b);break;default:printf("输入菜单序号错误!");break;case 2:Total_mark(stu,n,a,b);break;case 3:Sortbynum(stu,n);break;case 4:Sortbyname(stu,n);break;case 5: Count_pass(stu,n);break;case 6: Count_average(stu,n);break;case 7:Show_data(stu,n);break;case 8:Write_data(stu,n);break;case 0:printf("tt*n");printf("ttt* 感谢使用 * n");printf("ttt* 学生试卷分数统计系统 * n");printf("tt*n");exit(0);default:printf("输入菜单序号错误!");return 0;1) 输入限定2) 主菜单函数/* 函数功能:显示菜单并获得用户键盘输入的选项 */int Menu(void)int itemSelected;printf("n【菜单】n");printf("1.输入记录n");printf("2.计算学生总评成绩n");printf("3.按学号查询成绩n");printf("4.按姓名查询成绩n");printf("5.计算学生及格率和优秀率n");printf("6.计算学生平均分和标准差n");printf("7.成绩列表n");printf("8.导出文件n");printf("0.退出n");printf("请输入你的选择:");scanf("%d", &itemSelected); /* 读入用户输入 */return itemSelected;3)限定功能模块限定(或者说确定)学生的人数和总评成绩的计算方式printf("请输入学生人数n(n<=%d):", SIZE);scanf("%d", &n);printf("请输入学生平时成绩与期末成绩所占总评成绩的的比例(用整数表示,满分100分):n"); scanf("%d%d",&a,&b);4) 新建成绩函数1(手动输入)/* 函数功能:手动输入分数 */void Read_data(STU stu,int n,int a,int b)int i=0;printf("请输入学生的学号、姓名、平时成绩和期末成绩(逗号隔开):n");for(i=0;i<n;i+)scanf("%ld,%s,%d,%d",&stui.num,&stui.name,&stui.score0,&stui.score1);stui.score2=stui.score0*a/100+stui.score1*b/100;05) 新建成绩函数2(文件输入)/* 函数功能:从文本student.txt中导入试卷分数 */void Read_data1(STU stu,int n,int a,int b)int i;FILE *fp;if(fp=fopen("student.txt","r")=NULL)printf("打开文件student.txt失败!n");exit(0);for(i=0;!feof(fp);i+)fscanf(fp,"%ld",&stui.num);fscanf(fp,"%s",stui.name);fscanf(fp,"%d",&stui.score0);fscanf(fp,"%d",&stui.score1);fclose(fp);for(i=0;i<n;i+)stui.score2=stui.score0*a/100+stui.score1*b/100;6)计算成绩及输出函数/* 函数功能:计算学生试卷分数的总评成绩 */void Total_mark(STU stu,int n,int a,int b)int i;for(i=0;i<n;i+)stui.score2=stui.score0*a/100+stui.score1*b/100;printf("学生:%ldt姓名:%st总评成绩:%dn",stui.num,stui.name,stui.score2);7) 查询成绩函数1(按学号)/* 函数功能:按学号查询学生试卷的总评成绩 */void Sortbynum(STU stu,int n)int number,i;printf("请输入要查找的学生学号:");scanf("%d",&number);for(i=0;i<n;i+)if(stui.num=number)printf("学号:%ldt姓名:%st平时成绩:%dt期末成绩:%dt总评成绩:%dn",stui.num,stui.name,stui.score0,stui.score1,stui.score2);return;printf("抱歉,没有找到!n");for(i=0;i<n;i+)if(stui.num=number)printf("学号:%ldt姓名:%st平时成绩:%dt期末成绩:%dt总评成绩:%dn",stui.num,stui.name,stui.score0,stui.score1,stui.score2);return;printf("抱歉,没有找到!n");8) 查询成绩函数2(按姓名)/* 函数功能:按姓名查询学生试卷的总评成绩 */void Sortbyname(STU stu,int n)char named10;int i;printf("请输入要查找的学生姓名:");scanf("%s",named); for(i=0;i<n;i+)if(strcmp(named,stui.name)=0)printf("学号:%ldt姓名:%st平时成绩:%dt期末成绩:%dt总评成绩:%dn",stui.num,stui.name,stui.score0,stui.score1,stui.score2);return;printf("抱歉,没有找到!n");9) 计算成绩函数1(计算总成绩的及格率和优秀率)/* 函数功能:计算全班学生总评成绩的及格率和优秀率,并按优良中差输出学生人数 */void Count_pass(STU stu,int n)int i,pass_num,t4;float passrate;memset(t,0,sizeof(t);for(i=0;i<n;i+)if(stui.score2<60) t0+;else if(stui.score2<=75) t1+;else if(stui.score2<=85) t2+;else if(stui.score2<=100) t3+;pass_num=t1+t2+t3;passrate=(float)(t1+t2+t3)/n;printf("及格人数:%dn",pass_num);printf("优:%dt良:%dt中:%dt差:%dn",t3,t2,t1,t0);printf("总评成绩及格率:%.2fn",passrate);printf("总评成绩优秀率:%.2fn",(float)t3/n);10) 计算成绩函数2(计算总成绩的平均分和标准差)/* 函数功能:计算学生总评成绩的平均分和标准差 */void Count_average(STU stu,int n)int i;double sum=0,aver,temp=0,standard;for(i=0;i<n;i+)sum=stui.score2+sum;aver=(float)sum/n;for(i=0;i<n;i+)temp=(stui.score2-aver)*(stui.score2-aver)+temp;standard=sqrt(temp/n);printf("总评成绩平均分:%.2ft总评成绩标准差:%.2lfn",aver,standard);11)输出成绩函数/* 函数功能:输出全班学生的所有成绩 */void Show_data(STU stu,int n)int i;for(i=0;i<n;i+)printf("学号:%ldt姓名:%st平时成绩:%dt期末成绩:%dt总评成绩:%dn",stui.num,stui.name,stui.score0,stui.score1,stui.score2);12)导出成绩函数/* 函数功能:将学生所有成绩的列表导出到文本score.txt中 */void Write_data(STU stu,int n)FILE *fp;int i;if(fp=fopen("score.txt","w")=NULL)printf("打开文件失败!n");exit(0);fprintf(fp,"以下各项分别对应学号、姓名、平时成绩、期末成绩和总评成绩:n");for(i=0;i<n;i+)fprintf(fp,"%ldt%st%dt%dt%dn",stui.num,stui.name,stui.score0,stui.score1,stui.score2);fclose (fp);3、系统实现31 全部实现代码#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#include <math.h>#define SIZE 100typedef struct studentlong num;char name10;int score3;STU;int Menu(void);void Read_data(STU stu,int n,int a,int b);void Read_data1(STU stu,int n,int a,int b);void Total_mark(STU stu,int n,int a,int b);void Sortbynum(STU stu,int n);void Sortbyname(STU stu,int n);void Count_pass(STU stu,int n);void Count_average(STU stu,int n);void Show_data(STU stu,int n);void Write_data(STU stu,int n);int main()STU stuSIZE;int n,a,b;char ch;int oh;printf("tt*n");printf("ttt* 欢迎使用 * n");printf("ttt* 学生试卷分数统计系统 * n");printf("tt*n");while (1)ch = Menu();switch (ch)case 1: printf("请输入学生人数n(n<=%d):", SIZE);scanf("%d", &n);printf("请输入学生平时成绩与期末成绩所占总评成绩的的比例(用整数表示,满分100分):n"); scanf("%d%d",&a,&b);printf("以下有两种输入试卷分数的方式:n*1.手动输入试卷分数t2.从student.txt文件中导入试卷分数*n");scanf("%d",&oh);switch (oh)case 1:Read_data(stu,n,a,b);break;case 2:Read_data1(stu,n,a,b);break;default:printf("输入菜单序号错误!");break;case 2:Total_mark(stu,n,a,b);break;case 3:Sortbynum(stu,n);break;case 4:Sortbyname(stu,n);break;case 5: Count_pass(stu,n);break;case 6: Count_average(stu,n);break;case 7:Show_data(stu,n);break;case 8:Write_data(stu,n);break;case 0:printf("tt*n");printf("ttt* 感谢使用 * n");printf("ttt* 学生试卷分数统计系统 * n");printf("tt*n");exit(0);default:printf("输入菜单序号错误!");return 0;/* 函数功能:显示菜单并获得用户键盘输入的选项 */int Menu(void)int itemSelected;printf("n【菜单】n");printf("1.输入记录n");printf("2.计算学生总评成绩n");printf("3.按学号查询成绩n");printf("4.按姓名查询成绩n");printf("5.计算学生及格率和优秀率n");printf("6.计算学生平均分和标准差n");printf("7.成绩列表n");printf("8.导出文件n");printf("0.退出n");printf("请输入你的选择:");scanf("%d", &itemSelected); /* 读入用户输入 */return itemSelected;/* 函数功能:手动输入分数 */void Read_data(STU stu,int n,int a,int b)int i=0;printf("请输入学生的学号、姓名、平时成绩和期末成绩(逗号隔开):n");for(i=0;i<n;i+)scanf("%ld,%s,%d,%d",&stui.num,&stui.name,&stui.score0,&stui.score1);stui.score2=stui.score0*a/100+stui.score1*b/100;/* 函数功能:从文本student.txt中导入试卷分数 */void Read_data1(STU stu,int n,int a,int b)int i;FILE *fp;if(fp=fopen("student.txt","r")=NULL)printf("打开文件student.txt失败!n");exit(0);for(i=0;!feof(fp);i+)fscanf(fp,"%ld",&stui.num);fscanf(fp,"%s",stui.name);fscanf(fp,"%d",&stui.score0);fscanf(fp,"%d",&stui.score1);fclose(fp);for(i=0;i<n;i+)stui.score2=stui.score0*a/100+stui.score1*b/100;/* 函数功能:计算学生试卷分数的总评成绩 */void Total_mark(STU stu,int n,int a,int b)int i;for(i=0;i<n;i+)stui.score2=stui.score0*a/100+stui.score1*b/100;printf("学生:%ldt姓名:%st总评成绩:%dn",stui.num,stui.name,stui.score2);/* 函数功能:按学号查询学生试卷的总评成绩 */void Sortbynum(STU stu,int n)int number,i;printf("请输入要查找的学生学号:");scanf("%d",&number);for(i=0;i<n;i+)if(stui.num=number)printf("学号:%ldt姓名:%st平时成绩:%dt期末成绩:%dt总评成绩:%dn",stui.num,stui.name,stui.score0,stui.score1,stui.score2);return;printf("抱歉,没有找到!n");/* 函数功能:按姓名查询学生试卷的总评成绩 */void Sortbyname(STU stu,int n)char named10;int i;printf("请输入要查找的学生姓名:");scanf("%s",named); for(i=0;i<n;i+)if(strcmp(named,stui.name)=0)printf("学号:%ldt姓名:%st平时成绩:%dt期末成绩:%dt总评成绩:%dn",stui.num,stui.name,stui.score0,stui.score1,stui.score2);return;printf("抱歉,没有找到!n");/* 函数功能:计算全班学生总评成绩的及格率和优秀率,并按优良中差输出学生人数 */void Count_pass(STU stu,int n)int i,pass_num,t4;float passrate;memset(t,0,sizeof(t);for(i=0;i<n;i+)if(stui.score2<60) t0+;else if(stui.score2<=75) t1+;else if(stui.score2<=85) t2+;else if(stui.score2<=100) t3+;pass_num=t1+t2+t3;passrate=(float)(t1+t2+t3)/n;printf("及格人数:%dn",pass_num);printf("优:%dt良:%dt中:%dt差:%dn",t3,t2,t1,t0);printf("总评成绩及格率:%.2fn",passrate);printf("总评成绩优秀率:%.2fn",(float)t3/n);/* 函数功能:计算学生总评成绩的平均分和标准差 */void Count_average(STU stu,int n)int i;double sum=0,aver,temp=0,standard;for(i=0;i<n;i+)sum=stui.score2+sum;aver=(float)sum/n;for(i=0;i<n;i+)temp=(stui.sco

    注意事项

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

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




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

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

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

    收起
    展开