

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录目录 1一、课程设计的目的与要求 11.1 课程设计目的: 11.2 课程设计要求 2二、题目说明 32.1 程序开发背景 32.2 开发工具介绍 3三、总体设计 43.1 系统结构图 43.2 模块流程图 53.2 模块流程图 5四、详细说明 74.1 成绩添加模块 74.2 成绩显示模块 84.3 按姓名查找模块 94.4 成绩排序模块 104.5 成绩比较模块 10五、遇到的问题和解决方法 11六、课程设计总结 12七、参考文献 12 附录(源程序代码) 12、课程设计的目的与要求1.1课程设计目的 :1. 为培养学生严谨的工作态度,锻炼学生编写文档的能力。进一步掌握和利用 C 语言
2、进行程设计的能力;进一步理解和运用结构化程设计的思想和方 法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流 程图或 N-S 图表示算法;掌握书写程设计开发文档的能力(书写课程设计报告);2、熟练掌握 C 语言课程中所学的理论知识;C 语言是在国内外广泛使用的一种计算机语言。它既有高级语言的特点,又具有汇编语言 的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写 不依赖计算机硬件的应用程序。因此,它的应用范围广泛。学习使用C 语言程序的目的是掌握程序 设计的思路,学会用计算机语言编写程序正确处理算法和语法的关系算法是程序的
3、核心、是灵魂, 语法是外壳、是工具。通过课程设计,我们要熟练的掌握 C 语言的算法、语言、函数的调用、循环 的使用、数组的运用等。3 、通过综合 C 语言的基本知识来解决实际问题;C 语言中与许多的东西,像:数据类型、运算符、表达式、程序设计结构、数组与函数调用。其中 C 语言最难和最经典的地方就是循环,(while 和 for 的嵌套)运用 WHILE,FOR,SWITCH和 if 的循环嵌套,我们可以实现现实中课程信息管理、图书信息管理、学生信息管理、商品信息 管理等。 C 语言还具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软 件,三维,二维图形和动画。它是数值计算
4、的高级语言。4 、加强分析和解决问题的能力。 通过这次的课程设计,能加强我们对程序设计的思考、设计、分析、理解和解决问题的能 力。对于我们初学者来说,主要是学习成长设计的方法,进行程序设计的基本训练为将来进一步学 习打下基础。课程设计不能之掌握概念,还要动手编程、上机调试运行。只有自己动手,才能学的 更多。1.2课程设计要求1.课程设计步骤:( 1)对系统进行功能需求分析;( 2)设计合理的数据结构和系统框架;( 3)编程简练,程序功能齐全,能正确运行;( 4)说明书、流程图要清楚;( 5)课题完成后必须按要求提交课程设计说明书; 在课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实
5、的工作态度对待课程设 计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房 上机,并接受教师的检查。认真编写课程设计报告。课程设计可以由 24 名同学合作完成一个课题。全体成员应共同协作完成选题,确定设计思 想,进行功能模块划分,然后由组长为各成员分配任务。整个设计期间,组长负责协调工作。各小 组成员明确自己的任务后,应独立完成各自模块的设计、编码和调试,独立完成课程设计说明书。 小组成员要理解同组其他成员设计的模块,熟练操作本组设计。2. 考核方式和成绩评定考核分为两个部分:(1)程序运行情况:按规定时间到机房运行程序,由老师检查运行情况2)课程设计报告:是
6、否按规定书写课程设计要求的各项内容课程设计成绩采用百分制: 100%=平时( 20)上机检查( 30%) +课程设计报告( 50%)二、题目说明2.1程序开发背景计算机已经成为我们学习和工作的得力助手,它被应用于许多领域,之所以如此,主要有以下几 个方面的原因:首先,计算机可以替代人工进行许多繁杂的劳动;其次,计算机可以节省许多资 源;第三计算机可以大大提高人们的工作效率;第四,计算机可以保证文档的安全.通过 C 语言,我们可以开发许多新的工程,实现智能操作化,科技化,实现低投入,高产出的良好 现象。现在我国学生成绩管理还停留在纸介质层面上,这样的机制已经不能适应时代的发展,因为 他浪费许多人
7、力物力资源,在信息时代这种管理方法必然将被计算机为基础的信息管理方法所取 代。2.2开发工具介绍C 语言是 Combined Language (组合语言)的中英混合简称。是一种计算机程序设计语言。它 既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程 序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广 泛,不仅仅是在软件开发上,而且各类科研都需要用到C 语言,具体应用比如单片机以及嵌入式系统开发。早期的 C 语言主要是用于 UNIX 系统。由于 C 语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C 语言开始进入
8、其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设 计语言之一。C 语言的特点:C 语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C 语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结 构。它还可以直接访问内存的物理地址,进行位 (bit) 一级的操作。由于 C 语言实现了对硬件的编 程操作,因此 C 语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应 用软件的开发。C 语言中 :函数 (main 函数 ) 。函数调用语句, printf 函数的功能是把要输出的内容
9、送到显示器去显示。 printf 函数是一个由系统定义的标准函数,可在程序中直接调用。此外, C 语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上, 从而形成了多种版本的 C 语言。优点 :main是主函数的函数名,表示这是一个主函数。每一个C 源程序都必须有,且只能有一个主(1) C 语言灵活性好,效率高,可以接触到软件开发比较底层的东西。(2) 微软的 MFC 库博大精深,学会它可以让随心所欲地进行编程。(3) VC 是微软制作的产品,与操作系统的结合更加紧密。缺点 :对使用者的要求比较高,既要具备丰富的C 语言编程经验,又要具有一定的WINDOW 编程基础,它的过于
10、专业使得一般的编程爱好者学习起来会有不小的困难。三、总体设计3.1系统结构图学生成绩管理系统是为了方便用户根据需要对学生的各科成绩信息进行管理的系统。在如今的现代化信息理念下,一个学生管理系统在国际各大高校的教育机构中是一个必不可少的应用程序,它可以方便的对学生信息进行查询,比较,排序等功能,大大提高工作效率。学生成绩管理系统包括人员信息的录入,信息查询,比较,排序等操作。内容比较庞大复杂。通过以上说明,我们可以总结得到如下的系统结构图;图3-13.2模块流程图3.2.1 成绩添加和打印模块322 查看成绩模块图3-33.2.3 成绩排序模块图3-2结束函数参数:结构体指针 head 指向存储
11、学生信息的结构体数组的首地址。整形变量 n,表示学生人数;整形变量 m,表示考试科目。图 4-1int AppendScore(STU *head,int n,int m)int j 。STU *p 。char ch 。for(p=head+n 。 pnumber) 。printf(Input name:) 。scanf(%s,p-name) 。for(j=0 。jscore+j) 。n+ 。printf(Do you want to append a new node(Y/N)?) 。scanf(%c,&ch) 。if(ch=n|ch=N)return n 。定义结构体指针 head
12、,存储学生信息。利用for 循环依次输入学生的学号、姓名和成绩等信息。4.2成绩显示模块PrintScore 函数:功能简介:打印学生的学号、姓名和成绩等信息;函数参数:结构体指针 head 指向存储学生信息的结构体数组的首地址。整形变量 n,表示学生人数;整形变量 m,表示考试科目。图 4-2void PrintScore(STU *head,int n,int m)STU *p 。int i 。char str100=0,temp4 。strcat(str,Number name) 。for(i=1 。 i=m 。 i+)strcat(str,Score) 。itoa(i,temp,10)
13、 。strcat(str, ) 。strcat(str, average) 。printf(%s,str) 。for(p=head 。 pnumber,p-name) 。for(i=0。iscorei) 。printf(%9.2fn,p-average) 。定义结构体变量 head 储存学生信息,利用 for 循环依次输出学生的学好、姓名和成绩等信息。4.3按姓名查找模块SearchScort 函数:功能简介:按学号查找学生成绩并显示查找结果;函数参数:结构体指针head 指向存储学生信息的结构体数组的首地址。整形变量 n,表示学生人数;整形变量 m,表示考试科目。图 4-3void Sear
14、chScore(STU *head,int n,int m)int name,findNo 。printf(please Input the name you want to search:) 。scanf(%c,&name) 。findNo=SearchName(head,name,n) 。if(findNo=-1)printf(nNot found!n) 。elsePrintScore(head+findNo,1,m) 。输入要查 找的学生的姓名,进入系统,定义 findNo,findNo=SearchName(head,name,n) ,如果 findNo=-1, 那么这显示没有
15、找到,如果 findNo 不等于 -1,则说明有,调用 PrintScore 函数,输出要 查找的学生的成绩。4.4成绩排序模块SortScore 函数:功能简介:用选择法按平均成绩由高到低排序;函数参数:结构体指针 head 指向存储学生信息的结构体数组的首地址。 整形变量 n,表示学生人数。图 4-4void SortScore(STU *head,int n)int i,j,k 。STU temp 。for(i=0 。 in-1 。 i+)k=i 。for(j=i 。 javerage(head+k)-average)k=j 。if(k!=i)temp=*(head+k) 。*(head
16、+k)=*(head+i) 。*(head+i)=temp 。定义 i 、j 、k,i 是指向学生人数的外循环, k、j 是指向学生人数的内循环。 k=i 时,如果 j 指向 的数比 k 指向的那个数大,那么k=j.而 k!=i 时,i 指向的外循环的数与k 指向的内循环的数相等。实现排序。4.5成绩比较模块ReadScore 函数:功能简介:结合学生的各科成绩,计算每科的平均成绩、最高分和最低分。函数参数:结构体指针head 指向存储学生信息的结构体数组的首地址。整形变量 n,表示学生人数;整形变量 m,表示考试科目。图 4-5void ReadScore(STU *head,int n,i
17、nt m)STU *p 。int i,k 。for(p=head 。 psum1=0 。 for(i=0 。 isum1=p-sum1+p-scorei 。 p-average1=(float)p-sum1/n 。k=0 。i=1 。if(p-scoreip-scorek)k=i 。p-max=p-scorei 。定义结构体指针 p,p 是指向考试科目的外循环,定义 i,i 是指向学生人数的内循环。利用这两个 循环,对各科成绩进行统计与比较,计算出各科成绩的总分,继而计算出各科成绩的平均分,以及 各科成绩的最高分和最低分。五、遇到的问题和解决方法1、 For(i=0。in。i+)经常写成 Fo
18、r(i=0,in,i+),导致运行错误。解决方法:编程时候需要仔细和耐心。并记住易错的地方,输入时不应该太快然后仔细检查。2.对一些课本中的知识不熟悉,导致刚开始编程的时候很难下手。 解决方法:重新掌握不熟悉的知识并收集相关资料,通过课程设计,我们要熟练的掌握 C语言的算法、语言、函数的调用、循环的使用、数组的运用等。3、由于马虎经常漏掉、;等等。 解决方法:时刻提醒自己认真仔细一点,病记住易错、易漏的地方,而且要仔细认真检查。4、有些程序太过复杂,违反了 kiss 规则。 解决方法:要深刻理解程序的意义,化繁为简,化难为易5、计算机应用不熟练,截图是我遇到的最大的问题。 解决方法:提高计算机
19、的操作技术,使快而有效的完成任务。六、课程设计总结一周的课程设计很快结束了,一开始拿起题目时什么都不懂,真不知道从何下手到后来觉得它 很有趣,很想去做并希望能把它做得更好。刚开始错误实在太多,改错误真的很头疼,不过当经过 一次又一次的调试后,终于弄好了,那时却是特别的高兴。总的来说就是这次的课程让我学了不少 东西,也让我对编程更有兴趣,虽然学的不是很好,不过以后会努力的。课程设计是培养学生综合运用所学知识 ,发现, 提出,分析和解决实际问题 ,锻炼实践能力的重要环节 ,是对学生实际工作能力的具体训练和考察过程 . 随着科学技术发展的日新日异,当今计算机应 用在生活中可以说得是无处不在。因此作为
20、二十一世纪的大学来说掌握计算机开发技术是十分重要 的。总的来说,本次课程设计,实在是受益匪浅。虽然课程设计只有短短的几天,但是我发现我学 到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在设计的过程中 发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设 计之后,一定把以前所学过的知识重新温故。回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实 践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知 识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理
21、论与实际相结 合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中 得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。本次 C 语言的课程设计让我对 C 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校 组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位 其了不小的铺垫作用。本次课程设计中遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到那些同学都在那认 真的写程序,给了我继续的信心。在同学的帮助下,我顺利的结
22、束了本次课程设计,让我知道原来 凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。七、参 考文献1 .Visual C+课程设计案例精编作者:夏崇镨、任海军、余健2 . C 语言程序设计作者谭浩强3 . 实用 C 语言程序设计教程 李金祥等编 中国电力出版社 20104 . 网址 1:5. 网址 2:附录(源程序代码)#include#include#include#include#define STU_NUM 10#define COURSE_NUM 4struct studentint number 。 char name10 。int score4 。int sum
23、 。int sum1 。int max 。 int min 。 float average 。float average1 。typedef struct student STU 。 int AppendScore(STU *head,int n,int m)int j 。STU *p 。 char ch 。for(p=head+n 。pnumber) 。printf(Input name:)。scanf(%s,p-name) 。for(j=0 。 jscore+j) 。n+ 。printf(Do you want to append a new node(Y/N)?) scanf(%c,&a
24、mp;ch) 。if(ch=n|ch=N) return n 。void PrintScore(STU *head,int n,int m)STU *p 。int i 。char str100=0,temp4。strcat(str,Number name) 。for(i=1 。 i=m。 i+) strcat(str,Score) 。 itoa(i,temp,10)。strcat(str, )。strcat(str, average) 。 printf(%s,str) 。for(p=head 。 pnumber,p-name) for(i=0 。 iscorei) 。 printf(%9.2f
25、n,p-average) 。void TotalScore(STU *head,int n,int m)STU *p 。 int i 。 for(p=head 。 psum=0 。for(i=0 。 isum=p-sum+p-scorei 。 p-average=(float)p-sum/m 。void SortScore(STU *head,int n)int i,j,k。STU temp 。for(i=0 。 in-1 。 i+) k=i 。 for(j=i 。 javerage(head+k)-average) k=j 。if(k!=i)temp=*(head+k) 。*(head+k)
26、=*(head+i) 。 *(head+i)=temp 。void ReadScore(STU *head,int n,int m)STU *p 。 int i,k 。 for(p=head 。 psum1=0 。for(i=0 。 isum1=p-sum1+p-scorei 。 p-average1=(float)p-sum1/n 。k=0 。i=1 。 if(p-scoreip-scorek) k=i 。p-max=p-scorei 。int SearchName(STU *head,char name,int n)int i 。for(i=0 。 inumber=name) return i 。return -1 。void SearchScore(STU *head,int n,int m)int name,findNo 。printf(please Input the name you want to search:) scanf(%c,&name) 。findNo=SearchName(head,name,n) 。if(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论