数据结构课程设计报告书-单项选择题标准化考试系统_第1页
数据结构课程设计报告书-单项选择题标准化考试系统_第2页
数据结构课程设计报告书-单项选择题标准化考试系统_第3页
数据结构课程设计报告书-单项选择题标准化考试系统_第4页
数据结构课程设计报告书-单项选择题标准化考试系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.----.-word资料-"数据构造与算法I"课程设计报告课设题目:单项选择题标准化考试系统学生**:**:同组同学:完成日期:成绩:目录TOC\o"1-3"\u一、设计流程1二、需求分析1三、总体设计2四、详细设计3五、系统测试14六、总结19七、参考文献19一本次课程设计的流程需求分析试题的录入试题的抽取试题的删除答题自动判卷系统测试退出系统二需求分析1.课程设计名称及内容设计一单项选择题标准化考试系统,实现考试的标准化管理。2.设计方案提示(1)用文件保存试题库。〔每个试题包括题干、4个备选答案、标准答案〕;(2)试题录入:可随时增加试题到试题库中;(3)试题抽取:每次从试题库中可以随机抽出N道题〔N由键盘输入〕;(4)答题:用户可实现输入自己的答案;(5)自动判卷:系统可根据用户答案与标准答案的比照实现判卷并给出成绩。三总体设计1.总的表达1、用来保存试题库,可以用到〞StructTestNodeTestquestions〞构造体数组,将试题一一对应的保存下来,放在相应的文件里;2、试题的录入,可以定义一个〞StatusInsertNode(int&N)〞函数将试题录入;3、试题的抽取,可以定义一个〞voidprintNode(TestNodep,intn)〞的函数,用到〞Rand〞函数进展随机抽取;4、答题方面,,则定义一个〞voidanswer(intsum)〞函数用于答题者的输入答案;5、自动判卷,则可以定义一个〞StatusMatch(TestNodep,charm)〞函数,用来比照答题者答案和正确答案,给出判断正确与否;6、存储方面每次插入和删除操作都能自动存储试题至文档。7、用一个main函数将上述各个函数功能块连接起来,实现〞单项选择题标准化考试系统〞的各个方面的功能,完成设计单项选择题标准化考试系统单项选择题标准化考试系统进展答题并判卷显示整*试卷内容插入试题删除试题退出系统四详细设计1.模块流程〔1〕答题功能模块进入函数进入函数answer(intsum)i=0,i<sumi=0,i<sumNum=rand()%sumNum=rand()%sum题目是否重复题目是否重复输出数据输出数据从键盘获得数据从键盘获得数据I=0,i<sum,I=0,i<sum,答案是否正答案是否正确输出〞输出〞错误〞输出〞正确〞输出总成绩输出总成绩函数完毕函数完毕显示功能构造功能开场功能开场I=0,i<N,I=0,i<N,进入函数printNode(TestNodep,intn)进入函数printNode(TestNodep,intn)输出一道题目输出一道题目离开函数离开函数printNode(TestNodep,intn)功能完毕功能完毕输入功能构造函数InsertNode(int&n)函数InsertNode(int&n)开场翻开并读取文件翻开并读取文件输入题目内容输入题目内容将题目插入到题库末尾将题目插入到题库末尾将题库存储至文件将题库存储至文件函数函数InsertNode(int&n)完毕删除功能构造函数函数DeleteTitle(int*n)开场翻开并读取文件翻开并读取文件输入删除题目编号输入删除题目编号将从题库中删除将从题库中删除将题库存储至文件将题库存储至文件函数函数DeleteNode(int*n)完毕〔4〕构造体程序中主要用到了构造体数组,定义类型,如typedefintStatus等,用构造体数组可以使得程序比较简便,易于读懂,免去频繁的赋值,而用定义类型,可以使得程序具有移植性。功能模块试题的录入模块StatusInsertNode(int&n){//printf("%d",n);inti=0,j;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}//printf("%d",n);while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//printf("%d",n);//printf("%d",n);printf("请输入题目:");gets(Testquestions[n].subject);gets(Testquestions[n].subject);printf("请输入选项A:");gets(Testquestions[n].option1);printf("请输入选项B:");gets(Testquestions[n].option2);printf("请输入选项C:");gets(Testquestions[n].option3);printf("请输入选项D:");gets(Testquestions[n].option4);printf("请输入答案:");scanf("%c",&Testquestions[n].result);getchar();//printf("%d",n);n++;//printf("%d",n);for(j=0;j<n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}〔2〕试题的输出模块voidprintNode(TestNodep,intn){//inti=0;printf("(%d)",n);printf("%s\n",p.subject);printf("A%s",p.option1);printf("B%s",p.option2);printf("C%s",p.option3);printf("D%s",p.option4);}StatusMatch(TestNodep,charm){if(m==p.result)returnTRUE;elsereturnERROR;}答题判卷模块voidanswer(intsum){inta,Num,s[100];floatscore=0;charr;for(inti=0;i<sum;i++){key:Num=rand()%sum;for(a=0;a<i;a++)if(s[a]==Num)gotokey;s[i]=Num;}for(inti=0;i<sum;i++){printNode(Testquestions[s[i]],s[i]+1);printf("\n请输入答案:");scanf("%c",&r);getchar();if(Match(Testquestions[s[i]],r)){printf("\n答案正确!\a\n");score++;}elseprintf("\n答案错误!\a\n");}printf("\n你的总成绩为:%f\n",score/sum*100);}试题的删除模块StatusDeleteTitle(int*n){inti=0,k,temp;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}while(!feof(fp)){ fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//n=i-1;printf("请输入所要删除的题目的题号:\n");scanf("%d",&k);getchar();for(;k<=*n;k++){//Testquestions[i]=Testquestions[i+1];Testquestions[k-1]=Testquestions[k];}//Testquestions[*n]=Testquestions[0];temp=*n;*n=temp-1;for(intj=0;j<*n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}界面主函数模块intmain(void){charflag='N';inti,sum,choice;intN=0,*p;p=&N;FILE*fp;if((fp=fopen("e*am.t*t","rb+"))==NULL){printf("Cannotopenfile!");getchar();e*it(1);}while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}N=i-1;fclose(fp);while(flag=='N'||flag=='n'){printf("\t\t\t单项选择题标准化考试系统\n");printf("\n");printf("\t\t\t题库数量:%d\n",N);printf("\t\t\t1进展答题并判卷\n");//answer()printf("\t\t\t2显示整*试卷内容\n");//printNode()printf("\t\t\t3插入试题\n");//InsertNode)()printf("\t\t\t4删除试题\n");//DeleteTitle()printf("\t\t\t5退出系统\n");printf("\t\t\t请选择:");scanf("%d",&choice);switch(choice){case1:system("cls");//answerprintf("请输入你想要的答题数目:");scanf("%d",&sum);getchar();while(sum>N||sum<=0){printf("请输入你想要的答题数目");scanf("%d",&sum);}answer(sum);break;case2:system("cls");//printNodefor(i=1;i<=N;i++){printNode(Testquestions[i-1],i);printf("\n");}break;case3:system("cls");//InsertNodeInsertNode(N);break;case4:system("cls");//DeleteTitleDeleteTitle(p);printf("删除成功!\n");break;case5:printf("你将退出系统(Y/N)");//e*itscanf("%c",&flag);getchar();if(flag=='Y'||flag=='y')returnTRUE;system("cls");break;default:printf("请输入正确选择!\n");}}return0;}五系统测试运行系统,进入界面开场插入试题进展插入试题连续插入两道题显示整*试卷内容进展答题进展答题退出系统退出系统5.检查文件六总结通过这次课程设计,增加了我学习软件技术的兴趣,让我对于程序设计的流程更加了解,对程序本身的构造印象深刻。在此次课程设计过程总我们团结协作,轮流架构,体会到了合作的乐趣,同时广泛搜寻资料,从网上和书上找到了大量的相关资料和教程,丰富了我们自身的知识储藏,对数据构造的性质有了更深的体会。总体来说通过这次课程设计收获的不只是知识,还有合作的乐趣,以及对程序艺术的一点体会。七参考文献[1]谭浩强.C程序设计(第二版).:清华大学,1999,12[2][美]HMDeitel,PJDeitel著,薛万鹏等译.C语言程序设计教程.:机械工业,2000.07[3]严蔚敏吴伟民编著数据构造〔C语言版〕,:清华大学,2007八程序源代码:////function.c//课程设计////CreatedbyEutialon6/27/16.//Copyright"2021Eutial.Allrightsreserved.//*include<stdio.h>*include<stdlib.h>*include<string.h>*defineTRUE1*defineERROR0*defineMA*30typedefintStatus;typedefstruct{charsubject[200],option1[30],option2[30],option3[30],option4[30];charresult;}TestNode;TestNodeTestquestions[MA*];StatusInsertNode(int&n){//printf("%d",n);inti=0,j;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}//printf("%d",n);while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//printf("%d",n);//printf("%d",n);printf("请输入题目:");gets(Testquestions[n].subject);gets(Testquestions[n].subject);printf("请输入选项A:");gets(Testquestions[n].option1);printf("请输入选项B:");gets(Testquestions[n].option2);printf("请输入选项C:");gets(Testquestions[n].option3);printf("请输入选项D:");gets(Testquestions[n].option4);printf("请输入答案:");scanf("%c",&Testquestions[n].result);getchar();//printf("%d",n);n++;//printf("%d",n);for(j=0;j<n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}StatusDeleteTitle(int*n){inti=0,k,temp;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}while(!feof(fp)){ fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//n=i-1;printf("请输入所要删除的题目的题号:\n");scanf("%d",&k);getchar();for(;k<=*n;k++){//Testquestions[i]=Testquestions[i+1];Testquestions[k-1]=Testquestions[k];}//Testquestions[*n]=Testquestions[0];temp=*n;*n=temp-1;for(intj=0;j<*n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}voidprintNode(TestNodep,intn){//inti=0;printf("(%d)",n);printf("%s\n",p.subject);printf("A%s",p.option1);printf("B%s",p.option2);printf("C%s",p.option3);printf("D%s",p.option4);}StatusMatch(TestNodep,charm){if(m==p.result)returnTRUE;elsereturnERROR;}voidanswer(intsum){inta,Num,s[100];floatscore=0;charr;for(inti=0;i<sum;i++){key:Num=rand()%sum;for(a=0;a<i;a++)if(s[a]==Num)gotokey;s[i]=Num;}for(inti=0;i<sum;i++){printNode(Testquestions[s[i]],s[i]+1);printf("\n请输入答案:");scanf("%c",&r);getchar();if(Match(Testquestions[s[i]],r)){printf("\n答案正确!\a\n");score++;}elseprintf("\n答案错误!\a\n");}printf("\n你的总成绩为:%f\n",score/sum*100);}intmain(void){charflag='N';inti,sum,choice;intN=0,*p;p=&N;FILE*fp;if((fp=fopen("e*am.t*t","rb+"))==NULL){printf("Cannotopenfile!");getchar();e*it(1);}while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}N=i-1;fclose(fp);while(flag=='N'||flag=='n'){printf("\t\t\t单项选择题标准化考试系统\n");printf("\n");printf("\t\t\t题库数量:%d\n",N);printf("\t\t\t1进展答题并判卷\n");//answer()printf("\t\t\t2显示整*试卷内容\n");//printNode()printf("\t\t\t3插入试题\n");//InsertNode)()printf("\t\t\t4删除试题\n");//DeleteTitle()printf("\t\t\t5退出系统\n");printf("\t\t\t请选择:");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论