C语言的学生成绩管理整理.docx
- 文档编号:8230493
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:18
- 大小:103.78KB
C语言的学生成绩管理整理.docx
《C语言的学生成绩管理整理.docx》由会员分享,可在线阅读,更多相关《C语言的学生成绩管理整理.docx(18页珍藏版)》请在冰豆网上搜索。
C语言的学生成绩管理整理
一、课程设计的目的与要求3
二、题目说明4
三、总体设计6
四、详细说明9
五、遇到的问题与解决方案15
六、课程设计总结16
七、参考文献18
附录(源代码程序)19
一、课程设计的目的与要求
1.1课程设计目的
(1)为培养学生严谨的工作态度,锻炼学生编写文档的能力。
进一步掌握和利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;
初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图或N-S图表示算法;掌握书写程设计开发文档的能力(书写课程设计报告);
(2)熟练掌握C语言课程中所学的理论知识;
C语言是在国内外广泛使用的一种计算机语言。
它既有高级语言的特点,又具有汇编语言的特点。
它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛。
学习使用C语言程序的目的是掌握程序设计的思路,学会用计算机语言编写程序正确处理算法和语法的关系算法是程序的核心、是灵魂,语法是外壳、是工具。
通过课程设计,我们要熟练的掌握C语言的算法、语言、函数的调用、循环的使用、数组的运用等。
(3)通过综合C语言的基本知识来解决实际问题;
C语言中与许多的东西,像:
数据类型、运算符、表达式、程序设计结构、数组与函数调用。
其中C语言最难和最经典的地方就是循环,(while和for的嵌套)运用while,for,switch和if的循环嵌套,我们可以实现现实中课程信息管理、图书信息管理、学生信息管理、商品信息管理等。
C语言还具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。
它是数值计算的高级语言。
(4)加强分析和解决问题的能力。
通过这次的课程设计,能加强我们对程序设计的思考、设计、分析、理解和解决问题的能力。
对于我们初学者来说,主要是学习设计的方法,进行程序设计的基本训练为将来进一步学习打下基础。
课程设计不能之掌握概念,还要动手编程、上机调试运行。
只有自己动手,才能学的更多。
1.2课程设计要求
(1)对系统进行功能需求分析;
(2)设计合理的数据结构和系统框架;
(3)编程简练,程序功能齐全,能正确运行;
(4)说明书、流程图要清楚;
(5)课题完成后必须按要求提交课程设计说明书;
二、题目说明
题目:
对学生成绩进行管理,通过编程,实现学生成绩的输入输出,进一步处理等功能。
功能要求:
该程序用字符界面输入10名学生的分数,学号,姓名,实现求其各科目的平均分,最值,根据总平均分排序进行降序输出,并且能够通过输入学生姓名查询学生有关信息。
界面用字符实现。
2.1程序开发背景
通过C语言,我们可以开发许多新的工程,实现智能操作化,科技化,实现低投入,高产出的良好现象。
现在我国许多事物操作还停留在纸介质层面上,这样的机制已经不能适应时代的发展,因为他浪费许多人力物力资源,在信息时代这种操作方法必然将被计算机为基础的信息管操作方法所取代。
简单的说,学生成绩管理的功能主要是应用于教育系统,完成对日常的教案以及学生的计算机化得管理。
为了使教案变得轻松,高效率,我们需要实现学生成绩的信息化管理。
通过学生的各科成绩,我们能够得出其他方面的信息,如学生成绩的平均分,最高分,最低分,实现学生成绩的排序等等。
2.2开发工具介绍
C语言是CombinedLanguage(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
早期的C语言主要是用于UNIX系统。
由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。
成为当代最优秀的程序设计语言之一。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
C语言具有以下特点:
、
C语言是结构式语言
结构式语言的显著特点是代码级数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
C语言功能齐全
C语言具有各种各样的数据类型,并引入了指针概念,可是程序效率更高,另外C语言具有强大的图形功能,支持多种显示器和驱动。
C语言适用范围大
C语言还有一个突出的特点就是适合于多种操作系统。
在C语言中main是主函数的函数名,表示这是一个主函数。
每一个C源程序都必须有,且只能有一个主函数(main函数)。
函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。
printf函数是一个由系统定义的标准函数,可在程序中直接调用。
此外,C语言还具有效率高,可移植性强等特点。
因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。
C语言的优点
(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。
(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。
C语言的缺点
C语言的缺点主要表现在其语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。
从应用的角度,C语言比其他高级语言较难掌握。
三、总体设计
3.1系统结构图
学生成绩管理系统是为了方便用户根据需要对学生的各科成绩信息进行管理的系统。
在如今的现代化信息理念下,一个学生管理系统在国际各大高校的教育机构中是一个必不可少的应用程序,他可以方便的对学生信息进行查询,排序等功能,以及多功能处理等。
大大提高工作效率。
学生成绩管理系统包括人员信息的输入,信息查询,排序,求平均分,最值等操作。
内容比较庞大复杂。
通过以上说明,我们可以总结得到如下的系统结构图;
图3-1程序基本框架结构图
3.2软件流程图;
图3-2
图3-3
图3-4
图3-2-4
四、详细说明
4.1系统实施
1.考虑到学生成绩的输入,我们需要实现学生成绩的界面化,我们随机输入几组学生成绩,来实现学生成绩的输入功能:
功能实现:
switch(ch)
{
case'1':
printf("Enteraddstdudents'scores.\n")。
for(i=0。
i i++) { printf("inputnameNumberscore(Math,English,Java,Computer).\n")。 scanf("%s",stu[i].name)。 scanf("%d",&stu[i].Num)。 for(j=0。 j j++) scanf("%d",&stu[i].score[j])。 } 有关截图: 图4-1 2.学生成绩输入后,我们需要将其进行具体的功能处理,下面我们就以实现学生成绩的平均成绩的统计进行编程: 功能实现: case'2': printf("Enterdisplaystudents'average.\n")。 for(i=0。 i i++) { Score[i]=0。 for(j=0。 j j++) Score[i]=Score[i]+stu[i].score[j]。 stu[i].avel=(Score[i]/y)。 } for(i=0。 i i++) { m=i。 for(j=i+1。 j j++) { if(stu[m].avel m=j。 } if(i! =m) { temp=stu[i].avel。 stu[i].avel=stu[m].avel。 stu[m].avel=temp。 } } for(N=0。 N N++) { printf("name: %s",stu[N].name)。 printf("Number: %d",stu[N].Num)。 printf("Math: %d",stu[N].score[0])。 printf("English: %d",stu[N].score[1])。 printf("Java: %d",stu[N].score[2])。 printf("Computer: %d",stu[N].score[3])。 printf("ave: %6.2f\n",stu[N].avel)。 } break。 相关截图。 图4-2 3.学生成绩统计后,我们需要对其进行具体的排序,找出学生成绩中的不同等级,下面我们实现找最值的功能: 功能实现: case'3': printf("Entersubjects'aver.max.min.\n")。 for(i=0。 i i++) { f1[i]=0。 for(j=0。 j j++) f1[i]=f1[i]+stu[j].score[i]。 f2[i]=f1[i]/x。 printf("Subjects: %6.2f",f2[i])。 } n=0。 for(i=1。 i<4。 i++) { if(f2[n]>f2[i]) n=i。 } printf("min.: %-6.2f",f2[n])。 j=0。 for(i=1。 i<4。 i++) { if(f2[j] j=i。 } printf("Max.: %-6.2f",f2[j])。 break。 有关截图: 图4-3 4.学生成绩统计好后,我们也要对其进行查询,此时,我们只要输入学生姓名就可以对其信息进行查询: 功能实现: case'4': printf("Enterdemandstudents'scores.\n")。 printf("Inputname: ")。 scanf("%s",nam)。 for(i=0。 i<10。 i++) { N=strcmp(stu[i].name,nam)。 if(N==0) { printf("\nname: %s,Number: %d,Math: %d,English: %d,Java: %d,Computer: %d,ave: %-6.2f\n",stu[i].name,stu[i].Num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].avel)。 break。 } printf("NameError! ")。 break。 } case'0': printf("Exitsystem.\n")。 exit(0)。 defualat: printf("Error! ")。 } 有关截图: 图4-4 五、遇到的问题与解决方案 1、一开始不清楚应该把姓名和成绩定义为一维数组还是二维数组,导致在运行过程中出现很多语法错误。 解决方法: 经过咨询老师,问题得以解决。 2、for(i=0。 i i++)经常写成for(i=0,i 解决方法: 编程时候需要仔细和耐心。 并记住易错的地方,输入时不应该太快然后仔细检查。 3、对一些课本中的知识不熟悉,导致刚开始编程的时候很难下手。 解决方法: 重新掌握不熟悉的知识并收集相关资料,通过课程设计,我们要熟练的掌握C语言的算法、语言、函数的调用、循环的使用、数组的运用等。 4、由于马虎经常漏掉{、}、;等等。 解决方法: 时刻提醒自己认真仔细一点,病记住易错、易漏的地方,而且要仔细认真检查。 5、在应用switch语句时经常会出现遗漏现象,而且表达式的类型不明确,导致出现错误。 解决方法: 经过翻阅书本,发现错误。 六、课程设计总结 我觉得,这次课程设计让我对C语言产生了一定的兴趣。 通过这个课设,我才知道自己其实也可以完成一些编程。 课程设计刚开始的时候,我们都不知道该如何从何入手,编的错误很多很多,不过在一次又一次的调试后,慢慢的一些明白了,心里也有一点小小的成就感。 通过这次的课程,我学了不少东西,也让我对编程更有兴趣,对自已一开始不好好学感到有点遗憾,但以后一定会好好努力。 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术的发展,当今计算机应用在生活中可以说得是无处不在。 因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 虽然课程设计只有短短的几天,但是我发现我学到了很多的知识。 理论和实践的相结合是学习最有效的方法。 虽然理论我学的不怎么样,但我觉得实践可以弥补一些不足。 在设计的过程中发现自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,掌握了一些“新”的知识。 此次课程设计,我感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 本次C语言的课程设计让我对C语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。 本次课程设计中遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。 在同学的帮助下,我顺利的结束了本次课程设计,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。 此次课程设计涉及到的相关基础知识: if-else条件结构、switch选择结构、for循环结构、自定义函数、结构体等,此次课程设计体会: 综合实验的难度比较大,要求在掌握C语言知识的基础上,能够编写程序,并且能够根据编译提示修改程序中的错误,调试运行程序,最终还要检验是否能够实现实验任务中的功能要求。 此次课程设计不足: 在模块化程序设计方面所学到的知识还很浅薄,比如模块的划分、模块的组建等,今后还要继续努力。 七、参考文献 【1】《实用C语言程序设计教程》李金祥等编中国电力出版社2010 【2】《C语言程序开发范例宝典》作者: 王娣,安剑,孙秀梅 【3】《C语言范例开发大全》作者: 刘艳飞,迟剑,房健等 网址1: 网址2: 附录(源代码程序) #include #include #include #include intNum。 charname[10]。 intscore[10]。 floatavel。 typedefstructstudent { charname[10]。 intscore[10]。 intNum。 floatavel。 }STUDENT。 voidPrintMenu() { printf("\n#==============================================#\n")。 printf("#=====Systemofmannagingstudents'scores===============#\n")。 printf("#--------------------------------------------------------------#\n")。 printf("#===============================================#\n")。 printf("#1.Addstudents'scores#\n")。 printf("#2.Displytheaverageofscores#\n")。 printf("#3.Theaver.max.minofthesubjects#\n")。 printf("#4.Demandstudent'sscores#\n")。 printf("#0.Exit#\n")。 printf("pleaseswitch0-4toenter.")。 } main() { intm,n,i,j,x,y,N。 floatf1[10],f2[10],temp,f3[10]。 charch,nam[10]。 floatScore[10]。 STUDENTstu[10]。 clrscr()。 printf("inputPeopleNumber,SbujectNumber,1: \n")。 scanf("%d\n%d\n",&x,&y)。 while (1) { PrintMenu()。 scanf("%c",&ch)。 switch(ch) { case'1': printf("Enteraddstdudents'scores.\n")。 for(i=0。 i i++) { printf("inputnameNumberscore(Math,English,Java,Computer).\n")。 scanf("%s",stu[i].name)。 scanf("%d",&stu[i].Num)。 for(j=0。 j j++) scanf("%d",&stu[i].score[j])。 } case'2': printf("Enterdisplaystudents'average.\n")。 for(i=0。 i i++) { Score[i]=0。 for(j=0。 j j++) Score[i]=Score[i]+stu[i].score[j]。 stu[i].avel=(Score[i]/y)。 } for(i=0。 i i++) { m=i。 for(j=i+1。 j j++) { if(stu[m].avel m=j。 } if(i! =m) { temp=stu[i].avel。 stu[i].avel=stu[m].avel。 stu[m].avel=temp。 } } for(N=0。 N N++) { printf("name: %s",stu[N].name)。 printf("Number: %d",stu[N].Num)。 printf("Math: %d",stu[N].score[0])。 printf("English: %d",stu[N].score[1])。 printf("Java: %d",stu[N].score[2])。 printf("Computer: %d",stu[N].score[3])。 printf("ave: %6.2f\n",stu[N].avel)。 } break。 case'3': printf("Entersubjects'aver.max.min.\n")。 for(i=0。 i i++) { f1[i]=0。 for(j=0。 j j++) f1[i]=f1[i]+stu[j].score[i]。 f2[i]=f1[i]/x。 printf("Subjects: %6.2f",f2[i])。 } n=0。 for(i=1。 i<4。 i++) { if(f2[n]>f2[i]) n=i。 } printf("min.: %-6.2f",f2[n])。 j=0。 for(i=1。 i<4。 i++) { if(f2[j] j=i。 } printf("Max.: %-6.2f",f2[j])。 break。 case'4': printf("Enterdemandstudents'scores.\n")。 printf("Inputname: ")。 scanf("%s",nam)。 for(i=0。 i<10。 i++) { strcmp(stu[i].name,nam)。 if(v==0) { printf("\nname: %s,Number: %d,Math: %d,English: %d,Java: %d,Computer: %d,ave: %-6.2f\n",stu[i].name,stu[i].Num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].avel)。 break。 } printf("NameError! ")。 break。 } case'0': printf("Exitsystem.\n")。 exit(0)。 defualat: printf("Error! ")。 } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩 管理 整理