小学数学测试系统C语言设计

上传人:豆浆 文档编号:10860515 上传时间:2017-10-10 格式:DOC 页数:15 大小:292KB
返回 下载 相关 举报
小学数学测试系统C语言设计_第1页
第1页 / 共15页
小学数学测试系统C语言设计_第2页
第2页 / 共15页
小学数学测试系统C语言设计_第3页
第3页 / 共15页
小学数学测试系统C语言设计_第4页
第4页 / 共15页
小学数学测试系统C语言设计_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《小学数学测试系统C语言设计》由会员分享,可在线阅读,更多相关《小学数学测试系统C语言设计(15页珍藏版)》请在金锄头文库上搜索。

1、1小学数学学习系统设计报告目 录一设计要求 2二设计目的 2三设计的具体实现1.系统概述:22.总体设计:33.详细设计: 74.软件程序设计和调试 14四结论与展望 15五心得体会及建议 15六附录 15七参考文献 152一 设计要求小学生数学学习系统具有随机出题、自动评分、查看正确答案、错题重做等功能的测试系统具体要求:1、可选择:加、减、乘、除四种测试,2、可设置测试题数,5,10,20,50,100;3、可设置随机出题难度:即数据大小范围,比如:1 位,2 位,3 位4、可以记录测试者的姓名,时间,难度及测试类型,成绩,题数,运算时间用菜单选择1、开始测试:-选测试类型-选题数-选难度

2、-开始测试2、查看结果:3、查看排名:4、查看错题:5、退出二设计目的目的: 1. 复习巩固 C 语言的基础知识,进一步加深对 C 语言编程的理解和掌握2.根据课内外所学的知识,开发具有实用型的系统,提高学生实践能力,动手能力,和初步的设计编程能力,和理解和掌握模块化编程的方法;3.通过合作完成编程题,逐渐培养学生的编程能力,提高培养学生解决实际问题能力,培养团队合作精神。三设计的具体实现.系统概述:小学数学学习系统是基于小学开发,能实现加减乘除四则运算的测试与练习,具有随机出题、自动评分、错题重做、并具有查看个人信息、试题、答案等功能学习应用软件;该软件首界面提供了注册登录界面,不同的学生自

3、己的姓名和学号进行登录;学生首次做完后系统将自动判断,并给出分数;之后学生可以查看自己的成绩,排名并进行错题重做;另外系统还提供计时功能;最后结束后学生个人答题情况及个人信息将保存在,以学生学号命名的文件中,3学生可以查看或打印。2.总体设计:(一)总体思想本系统主要应用结构化的设计思想实现小学学习系统的出题,评分、错题重做,查看排名和查看结果的功能;各主要功能模块的数据均保存在文件中,并多次利用文件和结构体之间的转换实现了数据的保存和传递,其中包含了对文件的读写等操作;运用随机函数实现了随机出题功能,运用冒泡排序法及文件和结构体之间的转换实现了排序功能;在软件开发过程中应用了高级语言程序设计

4、的基本控制结构,如选择、循环、顺序结构。系统设计方法是结构化设计方法,采用 C 语言在 Microsoft Visual C+ 6.0 环境下进行开发。(二)系统模块结构图依据功能得不同,小学学习系统可以分为五个模块:注册登录模块、测试模块、学生成绩管理模块、查看结果,错题重做模块。系统模块结构图如下图所示:(三)模块设计1. 注册小学学习系统 学生成绩管理模块 测试模块注册登录模块查看结果模块 错题重做模块登录模块提示用户输入姓名和学号,如果已经有记录则将本次登录用户信息追加储存在文件中,如果没有记录,则创建一个新文件储存:其模块图如下图所示:4注册登录模块提示输入姓名学号创建文件记录学生信

5、息判断是否有记录2.测试模块进入开始测试菜单后,开始计时,选择加减乘除四种运算类型,总体来说测试模块可以分为:加法运算、减法运算、乘法运算、除法运算四部分四部分功能相似选择类型后,在选择题数目为(5,10,20,50,100) ,然后再选择难度,这时开始做题(题目利用随机函数随机出题) ,然后判断正误并给出正确率,错误的结果存入一个文件中以备错题重做,将所有做题的结果存入另个文件中以便查看结果;测试模块加法运算减法运算乘法运算除法运算3.学生成绩管理模块本模块首先将每次测试同学姓名,学号,成绩存入一个文件中,每次测试同学的信息不覆盖之前同学的信息,然后将文件中的信息读取到结构体中进行排序,最后

6、利用结构体将排好序的成绩显示到屏幕上,其模块如下所示图:学生成绩管理模块存入测试学生成绩信息查看排名榜创建学生成绩信息文件排列顺序4.查看结果模块5利用测试模块存储的结果信息文件进行直接读取,期间用到 fgetc 函数将文件的信息读取出来,其图如下图所示:查看结果模块打开存储结果的文件读取文件5.错题重做模块测试模块过程的已将错题和错题的答案分别出入到文件中,直接进行打开存储错题的文件逐个读取错题,这时利用 scanf 函数输入答题者的答案,最后再打开储存错题答案的文件进行核对正确答案,其模块如下图所示:错题重做模块读取错题进行重做核对答案打开错题存储文件(四)系统流程图:开始输入姓名输入学号

