课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx

上传人:b****1 文档编号:10853383 上传时间:2023-05-28 格式:DOCX 页数:54 大小:305.50KB
下载 相关 举报
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第1页
第1页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第2页
第2页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第3页
第3页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第4页
第4页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第5页
第5页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第6页
第6页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第7页
第7页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第8页
第8页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第9页
第9页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第10页
第10页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第11页
第11页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第12页
第12页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第13页
第13页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第14页
第14页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第15页
第15页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第16页
第16页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第17页
第17页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第18页
第18页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第19页
第19页 / 共54页
课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx_第20页
第20页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx

《课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx》由会员分享,可在线阅读,更多相关《课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx(54页珍藏版)》请在冰点文库上搜索。

课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序.docx

课设计算机辅助教学cai软件开发教小学生学算术课设报告内含程序

编号:

课程设计(论文)说明书

课题:

CAI软件开发:

教小学生算数

学院:

电子工程与自动化

专业:

测控

学生姓名:

学号:

指导老师:

2013年3月14日

1.内容摘要………………………………………………………………………1

2.关键字…………………………………………………………………………1

3.题目与要求……………………………………………………………………2

4.设计任务及要求

4.1分步实施…………………………………………………………………3

4.2运行环境…………………………………………………………………3

4.3开发工具…………………………………………………………………3

5.总体设计

5.1程序设计组成框图………………………………………………………4

5.2流程图……………………………………………………………………5

6.详细设计

6.1注册登录系统函数详细说明……………………………………………6

6.2菜单界面函数详细说明…………………………………………………7

6.3加法函数详细说明………………………………………………………8

6.4减法函数详细说明……………………………………………………10

6.5乘法函数详细说明……………………………………………………11

6.6除法函数详细说明……………………………………………………12

6.7统计信息函数详细说明………………………………………………14

6.8信息读取函数详细说明………………………………………………14

6.9晋级降级函数详细说明………………………………………………15

7.调试与测试

7.1调试方法………………………………………………………………15

7.2功能模块的调试及测试………………………………………………16

7.3测试过程中遇到的主要问题…………………………………………20

7.4采取的解决措施………………………………………………………20

8.总体收获、体会……………………………………………………………20

9.谢辞…………………………………………………………………………21

10.参考文献……………………………………………………………………21

11.源程序清单………………………………………………………………21

12.附录源程序代码…………………………………………………………22

1.内容摘要:

现在,信息技术教育在我国中小学中全面开展,计算机在教育事业中的地位越来越重要,其中计算机辅助教学(ComputerAidedInstruction,简称CAI)扮演着重要的角色。

本程序是用c语言来编写的具有加减乘除法的小软件,其中用到loop、goto、产生随机数函数、文件操作等,小学生按照提示进行答题,一次答题命中率达到60%可以晋级,同样也会降级,学生可以按照自己的能力来设置题量,答题数量越多通关后获得的奖励越丰厚。

本课设是利用计算机辅助教学(CAI)软件开发一款教小学生算术的小游戏,希望帮助小学生更好地练习小学算术,有效地缩短学习时间、提高教学质量和教学效率,实现最优化的教学目标。

2.关键字:

注册登录系统、加减乘除法、loop…goto、文件操作、产生随机数函数、统计、晋级、降级。

3.题目与要求

(1)题目及要求:

题目:

计算机辅助教学(CAI)软件开发:

教小学生算数

功能:

可做个位数,十位数的加,减,乘,除。

减法不能得负数,除法要除尽,屏幕上随机出现两个数,提示小学生给出答案,答错了提示重新输入,直到答对为止。

要统计给分,且累计,够一定分数后可晋级,即从个位进到十位数的运算,同样,也可以降级。

