C语言单项选择题标准化考试系统_第1页
C语言单项选择题标准化考试系统_第2页
C语言单项选择题标准化考试系统_第3页
C语言单项选择题标准化考试系统_第4页
C语言单项选择题标准化考试系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、一、 课程设计的内容C题目二十四:单项选择题标准化考试系统(一) 功能要求:(1) 用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)(2) 试题录入:可随时增加试题到试题库中(3) 试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4) 答题:用户可实现输入自己的答案(5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。(二)其它要求:(1) 只能使用C/C+语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好)(3) 学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文

2、档二、课程设计的要求与数据1、进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程序设计开发文档的能力。三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数

3、据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容; 6) 附录:主要源程序代码,含必要的注释。3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解 决问题、运行程序和回答教师提出的问题。四、课程设计进程安排序号设计各阶段内容地点起止日期1下达任务书,说明设计要求;收集资料实验3#5176.182总体方案设计、详细设计实验3#5176.193编写程序,调试

4、分析实验3#5176.204撰写报告并上交,答辩实验3#5176.21五、应收集的资料及主要参考文献1 谭浩强.C程序设计(第三版)M,北京:清华大学出版社,2005.92 谭浩强. C程序设计题解与上机指导(第三版)M,北京:清华大学出版社,2005.73 刘振安等.C+程序设计课程设计M-北京:机械工业出版社,2004.84 张淑平.C语言程序设计学习指导,西安电子科技大学出版社,2004.6发出任务书日期: 2007年 6 月 18 日 指导教师签名:计划完成日期:2007年 6 月 22 日 基层教学单位责任人签章:主管院长签章:目 录1 设计目的与要求52 总体设计63 详细设计73

5、.1功能模块设计73.1.1保存文件功能模块73.1.2输出文件功能模块73.1.3 答题功能模块83.2数据结构设计94调试分析 105 总结126 附录136 答辩记录(正文处请留出适当空白) 197 指导教师意见(正文处请留出十行空白) 191 目的与要求一 目的: 设计一个单项选择题标准化考试系统,方便考试时试题的录入与批改。二 要求:(1) 用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案);(2) 试题录入:可随时增加试题到试题库中;(3) 试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入);(4) 答题:用户可实现输入自己的答案;(5) 自动判卷:系统可根据用

6、户答案与标准答案的对比实现判卷并给出成绩。2 总体设计一 总的概叙: 1、用来保存试题库,可以用到”Struct TestNode Testquestions”结构体数组,将试题一一对应的保留下来,放在相应的文件里;2、试题的录入,可以定义一个” void InputTitle(int N)”和” Status InsertNode(int &N)”函数将试题录入;3、 试题的抽取,可以定义一个” void printNode(TestNode p,int n)”的函数,用到”Rand”函数进行随机抽取;4、答题方面,则定义一个” void answer(int sum)”函数用于答题

7、者的输入答案;5、自动判卷,则可以定义一个” Status Match(TestNode p,char m)”函数,用来对比答题者答案和正确答案,给出判断正确与否;6、用一个main函数将上述各个函数功能块连接起来,实现”单项选择题标准化考试系统”的各个方面的功能,完成设计.。二、大概流程图单项选择题标准化考试系统进行答题并判卷显示整张试卷内容插入试题保存到文件退出系统3 详细设计3.1功能模块设计 3.1.1保存文件功能模块: 进入函数SaveNode(int N) 成功打开文件?N Y I<N 写入数据Return ERROR i+ 关闭文件 Return TRUE 3.1.2 输出

8、文件功能模块: 进入函数ReadNode(int N) 成功打开文件? N Y 判断条件成立Return ERROR 读出数据 i+ N+1 Return ture3.1.3 答题功能模块:进入函数answer(int sum)i=1,i<sum N YNum=rand()%sum输出数据从键盘获得数据答案是否正确 Y N输出”错误”输出”正确”输出”总成绩为”结束 3.2数据结构设计 程序中主要用到了结构体数组,定义类型,如typedef int Status等,用结构体数组可以使得程序比较简便,易于读懂,免去频繁的赋值,而用定义类型,可以使得程序具有移植性,健壮性好。4 调试分析一、

9、 操作界面二、 进行答题并判卷三、 插入试题四、 退出系统 调试分析结论:里面用到的随机函数在随机选择试题时,有时会遇到选择出来的试题时重复的,由于时间比较紧迫,暂时还没有找出原因,修正过来.5 总 结 经过这整整三天的C语言课程设计的训练,我学到了很多,最主要的一点是怎样去自学一种东西,怎样去找到你所需要的资料,并在短时间把它学会,运用到你所需要的方面。这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。 在做这个C语言课程设计的时候,我原先也是知之甚少,什么是结构体数据,什么是定义类型,怎样在一个main函

