C语言小学生心算CAI系统报告书课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称C语言课程设计
课题名称小学生心算CAI系统
专业电气工程及其自动化班级
学号
姓名
指导教师
课程名称C课程设计
课题小学生心算CAI系统
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期
任务完成日期
一、设计内容与设计要求
1.设计内容:
见附录
2.设计要求:
1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,。
5).上机演示。
二、进度安排
第12周星期一布置任务,查找资料。
星期二确定总体方案,进行详细设计。
星期三编写程序,上机调试。
星期四编写程序,上机调试。
星期五答辩,总结。
星期六~星期天写课程设计报告
附:
课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、1、设计目的 2、总体设计(程序设计组成框图、流程图)3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5、源程序清单和执行结果:清单中应有足够的注释
正文总字数要求在5000字以上(不含程序原代码)。
附录:
设计课题六:小学生心算CAI系统
一、问题描述:
本系统可以用来进行单独的的加、减、乘、除心算练习,也可综合心算的速度与正确率进行测试。
当用户在进行简单的四则运算时运算速度和正确率都较高时,可以进入四则混合运算,借此来进一步提高自己的心算能力。
二、功能描述:
1、用户可以通过两种方法来选择功能,既可以按相应的数字键进入相
应的心算练习,也可以按光标键来选择功能项。
2、计算机自动出题,用户进入每项练习时,屏幕上会显示用户所做的
相应的题数,如果不想继续可以随时退出。
3、设计的系统完全适合用户,比如除法时考虑到小学生的水平问题,
只允许出现整除情况。
4、用户输入的答案不对时,提示错误,用户输入的结果如果连续两次
不对,计算机会自动给出正确答案,供用户参考。
5、界面设计友好。
三、算法提示:
1、用简单的程序设计方法
2、一定的窗口设计技巧
3、简单的数据类型
四、测试数据:
计算机随机产生
目录
1、设计目的 (1)
2、总体设计 (1)
3、详细设计 (2)
1、主要函数 (2)
2、函数的主要关系 (2)
4、调试与测试 (4)
附:源程序清单
一、设计目的:
全面熟悉,掌握C语言基本知识,C语言中的顺序,分支,循环三种结构及数组,函数C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题的运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算,分析,实验和设计等学习环节打下较扎实的基础.通过本课程设计,培养上机动手能力,巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力。
三、详细设计:
1、主要函数
(1)、主控模块main.c
void DoCommand() //根据输入命令进行相应的处理
void Calculate() //执行计算功能
void ReSet() //重设系统环境
(2)、程序界面模块 IntFace.c
void InitiInterface(); //界面初始化
void GoToCmdxy(); //将光标定位到命令选项提示之后
void GoToPrompt(); //将光标定位到命令选项提示行首
void ShowMainPrompt(); //显示命令选项提示
void ClearScreen(); //以清除整个屏幕,并设置为黑底白字模式
void ClearPromptLine(); //清除提示行的显示
void ClearWorkSpace(); //清除工作区的显示
void InputNumberBox(int OneOrTwo);//指定两个输入数的输入窗口,如果超过这个范围文字将自动流动
void ResultBox(); //指定计算结果的显示窗口,如果超过这个范围文字将自动流动
(3)、长整型数输入输出模块见二小节2分节
(4)、长整型数四则运算处理模块见二小节2分节
(5)、长整型数存储模块—双向循环链表模块见二小节1分节
2、函数的主要关系
四、调试过程:
1、调试分析效果图
①主菜单
②加法运算
③第二关
④第三关
⑤退出系统
2、设计总结
经过一周的课程设计,我学到了很多东西:
①巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
②培养了我选用参考书,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
③过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
④够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。
⑤通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。
在此对老师和同学们表示感谢!
参考资料:
[1] Brian W.Kernighan, Dennis M.Ritchie,C程序设计语言[M],北京:机械工业出版社,1998.10: 39-48
[2] Perter Van Der LinDen,C专家编程[M],北京:人民邮电出版社,1995.4: 41-44
[3] Guy L. Steele,C语言参考手册(第五版)[M],北京:人民邮电出版社,2000,5:78-90
[4]David Hanson,C语言接口与实现:创建可重用软件的技术[M],武汉机械工业出版
社,2001,8:87-89
[5]Brian W. Kernighan, Dennis M. Ritchie,C程序设计语言[M],
北京清华大学出版社,1997,4:128-134
[6]Brian W. Kernighan, Rob Pike,程序设计实践[M],武汉:机械工业出版社,2000,
9:149-153
[7]Herbert Schildt,C语言大全[M],长沙:电子工业出版社,2001,3:163-169
附:源程序清单
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("*******************************************************************
*************");
printf("^_^_^_^_^_^_^_^_^_^_^_^小朋友,欢迎你们来学习小学算术
_^_^_^_^_^_^_^_^_^_^_^_^_^_");
printf(" ");
printf(" 1.加法
");
printf(" 2.减法
");
printf(" 3.乘法
");
printf(" 4.除法
");
printf(" 0.退出
");
printf(" ");
printf(" 快选择你要学习的内容吧!
");
printf(" ");
printf("^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^
_^_^_^_^_^_^_");
printf("*******************************************************************
*************");
}
void plus1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
printf("%d",m=rand()%10);
printf("+");
printf("%d",n=rand()%10);
printf("=");
total=m+n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第一关!\n");
}
}
void plus2()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%10;
n=rand()%100;
}while(n<10);
printf("%d",m);
printf("+");
printf("%d",n);
printf("=");
total=m+n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第二关!\n");
}
}
void plus3()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第三关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%100;
}while(m<10&&n<10);
printf("%d",m);
printf("+");
printf("%d",n);
printf("=");
total=m+n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第三关!\n");
}
}
void sub1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%10;
n=rand()%10;
}while(m<=n);
printf("%d",m);
printf("-");
printf("%d",n);
printf("=");
total=m-n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第一关!\n");
}
}
void sub2()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%10;
}while(m<10);
printf("%d",m);
printf("-");
printf("%d",n);
printf("=");
total=m-n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第二关!\n");
}
}
void sub3()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第三关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%100;
}while(m<=n||m<10||n<10);
printf("%d",m);
printf("-");
printf("%d",n);
printf("=");
total=m-n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第三关!\n");
}
}
void plus()
{
int i;
plus1();
printf("是否继续挑战?Y(1)/N(0):"); scanf("%d",&i);
if(i==1)
plus2();
else
return;
i=NULL;
printf("是否继续挑战?Y(1)/N(0):"); scanf("%d",&i);
if(i==1)
plus3();
else
return;
}
void sub()
{
int i;
sub1();
printf("是否继续挑战?Y(1)/N(0):"); scanf("%d",&i);
if(i==1)
sub2();
else
return;
i=NULL;
printf("是否继续挑战?Y(1)/N(0):"); scanf("%d",&i);
if(i==1)
sub3();
else
return;
}
void mul1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
printf("%d",m=rand()%10);
printf("*");
printf("%d",n=rand()%10);
printf("=");
total=m*n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第一关!\n");
}
}
void mul2()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%10;
}while(m<10);
printf("%d",m);
printf("%d",n);
printf("=");
total=m*n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第二关!\n");
}
}
void mul()
{
int i;
mul1();
printf("是否继续挑战?Y(1)/N(0):");
scanf("%d",&i);
if(i==1)
mul2();
}
void div1()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第一关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%10;
n=rand()%10;
}while(n==0||m%n!=0);
printf("/");
printf("%d",n);
printf("=");
total=m/n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第一关!\n");
}
}
void div2()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第二关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%10;
}while(n==0||m<10||m%n!=0);
printf("%d",m);
printf("/");
printf("%d",n);
printf("=");
total=m/n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第二关!\n");
}
}
void div3()
{
int count=0,m,n,s,total,k;
printf("欢迎进入第三关!\n");
printf("请设定题目数量:");
scanf("%d",&k);
while(count<k){
do{
m=rand()%100;
n=rand()%100;
}while(n==0||m<10||n<10||m%n!=0);
printf("%d",m);
printf("/");
printf("%d",n);
printf("=");
total=m/n;
loopa:scanf("%d",&s);
if(s==total)
{printf("恭喜你,答对了!\n");count++;}
else
{printf("回答错误,请重新回答!\n");goto loopa;} printf("恭喜你通过了第三关!\n");
}
}
void div()
{
int i;
div1();
printf("是否继续挑战?Y(1)/N(0):"); scanf("%d",&i);
if(i==1)
div2();
else
return;
i=NULL;
printf("是否继续挑战?Y(1)/N(0):"); scanf("%d",&i);
if(i==1)
div3();
else
return;
}
main()
{
void menu();
int k;
do{
menu();
printf("请选择:");
scanf("%d",&k);
switch(k)
{
case 1:plus();break;
case 2:sub();break;
case 3:mul();break;
case 4:div();break;
case 0:break;
}
printf("\n");
}while(k!=0); printf("\n"); return 0;
}。