课程设计-小学数学测试系统C课程设计报告及源程序代码
C语言课程设计-小学数学测试软件
课程设计(论文)题目名称小学数学测试软件课程名称C语言程序课程设计学生姓名学号系、专业信息工程系、信息大类指导教师黄同成2010年6月26 日注:1.此表由指导教师填写,经系、教研室审批,指导教师、学生签字后生效;2.此表1式3份,学生、指导教师、教研室各1份。
指导教师(签字):学生(签字):课程设计(论文)评阅表学生姓名学号系信息工程系专业班级信息一班题目名称小学数学程序设计课程名称C语言程序课程设计二、指导教师评定注:1、本表是学生课程设计(论文)成绩评定的依据,装订在设计说明书(或论文)的“任务书”页后面;2、表中的“评分项目”及“权重”根据各系的考核细则和评分标准确定。
目录1 前言 (1)2 需求分析 (1)2.1要求 (1)2.2任务 (1)2.3运行环境 (1)2.4开发工具 (1)3 概要设计与详细设计 (2)3.1系统流程图 (2)4 编码与实现 (6)4.1分析 (6)4.2具体代码实现 (8)5 课程设计总结 (15)参考文献 (16)致谢 (16)1 前言编写一个小学数学测试软件,可选择题型(+,—,*),可选择答题个数,并判断对错,错误,给出正确答案。
2 需求分析(1)用C语言实现程序设计;(2)利用结构体进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求用函数的形式实现;(5)界面友好(良好的人机互交),程序要有注释2.2任务(1)可选择题型(+,—,*);(2)可选择每次答题的个数;(3)随机生成两个数进行运算;(4)每次在输入答案后判断对错,若答案错误,应该给出正确答案;(5)最后给出做对题目的总个数;(6)编写代码;(7)程序分析与调试。
2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境2.4开发工具C语言3 概要设计与详细设计3.1系统流程图4 编码与实现4.1分析在程序开头部分定义四个无参函数,用来进行函数调用。
C语言课程设计报告-小学算术运算测试
河南理工大学课程设计报告20013—2014学年第一学期课程名称数据结构课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机科学与技术指导教师2014 年 1 月8日目录1.设计任务书 (2)1.1 题目与要求 (2)1.2 本程序涉及的知识点 (2)2.功能设计 (2)2.1算法设计 (2)2.2部分模块流程图 (2)3. 程序代码设计 (4)3.1输入函数 (4)3.2输出函数 (5)4.C程序设计总结 (6)5.致谢 (6)参考文献 (6)1、设计任务书1.1、题目与要求我计划编写小学算术运算测试程序。
要求完成10以内的加减运算。
能根据用户输入的想要练习的题目数自行出题。
用户输入答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。
同时,对于用户算错的题目会发出报警声,提示用户注意,同时给出正确结果。
做完一次测试后用户可决定是否继续进行下一次测试。
1.2、本程序涉及的知识点变量的定义、输入和输出函数、产生随机数函数、if语句、goto语句、转意字符的使用等等。
2、功能设计2.1、算法设计1、本程序实现的功能要求:利用if语句完成所示的主菜单。
2、进入第一步出现如下信息:开始测试?(输入y开始,输入n推出)选择y后,进入第二步。
用户输入要练习的题数。
第三步:输出算术式子用户输入结果进行测试。
第四步:输出测试结果屏幕显示出本次测试的基本情况。
2.2、部分模块流程图3、程序代码设计3.1、输入函数1)函数原形:scanf(“%d”,&*)2) 功能: scanf()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断循环的功能。
3)变量及类型:int a,b,m: 整型形参变量,接收main()传过来的随机数字。
int i,num:循环控制变量。
int c,d,f,n,num,j,s,t: 整型形参变量。
其中j 具有自加功能;d,f,num,t:需要用户赋值;c,n,s:系统自动赋值。
小学算术运算C语言课程设计报告
C语言课程设计报告题目:小学算术运算测试设计者:XXXX专业班级:13级通信2班学号:XXXX指导教师: XXXX2014年6 月14 日河南理工大学计算机学院目录1 题目与要求………………………………………………1.1 问题提出………………………………………………………1.2 本系统涉及的知识点…………………………………………1.3 功能要求………………………………………………………2 功能设计…………………………………………………2.1 算法设计………………………………………………………2.2 部分模块流程图………………………………………………3 程序代码设计……………………………………………………4 C程序设计总结……………………………………………………5 结束语………………………………………………………………参考文献………………………………………………………………附录……………………………………………………………………1 题目与要求1.1 问题提出本人计划制作一个可供小学数学运算程序:10以内加减法,能根据输入题数出题,判断做题是否正确。
正确的给鼓励,错误的发出警报,并给出正确答案,最后计算分数。
1.2 本系统涉及的知识点循环、函数、结构1.3 功能要求1、能根据输入要测试的题目数,输出相应数目的试题。
2、能判断正误,错误的报警,并给出正确答案。
3、能计算出得分。
2 功能设计2.1 算法设计1、本程序实现的功能要求:利用for循环和switch完成的主菜单。
2、进入第一步出现如下信息:用户输入要练习的题数。
第二步:输出算术式子用户输入结果进行测试。
第三步:输出测试结果屏幕显示出本次测试的基本情况。
2.2 部分模块流程图3 程序代码设计输入模块1)函数原形:switch(op)2)功能:利用结构体完成10以内的加减法的出题。
3)变量及类型:int a:整形变量,存放产生10以内的随机数。
int number:整形变量,用来统计错误的题数。
c语言课程设计——小学数学出题系统
通信工程C语言强化训练实验报告学号:姓名:提交日期:成绩:评语:教师签字:小学数学出题系统1、强化训练目的a)C语言基本知识的巩固和综合运用。
基本数据类型、基本控制结构、数组、指针、函数、结构体和共用体。
b)C语言高级编程。
链表基本操作、文件的基本操作、图形和声音制作。
c)程序的结构化设计。
d)编辑、设置、编译、调试、执行。
e)C语言结合实际问题的综合设计。
2、设计题目功能为小学生教学服务,能够根据小学生的需要随机抽出两位数的数学运算题,可根据需要进行加减乘除运算。
由学生在电脑上答题,并对其判断正误和记分。
3、设计题目要求两位数四则云算的出题功能答案判断正误功能分数累积功能:4、程序流程图5、主要代码#include <stdio.h>#include <stdlib.h>int main(){int k,n,m,i,s,j;n=5;float score=0;int a,b;int answers[1000]={0},user_answer[1000]={0};a=0;b=0;printf("*****************小学数学出题系统*******************\n"); printf(" 指导老师: \n");printf(" 完成学生: \n");printf(" 完成时间:年月日 \n");printf(" thank you\n\n");printf("请输入题目数(1-1000)");scanf("%d",&k);if (k<1||k>1000){ printf("\n超出允许范围\n");printf("请再次输入题目数\n");scanf("%d",&k);}printf("请选择出题方式:0.加法 1.减法 2.乘法 3.除法 4.随机\n"); scanf("%d",&m);printf("\n********************开始答题************************\n");for (i=0;i<k;i++){a=rand()%100;b=rand()%100;if(m==4)n=rand()%4;if (m==0||n==0) {printf("\n第%d题:%d+%d=",i+1,a,b); scanf("%d",&user_answer[i]);answers[i]=a+b;}if (m==1||n==1){if (a>b){printf("\n第%d题:%d-%d=",i+1,a,b); scanf("%d",&user_answer[i]);answers[i]=a-b;}else{printf("\n第%d题:%d-%d=",i+1,b,a);scanf("%d",&user_answer[i]);answers[i]=b-a;}}if (m==2||n==2){printf("\n第%d题:%d*%d=",i+1,a,b); scanf("%d",&user_answer[i]);answers[i]=a*b;}if (m==3||n==3){if(a!=0&&b!=0){s=a*b;printf("\n第%d题:%d/%d=",i+1,s,a); scanf("%d",&user_answer[i]);answers[i]=s/a;}else{ doa=rand()%100;while(a!=0&&b!=0);b=rand()%100;s=a*b;printf("\n第%d题:%d/%d=",i+1,s,a);scanf("%d",&user_answer[i]);answers[i]=s/a;}}}printf("结果和正确答案:\n");for (i=0;i<k;i++) {if (user_answer[i]==answers[i]){printf("%d:正确 %d\n",i+1,answers[i]);score++;}elseprintf("%d:错误 %d\n",i+1,answers[i]);}score=100*score/k;printf("\n总得分(百分制):%f\n",score);if (score<60) printf("很遗憾!你的分数不及格,继续努力\n");else printf("恭喜!你的成绩合格\n");printf("*****************************************************\n"); }6、运行程序示例第一个图反应执行加法的结果第二个图反应执行减法的结果第三个图反应执行乘法的结果第四个图反应执行除法的结果第五个图反应执行随机的结果7、强化训练心得体会本程序在刚开始调试时有许多错误,出现过不能运行、不能随机出现四则运算、不会输出正确结果、选择乘法却出现减法等等问题。
小学生数学测试软件-C语言课程设计
C语言课程设计设计期限2013 年 6 月17 开始|至2013 年 6 月20 结束系别信息管理与信息系统专业班级学生姓名学号指导教师]主要内容有:[问题描述],小学生数学测试软件的编写[基本设计要求],~1) 可选择题型(+,-,*,/);2) 可选择每次答题的个数;3) 随机生成两个数进行运算;4) 每次在输入答案后应判断对错,若答案错误,应给出正确答案;5) 给出统计结果。
注:根据课程设计的基本要求,针对几点进行了改进,大体改进如下,具体改进详见程序。
1)可选择类型有加、减、乘、混合运算;2)可选择每次答题的个数;3)》4)随机生成两个或三个数进行运算;5)每次在输入答案后应判断对错,若答案错误,应给出正确答案;6)给出统计结果,包括正确的个数和分数;7)根据分数的情况给出不同的建议[系统分析],程序中包括头文件#include<>、#include<>、#include<>、#include<>包函的函数。
定义子函数int style()来选择测试类型,定义子函数void jia(),void jian(),void cheng(),void hun()分别进行加、减、乘、混合运算。
定义子函数void xiao()用于成绩在80-100之间时生成两个笑脸,子函数void wu()用于成绩在60-80之间时生成两个表情,子函数void ku()用于成绩少于60时生成两个哭脸。
上述三个子函数的使用目的在于使软件在使用时增加使用者的兴趣。
《·[流程图] ,#include<>int style();void xiao();void wu();void ku();void jia();void jian();、void cheng();void hun();void main(){for( ; ; ){switch(style()){)case 1:jia();break;case 2:jian();break;case 3:cheng();;break;case 4:hun();break;case 5:printf("欢迎再次使用,再见\n");exit(0);}$}}void xiao(){int x1,x2;char diamond1[][30]={{' ',' ','*',' ',' ',' ',' ',' ',' ',' ','*',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ',' ',' ',' ',' ',' ','*',' ',' '},{'*',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ','*'},{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},({' ',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ',' '},{' ',' ',' ',' ',' ',' ','*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ',' ',' ',' ',' '}};for(x1=0;x1<5;x1++){for(x2=0;x2<30;x2++)printf("%c",diamond1[x1][x2]);printf("\n");}¥}void wu(){int g1,g2;char diamond2[][30]={{' ',' ','*',' ',' ',' ',' ',' ',' ',' ','*',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ',' ',' ',' ',' ',' ','*',' ',' '},{'*',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ','*',' ',' ',' ','*'},{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},{' ','*',' ','*',' ',' ',' ',' ',' ','*',' ','*',' ',' ',' ',' ',' ',' ','*',' ','*',' ',' ',' ',' ',' ','*',' ','*',' '}};—for(g1=0;g1<4;g1++)printf("%c",diamond2[g1][g2]);printf("\n");}void ku(){int r1,r2;char diamond3[][18]={{'*','*',' ',' ',' ','*','*',' ',' ',' ',' ','*','*',' ',' ',' ','*','*'},、{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},{' ',' ',' ','*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ',' '},{' ','*',' ',' ',' ','*',' ',' ',' ',' ',' ',' ','*',' ',' ',' ','*',' '}};for(r1=0;r1<4;r1++){for(r2=0;r2<18;r2++)printf("%c",diamond3[r1][r2]);printf("\n");}—}int style(){int num;printf("\n");printf(" -*-*-*-*-*目录-*-*-*-*-*-\n");printf(" 选择加法题请按1\n");printf(" 选择减法题请按2\n");^printf(" 选择乘法题请按3\n");printf(" 选择混合题请按4\n");printf(" 选择退出请按5\n");printf(" -*-*-*-*-*-*-*-*-*-*-*-*-\n");printf(" -*-*-请选择测试题类型,输入数字:");scanf("%d",&num);if(num>0&&num<6)return(num);[elseprintf(" -*-*-输入错误,请重新输入!\n");}void jia(){int a1,b1,ans1,zhen1,i1,k1,m1,n1,he;int q1;printf("\n");¥printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");printf("\n");printf("1.简单2.适中3.复杂请选择题目的难易程度:");scanf("%d",&n1);for( ; ; ){int right1=0,score1=0;m1=(int)(pow(10,n1));¥printf("请输入你想做的题目数量:");scanf("%d",&k1);printf("\n");printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");printf("\n");for(i1=0;i1<k1;i1++){srand(time(0));:a1=rand()%m1;b1=rand()%m1;if(a1%3==0){zhen1=a1+b1;printf(" %d. %d+%d=() 你的答案是:",i1+1,a1,b1);}if(a1%3==1)){he=a1+b1;zhen1=a1;printf(" %d. ()+%d=%d 你的答案是:",i1+1,b1,he);}if(a1%3==2){he=a1+b1;~zhen1=b1;printf(" %d. %d+()=%d 你的答案是:",i1+1,a1,he);}scanf("%d",&ans1);if(ans1==zhen1){printf("恭喜你,回答正确!\n");right1++;…}elseprintf("很遗憾,回答错误!正确答案是%d,别灰心,继续努力!\n",zhen1);printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");printf("\n");}score1=(100*right1)/k1;printf("你答对了%d道题!\n",right1);.if (score1>=80&&score1<=100){printf("你考了%d分,很不错,再接再厉哟!\n",score1);xiao();n1++;if(n1==4)break;else¥{printf("你想挑战更高难度的题目吗是请按1,不是请按2:");scanf("%d",&q1);if(q1==2)break;}}if(score1>=60&&score1<80)|{printf("你考了%d分,还不错,但不是特别理想,继续努力!\n",score1);wu();if(n1=3){printf("你想再来几题吗是请按1,不是请按2:");scanf("%d",&q1);if(q1==2)-break;}else{printf("你想挑战更高难度吗是请按1,不是请按2:");scanf("%d",&q1);if(q1==1)n1++;—elsebreak;}}if(score1<60){printf("你只考了%d分,成绩不理想,别灰心,继续努力!\n",score1);ku();…if(n1!=3){printf("你想再来几题吗是请按1,不是请按2:");scanf("%d",&q1);if(q1==2)break;}}$}}void jian(){int a2,b2,ans2,zhen2,i2,k2,m2,n2,cha;int q2;printf("\n");printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");—printf("\n");printf("1.简单2.适中3.复杂请选择题目的难易程度:");scanf("%d",&n2);for( ; ; ){int right2=0,score2=0;m2=(int)(pow(10,n2));printf("请输入你想做的题目数量:");·scanf("%d",&k2);printf("\n");printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");printf("\n");for(i2=0;i2<k2;i2++){srand(time(0));a2=rand()%m2;—b2=rand()%m2;if(a2%3==0){zhen2=a2-b2;printf(" %d. %d-%d=() 你的答案是:",i2+1,a2,b2);}if(a2%3==1){|cha=a2-b2;zhen2=a2;printf(" %d. ()-%d=%d 你的答案是:",i2+1,b2,cha);}if(a2%3==2){cha=a2-b2;zhen2=b2;?printf(" %d. %d-()=%d 你的答案是:",i2+1,a2,cha);}scanf("%d",&ans2);if(ans2==zhen2){printf("恭喜你,回答正确!\n");right2++;}…elseprintf("很遗憾,回答错误!正确答案是%d,别灰心,继续努力!\n",zhen2);printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");printf("\n");}score2=(100*right2)/k2;printf("你答对了%d道题!\n",right2);if (score2>=80&&score2<=100)){printf("你考了%d分,很不错,再接再厉哟!\n",score2);xiao();n2++;if(n2==4)break;else{。
C语言课程设计-小学生数学测试
C语言课程设计报告《c语言课程设计报告》学院:物理与电子信息学院年级专业:09级电子信息工程2班学号:姓名:安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University同组人员:指导老师:完成日期:2010年6月21日目录一、所选课题二、设计要求三、程序具体分工四、课题分析与设计五、程序介绍六、源程序代码七、程序调试八、流程图九、实验总结2C语言课程设计报告安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University 3十、参考文献一、所选课题小学生数学测试二、设计要求1、可选择题型(加,减,乘,除);2、两个数随机产生,若选择加减运算,则产生两位数,且被减数大于减数,若选择乘法运算,则产生一位数,若选择除法运算则被除数能被整除,且除数不能为零。
3、每次在输入答案后应判断对错,并给出是否继续测试的提示,若答案错误,应给出正确答案;4、最后给出评分。
三、程序具体分工乘除部分由我完成,界面和加减测试部分由徐磊完成。
四、课题分析与设计本程序是非数值计算型算法设计,我们设计出了小学生数学测试软件的基本功能,并设计了简单的界面。
本程序主要考察针对小学生该怎样设计程序:例如小学生只进行两位数之间的加减法,只进行一位数与两位数之间的乘法,除法只能是整除等。
课题要求我们设计个可以进行加、减、乘法的程序,但我们设计的这个小学生数学测试软件也不仅实现了加、减、乘法的测试,还实现了除法的测试。
五、程序介绍程序应包括<stdio.h>和<stdlib.h>两个头文件,其中存放库函数,而产生随机数的函数则存放在头文件中。
另外程序有五个函数,分别为void menu(); /*主菜单函数*/ void add() ;/*加法函数*/ void sub();/*减法函数*/ void mul();/*乘法函数*/ void div1();/*除法函数*/,还有产生随机数函数在程序中直接调用。
小学数学学习系统(C语言课程设计报告,有源代码)
课程设计报告课程设计名称:C语言课程设计课程设计题目:小学数学学习系统目录第1章概要设计 (3)1.1题目的内容与要求 (3)1.2总体结构 (3)第2章详细设计 (4)2.1数据结构设计 (4)2.2功能设计 (4)2.2.1 学生信息存储模块 (4)2.2.2 菜单选择模块 (5)第3章调试分析 (10)第4章使用说明 (11)参考文献 (19)附录(源代码) (21)第1章概要设计1.1题目的内容与要求内容:1.具有随机出题功能,且可以选择难度等级,不要混合运算功能;2.自动评分功能,当用户电答题后能给出用户的分值;3.查看正确答案;4.错题重做功能。
要求:1、用户登录;2、程序采用文本菜单界面。
1.2总体结构本程序主要分为5个模块(功能模块图见图1.1):1.学生信息存储模块,2.菜单选择模块,3.试题测试模块,4.得分与排名模块图1.1第2章详细设计2.1数据结构设计首先定义结构体数组存储学生信息,注册,录入学生个人信息,将学生信息储存在TXT 文档中,用指针写入文件,用while循环语句开始写入测试等级难度,保存正确结果,计算正确率,最后查看排名。
2.2 功能设计2.2.1 学生信息存储模块main函数实现程序的菜单操作。
根据用户选择的不同选项调用不同的函数,实现“注册”、“输入学号”、“选择难度答题”、“返回主菜单”等功能。
具体情况流程图如图2.1所示:算法1在屏幕上输出“请注册”选项;2接受用户输入2.2.2图 2.2图2.32.2.3图 2.4图 2.5 2.2.4 得分与排名模块图 2.6第3章调试分析在上机调试过程中遇到许多问题:1.引用库函数的头文件写成“#include “stdio””;2.变量int类型未先定义后使用;仔细思考总结,查阅教材解决;3.将学生信息输入后答题,但发现无法进行下一步功能;解决办法:按F10键进行单步调试,首先发现指向文件数据的指针没有数据,然后对文件直接进行数据加入,发现其他功能能够实现,然后对指向文件数据的指针进行修改,发现无论怎样修改数据都无法进入到文件,于是对数据输入函数进行修改,发现犯了一个比较低级的错误,scanf (“”)输入数据时忘记“&”符号,造成数据无法输入;4.使用随机数函数,但是调试过程中出现“rand()未定义”,无法产生随机数;解决办法:查找书籍,发现是未使用“rand()”函数的头文件,调用“#include<stdio.h>”后,随机函数问题得以解决;第4章使用说明(1).注册。
C语言课程设计举例--小学生算术自测
printf("%d-%d=",a,b);
scanf("%d",&c);
if (a-b==c) printf("right!\n");
else printf("error!\n");
break;
case3: goto end;
(2)作三位或三位以上的整数除法运算练习
(3)返回主菜单
请选择(1,2,3):
2.接收子菜单选择项
如果选择项的值为1,随机出一道两位整数的除法练习题,根据小学生的回答,输出表示“正确”或“错误”的提示信息,然后再显示子菜单。
如果选择项的值为2,随机出一道三位或三位以上的整数除法练习题,根据小学生的回答,输出表示“计算正确”或“计算错误”的提示信息,然后再显示子菜单。
(略)
(2)软件配置
操作系统:windows2000;
C语言编译系统:WIN-TC。
3.系统结构
(1)系统结构图
小学生算术练习管理系统的系统结构图如下所示,总共由7个模块组成,其中一个是总控模块,另外七个是分别实现不同功能的子模块:
(2)模块说明书
A.小学生算术练习管理系统总控模块的模块说明书
模块名称:小学生算术练习管理系统总控模块
输入:主菜单选择项
输出:
处理:
1.按以下格式显示主菜单和提示小学生选择:
小学生算术练习管理系统
(1)加法运算练习
(2)减法运算练习
(3)乘法运算练习
(4)除法运算练习
(5)四则混合运算练习
(6)模拟考试练习
(7)结束练习,退出本系统
请选择(1,2,3,4,5,6,7):
c课程设计源代码
c 课程设计 源代码一、课程目标知识目标:1. 学生能理解源代码的基本概念,掌握编程语言的基本语法结构。
2. 学生能运用所学知识编写简单的程序,实现基础的计算和控制功能。
3. 学生了解编程中的顺序、选择和循环三种基本结构,并能运用到实际编程中。
技能目标:1. 学生能运用编程工具进行代码编写、调试和运行,具备基本的编程能力。
2. 学生能通过分析问题,设计简单的算法,并将其转化为源代码实现。
3. 学生能通过课堂讨论和小组合作,提高问题解决和团队协作能力。
情感态度价值观目标:1. 学生对编程产生兴趣,培养探索精神和创新意识。
2. 学生在学习过程中,养成严谨、细心的良好习惯,提高自我纠错能力。
3. 学生通过编程学习,认识到信息技术在生活中的应用,增强社会责任感和使命感。
课程性质:本课程为信息技术学科的基础课程,旨在培养学生的编程兴趣和基本技能,为后续学习打下基础。
学生特点:六年级学生具备一定的逻辑思维能力,对新事物充满好奇,但注意力容易分散,需要通过生动的教学方式激发学习兴趣。
教学要求:结合学生特点,采用任务驱动、案例教学等方法,注重实践操作,鼓励学生主动探索,提高编程能力。
同时,关注学生的情感态度,培养良好的学习习惯和价值观。
通过分解课程目标,为教学设计和评估提供依据,确保课程目标的实现。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 源代码基本概念:介绍源代码的定义、作用以及编程语言的发展历程。
- 教材章节:第一章 计算机编程基础2. 编程语言基本语法结构:讲解变量、数据类型、运算符、表达式等基本概念。
- 教材章节:第二章 Python语言基础3. 程序设计基本结构:学习顺序、选择(条件)、循环三种基本结构。
- 教材章节:第三章 程序设计结构4. 编程工具使用:学会使用编程软件(如IDLE)进行代码编写、调试和运行。
- 教材章节:第四章 Python编程环境5. 简单算法设计:通过实例,引导学生学习如何分析问题并设计简单算法。
c++实验设计 小学数学测试软件
河南城建学院《c程序设计》课程设计报告书设计题目:小学生数学测试软件指导老师:张芳芳沈云琴崔雪冰学生学号:083215242学生姓名:同组人员:时间:2015年12月25日目录第1章选题 (2)1.1 题目背景 (2)1.2课程设计目的及要求 (2)(1)提高和加强自己的计算机应用与软件开发能力,使自己由初学者向专业的程序员过渡。
(2)1.3系统实现的具体分工 (3)1.3.1标题 (3)1.3.2小学生数学测试软件的编写要求: (3)1.4开发环境 (4)第2章设计内容 (5)2.1实现功能 (5)2.2 概要设计(涉及类的框图) (6)2.3 界面设计 (7)第3章系统实现 (8)3.1 涉及知识点 (8)3.2 系统运行(主要运行界面抓图) (8)3.3 源程序清单(关键代码) (12)第4章结束语 (16)参考文献 (19)第1章选题1.1 题目背景科技的飞速发展将会给传统教育模式带来革命性的变革,多媒体设备已经引进各个学校,新型的教学模式不仅各教师带来了方便,更不用老是在充当“粉笔吸尘器”。
同时教师可以应用多媒体的先进技术制作优美的教学软件,又能很好地把握教学节奏,给学生带来不一样的学习环境,学习兴趣也会大大提高,智能化、网络化、信息化的教学软件应用势在必行。
1.2课程设计目的及要求(1)提高和加强自己的计算机应用与软件开发能力,使自己由初学者向专业的程序员过渡。
(2)培养自己独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势,综合运用所学知识,解决实际问题,全面提高学生的程序设计能力和开发能力。
(3)学习和掌握C++面向对象程序设计方法以及上机调试技巧,为今后学习其它专业课程打好坚实的基础。
(4)检测自己在这一学期对C++面向对象的学习及掌握情况。
知道自己的不足,及时的弥补。
为以后的学习打下一定的基础,也为自己以后如何制定学习计划做一铺垫。
1.3系统实现的具体分工系统分为算法,题数,结果总结等几大模块,其中教师可以通过选择算法和算数,由程序运行出结果以及准确率,main() 函数实现对程序主界面的引导。
课程设计-小学数学测试系统C课程设计报告及源程序代码
课程设计-小学数学测试系统C课程设计报告及源程序代码课程设计报告课程名称 C语言课程设计课题名称小学数学测试系统专业纺织工程班级1202学号 28 姓名金?宜指导教师7>20XX年 01 月 06 日湖南工程学院课程设计任务书课程名称C语言课程设计课题小学数学测试系统专业班级纺织工程1202 学生姓名金?宜学号28 指导老师审批任务书下达日期2013 年 12 月 26 日任务完成日期 20XX年 01 月 06 日一、设计内容与设计课题九:小学数学测试系统。
具体内容见附录。
2.设计要求:1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)上机演示。
3.设计报告要求:课程设计报告格式如下:1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。
2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。
3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排星期日(17周) 星期一(18周) 星期四(18周) 星期五(18周) 星期日(18周)14:00-17:00 18:00-21:00 18:00-21:00 18:00-21:00 交报告上课时间另外安排。
附录:设计课题九:小学数学测试系统一、问题描述:本系统可以用来进行简单的数学测试,并累计成绩,包括用户注册、用户登录、用户删除、题目测试、信息保存等功能。
二、功能描述:1、本系统采用结构体数组,每个数据的结构应当包括:用户名、用户密码、共测试题目数、答对题目数。
2、系统功能:用户注册:即添加新的用户名、用户密码。
用户登录:在进行数学测试之前,需进行登录,若没有该用户,需进行注册。
题目测试:系统自动生成题目注意题目的合理性,题目结果不能是负数,除数不能是0等,用户给出答案,系统可以自动测试其正确性,同时统计成绩。
C课程设计:小学生测验程序
C课程设计:小学生测验程序面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”。
题目3 运动会比赛计分系统要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系统以菜单方式工作(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩(4)查看参赛学校信息和比赛项目信息等。
#include<stdio.h>#include<time.h>#include<stdlib.h>main(){int i,j,a,b,c,score[10],trueV alue,sum=0;srand((unsigned)time(NULL));for(i=0;i<10;i++){for(a=rand()%51,b=rand()%51;a+b>50 || a+b<0 || a-b>50 || a-b<0; a=rand()%51,b=rand()%51)/*表示运算数的范围不超过50*/c=rand()%3;for(j=0;j<3;j++){ /*表示输入答案的3次机会*/if(c==1){printf("%d:%d+%d=",i+1,a,b);trueValue=a+b;scanf("%d",&score[i]);if(score[i]!=trueValue){printf("答案错误,请重新输入.\n");score[i]=0;}else{if(j==0){score[i]=10;}else if(j==1){score[i]=7;}else{score[i]=5;}break;}}else{printf("%d:%d-%d=",i+1,a,b);trueValue=a-b;scanf("%d",&score[i]);if(score[i]!=trueValue){printf("答案错误,请重新输入.\n");score[i]=0;}else{if(j==0){score[i]=10;}else if(j==1){score[i]=7;}else{score[i]=5;}break;}}}if(score[i]==0){printf("正确答案是:%d\n",trueValue);}sum=sum+score[i];}printf("你的成绩是:%d\n",sum); if(sum>90){printf("SMART.\n");}else if(sum>=80){printf("GOOD.\n");}else if(sum>=70){printf("OK.\n");}else if(sum>=60){printf("PASS.\n");}else{printf("TRY AGAIN\n");}return 0;}。
通过C语言编写小学生数学测试软件C语言课程设计
C语言课程设计设计期限2013年 6 月 17 开始至 2013 年 6 月 21 结束系别信息管理与信息系统专业 36 班级 112030601学生姓名邓茂华学号11203060106指导教师纪钢金艳重庆理工大学[主要内容有]:问题描述、基本设计要求、系统分析、流程图、程序代码、测试数据、小结。
[问题描述]:通过C语言编写小学生数学测试软件:1) 可选择题型(+,-,*,/);2) 可选择每次答题的个数;3) 随机生成两个数进行运算;4) 每次在输入答案后应判断对错,若答案错误,应给出正确答案;5) 给出统计结果。
[基本设计要求]:利用C语言中函数的嵌套调用、全局变量、循环控制等来实现数据之间的运算,最终实现小学生数学测试软件的运行。
[系统分析]:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>int type;//定义全局变量;int j;void main(){int yunsuan();//在主函数中嵌套一个子函数,实现子后面主函数调用子函数的运行结果;int answer;int temp;int score=0,right=0;int k,i;printf("\n\n 制作人:邓茂华学号:11203060106\n\n\n");//制作系统的封面;printf("***********************************************\n");printf("**------------小学生数学测试系统-------------**\n");printf("***********************************************\n");for(;;)//设置死循环,实现测试结束后返回;{printf("\n请你选择测试题目的种类(只需输入数字代号):\n");//选择测试题目的种类;printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);while(type!=1&&type!=2&&type!=3&&type!=4)//输入错误时实现循环,直到输入正确时跳出循环;{printf("你输入错误,请重新输入\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);}printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);while(j!=1&&j!=2&&j!=3){printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);}printf("\n请输入你要答题的个数:\n");scanf("%d",&k);for(i=0;i<k;i++){answer=yunsuan();//调用子函数的结果;printf("\n请输入你的答案:\n");scanf("\n%d",&temp);if(answer==temp)//将测试者输入的结果与计算机算出的结果比较,并判断正误;printf("\n答对了,很好!\n"),right++;else printf("\n**********答错了,正确答案是%d,继续努力!\n\n",answer);}printf("\n\n--------------------------------------------------------------\n\n");score=(100*right)/k;//实现对测试者的评分;printf("**********你答对了%d道题!\n",right);if(score<60){printf("**********只考了%d分,成绩不是很理想哦!继续努力!!\n",score);continue;}if(score>=60&&score<80){printf("**********你考了%d分,成绩一般!\n",score);continue;}else if(score>=80&&score<100){printf("**********你考了%d分,不错哟!再接再励!\n",score);continue;}else{printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!\n",score);printf("\n");continue;}}}int yunsuan()//在子函数中实现加减乘除的运算并返回结果;{int a,b,c,m;m=(int)pow(10,j);if(type==1)//加法运算;{srand(time(0));a=rand()%m;b=rand()%m;printf("%d+%d=",a,b);return(a+b);}else if(type==2)//减法运算;{srand(time(0));a=rand()%m;c=m-a;c=rand()%c;printf("%d-%d",a+c,a);return(c);}else if(type==3)//乘法运算;{srand(time(0));a=rand()%m;b=rand()%100;printf("%d*%d=?",a,b);return(a*b);}else //除法运算;{srand(time(0));a=rand()%(m-1)+1;c=rand()%(m-1)+1;printf("%d/%d",a*c,a);return(c);}}[流程图]:[程序代码]:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>int type;int j;void main(){int yunsuan();int answer;int temp;int score=0,right=0;int k,i;printf("\n\n 制作人:邓茂华学号:11203060106\n\n\n");printf("***********************************************\n");printf("**------------小学生数学测试系统-------------**\n");printf("***********************************************\n");for(;;){printf("\n请你选择测试题目的种类(只需输入数字代号):\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);while(type!=1&&type!=2&&type!=3&&type!=4){printf("你输入错误,请重新输入\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);}printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);while(j!=1&&j!=2&&j!=3){printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);}printf("\n请输入你要答题的个数:\n");scanf("%d",&k);for(i=0;i<k;i++){answer=yunsuan();printf("\n请输入你的答案:\n");scanf("\n%d",&temp);if(answer==temp)printf("\n答对了,很好!\n"),right++;else printf("\n**********答错了,正确答案是%d,继续努力!\n\n",answer);}printf("\n\n--------------------------------------------------------------\n\n");score=(100*right)/k;printf("**********你答对了%d道题!\n",right);if(score<60){printf("**********只考了%d分,成绩不是很理想哦!继续努力!!\n",score);continue;}if(score>=60&&score<80){printf("**********你考了%d分,成绩一般!\n",score);continue;}else if(score>=80&&score<100){printf("**********你考了%d分,不错哟!再接再励!\n",score);continue;}else{printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!\n",score);printf("\n");continue;}}}int yunsuan(){int a,b,c,m;m=(int)pow(10,j);if(type==1){srand(time(0));a=rand()%m;b=rand()%m;printf("%d+%d=",a,b);return(a+b);}else if(type==2){srand(time(0));a=rand()%m;c=m-a;c=rand()%c;printf("%d-%d",a+c,a);return(c);}else if(type==3){srand(time(0));a=rand()%m;b=rand()%100;printf("%d*%d=?",a,b);return(a*b);}else{srand(time(0));a=rand()%(m-1)+1;c=rand()%(m-1)+1;printf("%d/%d",a*c,a);return(c);}}[测试数据]:界面:加法:减法:乘法:除法:评分并返回:[小结]:原以为自己把书上的东西都弄明白了就行了,在做这次课程设计的时候就发现有些不是那么回事了,但也并不是完全没用,做这个还是需要很多的理论基础。
C语言课程设计-小学生算术四则运算测试系统
C语言课程设计-小学生算术四则运算测试系统#ifndef H_STUDENT_HH#define H_STUDENT_HH#include "stdio.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/ #define numsubs 5 /*学科数目*/typedef struct message_student /*结构体定义*/{char number[6];char name[20];char sex[4];float subject[numsubs];float score;float average;int index;}student;extern int numstus; /*学生数目*/extern student *pointer; /*指向结构体数组*/extern int lens;int menu_select(); /*函数声明*/int openfile(student stu[]);int findrecord(student stud[]);int writetotext(student stud[]);void welcome();void display1();void showtable();void sort(student stu[]);void deleterecord(student stu[],int i); void addrecord(student stud[]);void display(student stud[],int n1,int n2); void amendrecord(student stud[]);void count(student stud[]);void sortnum(student stud[]);void sortnum2(student stud[]);void sortname(student stud[]);void sortname2(student stud[]);void sortcount(student stud[]);void sortcount2(student stud[]);void statistic(student stud[]);void display1();#endif//#include "head.h"int menu_select(){char c;printf("\\");printf(" | 1. 增加学生记录 5.统计信息 |\"); printf(" | 2. 查询学生记录 6.打开文件 |\"); printf(" | 3. 修改学生记录 7.保存文件 |\"); printf(" | 4. 学生纪录排序 8.显示记录 |\"); printf(" | 0. 退出系统 |\");printf("\\");printf("请选择(0-8):");c=getchar();getchar();return (c-'0');}//#include "head.h"int findrecord(student stud[]) /*查找信息*/{char str[2];int i,num;if(numstus==0){printf("没有可被查找的记录\");return -1;}else{printf("以何种方式查找?\1.学号\2.姓名\3.名次\"); gets(str); if(str[0]=='1') /*按学号查找*/{printf("请输入学号:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].number)==0) {display(stud,i,i);break;}else continue;}else if(str[0]=='2') /*按姓名查找*/ {printf("请输入姓名:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].name)==0) {display(stud,i,i);break;}else continue;}else if(str[0]=='3') /*按名次查找*/ {printf("请输入名次:");scanf("%d",&num);getchar();for(i=0;i<=numstus;i++)if(num==stud[i].index){display(stud,i,i);break;}else continue;}if(i>numstus){printf("没有查找所要的信息。
小学数学学习系统C语言课程设计报告有源代码
05
02
解决方案
经排查发现为数据库连接问题,修复数据库 连接代码后问题得以解决。
04
解决方案
优化系统性能,压缩文件大小,减少 网络传输量,同时增加服务器带宽和 资源配置,提高系统响应速度。
06
解决方案
对题目答案进行逐一核对和修正,确保所有题 目答案准确无误。同时加强题目审核机制,防 止类似问题再次发生。
在团队合作中,我们充分发挥了各自的优势,相互协作,共同解决了遇到的问题。但也存在一些不足之处,如沟 通不够充分、任务分配不够明确等。在未来的合作中,我们需要进一步加强沟通和协调,明确各自的责任和任务 ,以提高团队效率。
对未来工作的展望和建议
功能扩展
在未来的工作中,可以考虑进一步扩 展系统的功能,如加入更复杂的数学 运算、提供个性化的学习路径等,以 满足不同学生的需求。
数据存储优化
采用索引、分区等技术手段优化数据存储和 查询性能。
04
系统实现
编程环境和工具
编程环境
Windows 10操作系统,使用C语言 编程。
开发工具
Visual Studio Code编辑器,GCC编 译器。
关键代码实现
主程序
实现菜单选择、调用各功能模块。
运算模块
实现加、减、乘、除四则运算功能。
输入输出模块
实现用户输入和结果输出功能。
错误处理模块
实现输入错误、运算错误等异常情况的处理。
源代码文件结构和说明
main.c
主程序文件,包含程序入口和菜单 选择功能。
operation.c
运算模块文件,包含加、减、乘、 除四则运算功能的实现。
input_output.c
输入输出模块文件,包含用户输入 和结果输出功能的实现。
小学数学测试系统C课程设计报告及源程序代码
用户界面友好
系统界面简洁明了,易于操作 ,适合小学生使用。
稳定性与可靠性
经过多次测试,系统运行稳定 ,评分准确,达到了预期的设
计目标。
经验教训分享
需求分析重要性
在项目开始之前,充分进行需求分析,明确系统需要实现 的功能和性能要求,有助于避免后期开发过程中的需求变 更和返工。
团队协作与沟通
成绩管理
系统需要提供成绩的录入、修改、删除和查询功能,以 便教师可以方便地管理学生成绩。
数据分析
系统需要提供数据分析功能,包括学生成绩统计、试题 难度分析、知识点掌握情况等,以帮助教师更好地了解 学生的学习情况。
性能需求
01
02
03
响应时间
系统响应时间应小于2秒 ,以确保用户可以流畅地 使用系统。
小学数学测试系统C课 程设计报告及源程序代 码
2024-01-04
目录
• 引言 • 需求分析 • 系统设计 • 系统实现 • 系统测试与评估 • 源程序代码展示与解析 • 课程设计总结与展望
引言
01
目的和背景
01 02
教育信息化改革
随着教育信息化的推进,传统纸质测试方式已逐渐被计算机化测试所取 代。小学数学测试系统C课程设计的目的是适应这一趋势,提供一个高 效、准确的数学测试平台。
THANKS.
统计用户成绩,提供成绩查询 、导出等功能。
系统测试与调试
单元测试
对关键函数进行单元测试,确 保函数功能正确。
集成测试
对所有模块进行集成测试,确 保模块间接口一致,数据传输 无误。
系统测试
对整个系统进行测试,包括用 户登录、试题管理、组卷、测 试和成绩统计等功能,确保系 统稳定可靠。
小学数学测试软件系统源程序
}
*b=random(*c); /*取0~地址c储存数之间的随机数赋值给变量地址b*/
*a=*c-*b;
printf("%d+%d=?\n",*a,*b);
}
void jian(int *a,int *b,int *c) /*定义减法函数*/
{
settextstyle(3,0,2);
outtextxy(150,320,"choose 1 or 2 to enter the exercise or test");
outtextxy(150,340,"1:exercise");
outtextxy(150,360,"2:test");
{
cheng(&a,&b,&c);
for(k=0;k<3;k++)
{
scanf("%d",&answer);
for(k=0;k<3;k++) /*子循环(正确性只判断3次)*/
{
scanf("%d",&answer); /*从终端输入设备读取整数(%d),赋值给变量地址&answer */
key1=bioskey(0);if(key1==ESC)break;
}
else if(key1==THREE)
for(;;) /*死循环(判断乘法正确性)*/
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计-小学数学测试系统C课程设计报告及源程序代码课程设计报告课程名称 C语言课程设计课题名称小学数学测试系统专业纺织工程班级1202学号 28 姓名金?宜指导教师7>20XX年 01 月 06 日湖南工程学院课程设计任务书课程名称C语言课程设计课题小学数学测试系统专业班级纺织工程1202 学生姓名金?宜学号28 指导老师审批任务书下达日期2013 年 12 月 26 日任务完成日期 20XX年 01 月 06 日一、设计内容与设计课题九:小学数学测试系统。
具体内容见附录。
2.设计要求:1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)上机演示。
3.设计报告要求:课程设计报告格式如下:1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。
2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。
3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排星期日(17周) 星期一(18周) 星期四(18周) 星期五(18周) 星期日(18周)14:00-17:00 18:00-21:00 18:00-21:00 18:00-21:00 交报告上课时间另外安排。
附录:设计课题九:小学数学测试系统一、问题描述:本系统可以用来进行简单的数学测试,并累计成绩,包括用户注册、用户登录、用户删除、题目测试、信息保存等功能。
二、功能描述:1、本系统采用结构体数组,每个数据的结构应当包括:用户名、用户密码、共测试题目数、答对题目数。
2、系统功能:用户注册:即添加新的用户名、用户密码。
用户登录:在进行数学测试之前,需进行登录,若没有该用户,需进行注册。
题目测试:系统自动生成题目注意题目的合理性,题目结果不能是负数,除数不能是0等,用户给出答案,系统可以自动测试其正确性,同时统计成绩。
信息保存: 当注册成功、题目测试完毕后将用户信息及成绩保存到文件。
e.退出系统。
3、系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。
系统的功能并不限于上述,可以对其进行扩充完善,如题目的自动生成,可以只是简单的加减乘除运算,也可以生成复杂的四则混合运算。
同时,用户界面友好也很重要,当输入错误答案,需给出提示信息。
三、测试数据:用户3,题目数5目录1 系统需求分析 62 概要设计 63 详细设计104 系统测试155 课程设计总结181 系统需求分析小学生数学测试系统具有随机出题,自动评分,查看答案,错题重做等功能的系统;其属性有:1. 主界面设计,选择各种功能。
2. 系统随机出题,显示算式,含加,减,乘,除四则运算。
3. 练习时,系统随机出题,键入答案,可显示对错。
4. 测试时,系统自动出题,每题得分,再统计得分。
5. 题的对错信息,错误的给出答案。
2 概要设计系统功能模块图:2.1注册登录模块提示用户输入姓名和学号,如果已经有记录则将本次登录用户信息追加储存在文件中,如果没有记录,则创建一个新文件储存:其模块图如下图所示:2.2测试模块进入开始测试菜单后,开始计时,选择加减乘除四种运算类型,总体来说测试模块可以分为:加法运算、减法运算、乘法运算、除法运算四部分四部分功能相似选择类型后,在选择题数目为(5,10,20,50,100),然后再选择难度,这时开始做题(题目利用随机函数随机出题),然后判断正误并给出正确率,错误的结果存入一个文件中以备错题重做,将所有做题的结果存入另个文件中以便查看结果;2.3 学生成绩管理模块本模块首先将每次测试同学姓名,学号,成绩存入一个文件中,每次测试同学的信息不覆盖之前同学的信息,然后将文件中的信息读取到结构体中进行排序,最后利用结构体将排好序的成绩显示到屏幕上,其模块如下所示图:2.4 查看结果模块利用测试模块存储的结果信息文件进行直接读取,期间用到fgetc函数将文件的信息读取出来,其图如下图所示:2.5 错题重做模块测试模块过程的已将错题和错题的答案分别出入到文件中,直接进行打开存储错题的文件逐个读取错题,这时利用scanf函数输入答题者的答案,最后再打开储存错题答案的文件进行核对正确答案,其模块如下图所示:系统流程图:3 详细设计3.1登录功能得具体实现:用到两个函数Savemessage和Judge两个函数,其中 Savemessage函数用来,保存学生输入信息,将输入学生信息保存到studentmessage.txt"和TestResult.txt文件中,保存过程中,先输入到结构体中,再利用fwrite&s[0],sizeofstruct Student,1,fp;语句向文件studentmessage.txt中写入一条记录,即刚刚输入的学生姓名和学号;利用fprintffp1,"姓名:%s\n",s[0].name;fprintffp1," 学号:%s\n",s[0].num; 向文件TestResult.txt中写入刚刚输入的学生信息登录完后进入测试界面此时开始计时有语句printf" 请计时输入开始时间点,分:"; scanf"%d,%d",&hourA,&minA;进行输入计时。
然后进入测试界面的菜单:3.2 测试功能得实现①选测试类型:测试功能菜单分为5个,其中1~4为选择类型,5返回主菜单;具体实现选择功能有whilechoose1||choose5 printf"超出功能范围,请重新选择1---5:";scanf"%d",&choose;输入1~5之间的一个数,再用switchchoose 进行选择对应的功能如上图选择1后进入②选题数目:进行选择题目的数目,输入要测试的题目数被限制5/10/20/50/100五个数用句whilethnum5||thnum5&&thnum10||thnum10&&thnum||thnum20&&thnum50||t hnum50&&thnum100||thnum100printf"超出功能范围,请重新选择5/10/20/50/100:";scanf"%d",&thnum; 由此语句实现对题目数的限制,但超出范围后则提示重新输入。
在begain中调用Additionint number控制循环语句forint i0;inumber;i++ifm1num1rand%n; num2rand%n; //产生一位随机数,num1,num2ifm2num110+rand%n-10; //产生两位随机数num1,num2num210+rand%n-10;ifm3num1100+rand%n-100;//产生三位随机数 num1,num2num2100+rand%n-100;printf" %d + %d ",num1,num2;scanf"%d",&num4;通过控制循环的次数来控制产生题的数目.③选难度的实现:利用随机函数rand%n;中n的不同值产生不同的位数的随机书实现难度的控制,n10时用语句num1rand%n产生一位数;n100时用语句num110+rand%n-10产生二位数;n1000时用num1100+rand%n-100产生三位数;具体有语句printf"请选择难度: "; scanf"%d",&m;system"cls"; //清屏ifm1 n10 ; ifm2 n100 ;else ifm3 n1000 ;forint i0;inumber;i++ifm1num1rand%n; num2rand%n; ifm2num110+rand%n-10;num210+rand%n-10;ifm3num1100+rand%n-100;num2100+rand%n-100; 实现控制难度,并有rand%n产生随机数实现随机出题功能。
④自动评分的实现和数据的储存系统会将输入的答案与正确答案进行逐一比较,如果正确则将结果只记录到TestResult.txt中,以便查看结果;如果错误,则将错误题正确结果记录到failedResult.txt中,以便错题重做,将错误题正确结果记录到rightResult.txt中,TestResult.txt中,以便核对错题答案,在此过程中系统会自动统计正确结果个数和错误个数,从而利用averagefloatcount1/floatnumber;自动得到分数。
具体程序如下:ifnum3num4fprintffp," %d + %d %d %d \n",num1,num2,num4,num3;count1++;else fprintffp," %d + %d %d %d×\n",num1,num2,num4,num3;fprintffp2," %d + %d \n",num1,num2,num4,num3;//将错误题记录到failedResult.txt中fprintffp3," %d + %d %d \n",num1,num2,num3;averagefloatcount1/floatnumber;fprintffp," 正确%d 道,错误%d 道,正确率为:%f\n\n",count1,count2,average;AA+average*100;//总分nu++;//记录做不同类型题的次数以便算平均分⑤减乘除的过程和原理和加法一样其工作界面分别为减法;乘法;除法;除法其它功能得实现与加法一样只有分母不为零,用num2n/10+rand%n-n/10语句进行实现,其中rand%n-n/10产生0到n-n/10-1的数;n/10+rand%n-n/10产生n/10到n-1的数;例如n100时产生10到99的两位数;从而实现了分母不为零,同时也实现了难度的控制。
3.3查看结果的实现:测试过程中已经将结果记录存到TestResult.txt中,只需打开文件读取出记录即可void ShowResult//显示测试结果函数FILE *fp;iffpfopen"TestResult.txt","r"NULL; exit0;char ch; chfgetcfp; //文件开头字符whilech!EOF //当文件没有到尾时,一直循环putcharch; //输出字符 chfgetcfp; fclosefp; 有此函数就可直接读取查看结果。