标准化考试系统,用c++语言编写

标准化考试系统,用c++语言编写题目5:标准化考试系统功能要求:设计一个标准化考试系统,可以进行任何标准化考试,具有选择试题、评分、查看得分、考试计时等功能。具体要求如下... 标准化考试系统,用c++语言编写题目5:标准化考试系统
功能要求:设计一个标准化考试系统,可以进行任何标准化考试,具有选择试题、评分、查看得分、考试计时等功能。
具体要求如下:
1. 用户可以选择一套标准化考试试题。
2. 每套试题的考试用时由试题文件(.txt)给出,或存于数据库表中。
3. 开始读取试题后,计时器开始计时,用户提交答案后,可以读取下一道题目。
4. 一个提示栏显示所剩余的考试时间,当规定时间用尽后,用户将不能再读取任何题目。
展开
 我来答
匿名用户
2017-05-08
展开全部
从网上找了一份,编译运行都OK的:#include#include#includestructquestion{charask[200];/*选择题题目*/charanswer[4][80];/*选择题选项*/intright;/*正确答案*/structquestion*next;};intMenuChoice(void);structquestion*InsertList(structquestion*fst,conststructquestion*ad);structquestion*ListSeek(structquestion*seek,longlen,longmax);voidGetQuestion(structquestion*src);voidSaveFile(conststructquestion*ed,FILE*saf);structquestion*LoadFile(structquestion*td,FILE*laf);intGetAnswer(void);voidExplainQuestion(conststructquestion*que,intn);main(){structquestion*start=NULL,temp;longchoice,line=0,c;FILE*fp=fopen("kstm.dat","a+");start=LoadFile(start,fp);while((choice=MenuChoice())!=3)if(choice==1){GetQuestion(&temp);start=InsertList(start,&temp);++line;/*统计列表的长度*/}elseif(choice==2){c=600;while(c>500||c>line){printf("请输入要回答的问题数量:");scanf("%d",&c);}ExplainQuestion(start,line);}SaveFile(start,fp);/*进行最后的工作*/fclose(fp);return0;}/*ListSeek函数确定一个读取答案的位置,len代表要读取的答案数,max代表列表的长度*/structquestion*ListSeek(structquestion*seek,longlen,longmax){inti;srand(time(NULL));while(i=rand()%max+lennext;/*找到指定的位置*/returnseek;}/*向列表中插入试题*/structquestion*InsertList(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;printf("请输入选择题题目:\n");scanf("%s",src->ask);while(ianswer[i++]);}src->right=GetAnswer();}/*从文件中读取题目,将题目添加到列表中*/structquestion*LoadFile(structquestion*td,FILE*laf){structquestiontemp;while(fread(&temp,1,sizeof(structquestion),laf))td=InsertList(td,&temp);returntd;}/*将列表中的试题保存在文件中*/voidSaveFile(conststructquestion*ed,FILE*saf){fclose(saf);if((saf=fopen("kstm.dat","w"))==NULL)/*以写的方式重新打开文件*/return;while(ed){fwrite(ed,1,sizeof(structquestion),saf);ed=ed->next;}}/*得到选择题的答案(不保证是正确的答案)*/intGetAnswer(void){intc=0;/*必须进行初始化,避免出现偶然性的错误*/fflush(stdin);while(c'D'){/*确保输入的答案是A,B,C,D中的一个*/printf("请输入正确的答案:");scanf("%c",&c);}returnc;}/*回答问题,并统计答对题目数,显示得分*/voidExplainQuestion(conststructquestion*que,intn){inti=0,t=n;charresult[1001],*p=result;for(i=0;n--;que=que->next){printf("%s\nA.%s\nB.%s\nC.%s\nD.%s\n\n",que->ask,que->answer[0],que->answer[1],que->answer[2],que->answer[3]);if((*p=que->right)==(*(p+1)=GetAnswer()))++i;p+=2;}*p='\0';printf("\n%-13s%-13s%s\n","标准答案","您的答案","评价");for(p=result;*p!='\0';p+=2)printf("%-13c%-13c%s\n",*p,*(p+1),*p==*(p+1)?"正确":"错误");printf("\n您回答了%d道题,答对%d道题目,得分:%.2f\n\n",t,i,(float)i/t*100.00);}/*选择菜单*/intMenuChoice(void){intvalue;printf("1-添加选择题\n2-回答选择题\n3-退出\n");scanf("%d",&value);returnvalue;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式