小学生心算CAI系统.doc_第1页
小学生心算CAI系统.doc_第2页
小学生心算CAI系统.doc_第3页
小学生心算CAI系统.doc_第4页
小学生心算CAI系统.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

课 程 设 计 报 告课程名称 C语言 课题名称 小学生心算CAI系统 专 业 班 级 学 号 姓 名 指导教师 XXXX 年 XX 月 XX 日湖南工程学院课 程 设 计 任 务 书课程名称: C语言程序设计 课 题: 小学生心算CAI系统 专业班级: 学生姓名: 学 号: 指导老师: 审 批: 任务书下达日期: 年 月 日任务完成日期: 年 月 日前 言C语言程序设计课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。学习委员将课程设计报告与磁盘收齐后交指导老师。一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。1. 设计正确,方案合理。2. 界面友好,使用方便。3. 程序精炼,结构清晰。4. 设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。5. 上机演示。6. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;7. 按本任务书的要求,按附录的要求编写课程设计报告(Word文档格式)。并用A4的复印纸打印并装订; 三、进度安排第17周 星期五:程序调试第18周 星期日:详细设计第19周 星期三:答辩小学生心算CAI系统一、问题描述:本系统可以用来进行单独的加、减、乘、除心算练习,也可综合心算的速度与正确率进行测试。当用户在进行简单的四则运算时运算速度和正确率都较高时,可以进入四则混合运算,借此来进一步提高自己的心算能力。二、功能描述:1、 用户可以通过两种方法来选择功能,既可以按相应的数字键进入相应的心算练习,也可以按光标键来选择功能项。2、 计算机自动出题,用户进入每项练习时,屏幕上会显示用户所做的相应的题数,如果不想继续可以随时退出,只需按ESC键。3、 设计的系统完全适合用户,比如除法时考虑到小学生的水平问题,只允许出现整除情况。4、 用户输入的答案不对时,计算机会发出声音报警,用户输入的结果如果连续两次不对,计算机会自动给出正确答案,供用户参考。5、 界面设计友好。三、算法提示:1、 用简单的程序设计方法2、 一定的窗口设计技巧3、 简单的数据类型四、测试数据:计算机随机产生五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。目录 一 绪论11.背景描述12 本文要做的工作1二 需求分析:1三 概要设计:1四 详细设计2五 调试分析及设计体会3六 程序调试71 题记;72数据测试:73程序和排错。9七 使用说明10八 心得体会10九 附件11十 参考资料19课程设计正文一 绪论 1.背景描述 心算是根据算式中各数的特点和运算关系灵活自如地运用法则、定律、性质及和差积商恒等变化的规律和数字特征 ,在头脑中依靠清晰的形象思维和缜密的逻辑思维展现数位形象 ,综合运用数学知识快捷、简便的运算。它反映出心算过程中的简洁、快速、灵活的思维过程。因此 ,心算能力是一个人思维品质的标志 ,特别是检验一个人思维灵活性和敏捷性的重要标尺。2 本文要做的工作 本文主要介绍了本课程设计的开发背景,所需要完成的功能和开发的过程。重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。二 需求分析:1.总体上先分析这个系统的功能用途为测试小学生心算,以及适用的人群范围为小学生,进而将系统细分、划分为一些小的模块,从而将各个模块编写出相应的C语言程序代码构成一个完整的小学生心算CAI测试系统。2.所编程序应具备很好的可行性操作,适合小学生的计算能力。三 概要设计:1、本系统可以用来进行加、减、乘、除及四则混合运算心算练习,并统计出正确率和计算速度,当用户输入答案连续两次不对时,计算机给出正确答案,供用户参考,从而提高小学生的心算能力。2、 用户可以通过两种方法来选择功能,既可以按相应的数字键进入相应的心算练习,也可以按光标键来选择功能项。3、计算机自动出题,用户进入每项练习时,屏幕上会显示用户所做的相应的题数,如果不想继续可以随时退出,只需按ESC键。4、设计的系统完全适合用户,比如除法时考虑到小学生的水平问题,只允许出现整除情况。5、 用户输入的答案不对时,用户输入的结果如果连续两次不对,计算机会自动给出正确答案,供用户参考。6、 界面设计友好。四 详细设计1 程序模块组成:主函数 main()随机取整函数 randomize():根据实参的赋值的函数可以产生出不同的整形值,进而的到不同的整形数相加。菜单函数 1)加法运算函数 aid() :函数从随机函数那获取二个数进行简单的加法运算,将所得的值赋值给一个整形变量。2)减法运算函数 minus() :函数从随机函数那获取二个数进行简单的减法运算,将所得的值赋值给一个整形变量。乘法运算函数 multiply :函数从随机函数那获取二个数进行简单的加法运算,将所得的值赋值给一个整形变量。除法运算函数 divide() :函数从随机函数那获取二个数进行简单的除法运算,将所得的值赋值给一个整形变量。混合运算函数 mix() :函数从随机函数那获取二个数进行简单的四则混合运算,将所得的值赋值给一个整形变量。退出函数 void out() :根据用户所选键来进入此函数。输入年级函数 int grade() :根据用户的年级的大小来返还一个具体值,进而来决定运算的难易程度。输入题量函数 int many() :根据用户所输入的题量大小来来得到一个具体的值,进而来决心算真确率。清屏函数 clrscr() :清除屏幕上所有的垃圾文件。答题正确率函数 void zql() :根据用户所输入的题量、所有答对题目的数目、以及时间函数所返回的时间值,来计算用户的答题正确率。2 函数的功能:随机取整函数:给出比较简单的数字,供用户进行运算。加法运算函数:单独进行加法运算。减法运算函数:单独进行减法运算。乘法运算函数:单独进行乘法运算。除法运算函数:单独进行除法运算。混合运算函数:以固定混合运算公式进行运算。 退出函数:退出菜单并显示图形及退出系统操作提示。输入年级函数:输入年级,决定出题的难度。输入题量函数:输入想做题目的数量,便于计算正确率和答题速度。清屏函数:清理屏幕。答题正确率函数:计算答题正确率,以便提示用户是否进入混合运算。五 调试分析及设计体会 1程序说明及所达到的要求:1、 用户可以通过按相应的数字键进入相应的心算练习。2、 计算机自动出题,用户进入每项练习时,屏幕上会显示用户所做的相应的题数,如果不想继续可以随时退出,只需按T键。3、 设计的系统完全适合用户,除法考虑到小学生的水平问题,只出现整除情况。4、 用户输入的答案不对时,会再给两次机会,用户输入的结果如果连续两次不对,计算机会让用户选择,选择“1”继续,其他则退出。2 运算模块之间的算法 :加法运算函数 aid() :函数从随机函数那获取二个数a ,b 进行简单的加法运算,将所得的值赋值给一个整形变量c。(b为年级) 如程序:a=g*g*N+random(N); b=g*N+random(N); c=a+b;减法运算函数 minus() : 函数从随机函数那获取二个数a ,b进行简单的减法运算,将所得的值赋值给一个整形变量c。(b为年级) 如程序:a=g*g*N+random(N); b=g*N+random(N); if(ab) t=a;a=b;b=t; c=a-b;乘法运算函数 multiply : 函数从随机函数那获取二个数a ,b进行简单的加法运算,将所得的值赋值给一个整形变量c。(b为年级) 如程序: a=g*N+random(N); b=N+random(N); c=a*b; 除法运算函数 divide() :函数从随机函数那获取二个数a ,b进行简单的除法运算,将所得的值赋值给一个整形变量c。(b为年级) 如程序:a=N+random(N); b=g*N+random(N); c=a*b;d=c/a;混合运算函数: 函数从随机函数那获取六个数a ,b,c, d, g ,j进行简单的加减乘除运算,将所得的值赋值给一个整形变量k进而k判断的值是否为零。如程序:a=N+random(N); b=g*N+random(N);c=g*N+random(N); d=N+random(N); g=g*g*n+random(N); j=c*d;k=a*b+j/d-g;3 mian函数的调用示意图randomise()add()int grade()minus()int grade()multiply()main()主菜单mix()divide()zql()clrscr()voidout()图1开始4 主模块和分子模块流程图主菜单选择项目图2选择乘法运算除法运算减法运算加法运算混合运算退出系统结束界面输入年级输入题数清 屏进入运算输入答案计算正确率判断结束六 程序调试1 题记;课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,计算机编程已经成为当今计算机应用中空前活跃的领域, 在生活中可以说是无处不在。程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和改正。如果程序能够基本正确的运行,可考虑增加若干基本的容错功能;另外尽量对现有算法给出改进方案,并比较不同算法之间的优缺点。2数据测试:初始面:图3加减法测试:图4五年级混合运算测试:图5首先准备输入某一运算级代码、如输入1则会在屏幕上显示出“欢迎进入加法运算”(若输入其他超出范围的数则系统又会回到主菜单从心开始输入。)然后屏幕会提示你输入你的年级数。进而系统会根据你的年级数用系统随机函数决定你的难易程度。3程序和排错。为了便于查错、阅读,在设计该程序的时候我采用了结构化程序方法编辑,添加了尽可能多的注释,这为我后来的调试过程带来了很多方便。在上机调试之前我对所编的程序作了纸面上的检查,先消灭一些低级错误,所谓的低级错误是指由于人为的输入不仔细等造成的,如没有搭配完整,漏写 ;号,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决、避免的。而且还可以减少机器时间。往往一连串的错误是由于漏写或写错一个字符引起的。经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译如此反复,直到顺利通过编译和连接为止。在本次 实习过程中碰到的编译、连接的错误主要有:1缺少变量定义,定义位置不正确:由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。2 语法错误:大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;。在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。在编写程序调试的过程中,我们得到了老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时培养了科学、严谨的工作作风和学习习惯, 这次课程设计终于顺利完成了!在设计中遇到了很多编程调试问题,最后在老师的辛勤指导下,终于迎刃而解回顾起此次课程设计,至今我仍感慨颇多。如;有时遇到了一个错误怎么找也找不到原因所在,找了老半天结果却是一个函数放错了地方所致,有时一个功能不知道怎么实现找这个、找那个。有所编到最后一运行却告诉我错误,那真的很烦人。以前上课都是学一些最基本的东西,觉得很枯燥,而现在却可以将以前学的东西编出有实际价值的东西,这样自己非常的投入,有时候一编就是二三个小时坐在电脑前面,有时候连吃饭都忘了。但现在回过头来看,还是挺有成就感的。3 在注释的时候不能同我们平常做笔记一样随心所欲地爱写哪就写哪,这造成我最后本来已经编译成功的程序一下子又多了很多错误。,就是跟以上的情况一样当我在编译的同时又很多的中断包含了语言的语句最后导致出现很多的错误刚一开始真的是不知道才哪里出错了也不知道电脑所提示的到底是哪里出错了但我回想起老师所说的一些话:程序的注释可以导致函数出现很多错误。故我想应该是在函数的注释过程当中可能使用了一些包含C语言的语句以及是我的表达不正确或是多了字符等。这又让我学到了一点知识。七 使用说明 1 程序操作步骤: 1)进入程序,运行;2) 选择要心算的运算级(根据主菜单上的提示输入); 3)输入你所在的年级进而运用随机函数来确定你题目的难易程度; 4)再次输入你所要答题的数目,据此运用时间函数来计算你的心算速度;八 心得体会先前听学长他们说C语言非常难学,但当你搞懂以后就会觉得很容易。通过本次的C语言课程设计,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,熟练掌握函数与数组的应用及其的作用,更重要的是要通过上机实践来加强和巩固所学到的知识。经过两个星期的课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要熟练掌握基础知识,次外要通过不断的上机操作从而更好地学习它,和应用它。同时在设计的过程中发现了自己的不足之处。总之,不管是学习C语言,还是其它的语言,以及其它的计算机方面的知识, 理论知识是学习的基石,最重要的是在于实践,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正检验自己的掌握程度,从而提高自己的实际动手能力和独立思考的能力。通过本次的课程设计,使我受益匪浅.课程设计是培养我们综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程. 从理论到实践,在整整一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。在设计的过程中遇到的问题,可以说是困难重重,这毕竟是第一次涉及到这方面的知识,难免会遇到各种各样的问题和困难,但在老师和同学的指导和帮助下,克服了困难,比较好地完成了此次的程序设计。在此,真心地感谢老师及同学的帮助!这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。C语言是一项细致深入的工作,不仅要有严谨的思路,还要在实践中有耐心,要细心。九 附件1)源程序#include#include#include#includeadd();minus();multiply();divide();mix();void out();int grade();int many();void main()char i;printf(n);printf( *n);printf( n);printf(* 欢迎进入小学生CAI数学学习乐园 *n);printf( n);printf(*n);printf(*n);printf(* *n);printf(* *n);printf(* 1.【】加法运算 | 2.【】减法运算 *n);printf(* | *n);printf(* | *n);printf(* 3.【】乘法运算 | 4.【】除法运算 *n);printf(* | *n);printf(* | *n);printf(* 5.【】混合运算 | 6.【O】退出系统 *n);printf(* *n);printf( *n);printf(n);printf(n请选择菜单项目:);scanf(%c,&i);switch(i) case 49: printf(*n); printf(* 欢迎进入加法运算练习 *n); printf(*n); add();break;case 50:printf(*n);printf(* 欢迎进入减法运算练习 *n);printf(*n);minus();break;case 51:printf(*n);printf(* 欢迎进入乘法运算练习 *n);printf(*n);multiply();break;case 52:printf(*n);printf(* 欢迎进入除法运算练习 *n);printf(*n);divide();break;case 53:printf(*n);printf(* 欢迎进入混合运算练习 *n);printf(*n);mix();break;case 54:out();break;default:main();int add()int a,b,c,d,e,f,i,n,R=0;float p=0;char x;B1:n=many();for(i=1;i=60)R=0;printf(是否进入混合运算,进入请输入,继续请输入,按其它键回主菜单:n);scanf(%d,&f);if(f=1)return mix();else if(f=2)goto B1;elsemain();elseR=0;printf(想继续吗?n如果是请按1,否则请按数字任意键回主菜单:);scanf(%d,&e);if(e=1)goto B1;else main();int minus()int a,b,c,d,e,f,i,n,t,R=0;float p=0;char x;B2:n=many();for(i=1;i=n;i+)a=rand()%100;b=rand()%100;if(a=60)R=0;printf(是否进入混合运算,进入请输入,继续请输入,按其它键回主菜单:n);scanf(%d,&f);if(f=1)return mix();else if(f=2)goto B2;else main();elseR=0;printf(想继续吗?n如果是请按1,否则请按数字任意键回主菜单:);scanf(%d,&e);if(e=1)goto B2;else main();int multiply()int a,b,c,d,e,f,i,n,R=0;float p=0;char x;B3:n=many();for(i=1;i=60)R=0;printf(是否进入混合运算,进入请输入,继续请输入,按其它键回主菜单:n);scanf(%d,&f);if(f=1)return mix();else if(f=2)goto B3;else main();elseR=0;printf(想继续吗?n如果是请按1,否则请按数字任意键回主菜单:);scanf(%d,&e);if(e=1)goto B3;else main();

温馨提示

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

评论

0/150

提交评论