C语言课程设计---学生成绩管理(1).doc_第1页
C语言课程设计---学生成绩管理(1).doc_第2页
C语言课程设计---学生成绩管理(1).doc_第3页
C语言课程设计---学生成绩管理(1).doc_第4页
C语言课程设计---学生成绩管理(1).doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 航 天 大 学 课程设计学 号 班 级 202姓 名 张 小 田 指导教师 王 x 岩 201 2 年 月 日课程设计任务书院系:自动 专业:自动 班级: 202学号: 题目:学生成绩管理1一、课程设计时间201112第1学期第4周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:一个文本文件(file15.txt,由指导教师提供)存储了若干位同学的数学成绩,文件中每行的内容按照顺序为:学号,班级,数学成绩,姓名。请完成以下问题:1 将文件中的内容全部显示到窗体,并统计总人数;2 统计数学成绩的平均分;3 统计各个班级的平均分。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“打印全部,并统计总人数”、“计算总平均分”、“计算各个班的平均分”、“退出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语目录一、需求分析1二、设计分析1三、主要界面截图1四、技术要点5五、个人总结9六、参考文献10七、源程序11151、 需求分析 通过分析可知,此程序是对表格的信息的统计。很明显程序可分为三个部分:即打印并统计数据,计算总平均分,计算各个平均分。在此只须构件若干个函数进行编程设计。二、设计分析1、程序总体结构图当(1)输入值n=1?真 假显示所有学生信息 show() n=2?真 假计算平均分average() n=3?真 假各班平均分aver() n=4?真 假 退出图1程序总体结构图2具体功输出I能函数流程图 (1) 读取学生数据reads读方式打开D盘file15.txt文件不成功真 假打开文件失败循环变量i=0当!feof(fp)时读出一条学生记录到形参数组元素stuireturni+读出记录总数赋给形参*n关闭文件图2. 读取学生数据(2)显示所有学生信息show循环变量i0reads(stu,&n);所有的学生信息如下当in时输出一条学生记录stui 总人数为 输出总人数n图3. 显示所有学生信息(3).计算总平均分average循环变量i=0,总分数temp=0,总平均分 averagereads(stu,&n);当i0时 j=sstrcmp(banj,stui.cla)=0真 假avaj+=stui.math;j!=mrenj+continuem+strcpy(banm,stui.cla)i-renm=1avam=stui.math;breaki-; break当im时输出班级bani,各班平均分avai/reni图5.各班平均分 3、 主要界面截图程序主界面截图4、 技术要点 本程序有主函数和三个自定义的函数组成即main和show,average,aver。这些是整个程序中最核心的部分,以下便是对这些函数的说明;1.定义函数 首先要知道读取数据的文件,定义一个文件指针,把所需的数据读入到程序中,同时定义一个l,每读入一个,l 加一来统计学生数目;具体程序如下:#include#include#includestdlib.h#define N 40struct studentchar num20; char cla10; int math; char name10;void menu();void show();void average();void aver();void main() int n; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n) case 1: show();break; case 2: average();break; case 3: aver();break; case 4: exit(0);break; default: printf(输入错误,请输入列表中存在的序号!n ); void menu()printf(* 数据统计 *); printf(n 1 打印全部,并统计人数); printf( 2 计算总平均分); printf(n 3 计算各个班平均分); printf(n 4 退出);void reads(struct student stuN,int *n) FILE *fp; int i=0; if(fp=fopen(d:file15.txt,r)=NULL) printf(文件打开失败!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%s%s%d%s,stui.num,stui.cla,&stui.math,&); *n=i; fclose(fp);void show()struct student stuN; int i,n; reads(stu,&n);/*从文件中读出所有学生信息*/ printf( *所有的学生信息如下*); for(i=0;in;i+) printf(n%s %s %d %sn,stui.num,stui.cla,stui.math,); printf(n); printf( 总人数为: ); printf(%dn,n); printf(nn);2.计算总平均分求全部同学的数学平均分,只需将所有同学的成绩相加,然后除以总人数,从而得到总平均分数。在此需对单独的模块进行引入,再.定义文件指针,打开读入数据。void average() struct student stuN; int i,n, average,temp=0; reads(stu,&n); for(i=0;i0) for(int j=0;j=m;j+) if(strcmp(banj,stui.cla)=0) avaj+=stui.math; renj+; i-; break; else if(j!=m) continue; else m+; strcpy(banm,stui.cla); renm=1; avam=stui.math; i-; break; for(i=0;i=m;i+) printf(班级%s 平均分%dn,bani,avai/reni);五、个人总结在这几天的课程设计过程中,我学到了一些编写大程序的基本步骤.课设之后我深深的感觉:上学期学习的C语言课,虽然学到很多东西,但是要编写一个长程序,自己脑海中的思路不清晰,其中最主要的主干就明确不下来!我认为那是自己没有更好的理解和应用C语言的一些语句。在几天的课设中,经过自己的努力,我学习并认识到:首先,一个程序必须有一个明确的程序主干和清晰的编程思路,具体下来就是一个大的程序是由各种小程序组成,最后用菜单函数把它组成一个整体,也就实现了所想要的各个功能。此外,在编程的过程中每一个细节都得做好,有时候一个标点或是一个字母都会影响程序的正常运行。我从中感悟做任何事情都要把最基本知识学扎实,要思路缜密,细心些,这样在以后的学习中才会有所的收获。总结:在完成一个大程序过程中要明确思路,找出主干。中心思想明确之后,就要耐心的思考分析问题,踏踏实实的完成每一步的程序(结构体文件函数调用),虽然大程序是非常复杂的,只要我们将事情简单化,分成每一个小部分,这样耐心的去做,到最后就会得到满意的大程序!当看到自己编写的程序正常准确运行的时候,心里有种满足感,成就感!很开心!同时也要感谢老师和同学的帮助!六、参考文献1 谭浩强C程序设计北京:清华大学出版社,2005七、源程序#include#include#includestdlib.h#define N 40struct studentchar num20; char cla10; int math; char name10;void menu();void show();void average();void aver();void main() int n; while(1) menu(); printf(n 请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n) case 1: show();break; case 2: average();break; case 3: aver();break; case 4: exit(0);break; default: printf(输入错误,请输入列表中存在的序号!n ); void menu()printf(* 数据统计 *); printf(n 1 打印全部,并统计人数); printf( 2 计算总平均分); printf(n 3 计算各个班平均分); printf(n 4 退出);void reads(struct student stuN,int *n) FILE *fp; int i=0; if(fp=fopen(d:file15.txt,r)=NULL) printf(文件打开失败!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%s%s%d%s,stui.num,stui.cla,&stui.math,&); *n=i; fclose(fp);void show()struct student stuN; int i,n; reads(stu,&n);/*从文件中读出所有学生信息*/ printf( *所有的学生信息如下*); for(i=0;in;i+) printf(n%s %s %d %sn,stui.num,stui.cla,stui.math,); printf(n); printf( 总人数为: ); printf(%dn,n); printf(nn);void average() struct student stuN; int i,n,average,temp=0; reads(stu,&n); for(i=0;i0) fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论