C语言课程设计单项选择题标准化考试系统设计.doc

上传人:仙人指路1688 文档编号:4082731 上传时间:2023-04-03 格式:DOC 页数:27 大小:153.50KB
返回 下载 相关 举报
C语言课程设计单项选择题标准化考试系统设计.doc_第1页
第1页 / 共27页
C语言课程设计单项选择题标准化考试系统设计.doc_第2页
第2页 / 共27页
C语言课程设计单项选择题标准化考试系统设计.doc_第3页
第3页 / 共27页
C语言课程设计单项选择题标准化考试系统设计.doc_第4页
第4页 / 共27页
C语言课程设计单项选择题标准化考试系统设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《C语言课程设计单项选择题标准化考试系统设计.doc》由会员分享,可在线阅读,更多相关《C语言课程设计单项选择题标准化考试系统设计.doc(27页珍藏版)》请在三一办公上搜索。

1、沈阳航空航天大学课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:单项选择题标准化考试系统设计 院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 完成日期: 2014年03月1日 目 录第1章 概要设计- 1 -1.1题目的内容与要求- 1 -内容:设计并实现一个单项选择题标准化考试系统。该系统可以完成试题录入、试题抽取、自动判卷等功能。- 1 -1.2总体结构- 1 -第2章 详细设计- 2 - 2.1菜单操作模块- 2 - 2.2将题目装入内存模块- 4- 2.3开始答题模块- 5 - 2.4添加试题模块- 9 -第3章 调试分

2、析- 13 -第4章 使用说明- 14 -附 录(程序清单)- 17 -第1章 概要设计1.1题目的内容与要求内容:设计并实现一个单项选择题标准化考试系统。该系统可以完成试题录入、试题抽取、自动判卷等功能。要求:(1) 用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)(2) 试题录入:可随时增加试题到试题库中(3) 试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4) 答题:用户可实现输入自己的答案(5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。1.2总体结构 本程序主要分为四个模块(功能模块图见下图):(1)模块一:菜单操作模块该模块实现程序

3、的菜单操作。2)模块二:将题目装入内存模块函数开辟内存空间将试题文件中题目装入内存中。(3)模块三:开始答题模块函数会让用户输入要答的题目数,在屏幕上输出题干和选项并让用户输入答案。判断用户输入答案是否正确。4)模块四:添加试题模块菜单操作模块将题目装入内存模块开始答题模块添加试题模块单项选择题标准化考试系统 打开储存试题的文件进行试题信息输入。 图1.1 功能模块图第2章 详细设计2.1菜单操作模块:控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。开始 Systcm(“cls”); n=1exe1( );break;9 n=2 n=3 ex