(rand(),#include

(2)要求:

(1)用C语言实现程序设计;

(2)系统的各个功能模块要求用函数的形式实现;

(3)界面友好(良好的人机交换),程序加必要的注释。

4.设计任务及要求

4.1分步实施:

(1)设计登陆界面,具有注册登录功能;

(2)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

(3)完成基本要求:

能答对各位数的加法和减法,并有统计功能,即一次答对的成功率为60%以上可以晋级,做十位数的减法,成功率低于60%也可以降级;

(4)进一步要求:

完成乘法和除法的学习,也有晋级功能;

(5)挑战的题量越多通关后获得的奖励就越丰厚。

4.2运行环境:

   

(1)win7/XP系统

   

(2)VC6.0编译环境

4.3开发工具:

   C语言

5.总体设计

5.1程序设计组成框图

5.2流程图

6.详细设计

6.1注册登录系统函数详细说明

用户首次使用本软件都需要进行注册,然后再登录系统进行答题。

 

voidzcdl()//注册登陆界面

{

intsel;

printf("登陆注册系统!

\n");

printf("1.登陆\n");

printf("2.注册\n");

printf("3.退出\n");

scanf("%d",&sel);

switch(sel)

{

case1:

Land();break;//调用登陆函数

case2:

Register();break;//调用注册函数

case3:

printf("退出\n");

exit

(1);

break;

}

}

6.2菜单界面函数详细说明

登录成功后进入菜单,菜单中有六个选项,0.查看规则,1.加法运算,2.减法运算,3.乘法运算,4.除法运算,5.返回注册登录界面。

 

voidchoice()//算法选择

{

intch;

cd();//调用菜单函数

scanf("%d",&ch);

getchar();

if(ch>=9||ch<0)

{

printf("输入错误!

请重新输入!

\n");

cd();

scanf("%d",&ch);

}

switch(ch)

{

case0:

jm();break;//调用规则函数

case1:

add();break;//调用加法函数

case2:

sub();break;//调用减法函数

case3:

mul();break;//调用乘法函数

case4:

div();break;//调用除法函数

case5:

zcdl();break;//注册登陆界面

default:

printf("选择有误!

\n");choice();

}

}

6.3加法函数详细说明

用add实现个位数加法,用add1实现十位数加法,答对输入的题量,用随机函数随机产生数进行运算,结果错误后提示错误并且重新输入,在一次答对率达到60%后可晋级到十位数加法,难度有所增加,若低于60%提示是否继续还是退出。

通关后提示是否继续,若继续,则返回算法选择界面。

 

 

voidadd()//个位数加法

{

intrand1,rand2,i;

floatanswer;

printf("请输入挑战的题量:

");//k输入的题目数量

scanf("%d",&k);

getchar();

if(k>=9999||k<0)

{

printf("输入错误!

请重新输入!

\n");

printf("请输入挑战的题量:

");

scanf("%d",&k);

}

for(i=1;i<=k;i++)

{

srand((unsigned)time(0));

rand1=(rand()%10);

rand2=(rand()%10);

printf("%d+%d=",rand1,rand2);

scanf("%f",&answer);

getchar();

if(k>=9999||k<0)

{

printf("输入错误!

请重新输入!

\n");

printf("%d+%d=",rand1,rand2);

scanf("%f",&answer);

}

if(answer!

=(rand1+rand2))//错一题就减1

sum--;

while(answer!

=(rand1+rand2))

{

printf("答案错误,请输入正确答案:

\n");

printf("%d+%d=",rand1,rand2);

scanf("%f",&answer);

getchar();

if(answer>=9999||answer<0)

{

printf("答案错误,请输入正确答案:

\n");

printf("%d+%d=",rand1,rand2);

scanf("%f",&answer);

getchar();

}

}

sum++;

printf("回答正确!

\n");

}

6.4减法函数详细说明

用sub实现个位数减法,用sub1实现十位数减法,答对输入的题量,用随机函数随机产生数进行运算,结果错误后提示错误并且重新输入,在一次答对率达到60%后可晋级到十位数减法,难度有所增加,若低于60%提示是否继续还是退出。

通关后提示是否继续,若继续,则返回算法选择界面。

流程图同加法。

voidsub()//个位数减法

{

intrand1,rand2,i,k,sum=0;

floatanswer;

printf("请输入挑战的题量:

");//k输入的题目数量

scanf("%d",&k);

getchar();

if(k>=9999||k<0)

{

printf("输入错误!

请重新输入!

\n");

printf("请输入挑战的题量:

");//k输入的题目数量

scanf("%d",&k);

}

for(i=1;i<=k;i++)

{

srand((unsigned)time(0));

loop:

{

rand1=(rand()%10);

rand2=(rand()%10);

}

if(rand1>=rand2)

{

printf("%d-%d=",rand1,rand2);

scanf("%f",&answer);

getchar();

if(k>=9999||k<0)

{

printf("答案错误,请输入正确答案:

\n");

printf("%d-%d=",rand1,rand2);

scanf("%f",&answer);

}

if(answer!

=(rand1-rand2))//错一题就减1

sum--;

while(answer!

=(rand1-rand2))

{

printf("答案错误,请输入正确答案:

\n");

printf("%d-%d=",rand1,rand2);

scanf("%f",&answer);

getchar();

if(k>=9999||k<0)

{

printf("答案错误,请输入正确答案:

\n");

printf("%d-%d=",rand1,rand2);

scanf("%f",&answer);

}

}

sum++;

printf("回答正确!

\n");

}

else

gotoloop;//循环产生随机数

}

6.5乘法函数详细说明

用mul实现个位数乘法,用mul1实现十位数乘法,答对输入的题量,用随机函数随机产生数进行运算,结果错误后提示错误并且重新输入,在一次答对率达到60%后可晋级到十位数乘法,难度有所增加,若低于60%提示是否继续还是退出。

通关后提示是否继续,若继续,则返回算法选择界面。

流程图同加法。

voidmul()//个位数乘法

{

intrand1,rand2,k,i,sum=0;

floatanswer;

printf("请输入挑战的题量:

");//k输入的题目数量

scanf("%d",&k);

getchar();

if(k>=9||k<0)

{

printf("输入错误!

请重新输入!

\n");

printf("请输入挑战的题量:

");//k输入的题目数量

scanf("%d",&k);

}

for(i=1;i<=k;i++)

{

srand((unsigned)time(0));

rand1=(rand()%10);

rand2=(rand()%10);

printf("%d*%d=",rand1,rand2);

scanf("%f",&answer);

getchar();

if(k>=999999||k<0)

{

printf("答案错误,请输入正确答案:

\n");

printf("%d*%d=",rand1,rand2);

scanf("%f",&answer);

}

if(answer!

=(rand1*rand2))//错一题就减1

sum--;

while(answer!

=(rand1*rand2))

{

printf("答案错误,请输入正确答案:

\n");

printf("%d*%d=",rand1,rand2);

scanf("%f",&answer);

getchar();

if(k>=999999||k<0)

{

printf("答案错误,请输入正确答案:

\n");

printf("%d*%d=",rand1,rand2);

scanf("%f",&answer);

}

}

sum++;

printf("回答正确!

\n");

}

6.6除法函数详细说明

用div实现个位数除法,用div1实现十位数除法,答对输入的题量,用随机函数随机产生数进行运算,控制不产生分母为零的数,结果错误后提示错误并且重新输入,在一次答对率达到60%后可晋级到十位数除法,难度有所增加,若低于60%提示是否继续还是退出。

通关后提示是否继续,若继续,则返回算法选择界面。

流程图同加法。

voiddiv()//个位数除法

{

intrand1,rand2,i,k;

intanswer;

intsum=0;

printf("请输入挑战的题量:

");//k输入的题目数量

scanf("%d",&k);

getchar();

if(k>=9999||k<0)

{printf("输入错误!

请重新输入!

\n");

printf("请输入挑战的题量:

");//k输入的题目数量

scanf("%d",&k);

}

for(i=1;i<=k;i++)

{srand((unsigned)time(0));

do{rand1=(rand()%10);

rand2=(rand()%10);

}

while(rand2==0||rand1%rand2!

=0);//控制不产生分母为零的数

printf("%d/%d=",rand1,rand2);

scanf("%d",&answer);

getchar();

if(k>=999999||k<0)

{printf("答案错误,请输入正确答案:

\n");

printf("%d/%d=",rand1,rand2);

scanf("%d",&answer);

}

if(answer!

=(rand1/rand2))//错一题就减1

sum--;

while(answer!

=(rand1/rand2))

{

printf("答案错误,请输入正确答案:

\n");

printf("%d/%d=",rand1,rand2);

scanf("%d",&answer);

getchar();

if(k>=999999||k<0)

{printf("答案错误,请输入正确答案:

\n");

printf("%d/%d=",rand1,rand2);

scanf("%d",&answer);

}

}

sum++;

printf("回答正确!

\n");

}

6.7统计信息函数详细说明

在加减乘除法中插入信息统计函数,通过文件操作voidtgxx()函数把算法、答题数、正确率写入data.dat文件中,管理员可以查看用户的数据。

voidtgxx()//通关信息储存

{

FILE*fp;

fp=fopen("data.dat","a+");

fprintf(fp,"%d",k);//记录答题数

fprintf(fp,"%d",sum);//记录答对题数

fprintf(fp,"%d",k-sum);//记录答错题数

fprintf(fp,"%.2f",(sum/(float)k*100));//记录答对率

fclose(fp);

}

6.8信息读取函数详细说明

通过文件操作voidtgyy()函数,把记录在data.dat中的数据读写出来。

voidtgyy()//信息读取

{

floata,b,c,d;

FILE*fp;

fp=fopen("data.dat","r");

/*

fseek(fp,-12l,2);//标记文件位置

fscanf(fp,"%f",&d);

printf("答题数为:

%1d\n",d);

fseek(fp,-10l,2);//标记文件位置

fscanf(fp,"%d",&c);

printf("答对题数为:

%d\n",c);

fseek(fp,-8l,2);//标记文件位置

fscanf(fp,"%d",&b);

printf("答错题数为:

%d\n",b);

*/

fseek(fp,-6l,2);//标记文件位置

fscanf(fp,"%f",&a);

printf("答对率为:

%4.2f%%\n",a);

fclose(fp);

}

6.9晋级降级函数详细说明

在个位数加减乘除法运算中,如果用户一次答题命中率低于60%,则会提示是否继续游戏或者退出,达到60%则可以晋级,进行十位数的加减乘除法,难度加大,在十位数加减乘除法运算后一次答题命中率低于60%则会被降级回到个位数的加减乘除法运算,达到60%则显示通关,获得相应的奖励和称号,并且提示是否继续游戏或者退出。

if((sum/(float)k)>=0.6)//晋级

{

printf("恭喜您晋级了!

\n");

add1();//usb1、mul1、div1

}

else

{

printf("抱歉您未能及格!

\n");

tc();//提示是否继续或者退出

}

}

7.调试与测试

7.1调试方法

(1)VC6.0下主要调试方法:

(2)单步,步入,堆栈和寄存器的查看,变量的查看,普通断点,条件断点,内存访问断点。

(3)步骤:

(4)A.保存为c或c++文件

(5)B.根据断点调试找到错误处。

(6)C.采用F10或F11单步调试找到精确的错误处。

其中F10是跳过函数盗用,F11是进入函数体调试。

一般是先用F10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用F11进入函数体一步一步调试。

(7)D.在调试过程中,肯定得监视程序中的变量。

在vc6.0的右下角有一个watch窗口,专门用来设置监视变量。

具体怎样设置自己体会吧。

在调试过程中,鼠标轻轻放在变量上也会显示该变量的值

(8)E.vc6.0专门为调试设置了工具箱以方便调试的进行,打开的方法如下。

右键——〉在debug(或调试)选择项的勾勾上。

7.2功能模块的调试及测试

(1)登录注册系统界面和注册模块调试及测试

(2)登录模块函数及函数模块函数调试

(3)规则函数模块调试

(4)加法及晋级函数的调试

(5)减法及晋级函数的调试

(6)乘法及晋级函数的调试

(7)除法及晋级函数的调试

(8)返回登录函数界面函数调试

7.3测试过程中遇到的主要问题

测试结果正确,能否按照要求实现运算,表明程序没有问题,但是其中还有一点bug,在运算输入结果时不能输入多个字符,否则会出现死循环。

7.4采取的解决措施

没有注意输入多个字符的情况,需要把字符转换为数字进行判断。

8.总体收获、体会

本次课设的程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。

在刚开始的几次调试中曾经出现过不能产生十以内随机数字、不能进行循环练习、文件读写错误等等问题。

经过我的努力及同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善。

最后还能分别输出对错的题数及所得分数,把数据存放到文件中再读取出来。

在这次设计过程中,不仅复习课本上所学知识,还通过网上查资料、问同学学到了课本上没有的知识。

从而启发我,要想写好程序,在写好课本知识的同时还需要多查找一些有关的书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。

除此之外,我还得到了一些有用的教训:

写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。

在修改调试时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。

9.谢辞

   感谢此次课程设计过程中给予我们悉心指导的陈寿宏老师,同时也感谢其他同学,因为有老师和同学的帮助,我才能克服各种各样的难题成功完成了这次课程设计。

同时更感谢学校给我们提供的这次课设机会,让我们学到了很多知识,提高我们的动手能力。

10.参考文献

[1]C程序设计/谭浩强着.--4版.北京:

清华大学出版社,2010.6

[2]C语言程序设计,贾宗璞、许合利,江苏:

中国矿业大学出版社,2007.6

[3]高质量C++/C编程指南,林锐,PDF1.0版,2001.7

[4]

11.源程序清单

voidjm();//游戏规则函数voidcd();//菜单

voidtc();//退出函数voidchoice();//算法选择

voidxjsr();//限制输入函数voidadd();//个位数加法

voidadd1();//十位数加法

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2