长江学院信息工程系《程序设计综合课程设计》报告(2015/2016学年第一学期)学生姓名:方新盛学生班级:1530501学生学号:201530050116指导教师:戴晟辉2016年1月6日目录一课程设计目的及要求.............................1二课程设计任务和内容...............................1三设计说明..............................21主要流程图...............................................22课程设计思想…………………………………33详细设计…………………………………43.1登陆模块…………………………………………………43.2加法模块…………………………………………………63.3减法模块…………………………………………………73.4混合模块…………………………………………………93.5运算结果………………………………………103.6使用软件………………………………………12四课程设计感想……………………………………12五参考文献…………………………………………13六附件(程序代码)………………………………………14第1页小学生测验课程设计报告一、课程设计目的及要求(1)提高和加强自己的计算机应用与软件开发能力,使自己由初学者向专业的程序员过渡。(2)培养自己独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势,综合运用所学知识,解决实际问题,全面提高学生的程序设计能力和开发能力。(3)学习和掌握C++面向对象程序设计方法以及上机调试技巧,为今后学习其它专业课程打好坚实的基础。(4)检测自己在这一学期对C++面向对象的学习及掌握情况。知道自己的不足,及时的弥补。为以后的学习打下一定的基础,也为自己以后如何制定学习计划做一铺垫。二.课程设计任务和内容功能齐全:界面操作灵活方便,至少实现以下基本功能:电脑随机出10道题,每题10分,程序结束时显示学生得分;确保算式没有超出1~2年级水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;对于每道题目,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;总成绩90分以上现实“SMART”,80~90分显示“GOOD”,70~80分显示“OK”,60~70分显示“PASS”,60分以下显示“TRYAGAIN”。第2页三.设计说明1.主要流程图12其他否是否是否10分7分5分0分Main函数登陆模块选择加法运算减法运算混合运算一次答对二次答对三次答对结束开始输出得分第3页2.课程设计思想在main()主函数中定义STUDENTstudent;对象,并调用student.Input();信息输入,在登录模块程序采用了调用以及输入输出函数!当用户输入自己的学号以及姓名开始使用本系统,进入登陆模块。屏幕显示菜单提示,用户可根据需要选择相应功能。如下:请选择测试项目,加法请按1,减法请按2,混合运算请按任意键。student.Test();进行选择,是加法,减法,还是加减法都有,student.Test()调用add()函数,sub函数,addsub函数,当用户选择1进行加法计算,选择2进行加法运算,选择任意键进行加减混合运算选择相应的函数其思路相同,用for(a=rand()%51,b=rand()%51;a+b50||a+b0;a=rand()%51,b=rand()%51;是假发运算的控制,for(a=rand()%51,b=rand()%51;a-b50||a-b0;a=rand()%51,b=rand()%51;减法运算,for(a=rand()%51,b=rand()%51;a-b50||a-b0||a+b50||a+b0;a=rand()%51,b=rand()%51;选择了for(inti=1;i=10;i++)函数控制题,a=rand()%51,b=rand()%51;产生随机数的函数rand,rand()%51是产生的随机数都小于50,a+b50||a+b0||a-b50||a-b0,a,b两数的和,差大于0小于50,确保算式没有超出1~2年级水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;再用for(intj=1;j=3;j++)控制三次答题机会,如果第一次学生答题错误系统会提示还有答题错误,还有俩次机会,否则就给出第一次答题正确的分数10分,如果第二次学生答题错误系统会提示还有答题错误,还有一次机会,否则就给出第三次答题正确的分数7分,如果第三次学生答题错误系统会提示还有答题错误,没有做题机会,系统给出正确的答案,否则就给出第三次答题正确的分数5分,实现这几部很简单采用了if,else语句判断,score[i]!=trueValue当输入值等于正确答案时,走else语句判断得分情况,否则给出答题机会;每次做对一题flag=1,统计做对题的个数zen=zen+flag;sum统计的分情况sum=sum+score[i];当第一次做对题则first=1表示仅一次做对题,first1=first1+first;统计仅一次做对题的个数,second表示俩次做对题,second1=second1+second统计俩次做对题的个数,third表示三次做对题third1=third1+third;统计三次做对题的个数,那么答错题的个数10-zen,而答题的正确率为得分除以100乘以100%,第4页3.详细设计3.1登录模块3.11登录模块程序voidmain(){cout一二年级测试题endlendl;cout*☆☆☆☆☆☆☆小学数学测试软件☆☆☆☆☆☆☆☆☆*endl;cout***********************************************\n;STUDENTstudent;//定义一个对象while(1){student.Input();//信息输入student.Test();//进行选择,是加法,减法,还是都有coutdoyouwanttocontinue?(Y/N);charch;cinch;if(ch=='n'||ch=='N')break;}}//==============================================================voidSTUDENT::Input(){cout请输入你的学号:;cinNum;cout请输入你的姓名:;cinName;cout**************************************************************endl;}//=============================================================voidSTUDENT::Test(){cout请选择测试项目,加法请按1,减法请按2,混合运算请按任意键。endl;intStest;cinStest;switch(Stest){第5页case1:Add();Output();break;case2:Sub();Output();break;default:AddSub();Output();break;}}3.1.2.主要完成功能为:当用户输入自己的学号以及姓名开始使用本系统,进入登陆模块。屏幕显示菜单提示,用户可根据需要选择相应功能。具体如下:请选择测试项目,加法请按1,减法请按2,混合运算请按任意键]。3.1.3.主要使用思想:在main()主函数中定义STUDENTstudent对象[2],并调用student.Input();信息输入,student.Test();进行选择,是加法,减法,还是加减法都有,在登录模块程序采用了调用以及输入输出函数!关键代码STUDENTstudent;//定义一个对象[2]while(1){student.Input();//信息输入student.Test();//进行选择,是加法,减法,还是都有coutdoyouwanttocontinue?(Y/N);charch;cinch;if(ch=='n'||ch=='N')break;}第6页3.2加法运算模块3.2.1.主要完成功能为:当用户选择了1加法测试,屏幕随机出现10道加法测试题进行计算。3.2.2.主要使用思想:当用户选择1进行加法计算时,则选择了STUDENT::add()函数for(int四个输出语句While函数调用student.Input()函数main()主函数for(inti=1;i=10;i++)函数控制题10道题for(a=rand()%51,b=rand()%51;a+b50||a+b0;a=rand()%51,b=rand()%51)for(intj=1;j=3;j++)控制三次答题机会STUDENT::Sub()函数Else每次答对题的得分if(score[i]!=trueValue)控制有三次输入的机会调用student.Test()函数第7页i=1;i=10;i++)函数控制题10道题,for(a=rand()%51,b=rand()%51;a-b50||a-b0;a=rand()%51,b=rand()%51产生)随机数的函数rand,rand()%51是产生的随机数都小于50,a+b50||a+b0,a,b两数的和大于0小于50,确保算式没有超出1~2年级水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;再用for(intj=1;j=3;j++)控制三次答题机会,如果第一次学生答题错误系统会提示还有答题错误,还有俩次机会,否则就给出第一次答题正确的分数10分,如果第二次学生答题错误系统会提示还有答题错误,还有一次机会,否则就给出第三次答题正确的分数7分,如果第三次学生答题错误系统会提示还有答题错误,没有做题机会,系统给出正确的答案,否则就给出第三次答题正确的分数5分,实现这几部很简单采用了if,else语句判断,score[i]!=trueValue当输入值等于正确答案时,走else语句判断得分情况,否则给出答题机会;每次做对一题flag=1,统计做对题的个数zen=zen+flag;sum统计的分情况sum=sum+score[i];当第一次做对题则first=1表示仅一次做对题,first1=first1+first;统计仅一次做对题的个数,second表示俩次做对题,second1=second1+second统计俩次做对题的个数,third表示三次做对题third1=third1+third;统计三次做对题的个数,那么答错题的个数10-zen,而答题的正确率为得分除以100乘以100%,3.3减法运算模块3.3.1.主要完成功能为:当用户选择了2减法测试,屏幕随机出现10道减法测试题进行计算。3.3.2.主要使用思想:第8页当用户选择2进行加法计算时,则选择了STUDENT::Sub()[2]函数for(inti=1;i=10;i++)函数控制题10道题,for(a=rand()%51,b=rand()%51;a-b50||a-b0;a=rand()%51,b=rand()%51产生)随机数的函数rand[3],rand()%51是产生的随机数都小于50,a-b50||a-b0,a,b两数的差大于0小于50,确保算式没有超出1~2年级水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负