课程设计-小学数学测试系统C课程设计报告及源程序代码

合集下载

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语言课程设计报告-小学算术运算测试

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语言课程设计报告

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语言课程设计——小学数学出题系统

通信工程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语言课程设计

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语言课程设计报告《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语言课程设计报告,有源代码)

课程设计报告课程设计名称: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语言课程设计举例--小学生算术自测

C语言课程设计举例--小学生算术自测
break;}
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):
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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; 有此函数就可直接读取查看结果。

相关文档
最新文档