小学数学测试系统C课程设计报告及源程序代码Word格式文档下载.docx
- 文档编号:6437427
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:16
- 大小:111.98KB
小学数学测试系统C课程设计报告及源程序代码Word格式文档下载.docx
《小学数学测试系统C课程设计报告及源程序代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《小学数学测试系统C课程设计报告及源程序代码Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。
3)课程设计报告装订顺序:
封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排
星期日
(17周)
星期一
(18周)
星期四
星期五
14:
00-17:
00
18:
00-21:
交报告
上课时间另外安排。
附录:
设计课题九:
小学数学测试系统
一、问题描述:
本系统可以用来进行简单的数学测试,并累计成绩,包括用户注册、用户登录、用户删除、题目测试、信息保存等功能。
二、功能描述:
1、本系统采用结构体数组,每个数据的结构应当包括:
用户名、用户密码、共测试题目数、答对题目数。
2、系统功能:
a.用户注册:
即添加新的用户名、用户密码。
b.用户登录:
在进行数学测试之前,需进行登录,若没有该用户,需进行注册。
c.题目测试:
系统自动生成题目(注意题目的合理性,题目结果不能是负数,除数不能是0等),用户给出答案,系统可以自动测试其正确性,同时统计成绩。
d.信息保存:
当注册成功、题目测试完毕后将用户信息及成绩保存到文件。
e.退出系统。
3、系统使用说明:
执行一个具体的功能之后,程序将重新显示功能菜单。
系统的功能并不限于上述,可以对其进行扩充完善,如题目的自动生成,可以只是简单的加减乘除运算,也可以生成复杂的四则混合运算。
同时,用户界面友好也很重要,当输入错误答案,需给出提示信息。
三、测试数据:
用户>
=3,题目数>
=5
1系统需求分析6
2概要设计6
3详细设计10
4系统测试15
5课程设计总结18
1系统需求分析
小学生数学测试系统具有随机出题,自动评分,查看答案,错题重做等功能的系统;
其属性有:
1.主界面设计,选择各种功能。
2.系统随机出题,显示算式,含加,减,乘,除四则运算。
3.练习时,系统随机出题,键入答案,可显示对错。
4.测试时,系统自动出题,每题得分,再统计得分。
5.题的对错信息,错误的给出答案。
2概要设计
系统功能模块图:
注册登录模块
提示用户输入姓名和学号,如果已经有记录则将本次登录用户信息追加储存在文件中,如果没有记录,则创建一个新文件储存:
其模块图如下图所示:
测试模块
进入开始测试菜单后,开始计时,选择加减乘除四种运算类型,总体来说测试模块可以分为:
加法运算、减法运算、乘法运算、除法运算四部分
四部分功能相似选择类型后,在选择题数目为(5,10,20,50,100),然后再选择难度,这时开始做题(题目利用随机函数随机出题),然后判断正误并给出正确率,错误的结果存入一个文件中以备错题重做,将所有做题的结果存入另个文件中以便查看结果;
学生成绩管理模块
本模块首先将每次测试同学姓名,学号,成绩存入一个文件中,每次测试同学的信息不覆盖之前同学的信息,然后将文件中的信息读取到结构体中进行排序,最后利用结构体将排好序的成绩显示到屏幕上,其模块如下所示图:
查看结果模块
利用测试模块存储的结果信息文件进行直接读取,期间用到fgetc函数将文件的信息读取出来,其图如下图所示:
错题重做模块
测试模块过程的已将错题和错题的答案分别出入到文件中,直接进行打开存储错题的文件逐个读取错题,这时利用scanf函数输入答题者的答案,最后再打开储存错题答案的文件进行核对正确答案,其模块如下图所示:
系统流程图:
3详细设计
登录功能得具体实现:
用到两个函数Savemessage()和Judge()两个函数,其中Savemessage()函数用来,保存学生输入信息,将输入学生信息保存到"
和文件中,保存过程中,先输入到结构体中,再利用fwrite(&
s[0],sizeof(structStudent),1,fp);
语句向文件中写入一条记录,即刚刚输入的学生姓名和学号;
利用fprintf(fp1,"
姓名:
%s\n"
s[0].name);
fprintf(fp1,"
学号:
s[0].num);
向文件中写入刚刚输入的学生信息
登录完后进入测试界面此时开始计时
有语句{printf("
请计时输入开始时间(点,分):
"
);
scanf("
%d,%d"
&
hourA,&
minA);
}进行输入计时。
然后进入测试界面的菜单:
测试功能得实现
①选测试类型:
测试功能菜单分为5个,其中1~4为选择类型,5返回主菜单;
具体实现选择功能有
while(choose<
1||choose>
5){printf("
超出功能范围,请重新选择(1---5):
scanf("
%d"
choose);
}输入1~5之间的一个数,再用switch(choose){}进行选择对应的功能
如上图选择1后进入
②选题数目:
进行选择题目的数目,输入要测试的题目数被限制(5/10/20/50/100)五个数用句
while(thnum<
5||thnum>
5&
&
thnum<
10||thnum>
10&
||thnum>
20&
50||thnum>
50&
100||thnum>
100)
{printf("
超出功能范围,请重新选择(5/10/20/50/100):
thnum);
}由此语句实现对题目数的限制,但超出范围后则提示重新输入。
在begain()中调用Addition(intnumber)控制循环语句for(inti=0;
i<
number;
i++)
{if(m==1){num1=rand()%n;
num2=rand()%n;
}③选难度的实现:
利用随机函数rand()%n;
中n的不同值产生不同的位数的随机书实现难度的控制,n=10时用语句num1=rand()%n产生一位数;
n=100时用语句num1=10+rand()%(n-10)产生二位数;
n=1000时用num1=100+rand()%(n-100)产生三位数;
具体有语句
printf("
请选择难度:
"
m);
system("
cls"
vscore=A/nu;
fp5=fopen("
"
a+"
fprintf(fp5,"
%s%s%f\n"
s[0].name,s[0].num,s[0].avscore);
ame,s[i].num,&
s[i].avscore);
}fclose(fp5);
m=i;
structStudenttemp;
for(i=0;
m;
i++)
{for(j=0;
j<
m-1;
j++)
if(s[j].avscore<
s[j+1].avscore)
{strcpy,s[j].name);
strcpy,s[j].num);
=s[j].avscore;
strcpy(s[j].name,s[j+1].name);
strcpy(s[j].num,s[j+1].num);
s[j].avscore=s[j+1].avscore;
strcpy(s[j+1].name,;
strcpy(s[j+1].num,;
s[j+1].avscore=;
}}
4.2fame,s[i].num,s[i].avscore);
错题重做
测试过程中的已将错题和错题的答案分别存入到和文件中,直接进行打开存储错题的文件逐个读取错题,这时利用scanf函数输入答题者的答案,最后再打开储存错题答案的文件进行核对正确答案具体程序为:
voidrework()体实现过程如下;
voidFileCopy()um,"
.txt"
xt"
连接到字符串student[0].num后,即以学号为文件名,后缀为.txt的文件中,保存在工程目录下
if((in=fopen("
r"
))==NULL)
{in=fopen("
w+"
printf("
无文件记录,已新建.\n"
}
if((out=fopen(s[0].num,"
w"
))==NULL)xt文件(如),"
方式为只写方式
{printf("
打开文件失败\n"
exit(0);
while(!
feof(in))um);
问题三:
错题重做有一定的困难,怎样将错题一个个及记录下来,并且能读出来重新做,产生了一定的困难。
解决方法:
采用了文件记录错题和错题的答案,用fgetc函数实现了读出记录的错题,从而实现了错题重做功能。
此外在调试过程中也遇到了相当多的其他问题,从整体结构的设计,到各个功能的实现.
5课程设计总结
这次的课程设计实验是对我们进入大学以来学习C语言结果的是一次大考验。
自己动手,发现问题和解决问题。
并发现了许多自己的不足,平时没掌握的知识在实践中暴漏,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分问题,还稍微有些小问题。
但是,我相信在今的学习中,一定能把它解决好。
当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。
我不仅巩固《C语言程序设计》课程学习的内容,掌握设计的基本方法,强化上机动手能力。
。
本次课程设计编写的小学数学测试系统,它具有随机出题、自动评分、自动排名,查看正确答案、错题重做等功能,本系统功能强大,程序大,编写难度相当大,在编程中,很多知识,几乎是一片空白。
不过后来通过书本和网络慢慢知道了一点。
通过这次课程设计,使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有无论做任何事都要有耐心。
也懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,是生活也更加好。
谢谢田老师这几天时间对我们指导
计算机科学与技术系课程设计评分表
课程名称:
C语言程序设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
源程序
#include<
>
ame);
输入学号:
%s"
s[0].num);
fwrite(&
ame);
um);
fclose(fp);
n"
feof(fp))n"
fclose(fp);
exit(0);
}}}
/*--------------------------------------------------------------------------------------------------------------------------------*/
voidAddition(intnumber)单-------------------------*\n"
*-------------------------2.一般-------------------------*\n"
*-------------------------3.困难-------------------------*\n"
*-------------------------------------------------------------*\n\n\n"
单-------------------------*\n"
请选择:
}
system("
请选择:
.1f.1f.1f.1f.1fvscore=A/nu;
}vscore<
{
strcpy,s[j].name);
um);
}
4.2fame,s[i].num,s[i].avscore);
voidTestOver()um);
um,"
feof(in))法测试-----------------------*\n"
*--------------------------2.减法测试-----------------------*\n"
*--------------------------3.乘法测试-----------------------*\n"
*--------------------------4.除法测试-----------------------*\n"
*--------------------------5.返回主菜单----------------------*\n"
*------------------------------------------------------------*\n\n\n"
intchoose,thnum;
5/10/205/10/205/10/205/10/205/10/205/10/205/10/205/10/20始测试-----------------------*\n"
*--------------------------2.查看结果-----------------------*\n"
*--------------------------3.查看排名-----------------------*\n"
*--------------------------4.错题重做-----------------------*\n"
*--------------------------5.结束测试----------------------*\n"
*-----------------------------------------------------------*\n\n\n"
intchoose,time;
选择功能:
5)//不在以上所列的功能以内时循环
{
switch(choose)//switch语句选择执行功能
case1:
//功能1
*************************************************************\n"
//开始时间
}
//显示时间
/*gettime(&
tim);
\n开始时间为:
%02d:
%02d\n"
,,;
*/
begain();
break;
case2:
//功能2
\n\n"
ShowResult();
//调用此函数,即输出测试结果
ChooseFunc();
case3:
sort();
break;
case4:
//功能4
//清屏
rework();
case5:
//功能5
请输入结束时间:
点,分"
//结束时间
hourB,&
minB);
time=(hourB-hourA)*60+(minB-minA);
*-----------------------------------------------------------------*\n"
*------------------小朋友你答题用时为:
---------------------------*\n"
*-----------------%d分钟--------------------------------*\n"
time);
FileCopy();
//调用此函数,即复制测试结果
TestOver();
/*----------------------------------------------------------*/
/***********************************************************************************************************************************/
voidmain()
FILE*fp,*fp2,*fp3;
fp=fopen("
//以只写方式打开文件,如果文件存在,则清空,这就是为什么结束程序时要复制测试结果了
fp2=fopen("
//清空之前数据
f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小学 数学 测试 系统 课程设计 报告 源程序 代码