10、数中调用别的定义函数,等等,可以说是一无所知。然而,在这门课程设计中,这些方面却是特别重要的,可以说,掌握了这个,你就完全可以完成自己的任务。这就要求我们要自己去学,自己去探索。当然,跑图书馆是必不可少的,还有,身边有非常丰富的网络资源给我们好好利用,百度就是个很不错的地方。这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力。当然,由于个人能力所限,这份课程设计有一些别的方面还是要参考人家的的资料,在读懂别人材料的同时,自己取人所长,补己之短,经过多次的调试,总结,最后交出一份自己比较满意的答卷。通过这次的课程设计,让我进一步的了解到C语言在我们日常

11、生活中的重要性,而且,也更进一步的激发了我学习这门语言的兴趣.经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。6.附录#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define TRUE 1#define ERROR 0#define MAX 30typedef int Status;typedef structchar option130,option230,option330,option430,subject150;char result;Tes

12、tNode;TestNode TestquestionsMAX;Status SaveNode(int N) /把结构体数组保存到文件"cheng"中,如成功保存返回TRUE,否则返回ERRORint i;FILE *fp;if(fp=fopen("cheng","wb")=NULL) return ERROR;for(i=0;i<N;i+)fwrite(&Testquestionsi,sizeof(TestNode),1,fp);fclose(fp);return TRUE;Status ReadNode(int &a

13、mp;N)/从文件读出结构体数组的内容,如成功读取返回TRUE,否则返回ERRORFILE *fp;int i=0;if(fp=fopen("cheng","rb")=NULL) return ERROR;while(!feof(fp)/ 用feof检测文件是否结束,如果结束,返回正确fread(&Testquestionsi,sizeof(TestNode),1,fp);i+; N=i-1;return TRUE;void InputTitle(int N)/ 输入N道试题数据int i; for(i=0;i<N;i+) printf(&

14、quot;请输入第%d道题题目、题干和选项:n",i+1);/输入结构体元素内容printf("请输入题目:"); gets(Testquestionsi.subject);printf("请输入选项A:");gets(Testquestionsi.option1);printf("请输入选项B:");gets(Testquestionsi.option2);printf("请输入选项C:");gets(Testquestionsi.option3);printf("请输入选项D:")

15、;gets(Testquestionsi.option4);printf("请输入答案:");scanf("%c",&Testquestionsi.result);getchar();system("cls"); /清屏Status InsertNode(int &N) /插入试题内容if(N>MAX) return ERROR; printf("请输入所要插入题题目、题干和选项:n");printf("请输入题目:");gets(TestquestionsN.subjec

16、t);printf("请输入选项A:");gets(TestquestionsN.option1);printf("请输入选项B:");gets(TestquestionsN.option2);printf("请输入选项C:");gets(TestquestionsN.option3);printf("请输入选项D:");gets(TestquestionsN.option4);printf("请输入答案:");scanf("%c",&TestquestionsN.r

17、esult);getchar();N+; /N表示结构体数组长度,通过加&号使其值能返回return TRUE;Status DeleteNode(int n)/删除数组中的第n个元素 return TRUE;void printNode(TestNode p,int n)/输出第n道题题目printf("(%d) ",n);printf("%sn",p.subject);printf(" A %s ",p.option1);printf(" B %s n",p.option2);printf("

18、 C %s ",p.option3);printf(" D %s ",p.option4);Status Match(TestNode p,char m)/判断m是否为p题目的答案,若是返回TRUE,否则返回ERRORif(m=p.result) return TRUE;else return ERROR;void answer(int sum)/进行答题 int i,score=0,Num; char r; for(i=1;i<=sum;i+)Num= rand()%sum; /随机函数,以随机选定何题进行解答 printNode(Testquestion

19、sNum,Num+1); printf("n请输入答案:"); scanf("%c",&r);getchar();if( Match(TestquestionsNum,r) /调用函数IsMatch判断所输入的答案与标准答案是否相同printf("n答案正确!n");score+; else printf("n答案错误!n");printf("n你的总成绩为:%dn",score);void main()char flag='N'int N=0,i, sum,score=

20、0,chose; /*printf("输入想建立的题目文件题目数:");scanf("%d",&N);getchar();InputTitle(N);*/ReadNode(N);while(flag='N'|flag='n') printf("ttt单项选择题标准化考试系统n "); printf("n"); printf(" ttt1 进行答题并判卷n"); printf(" ttt2 显示整张试卷内容n"); printf(" ttt3 插入试题n"); printf(" ttt4 保存到文件n"); printf(" ttt5 退出系统n"); printf(" ttt 请选择:"); s

温馨提示

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

评论

0/150

提交评论