C语言课程设计学生成绩管理.docx
- 文档编号:11546349
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:20
- 大小:247.80KB
C语言课程设计学生成绩管理.docx
《C语言课程设计学生成绩管理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理.docx(20页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生成绩管理
目录
1前言1
2需求分析1
2.1课程设计目的1
2.2课程设计任务1
2.3设计环境1
2.4开发语言1
3分析和设计1
3.1模块设计1
3.2系统流程图3
3.3主要模块的流程图4
4具体代码实现9
5课程设计总结13
5.1程序运行结果13
5.2课程设计体会16
参考文献17
致谢18
1前言
当今时代,日新月异,瞬息万变。
时代在进步,社会在变迁,科技在发展。
随着人们生活水平的提高,计算机的发展也是非常迅速。
现今,计算机已经深入到我们社会的各个领域,在各领域中都发挥着越来越重要的作用。
计算机的使用,已不再局限于科学计算,在我们的生活中就可以随处看到其身影,它与我们的生活息息相关。
同时,通过计算机来对各类信息进行管理已经成为一种高效、快捷的方式。
本次课程设计是要求用数组存放10个学生的5门课成绩,使设计出来的程序具有可以用函数求每个学生的平均分、每门课的平均分、平均分的方差、以及找出每门课最高分所对应的学生等功能。
2需求分析
2.1课程设计目的
学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2.2课程设计任务
输入10个学生5门课的成绩,用函数求:
(1)每个学生平均分;
(2)每门课的平均分;(3)找出每门课最高分所对应的学生;(4)求平均分方差:
σ=(∑xi2)/n-((∑xi)/n)2,xi为某一学生的平均分。
要求:
用数组存放10个学生5门课成绩。
2.3设计环境
(1)WINDOWS2000/2003/XP/7/Vista系统
(2)VisualC++或TC集成开发环境
2.4开发语言
C语言
3分析和设计
3.1模块设计
定义结构体类型ypedefstructstudent表示学生信息(包括:
学号、姓名、5门课的成绩),并将其重新定义为STUDENT,用来存放N个学生的信息,N为10。
如下所示:
#defineN10
typedefstructstudent
{intnum;
charname[20];
intscore[5];
floatavg;
}STUDENT;
程序中所用到的函数有:
1、定义一个输入函数input(),通过两个for循环语句,输入10个学生的信息存入结构体数组s中中。
2、定义一个输出函数output(),通过两个for循环语句,输出10个学生的学号、姓名以及5门功课的成绩。
3、定义一个函数avg_stu(),求每个学生的平均分。
定义i,j,s[i].avg=0,通过两个for循环语句和语句{s[i].avg+=s[i].score[j];s[i].avg=s[i].avg/5.0;},输出每个学生的平均分。
4、定义一个函数avg_course(),求每门课的平均分。
定义i,j,sum=0,通过两个for循环语句和语句{sum+=s[j].score[i];s[j].avg=sum/10.0;},输出每门课的平均分。
5、定义一个函数zgf(),用来找出每门课最高分所对应的学生。
定义i,j,m=0,通过两个for循环语句语句和判断语句if(s[m].score[i]
6、定义一个函数jfc,用来求均方差并返回其值。
定义a,b,i,jfc,且a=0,b=0,通过for循环语句和语句{a=a+pow(s[i].avg,2);b=b+s[i].avg;},算出平均分的总值,再通过语句jfc=a/N-pow(b/N,2),求出均方差,最后通过语句returnjfc,返回其值。
3.2系统流程图[5]
图3.1系统流程图
3.3主要模块的流程图
图3.2输入流程图
图3.3输出流程图
图3.4求每个学生平均分的流程图
图3.5求每门课程平均分的流程图
图3.6求每门课最高分所对应的学生的流程图
图3.7求平均分方差流程图
4具体代码实现
#include"math.h"
#include"string.h"
#include"stdlib.h"
#defineN10
typedefstructstudent
{
intnum;
charname[20];
intscore[5];
floatavg;
}STUDENT;
/**********函数声明**********/
voidinput(STUDENTs[N]);/*输入10个学生信息存入结构体数组s中*/
voidoutput(STUDENTs[N]);/*输出学生信息*/
voidavg_stu(STUDENTs[N]);/*求每个学生的平均分*/
voidavg_course(STUDENTs[N]);/*求每门课的平均分*/
voidzgf(STUDENTs[N]);/*找出每门课最高分所对应的学生*/
floatjfc(STUDENTs[N]);/*求均方差并返回其值*/
/**********主函数**********/
voidmain()
{STUDENTs[N];floatt;intx;
printf("********简单的学生成绩管理程序1********\n");/*输出菜单*/
printf("1.输入学生信息存入结构体数组中\n");
printf("2.输出学生信息\n");
printf("3.求每个学生的平均分\n");
printf("4.求每门课的平均分\n");
printf("5.找出每门课最高分所对应的学生\n");
printf("6.求均方差\n");
printf("0.退出\n");
while
(1)
{printf("\n\n请选择:
");
scanf("%d",&x);
switch(x)
{case1:
input(s);break;
case2:
output(s);break;
case3:
avg_stu(s);break;
case4:
avg_course(s);break;
case5:
zgf(s);break;
case6:
t=jfc(s);printf("jfc=%f\n",t);break;
case0:
exit(0);
default:
printf("输入错误,请重新选择!
\n");
}
}
}
/***********子函数**********/
voidinput(STUDENTs[N])/*输入10个学生信息存入结构体数组s中*/
{
inti,j;
for(i=0;i { scanf("%d%s",&s[i].num,s[i].name); for(j=0;j<5;j++) scanf("%d",&s[i].score[j]); } } voidoutput(STUDENTs[N])/*输出学生信息*/ { inti,j; for(i=0;i { printf("\n%d%s\t",s[i].num,s[i].name); for(j=0;j<5;j++) printf("%d\t",s[i].score[j]); } } voidavg_stu(STUDENTs[N])/*求每个学生的平均分*/ { inti,j; for(i=0;i { s[i].avg=0; for(j=0;j<5;j++) s[i].avg+=s[i].score[j]; s[i].avg=s[i].avg/5.0; printf("%.2f\n",s[i].avg); } } voidavg_course(STUDENTs[N])/*求每门课的平均分*/ { inti,j;floatsum; for(i=0;i<5;i++) { sum=0; for(j=0;j sum+=s[j].score[i]; s[j].avg=sum/10.0; printf("%.2f\n",s[j].avg); } } voidzgf(STUDENTs[N])/*找出每门课最高分所对应的学生*/ { inti,j,m; for(i=0;i<5;i++) { m=0; for(j=0;j if(s[m].score[i] m=j; printf("%d%s\n",s[m].num,s[m].name); } } floatjfc(STUDENTs[N])/*求均方差并返回其值*/ { inta,b,i;doublejfc; a=0;b=0; for(i=0;i { a=a+pow(s[i].avg,2); b=b+s[i].avg; } jfc=a/N-pow(b/N,2); returnjfc; } 5课程设计总结 5.1程序运行结果 在对程序的调试过程中,我遇到了很多的问题,例如程序总是无法输出我想要结果。 我烦恼着,幸好在请教组长后,成功地解决了问题。 在整个过程中,我进一步巩固了所学知识,锻炼了自己的操作能力,这是一个难得的机会。 当看到自己所编写的程序,在经过反复的修改后,终于运行出来,那种满足感难以用语言开表达。 同时,我也发现在发现问题与解决问题的过程中,我深刻感觉到一个程序要具备健全性是很重要的。 一个程序具备了健全性,才有可能全面解决我们所需解答的问题。 因此我们在编程时,应该考虑到程序在解决具体问题上的直观性与全面性,也就是说要尽可能地多加一些注释,加强程序的可读性,这样能大大提高了我们的进展,也便于他人了解程序的层次及功能。 我们所编写的程序具体要求我们输入一条完整的记录其中包括: (1)10个学生信息的输入和输出 图5.110个学生的信息输入和输出 (2)求每个学生的平均分和每门课的平均分 图5.2求每个学生的平均分和每门课的平均分 (3)找出每门课最高分所对应的学生 图5.3找出每门课最高分所对应的学生 (4)求平均分方差并返回其值 图5.4求平均分方差并返回其值 5.2课程设计体会 通过本次课程设计,我的感慨颇多,可谓是受益匪浅。 首先,我深刻感受到平时在书本上看似十分简单的理论知识,在真正派上用场的时候,当中所包涵学问是非常多的。 在完成本次课程设计的过程中,我遇到了很多问题。 比如: 程序编写,画流程图等。 从中,我了解到自身还存在很多不足。 其次,只有理论知识,没有实践经验是不可能成功的编写出出色的程序来的。 理论与实践之间存在着相当远的距离,我们需要在各个方面进行努力,使理论与实践完美结合起来。 我们都应该知道,理论是实践的基础,实践是对所学知识的巩固与提高,只有理论与实践相结合才能算是对知识进行了真正掌握。 我们不可以只注重理论知识的学习,而忽视了实际操作,更不能只重视实践,而忘记了理论知识汲取,只有将两者完美结合,才能使我们自己成为一个出色的人。 再者,编写程序,设计思路是很重要的。 看到程序任务,然后思考,在脑海中有一个清晰的大致设计思路,再进行程序编写和完善。 这是我们编程的基本步骤,但是没有一个人能对一个问题考虑得面面俱到,因此我们在设计程序时,不要固步自封,多与他人交流、探讨,通过大家反覆讨论出来的设计思想将是清晰的、全面的,这是一个好的程序最基本的要求,也是我们成功的决定性因素。 在本次课程设计过程中,我遇到了不少问题,幸亏有同学的帮助和老师的指导,我最终才能顺利完成课程设计。 所以不要吝啬你的声音,也不要犹豫,遇到不懂的,就主动的向老师和同学请教吧,你会发现很多乐趣,这是我的亲身体会。 最后,通过本次的课程设计,我看到了自己的很多不足,为此我将在往后的学习过程注意以下几点: (1)、认真学习理论知识,课后进行巩固,为实际操作打下结实的基础; (2)、在课余时间里,多进行实际操作,熟练程序的编写和输入; (3)、在编程过程中养成周密、严谨的思维习惯; (4)、认真学习课本知识,掌握重点知识理论,并学会灵活运用。 我相信只要我在往后的学习中注意以上几点,我的编程能力将一定会有所提升。 当今社会是一个竞争激烈的社会,我们要想生存下去,就要不断的总结,不断的学习,弥补自身的不足,提升自己的能力,因此我们要珍惜现在学习时光,尽可能的充实自我,完善自我。 总之,在这次的课程设计中,我付出了很多,也收获了很多。 虽然我的课程设计完成得并不是很好,但在这短短的两周时间里,我获得了很多,也对程序所能实现的功能有了进一步的了解。 如果下次还有机会,我相信自己能够更出色的完成任务。 参考文献 [1]黄同成,周红波.程序设计基础教程(C语言)[M].湖南人民出版社,2011. [2]黄同成,黄磊.程序设计实践教程(C语言)[M].湖南人民出版社,2011. [3]谭浩强.C程序设计(第三版)[M].北京: 清华大学出版社,2005. [4]成娅辉老师的C语言课程设计模板 [5]XX网页, 致谢 在本次的课程设计过程中,我得到了很多人的帮助,在此我对他们致以真诚的感谢。 首先,我需要感谢学校提供的实践机会以及实验环境,让我们可以静心的做设计,既考察了我们的知识,又锻炼了我们的能力,并且还提供了很好的交流平台,让我们可以彼此探讨、彼此学习,丰富了我们的知识,充实了我们的生活。 然后,我要感谢老师们,他们不仅教给我们丰富的理论知识,而且悉心指导我们,不厌其烦的为我们修改程序,解决问题。 当我们有困难时,老师总会毫不犹豫地伸出手来帮助我们,为我们解决疑惑。 同时当我们在做设计机试的时候,我们可以看到老师总会陪在我们身边,给我们指出错误并指导我们修改,帮助我们顺利的解决问题,为我们顺利完成课程设计打下了坚实的基础。 最后,我要感谢我的室友和我组组长,在我整个课程设计过程中,她们给了我最多的帮助,可以说因为有她们,我最终才能顺利完成课程设计。 窗体顶端
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 成绩 管理