




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机与科学技术专业数据结构与算法I课 程 设 计 报 告课设题目: 单项选择题标准化考试系统 学生姓名: 学 号: 同组同学: 完成日期: 成 绩: 目 录一、设计流程1二、需求分析1三、总体设计2四、详细设计3五、系统测试14六、总结19七、参考文献19一 本次课程设计的流程(1) 需求分析(2) 试题的录入(3) 试题的抽取(4) 试题的删除(5) 答题(6) 自动判卷(7) 系统测试(8) 退出系统二 需求分析1. 课程设计名称及内容 设计一单项选择题标准化考试系统,实现考试的标准化管理。2设计方案提示 (1) 用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案); (2) 试题录入:可随时增加试题到试题库中; (3) 试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入); (4) 答题:用户可实现输入自己的答案; (5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。三 总体设计1总的叙述 1、用来保存试题库,可以用到”Struct TestNode Testquestions”结构体数组,将试题一一对应的保留下来,放在相应的文件里; 2、试题的录入,可以定义一个” Status InsertNode(int &N)”函数将试题录入; 3、 试题的抽取,可以定义一个” void printNode(TestNode p,int n)”的函数,用到”Rand”函数进行随机抽取; 4、答题方面,则定义一个” void answer(int sum)”函数用于答题者的输入答案; 5、自动判卷,则可以定义一个” Status Match(TestNode p,char m)”函数,用来对比答题者答案和正确答案,给出判断正确与否; 6、存储方面每次插入和删除操作都能自动存储试题至文档。7、用一个main函数将上述各个函数功能块连接起来,实现”单项选择题标准化考试系统”的各个方面的功能,完成设计四 详细设计1.模块流程(1) 答题功能模块进入函数answer(int sum)i=0,isumNum=rand()%sum题目是否重复输出数据从键盘获得数据I=0,isum,答案是否正确输出”错误”输出”正确”输出总成绩函数结束(2) 显示功能结构功能开始I=0,iN,进入函数printNode(TestNode p,int n)输出一道题目离开函数printNode(TestNode p,int n)功能结束(3) 输入功能结构函数InsertNode(int &n)开始打开并读取文件输入题目内容将题目插入到题库末尾将题库存储至文件函数InsertNode(int &n)结束(4) 删除功能结构函数DeleteTitle(int *n)开始打开并读取文件输入删除题目编号将从题库中删除将题库存储至文件函数DeleteNode(int *n)结束(4)结构体程序中主要用到了结构体数组,定义类型,如typedef int Status等,用结构体数组可以使得程序比较简便,易于读懂,免去频繁的赋值,而用定义类型,可以使得程序具有移植性。2. 功能模块(1) 试题的录入模块Status InsertNode(int &n) / printf(%d,n); int i=0,j; FILE *fp; if(fp=fopen(exam.txt,wb+)=NULL) printf(Cannot open file.); getchar(); exit(1); / printf(%d,n); while(!feof(fp) fread(&Testquestionsi,sizeof(TestNode),1,fp); i+; / printf(%d,n); / printf(%d,n); printf(请输入题目:); gets(Testquestionsn.subject); gets(Testquestionsn.subject); printf(请输入选项A:); gets(Testquestionsn.option1); printf(请输入选项B:); gets(Testquestionsn.option2); printf(请输入选项C:); gets(Testquestionsn.option3); printf(请输入选项D:); gets(Testquestionsn.option4); printf(请输入答案:); scanf(%c,&Testquestionsn.result); getchar(); / printf(%d,n); n+; / printf(%d,n); for(j=0;jn;j+) fwrite(&Testquestionsj,sizeof(TestNode),1,fp); fclose(fp); system(cls); return TRUE;(2)试题的输出模块void printNode(TestNode p,int n) /int i=0; printf(%d) ,n); printf(%sn,p.subject); printf( A %s ,p.option1); printf( B %s ,p.option2); printf( C %s ,p.option3); printf( D %s ,p.option4);Status Match(TestNode p,char m) if(m=p.result) return TRUE; else return ERROR;(3) 答题判卷模块void answer(int sum) int a,Num,s100; float score=0; char r; for(int i=0;isum;i+) key:Num=rand()%sum; for(a=0;ai;a+) if(sa=Num) goto key; si=Num; for(int i=0;isum;i+) printNode(Testquestionssi,si+1); printf(n请输入答案:); scanf(%c,&r); getchar(); if( Match(Testquestionssi,r) printf(n答案正确!an); score+; else printf(n答案错误!an); printf(n你的总成绩为:%fn,score/sum*100);(4) 试题的删除模块Status DeleteTitle(int *n) int i=0,k,temp; FILE *fp; if(fp=fopen(exam.txt,wb+)=NULL) printf(Cannot open file.); getchar(); exit(1); while(!feof(fp) fread(&Testquestionsi,sizeof(TestNode),1,fp); i+; /n=i-1; printf(请输入所要删除的题目的题号:n); scanf(%d,&k); getchar(); for(;k=*n;k+) / Testquestionsi=Testquestionsi+1; Testquestionsk-1=Testquestionsk; / Testquestions*n=Testquestions0; temp=*n; *n=temp-1; for(int j=0;jN|sum=0) printf(请输入你想要的答题数目); scanf(%d,&sum); answer(sum); break; case 2:system(cls); /printNode for(i=1;i=N;i+) printNode(Testquestionsi-1,i); printf(n); break; case 3:system(cls); /InsertNode InsertNode(N); break; case 4:system(cls); /DeleteTitle DeleteTitle(p); printf(删除成功!n); break; case 5:printf(你将退出系统(Y/N)?); /exit scanf(%c,&flag); getchar(); if(flag=Y|flag=y) return TRUE; system(cls); break; default:printf(请输入正确选择!n); return 0;五 系统测试1 运行系统,进入界面2. 开始插入试题进行插入试题连续插入两道题显示整张试卷内容3. 进行答题进行答题4. 退出系统退出系统5.检查文件六 总结通过这次课程设计,增加了我学习软件技术的兴趣,让我对于程序设计的流程更加了解,对程序本身的结构印象深刻。在此次课程设计过程总我们团结协作,轮流架构,体会到了合作的乐趣,同时广泛搜寻资料,从网上和书上找到了大量的相关资料和教程,丰富了我们自身的知识储备,对数据结构的性质有了更深的体会。总体来说通过这次课程设计收获的不只是知识,还有合作的乐趣,以及对程序艺术的一点体会。七 参考文献1 谭浩强. C程序设计(第二版).北京:清华大学出版社,1999,122 美H M Deitel,P J Deitel著,薛万鹏等译. C语言程序设计教程.北京:机械工业出版社,2000.073 严蔚敏 吴伟民 编著 数据结构(C语言版),北京:清华大学出版社,2007八 程序源代码:/ FUNCTION.C/ 课程设计/ CREATED BY EUTIAL ON 6/27/16./ COPYRIGHT ? 2016 EUTIAL. ALL RIGHTS RESERVED./#INCLUDE #INCLUDE #INCLUDE #DEFINE TRUE 1#DEFINE ERROR 0#DEFINE MAX 30TYPEDEF INT STATUS;TYPEDEF STRUCT CHAR SUBJECT200, OPTION130, OPTION230, OPTION330, OPTION430; CHAR RESULT;TESTNODE;TESTNODE TESTQUESTIONSMAX;STATUS INSERTNODE(INT &N) / PRINTF(%D,N); INT I=0,J; FILE *FP; IF(FP=FOPEN(EXAM.TXT,WB+)=NULL) PRINTF(CANNOT OPEN FILE.); GETCHAR(); EXIT(1); / PRINTF(%D,N); WHILE(!FEOF(FP) FREAD(&TESTQUESTIONSI,SIZEOF(TESTNODE),1,FP); I+; / PRINTF(%D,N); / PRINTF(%D,N); PRINTF(请输入题目:); GETS(TESTQUESTIONSN.SUBJECT); GETS(TESTQUESTIONSN.SUBJECT); PRINTF(请输入选项A:); GETS(TESTQUESTIONSN.OPTION1); PRINTF(请输入选项B:); GETS(TESTQUESTIONSN.OPTION2); PRINTF(请输入选项C:); GETS(TESTQUESTIONSN.OPTION3); PRINTF(请输入选项D:); GETS(TESTQUESTIONSN.OPTION4); PRINTF(请输入答案:); SCANF(%C,&TESTQUESTIONSN.RESULT); GETCHAR(); / PRINTF(%D,N); N+; / PRINTF(%D,N); FOR(J=0;JN;J+) FWRITE(&TESTQUESTIONSJ,SIZEOF(TESTNODE),1,FP); FCLOSE(FP); SYSTEM(CLS); RETURN TRUE;STATUS DELETETITLE(INT *N) INT I=0,K,TEMP; FILE *FP; IF(FP=FOPEN(EXAM.TXT,WB+)=NULL) PRINTF(CANNOT OPEN FILE.); GETCHAR(); EXIT(1); WHILE(!FEOF(FP) FREAD(&TESTQUESTIONSI,SIZEOF(TESTNODE),1,FP); I+; /N=I-1; PRINTF(请输入所要删除的题目的题号:N); SCANF(%D,&K); GETCHAR(); FOR(;K=*N;K+) / TESTQUESTIONSI=TESTQUESTIONSI+1; TESTQUESTIONSK-1=TESTQUESTIONSK; / TESTQUESTIONS*N=TESTQUESTIONS0; TEMP=*N; *N=TEMP-1; FOR(INT J=0;J*N;J+) FWRITE(&TESTQUESTIONSJ,SIZEOF(TESTNODE),1,FP); FCLOSE(FP); SYSTEM(CLS); RETURN TRUE;VOID PRINTNODE(TESTNODE P,INT N) /INT I=0; PRINTF(%D) ,N); PRINTF(%SN,P.SUBJECT); PRINTF( A %S ,P.OPTION1); PRINTF( B %S ,P.OPTION2); PRINTF( C %S ,P.OPTION3); PRINTF( D %S ,P.OPTION4);STATUS MATCH(TESTNODE P,CHAR M) IF(M=P.RESULT) RETURN TRUE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村农业承包经营协议书
- 跨文化消费行为差异-洞察及研究
- 保险行业风险管控措施
- 市场分销及经销合同书
- 餐车采购安装合同协议书
- 高频交易对冲模型构建-洞察及研究
- 餐饮合作协议书合同模板
- 餐饮废油回收协议书范本
- 夜间施工消防安全措施须知
- 餐饮门店纯投资合同范本
- 初中全册英语常用3500词分类大全
- 电视摄像与画面编辑第1章课件
- 幕墙预埋件专项施工方案
- HDX8000系列安装配置操作指南
- 白虎汤分析课件
- 山东青年政治学院校徽校标
- 2022版义务教育英语课程标准之学业质量标准与考试评价解读PPT
- (高清正版)JJF(浙)1102-2014生物人工气候箱校准规范
- 完整解读新版《义务教育课程方案》2022年《义务教育课程方案(2022版)》PPT课件
- 《文殊真实名经》
- 幼儿各年龄段发展评估指南
评论
0/150
提交评论