7、主菜单开始测试查看排名错题重做查看结果结束测试加法减法乘法除法选择题数选择难度测试退出返回保存63.详细设计1.登录功能得具体实现:7此界面为登录界面,用到两个函数 Savemessage()和 Judge()两个函数,其中 Savemessage()函数用来,保存学生输入信息,将输入学生信息保存到studentmessage.txt和 TestResult.txt 文件中,保存过程中,先输入到结构体中,再利用 fwrite(&s0,sizeof(struct Student),1,fp);语句向文件studentmessage.txt 中写入一条记录,即刚刚输入的学生姓名和学号;利用 fpr

8、intf(fp1,姓名:%sn,s0.name);fprintf(fp1, 学号:%sn,s0.num); 向文件 TestResult.txt 中写入刚刚输入的学生信息具体源程序为:void Savemessage() /保存学生输入信息的函数 FILE *fp,*fp1;/定义文件指针,/以下判断文件打开与否 ,a方式打开则可向文件尾写数据if(fp=fopen(studentmessage.txt,wb+)=NULL); printf(打开文件失败n);exit(0);if(fp1=fopen(TestResult.txt,a)=NULL) printf(打开文件失败n);exit(0)

9、;printf( 输入姓名:); /以下为要学生输入个人信息scanf(%s,s0.name);printf( 输入学号:);scanf(%s,&s0.num);fwrite(&s0,sizeof(struct Student),1,fp);fprintf(fp1, 姓名:%sn,s0.name);fprintf(fp1, 学号:%sn,s0.num);fclose(fp);fclose(fp1);system(cls); /清屏登录完后进入测试界面此时开始计时8有语句printf( 请计时输入开始时间(点,分):); scanf(%d,%d,&hourA,&minA);进行输入计时。然后进入

10、测试界面的菜单:2.测试功能得实现选测试类型:测试功能菜单分为 5 个,其中 14 为选择类型,5 返回主菜单;具体实现选择功能有while(choose5) printf( 超出功能范围,请重新选择(1-5):);scanf(%d,&choose);输入 15 之间的一个数,再用switch(choose) 进行选择对应的功能如上图选择 1 后进入选题数目:进行选择题目的数目,输入要测试的题目数被限制(5/10/20/50/100)五个数用句while(thnum5&thnum10&thnum20&thnum50&thnum100) printf(超出功能范围,请重新选择(5/10/20/5

11、0/100):);scanf(%d,&thnum); 由此语句实现对题目数的限制,但超出范围后则提示重新输入。在 begain()中调用 Addition(int number)控制循环语句 for(int i=0;inumber;i+) if(m=1)num1=rand()%n; num2=rand()%n; /产生一位随机数,num1,num2if(m=2)num1=10+rand()%(n-10); /产生两位随机数 num1,num2 num2=10+rand()%(n-10);if(m=3)num1=100+rand()%(n-100); /产生三位随机数 num1,num2 num

12、2=100+rand()%(n-100);printf( %d + %d = ,num1,num2);scanf(%d,&num4);通过控制循环的次数来控制产生题的数目.选难度的实现:9利用随机函数 rand()%n;中 n 的不同值产生不同的位数的随机书实现难度的控制,n=10 时用语句 num1=rand()%n 产生一位数;n=100 时用语句num1=10+rand()%(n-10)产生二位数;n=1000 时用 num1=100+rand()%(n-100)产生三位数;具体有语句printf(请选择难度: ); scanf(%d,&m);system(cls); /清屏 if(m=

13、1) n=10 ; if(m=2) n=100 ;else if(m=3) n=1000 ;for(int i=0;inumber;i+) if(m=1)num1=rand()%n; num2=rand()%n; if(m=2)num1=10+rand()%(n-10); num2=10+rand()%(n-10);if(m=3)num1=100+rand()%(n-100); num2=100+rand()%(n-100);实现控制难度,并有 rand()%n 产生随机数实现随机出题功能。自动评分的实现和数据的储存系统会将输入的答案与正确答案进行逐一比较,如果正确则将结果只记录到 TestR

14、esult.txt 中,以便查看结果;如果错误,则将错误题正确结果记录到failedResult.txt 中,以便错题重做,将错误题正确结果记录到rightResult.txt 中,TestResult.txt 中,以便核对错题答案,在此过程中系统会自动统计正确结果个数和错误个数,从而利用 average=float(count1)/float(number);自动得到分数。具体程序如下:if(num3=num4) fprintf(fp, %d + %d = %d %d n,num1,num2,num4,num3);count1+;else fprintf(fp, %d + %d = %d %

15、d n,num1,num2,num4,num3);fprintf(fp2, %d + %d =n,num1,num2,num4,num3);10/将错误题记录到 failedResult.txt 中fprintf(fp3, %d + %d = %d n,num1,num2,num3); average=float(count1)/float(number);fprintf(fp, 正确 %d 道,错误 %d 道,正确率为:%fnn,count1,count2,average);A=A+average*100;/总分nu+;/记录做不同类型题的次数以便算平均分减乘除的过程和原理和加法一样其工作界面分别为减法:乘法:除法:除法其它功能得实

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号