1、1目录一、课程设计的目的与要求 .31.1 课程设计目的: .31.2 课程设计要求: .3二、题目说明 .52.1 程序开发背景 .52.2 开发工具介绍 .6三、总体设计 .73.1 系统流程图 .73.2 软件流程图 9四、详细说明 .114.1 产生 100 以内的随机整数 114.2 随机选择计算法则 .124.3 随机出题并打出题目 .134.3 判断答题者是否做对题目 若错误给出正确答案 .144.4 判断答对的题数给出分数 .144.5 打印出答题者所做的题目 .16五、遇到的问题与解决方案 .17六、课程设计总结 .18七、参考文献 .19附录(源程序代码): .202一、课
2、程设计的目的与要求1.1 课程设计目的:1.为培养学生严谨的工作态度,锻炼学生编写文档的能力。进一步掌握和利用 C 语言进行程设计的能力;进一步理解和运用结构化程设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图或 N-S 图表示算法;掌握书写程设计开发文档的能力(书写课程设计报告) ;2、熟练掌握 C 语言课程中所学的理论知识;C 语言是在国内外广泛使用的一种计算机语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广
3、泛。学习使用 C 语言程序的目的是掌握程序设计的思路,学会用计算机语言编写程序正确处理算法和语法的关系算法是程序的核心、是灵魂,语法是外壳、是工具。通过课程设计,我们要熟练的掌握 C 语言的算法、语言、函数的调用、循环的使用、数组的运用等。3、通过综合 C 语言的基本知识来解决实际问题;C 语言中与许多的东西,像:数据类型、运算符、表达式、程序设计结构、数组与函数调用。其中 C 语言最难和最经典的地方就是循环, (while 和 for 的嵌套)运用 WHILE,FOR,SWITCH 和 if的循环嵌套,我们可以实现现实中课程信息管理、图书信息管理、学生信息管理、商品信息管理等。C 语言还具有
4、绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。4、加强分析和解决问题的能力。通过这次的课程设计,加强同学对程序设计的思考、设计、分析、理解和解决问题的能力。对于同学来说,主要是学习成长设计的方法,进行程序设计的基本训练为将来进一步学习打下基础。课程设计不能之掌握概念,还要动手编程、上机调试运行。只有自己动手,才能学的更多。1.2 课程设计要求:1、课程设计步骤:(1)对系统进行功能需求分析;(2)设计合理的数据结构和系统框架;(3)编程简练,程序功能齐全,能正确运行;(4)说明书、流程图要清楚;(5)课题完成后必须按要求提交
5、课程设计说明书;在课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。认真编写课程设计报告。2、课程设计可以由 24 名同学合作完成一个课题。全体成员应共同协作完成选题,确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。整个设计期间,组长负责协调工作。各3小组成员明确自己的任务后,应独立完成各自模块的设计、编码和调试,独立完成课程设计说明书。小组成员要理解同组其他成员设计的模块,熟练操作本组设计。3、考核方式和成绩评定考核分为两个部分:(1)程序运
6、行情况:按规定时间到机房运行程序,由老师检查运行情况(2)课程设计报告:是否按规定书写课程设计要求的各项内容课程设计成绩采用百分制:100%=平时(20)上机检查(30%)+课程设计报告(50%)4二、题目说明题目:算术运算测试 ,由系统产生随机整数,并随机选择算数运算法则。功能要求:该程序用字符界面实现十道 100 以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数. 界面用字符实现。100 道题目和标准答案必须存在文件中。2.1 程序开发背景简单地说,算术运算就是数的加、减、乘、除以及乘方开方等数学运算。而对于算术来说,它是数学中最古老,最基础和最初等的
7、部分.它研究数的性质及其运算.把数和数的性质,数和数之间的四则运算在应用过程中的经验积累起来,并加以整理,就形成了最古老的一门数学算术。算术运算测试程序:该程序由系统产生随机整数,并随机选择算数运算法则。再打印出系统随即出的算数运算题,然后有答题者给出答案,再由系统来判断答题者所给出的答案是否正确,并计算出答题者的成绩,最后打印出答题者所做过的题。2.2 开发工具介绍C 语言是 Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖
8、计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到 C 语言,具体应用比如单片机以及嵌入式系统开发。早期的 C 语言主要是用于 UNIX 系统。由于 C 语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C 开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。C 语言的特点:C 语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C 语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(b
9、it)一级的操作。由于 C 语言实现了对硬件的编程操作,因此 C 语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。C 语言中 main 是主函数的函数名,表示这是一个主函数。每一个 C 源程序都必须有,且只能有一个主函数(main 函数)。函数调用语句,printf 函数的功能是把要输出的内容送到显示器去显示。printf 函数是一个由系统定义的标准函数,可在程序中直接调用。此外,C 语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的 C 语言。优点: C 语言灵活性好,效率高,可以接触到软件开发比较底层的东西。5
10、三、总体设计3.1 系统流程图i=0Inum2i)printf(“n%d-%d“,num1i,num2i);resulti=num1i-num2i;elseprintf(“n%d-%d“,num2i,num1i);resulti=num2i-num1i;opti=-;break;4.3 随机出题并打出题目产生随机整数,并根据产生的数据判断运算法则且打印所出的题目。有关截图:11相关代码:for(i=0;inum2i)printf(“n%d-%d“,num1i,num2i); /* 打出题目 */resulti=num1i-num2i;elseprintf(“n%d-%d“,num2i,num1
11、i);resulti=num2i-num1i;opti=-;break;124.3 判断答题者是否做对题目 若错误给出正确答案 输入答案判断结果是否正确,如果所给答案错误则系统给出正确答案。相关截图:代码:scanf(“%d“, /* 输入答题者的答案 */if(answer=resulti) /* 判断答题者给出的答案是否正确 */+points;printf(“hui da zhen que“);elseprintf(“n*hui da cuo wu“);printf(“n*%d wei zheng jie“,resulti);4.4 判断答对的题数给出分数根据前面的数据 points 判
12、断答题者的分数相关截图:13相关代码switch(points)case 10:printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;case 9 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;case 8 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;case 7 :printf(“gongzuodui %
13、d daoti,chengjiwei; %d“,points,points*points);break;case 6 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;case 5 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;case 4 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;case 3 :
14、printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;case 2 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;14case 1 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*points);break;default:printf(“zuoduilingdaoti“);4.5 打印出答题者所做的题目打印答题者之前所做的题目并给出正确
15、的答案。相关截图:相关代码:for(i=0;in;i+)经常写成 For(i=0,in,i+),导致运行错误。解决方法:编程时候需要仔细和耐心。并记住易错的地方,输入时不应该太快 然后仔细检查。2、 对一些课本中的知识不熟悉,导致刚开始编程的时候很难下手。 解决方法:重新掌握不熟悉的知识并收集相关资料,通过课程设计,我们要熟练的掌握 C 语言的算法、语言、函数的调用、循环的使用、数组的运用等。3、输入时易出现函数名被输入错误,调试时候系统显示有错误,明明是函数名输入错误,但自己就是不去检查函数名是否输入错误,非得调试系统时多次显示错误才去检查。解决方法:输入切记浮躁并认真书写函数名,输入后随时
16、检查一下;4、输入 scanf(“%f%f%f“,时,常常会把输入数据时常会输入错误。因为三个%d 是连在一起写的,因此,在输入数据的时候有两种方法:第一种:输入一个整型后按回车,再输入一个按回车,最后再输入一个按回车;如下所示:1Enter2Enter3Enter第二种:连续输入三个整型,不过在这三个数字之间要用空格隔开,再按回车。如下所示:1 2 3 Enter6、输入输出的数据类型与所用格式说明符不一致。16六、课程设计总结一周的课程设计很快结束了,一开始拿起题目时什么都不懂,真不知道从何下手到后来觉得它很有趣,很想去做并希望能把它做得更好。刚开始错误实在太多,改错误真的很头疼,不过当经
17、过一次又一次的调试后,终于弄好了,那时却是特别的高兴。总的来说就是这次的课程让我学了不少东西,也让我对编程更有兴趣,虽然学的不是很好,不过以后会努力的。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。总的来说,本次课程设计,实在是受益匪浅。虽然课程设计只有短短的几天,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在设计的过程中发现了自己的不足
18、之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。本次 C 语言的课程设计让我对 C 语言的学习又有了更深入的了解,也让我更深
19、刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。本次课程设计中遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学的帮助下,我顺利的结束了本次课程设计,让我知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我知道了友谊和团结的重要性。此次课程设计涉及到的相关基础知识:if-else 条件结构、switch 选择结构、for 循环结构 while 循环结构、自定义函数、指针、结构体、链表、
20、文件等,以及 DOS 程序的应用。此次课程设计体会:综合实验的难度比较大,要求在掌握 C 语言知识的基础上,能够编写程序,并且能够根据编译提示修改程序中的错误,调试运行程序,最终还要检验是否能够实现实验任务中的功能要求。此次课程设计不足:在模块化程序设计方面所学到的知识还很浅薄,比如模块的划分、模块的组建等,今后还要继续努力。17七、参考文献【1】 实用 C 语言程序设计教程 李金祥等编 中国电力出版社 2010【2】 Visual C+课程设计案例精编 作者:夏崇镨、任海军、余健【3】 C 语言程序设计 谭浩强 清华大学出版社 1999 年 12 月【4】 课程设计与系统开发案例 伍俊良 清
21、华大学出版社 网址 1: http:/ ( )int type=0; /* 算数运算的法则:用来接收系统产生随机整数; */int i;int points=0,answer=0;int num110,num210; /* 定义两个 int 类型的整数数组,接收系统产生的用于运算的两个随机整数 */int result10; /* 定义一个 int 类型的整数数组,用来接收答 题者所 给出的答案 */char opt10; /* 定义一个 char 类型的字符数组,用来接收系统随机产生的加减运算符号 */clrscr( ); /* 清屏 */printf(“*n“);printf(“*well
22、come*n“);printf(“*n“);printf(“xian zai kai shi zuo tin“);printf(“qing kan ti:n“); /* 提示答题者做题 */for(i=0;inum2i) /* 判断两个数之间的大小 */printf(“n%d-%d“,num1i,num2i);resulti=num1i-num2i;else19printf(“n%d-%d“,num2i,num1i);resulti=num2i-num1i;opti=-;break;printf(“=?“);scanf(“%d“, /* 输入答题者的答案 */if(answer=resulti
23、) /* 判断答题者给出的答案是否正确 */+points;printf(“hui da zhen que“);elseprintf(“n*hui da cuo wu“);printf(“n*%d wei zheng jie“,resulti);printf(“nni de cheng ji “); /* 打印出 “你的成绩:” */printf(“n*n“);switch(points) /* switch 语句根据 points 进行判断的表达式的结果来执行多个分支中的一个 打印出答题者的做题数与成绩 */case 10:printf(“gongzuodui %d daoti,chengj
24、iwei: %d“,points,points*10);break;case 9 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*10);break;case 8 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*10);break;case 7 :printf(“gongzuodui %d daoti,chengjiwei; %d“,points,points*10);break;case 6 :printf(“gongzuodui %d daoti,ch
25、engjiwei: %d“,points,points*10);break;case 5 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*10);break;case 4 :20printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*10);break;case 3 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*10);break;case 2 :printf(“gongzuodui %d da
26、oti,chengjiwei: %d“,points,points*10);break;case 1 :printf(“gongzuodui %d daoti,chengjiwei: %d“,points,points*10);break;default:printf(“zuoduilingdaoti“);printf(“n*n“);printf(“nyi xia shi ni zuo de ti“);for(i=0;i10;i+) /* 进行循环,打印出答题者之前做的题目与答案 */printf(“n%d%c%d=%d“,num1i,opti,num2i,resulti); /* 打印出答题者之前做的题目与答案 */printf(“n*n“);