C++单项选择题标准化考试系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录1.课程设计目的12.课程设计题目描述和要求12.1课程题目12.2课程要求13.课程设计报告内容13.1算法描述13.2源程序24.课程设计总结:65.参考书目71课程设计目的练习自己的动手能力,在学习理论的同时增强自己的编程能力,使理论与实践相结合,在学习书本的同时扩展自己的课外知识.2课程设计题目描述和要求2.1课程题目单项选择题标准化考试系统2.2课程要求(一)功能要求:(1)用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档.3课程设计报告内容3.1算法描述定义题目数组,选向数组,输入题目的及选向并给定正确答案。输入所要答的题目数,然后进行答题。输入的答案与标准答案进行比较,如果一致,则正确,否则错误。最后根据题目数及答对题目数进行输出得分。3.2源程序#includeiostream#includefstream#includedos.husingnamespacestd;structquestion{charask[200];/*选择题题目*/charanswer[4][80];/*选择题选项*/intright;/*正确答案*/structquestion*next;};//函数声明intMenuChoice(void);//选择菜单structquestion*charu_timu(structquestion*fst,conststructquestion*ad);//向列表中插入试题函数structquestion*da_an_weizhi(structquestion*seek,longlen,longmax);//确定一个读取答案的位置的函数voidGetQuestion(structquestion*src);//获取问题,选项,以及正确答案函数voidbao_cun(conststructquestion*ed,FILE*saf);//将列表中的试题保存在文件中的函数structquestion*LoadFile(structquestion*td,FILE*laf);//从文件中读取题目,将题目添加到列表中的函数intGetAnswer(void);//输入选择题的答案voidhuida_Question(conststructquestion*que,intn);//回答问题函数main(){structquestion*start=NULL,temp;longchoice,line=0,c;FILE*fp=fopen(wangkun.dat,a+);while((choice=MenuChoice())!=3)if(choice==1){GetQuestion(&temp);start=charu_timu(start,&temp);++line;/*统计列表的长度*/system(cls);}elseif(choice==2){c=8;while(c6||cline){cout请输入要回答的问题数量:;cinc;}huida_Question(start,line);}return0;}/*da_an_weizhi函数确定一个读取答案的位置,len代表要读取的答案数,max代表列表的长度*/structquestion*da_an_weizhi(structquestion*seek,longlen,longmax){inti;while(i--)seek=seek-next;//找到指定的位置returnseek;}//向列表中插入试题structquestion*charu_timu(structquestion*fst,conststructquestion*ad){structquestion*newPtr=(structquestion*)malloc(sizeof(structquestion));if(newPtr==NULL)exit(0);*newPtr=*ad;newPtr-next=fst;returnnewPtr;}/*获取问题,选项,以及正确答案*/voidGetQuestion(structquestion*src){inti=0;cout请输入选择题题目:endl;cinsrc-ask;while(i4){cout请输入选项char(i+'A')的答案:endl;cinsrc-answer[i++];}src-right=GetAnswer();}/*从文件中读取题目,将题目添加到列表中*/structquestion*LoadFile(structquestion*td,FILE*laf){structquestiontemp;while(fread(&temp,1,sizeof(structquestion),laf))td=charu_timu(td,&temp);returntd;}/*将列表中的试题保存在文件中*/voidbao_cun(conststructquestion*ed,FILE*saf){fclose(saf);if((saf=fopen(wankun.dat,w))==NULL)//以写的方式重新打开文件return;while(ed){fwrite(ed,1,sizeof(structquestion),saf);ed=ed-next;}}//得到选择题的答案(不保证是正确的答案)intGetAnswer(void){charc=0;//必须进行初始化,避免出现偶然性的错误fflush(stdin);while(c'A'||c'D')//确保输入的答案是A,B,C,D中的一个{cout请输入正确的答案:endl;cinc;}returnc;}//回答问题,并统计答对题目数,显示得分voidhuida_Question(conststructquestion*que,intn){inti=0,t=n;charresult[1001],*p=result;for(i=0;n--;que=que-next){coutque-askendl;coutque-answer[0]endl;coutque-answer[1]endl;coutque-answer[2]endl;coutque-answer[3]endl;if((*p=que-right)==(*(p+1)=GetAnswer()))++i;}*p='\0';cout标准答案您的答案endl;for(p=result;*p!='\0';)cout*p*(p+1)endl;cout您回答了t道题,答对i道题目,得分:(float)i/t*100.00endl;}//选择菜单intMenuChoice(void){intvalue;cout**********************************endl;cout**endl;cout*1:添加选择题*endl;cout*2:回答选择题*endl;cout*3:退出*endl;cout**endl;cout**********************************endl;cinvalue;returnvalue;}4课程设计总结:经过编写程序,检验了我们的编程的水平,从这次编程中,我发现我才学到了一点点的知识,有好多的东西都不够熟练,还需要好好的努力学习,在编写这个程序时,出现了好多的问题,经过别人的帮助和自己的认真的调试才完成,这个程序还有好多的不足,还不够美观。有的地方还有漏洞。这个程序我使用的是链表,使我从中掌握了链表的使用方法,积累了经验,这些经验在以后的学习生活中会有很大的帮助的。5参考书目:谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功