小学数学学习系统设计报告
目 录
一.设计要求 ……………………………2
二.设计目的 ……………………………2
三.设计的具体实现
1.系统概述:…………………………………………2
2.总体设计:…………………………………………3
3.详细设计: …………………………………………7
4.软件程序设计和调试 ……………………………14
四.结论与展望 ………………………15
五.心得体会及建议 …………………15
六.附录 ………………………………15
七.参考文献 …………………………15
设计要求
小学生数学学习系统
具有随机出题、自动评分、查看正确答案、错题重做等功能的测试系统
具体要求:
1、可选择:加、减、乘、除四种测试,
2、可设置测试题数,10,20,50,100;
3、可设置随机出题难度:即数据大小范围,比如:1位,2位,3位
4、可以记录测试者的姓名,时间,难度及测试类型,成绩,题数,运算时间
用菜单选择
1、开始测试:->选测试类型->选题数->选难度->开始测试
2、:、查看错题:
、退出具有随机出题、自动评分、错题重做、查看等功能出题评分、错题重做Microsoft Visual C++ 6.0环境下进行开发。
(二)系统模块结构图
依据功能得不同,小学学习系统可以分为五个模块:注册登录模块、测试模块、学生成绩管理模块、查看结果,错题重做模块。系统模块结构图如下图所示:
(三)模块设计
1. 注册登录模块
提示用户输入姓名和学号,如果已经有记录则将本次登录用户信息追加储存在文件中,如果没有记录,则创建一个新文件储存:其模块图如下图所示:
2.测试模块
进入开始测试菜单后,开始计时,选择加减乘除四种运算类型,总体来说测试模块可以分为:加法运算、减法运算、乘法运算、除法运算四部分
四部分功能相似选择类型后,在选择题数目为(5,10,20,50,100
3.学生成绩管理模块
本模块首先将每次测试同学姓名,学号,成绩存入一个文件中,每次测试同学的信息不覆盖之前同学的信息,然后将文件中的信息读取到结构体中进行排序,最后利用结构体将排好序的成绩显示到屏幕上,其模块如下所示图:
4.查看结果模块
利用测试模块存储的结果信息文件进行直接读取,期间用到fgetc函数将文件的信息读取出来,其图如下图所示:
5.错题重做模块
测试模块过程的已将错题和错题的答案分别出入到文件中,直接进行打开存储错题的文件逐个读取错题,这时利用scanf函数输入答题者的答案,最后再打开储存错题答案的文件进行核对正确答案,其模块如下图所示:
(四)系统流程图:
3.详细设计
1.登录功能得具体实现:
此界面为登录界面,用到两个函数Savemessage()和Judge()两个函数,其中 Savemessage()函数用来,保存学生输入信息,将输入学生信息保存到studentmessage.txt"和TestResult.txt文件中,保存过程中,先输入到结构体中,再利用fwrite(&s[0],sizeof(struct Student),1,fp);语句向文件studentmessage.txt中写入一条记录,即刚刚输入的学生姓名和学号;
利用fprintf(fp1,"姓名:%s\n",s[0].name);fprintf(fp1,"学号:%s\n",s[0].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);}
printf("输入姓名:"); //以下为要学生输入个人信息
scanf("%s",s[0].name);
printf("输入学号:");
scanf("%s",&s[0].num);
fwrite(&s[0],sizeof(struct Student),1,fp);
fprintf(fp1,"姓名:%s\n",s[0].name);
fprintf(fp1,"学号:%s\n",s[0].num);
fclose(fp);
fclose(fp1);
system("cls"); //清屏}
登录完后进