4、e2( );break;printf(“goodbycln”);1NNYYNY 1 n!=3 结 束YN输入错误,请重新输:入:图2.1 该模块实现程序的菜单操作。实现算法如下:在屏幕上输出菜单选项。接受用户输入。2.2.将题目装入内存模块:将题目装入内存模块函数开辟内存空间将试题文件中题目装入内存中 Side By Side Fclose(fp); 结 束 !feof(fp)(fp=fopen(“test.txt,Printf(“文件打开失败 FILE”fp”;NYYN开始流程如图2.2所示 图.函数开辟内存空间将试题文件中题目装入内存中。实现算法如下:遍历文件判断回车符个数(计算题目数)。

5、根据提供参数判断是否将当前题目装入内存。开辟内存空间,将题目信息装入内存。关闭文件返回题目总数。2.3开始答题模块:开始答题模块函数会让用户输入要答的题目数,在屏幕上输出题干和选项并让用户输入答案。判断用户输入答案是否正确。流程图如图2.3 Vold main( )0n|ntmPrintf(“答题数应小于总数. i=02NY开始 ets( m )M=rand( );Touppor(ans0)= Printf(“恭喜你答对了. I+ P1=head;Head=p1-next;P1=NULL!(0m&mt.Printf(“恭喜你答错了. Printf(“*”); i=1 exe1( ); i=2

6、exe2( ); main( ); NYNY图2.3函数会让用户输入要答的题目数,在屏幕上输出题干和选项并让用户输入答案。判断用户输入答案是否正确。实现算法如下:接受用户输入题目数,判断是否合法(大于0、小于总题数)。置随机数并判断随机数是否合法。调用将题目装入内存模块题目装入内存。在屏幕上输出题目,接受用户输入答案。判断用户输入的答案是否正确,输出答题结果统计。2.4添加试题模块:流程图如图2.4 Viod main( );fp=fopen(“test.txt.Printf(“文件打开失败请检查. Struct test “p1=NULL;Printf(“请输入题目:”);P-que0=“0

7、”NYYN Printf(“请输入选项A:”);P1-answer1=0YN Printf(“请输入选项B:”);P1-answer2=0YN Printf(“请输入选项C:”);P1-answer3=“0” 6Scanf(“%c”,&p1-ture);p1-ture&p1.turePrintf(“请输入答案:”);YNPrintf(“请输入选项D:”);P1-answer4=0 6Printf(“n请输入题目:”); 7NY main( ); 7 n= =1 Fputc(“n”,fp); n= =1 exe2( ); Free(fp1);0) 结 束NYNY打开储存试题的文件进行试题信息输入

8、。实现算法如下:打开文件。开辟内存空间,接受用户输入题目信息。判断用户输入是否合法。写到文件并保存。第3章 调试分析问题1:文本文件无法删除指定的一行方法:所以要用类似于进栈出栈的方法,把要删的信息过滤出去问题2:程序不能运行方法:解决办法就是不断的按F10进行调试,最终找到错误的地方。问题3:打开的文件没有关闭,最终导致一部分源代码被无意休改方法:问了成绩好的同学,最后加了个关闭文件的函数。第4章 使用说明 运行操作及结果:该程序可以进行单项选择题标准化考试的系统,实现输入不同的指令数字实现不同的功能;实现选择答题增加题目以及直接退出系统。单项选择题标准化考试系统 。请输入你要的操作:1请输

9、入你要的操作:2 图为进行单项选择题标准化考试系统设计的情形使用时根据提示选择想要的查找方式。参考文献:1 张长海.C语言程设计M.北京:高等教育出版社,20062 谭浩强 C程序设计解题与上机指导(第三版) 北京 清华大学出版社 20093 范辉 等编著Visual C+6.0程序设计简明教程 高等教育出版社4 严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版。5 胡学钢等数据结构算法设计指导北京:清华大学出版社,1999年 第1版。附 录(程序清单)#include #include #define LEN sizeof(struct test)struct te

10、stchar que81;char answer181;char answer281;char answer381;char answer481;char ture;struct test *next;struct test *head;/全局变量储存第一个结构体的指针int zts(int m)/将第m道题装入内存,输入-1时将返回总题数FILE *fp;struct test *p1=NULL;char ch,ch15;int i,n=0,wz,py;if(fp=fopen(c:test.txt,r)=NULL)/只读方式打开文件printf(文件打开失败请检查C盘下的test.txt文件

11、。n);exit(0);dopy=1;ch=fgetc(fp);for(i=0;ch!=n&ch!=-1;i+)/循环判断回车符个数py+;ch=fgetc(fp);n+; /储存行数的变量if(n=m)/如果当前行数与传入参数相等if(p1=NULL)/判断是否是第一次开辟内存空间p1=(struct test *)malloc(LEN);head=p1;p1-next=NULL;elsep1-next=p1;p1=(struct test *)malloc(LEN);p1-next=NULL;wz=ftell(fp);/记录指针当前位置fseek(fp,(wz-py-1),0);/调整指针

12、位置到行首fscanf(fp,%s%s%s%s%s%s,&p1-que,&p1-answer1,&p1-answer2,&p1-answer3,&p1-answer4,&ch1);fseek(fp,wz+1,0);/调整指针位置到行末p1-ture=ch10;break;/将数据装入内存后跳出循环while(!feof(fp);/文件结束跳出循环 fclose(fp);return n;/返回题目总数nvoid exe1()void main();void exe2();int n,m=0,tm,i,t=0,f=0;char ans2;struct test *p1;system(cls);p

13、rintf(请输入要答题数:);scanf(%d,&n);tm=zts(-1);if(0n|ntm)printf(答题数应小于总数!);exe1();for(i=0;in;i+)/n为用户要答题数dom=rand();/置随机数while(!(0m&mque,p1-answer1,p1-answer2,p1-answer3,p1-answer4);scanf(%s,&ans);if(toupper(ans0)=p1-ture)/判断用户输入答案是否正确printf(恭喜你答对了!nn);t+;/回答正确统计elseprintf(对不起,你答错了。n正确答案是:%cnn,p1-ture);f+;

14、/回答错误统计p1=head;dohead=p1-next;free(p1);p1=head;while(p1!=NULL);/释放结构体占用内存printf(*n);printf(n已完成测试!n共做%d道题:%d错误,%d正确。n正确率:%5.2f%nn,n,f,t,(float)t/n*100);printf(*n);printf(nn1.继续答题;2.添加题目;3.返回主菜单;n请选择:);i=0;scanf(%d,&i);if(i=1)exe1();/继续答题elseif(i=2)exe2();/添加题目elsemain();/返回主菜单void exe2()/实现用户自主输入题目v

15、oid main();system(cls);int n;FILE *fp;if(fp=fopen(c:test.txt,a)=NULL)printf(文件打开失败请检查C盘下的test.txt文件。n);exit(0);struct test *p1=NULL;p1=(struct test *)malloc(LEN);/开辟内存空间doprintf(请输入题目:);scanf(%s,&p1-que);while(p1-que0=0);doprintf(请输入选项A:);scanf(%s,&p1-answer1);while(p1-answer1=0);doprintf(请输入选项B:);s

16、canf(%s,&p1-answer2);while(p1-answer2=0);doprintf(请输入选项C:);scanf(%s,&p1-answer3);while(p1-answer3=0);doprintf(请输入选项D:);scanf(%s,&p1-answer4);while(p1-answer4=0);printf(请输入答案:);doscanf(%c,&p1-ture);p1-ture=toupper(p1-ture);while(p1-ture!=A&p1-ture!=B&p1-ture!=C&p1-ture!=D);printf(n确认输入题目?n1.是。 2.否。n)

17、;scanf(%d,&n);if(n=1)fputc(n,fp);fputs(p1-que,fp);fputc( ,fp);fputs(A.,fp);fputs(p1-answer1,fp);fputc( ,fp);fputs(B.,fp);fputs(p1-answer2,fp);fputc( ,fp);fputs(C.,fp);fputs(p1-answer3,fp);fputc( ,fp);fputs(D.,fp);fputs(p1-answer4,fp);fputc( ,fp);fputc(p1-ture,fp);fclose(fp);printf(保存成功!);system(cls)

18、;free(p1);printf(是否继续添加?n1.继续添加 2.返回主菜单n);scanf(%d,&n);if(n=1)exe2();elsemain();elsefree(p1);exe2();void main()int n,temp=1;while(1)system(cls);printf(*n);printf(欢迎使用单项选择题标准化考试系统n);printf(*n);printf(t1.开始答题。n);printf(t2.添加试题。n);printf(t3.退出系统。n);printf(n请选择:);scanf(%d,&n); switch(n)case 1:exe1();tem

19、p=0;break;case 2:exe2();temp=0;break;case 3:printf(n-,goodbye!n);default:printf(输入错误,请重新输入:);scanf(%d,&n);break;课程设计总结: 经过这整整5天的C课程设计的训练,我学到了很多,最主要的一点是怎样去运用自己学过的知识,怎样去找到你所需要的资料,并在短时间把它运用到具体的实践中,运用到你所需要的方面。这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。 在做这个C课程设计的时候,我原先也是学的不怎么好,什么是结构体数据,什么是定义类型,怎样在一个main函数中调用别的定义函数,等等,可以说是忘得差不多了。然而,在这门课程设计中,这些方面却是特别重要的,可以说,掌握了这个,你就完全可以完成自己的任务。这就要求我们要自己去学,自己去探索。当然,看书、问同学是必不可少的,还有,身边有非常丰富的网络资源给我们好好利用,百度就是个很不错的地方。这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力。指导教师评语:指导教师(签字): 年 月 日课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号