版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、沈阳航空航天大学沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称:c 语言课程设计语言课程设计 课程设计题目:单项选择题标准化考试系统设 计 院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 完成日期: 2014年03月1日 沈阳航空航天大学课程设计报告 目目 录录 第第 1 章章 概要设计概要设计.- 1 - 1.1 题目的内容与要求题目的内容与要求.- 1 - 内容:内容:设计并实现一个单项选择题标准化考试系统。该系统可以完成试题录入、设计并实现一个单项选择题标准化考试系统。该系统可以完成试题录入、 试题抽取、自动判卷等功能。试
2、题抽取、自动判卷等功能。.- 1 - 1.2 总体结构.- 1 - 第第 2 章章 详细设计详细设计.- 2 - 2.1 菜单操作模块.- 2 - 2.2 将题目装入内存模块.- 4- 2.3 开始答题模块.- 5 - 2.4 添加试题模块.- 9 - 第第 3 章章 调试分析调试分析.- 13 - 第第 4 章章 使用说明使用说明.- 14 - 附附 录(程序清单)录(程序清单).- 17 - 沈阳航空航天大学课程设计报告 第 1 章 概要设计 - 1 - 第 1 章 概要设计 1.1 题目的内容与要求题目的内容与要求 内容:设计并实现一个单项选择题标准化考试系统。该系统可以完成试题录入、
3、试题抽取、自动判卷等功能。 要求: (1) 用文件保存试题库。(每个试题包括题干、4 个备选答案、标准答 案) (2) 试题录入:可随时增加试题到试题库中 (3) 试题抽取:每次从试题库中可以随机抽出 n 道题(n 由键盘输入) (4) 答题:用户可实现输入自己的答案 (5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给 出成绩。 1.2 总体结构总体结构 本程序主要分为四个模块(功能模块图见下图功能模块图见下图):(1)模块一:菜单操作模块 该模块实现程序的菜单操作。2)模块二:将题目装入内存模块函数开辟内存空间将试题文件 中题目装入内存中。(3)模块三:开始答题模块函数会让用户
4、输入要答的题目数,在屏幕上输 出题干和选项并让用户输入答案。判断用户输入答案是否正确。4)模块四:添加试题模块 打开储存试题的文件进行试题信息输入。 菜单操作模块 将题目装入内存 模块 开始答题模块 添加试题模块 单项选择题标准化考试系统 图图 1.1 功能模块图功能模块图 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 2 - 第 2 章 详细设计 2.1 菜单操作模块:菜单操作模块: 控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块, 实现各项功能,流程如图 2.1 所示。 systcm(“cls”); n=1 exe1( );break; 9 n=2 n=3 ex
5、e2( );break; printf(“goodbycln” ); 1 1 n n y y n y 开始 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 3 - 图图 2.1 该模块实现程序的菜单操作。 实现算法如下: 在屏幕上输出菜单选项。 1 接受用户输入。 2 1 n!=3n!=3 结结 束束 y n 输入错误,请重新输: 入: 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 4 - 2.2. .将题目装入内存模块:将题目装入内存模块: 将题目装入内存模块函数开辟内存空间将试题文件中题目装入内存中 流程如图 2.2 所示 图图. side by side fclose(
6、fp); 结结 束束 !feof(fp) (fp=fopen(“test.txt , printf(“文件打开失文件打开失 败败 file”fp”; n y y n 开始 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 5 - 函数开辟内存空间将试题文件中题目装入内存中。 实现算法如下: 遍历文件判断回车符个数(计算题目数) 。 1 根据提供参数判断是否将当前题目装入内存。 2 开辟内存空间,将题目信息装入内存。 3 关闭文件返回题目总数。 4 2.3 开始答题模块:开始答题模块: 开始答题模块函数会让用户输入要答的题目数,在屏幕上输出题干和选项并让用户输入答案。 判断用户输入答案是否
7、正确。 流程图如图 2.3 vold main( ) 0n|ntm printf(“答题数应小于总数. i=0 2 n y 开始 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 6 - ets( m ) m=rand( ); touppor(ans0)= printf(“恭喜你答对了. i+ p1=head; head=p1-next; p1=null !(0m i=1 exe1( ); i=2 exe2( ); main( ); n y n y 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 8 - 判断用户输入的答案是否正确,输出答题结果统计。 5 2.42.4 添加试题模
8、块:添加试题模块: 流程图如图 2.4 viod main( ); fp=fopen(“test.txt. . printf(“文件打开失败请检查. struct test “p1=null; printf(“请输入题目:” ) ; p-que0=“0” n y y n 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 9 - printf(“请输入选项 a:” ) ; p1- answer1=0 y n printf(“请输入选项 b:” ) ; p1- answer2=0 y n printf(“请输入选项 c:” ) ; p1- answer3=“0” 6 沈阳航空航天大学课程设计
9、报告 第 2 章 详细设计 - 10 - scanf(“%c”, p1- ture 7 n= =1 fputc(“n”,fp); n= =1 exe2( ); free(fp1); 0) 结结 束束 n y n y 沈阳航空航天大学课程设计报告 第 2 章 详细设计 - 12 - 开辟内存空间,接受用户输入题目信息。 2 判断用户输入是否合法。 3 写到文件并保存。 4 沈阳航空航天大学课程设计报告 第 3 章 调试分析 - 13 - 第第 3 章章 调试分析调试分析 问题问题 1:文本文件无法删除指定的一行 方法:方法:所以要用类似于进栈出栈的方法,把要删的信息过滤出去 问题问题 2:程序不
10、能运行 方法:方法:解决办法就是不断的按 f10 进行调试,最终找到错误的地方。 问题问题 3:打开的文件没有关闭,最终导致一部分源代码被无意休改 方法:方法:问了成绩好的同学,最后加了个关闭文件的函数。 沈阳航空航天大学课程设计报告 第 4 章 使用说明 - 14 - 第第 4 章章 使用说明使用说明 运行操作及结果:该程序可以进行单项选择题标准化考试的系统,实现输入 不同的指令数字实现不同的功能;实现选择答题增加题目以及直接退出系统。 单项选择题标准化考试系统 。 请输入你要的操作:1 请输入你要的操作:2 沈阳航空航天大学课程设计报告 第 4 章 使用说明 - 15 - 图为进行单项选择
11、题标准化考试系统设计的情形图为进行单项选择题标准化考试系统设计的情形 使用时根据提示选择想要的查找方式。 沈阳航空航天大学课程设计报告 参考文献 - 16 - 参考文献:参考文献: 1 张长海.c 语言程设计m.北京:高等教育出版社,2006 2 谭浩强 c 程序设计解题与上机指导(第三版) 北京 清华大学出版社 2009 3 范辉 等编著visual c+6.0 程序设计简明教程 高等教育出版社 4 严蔚敏等 数据结构(c 语言版) 北京:清华大学出版社,1997 年 4 月 第 1 版。 5 胡学钢等数据结构算法设计指导北京:清华大学出版社,1999 年 第 1 版。 沈阳航空航天大学课程
12、设计报告 课程设计总结 - 17 - 附附 录(程序清单)录(程序清单) #include #include #define len sizeof(struct test) struct test char 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 t
13、est *p1=null; char ch,ch15; int i,n=0,wz,py; if(fp=fopen(c:test.txt,r)=null)/只读方式打开文件 printf(文件打开失败请检查 c 盘下的 test.txt 文件。n); exit(0); do py=1; ch=fgetc(fp); for(i=0;ch!=ni+)/循环判断回车符个数 沈阳航空航天大学课程设计报告 课程设计总结 - 18 - py+; ch=fgetc(fp); n+; /储存行数的变量 if(n=m)/如果当前行数与传入参数相等 if(p1=null)/判断是否是第一次开辟内存空间 p1=(st
14、ruct test *)malloc(len); head=p1; p1-next=null; else p1-next=p1; p1=(struct test *)malloc(len); p1-next=null; wz=ftell(fp);/记录指针当前位置 fseek(fp,(wz-py-1),0);/调整指针位置到行首 fscanf(fp,%s%s%s%s%s%s, fseek(fp,wz+1,0);/调整指针位置到行末 p1-ture=ch10; break;/将数据装入内存后跳出循环 while(!feof(fp);/文件结束跳出循环 fclose(fp); return n;/
15、返回题目总数 n void exe1() 沈阳航空航天大学课程设计报告 课程设计总结 - 19 - void main(); void exe2(); int n,m=0,tm,i,t=0,f=0; char ans2; struct test *p1; system(cls); printf(请输入要答题数:); scanf(%d, tm=zts(-1); if(0n|ntm) printf(答题数应小于总数!); exe1(); for(i=0;in;i+)/n 为用户要答题数 do m=rand();/置随机数 while(!(0m scanf(%s, if(toupper(ans0)=
16、p1-ture)/判断用户输入答案是否正确 printf(恭喜你答对了!nn); t+;/回答正确统计 else 沈阳航空航天大学课程设计报告 课程设计总结 - 20 - printf(对不起,你答错了。 。 。n 正确答案是:%cnn,p1-ture); f+;/回答错误统计 p1=head; do head=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);
17、printf(*n); printf(nn1.继续答题;2.添加题目;3.返回主菜单;n 请选择:); i=0; scanf(%d, if(i=1) exe1();/继续答题 else if(i=2) exe2();/添加题目 else main();/返回主菜单 void exe2()/实现用户自主输入题目 void main(); system(cls); int n; file *fp; if(fp=fopen(c:test.txt,a)=null) 沈阳航空航天大学课程设计报告 课程设计总结 - 21 - printf(文件打开失败请检查 c 盘下的 test.txt 文件。n); e
18、xit(0); struct test *p1=null; p1=(struct test *)malloc(len);/开辟内存空间 do printf(请输入题目:); scanf(%s, while(p1-que0=0); do printf(请输入选项 a:); scanf(%s, while(p1-answer1=0); do printf(请输入选项 b:); scanf(%s, while(p1-answer2=0); do printf(请输入选项 c:); scanf(%s, while(p1-answer3=0); do printf(请输入选项 d:); scanf(%s
19、, while(p1-answer4=0); printf(请输入答案:); do 沈阳航空航天大学课程设计报告 课程设计总结 - 22 - scanf(%c, p1-ture=toupper(p1-ture); while(p1-ture!=a printf(n 确认输入题目?n1.是。 2.否。n); scanf(%d, 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);
20、 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); free(p1); printf(是否继续添加?n1.继续添加 2.返回主菜单n); scanf(%d, if(n=1) exe2(); else 沈阳航空航天大学课程设计报告 课程设计总结 - 23 - main(); else free(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)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度电梯维护保养服务合同9篇
- 2024年度产品生产加工合同的生产数量与质量标准2篇
- 2024中国移动各省招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国电信湖北财务共享服务中心招聘3人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国电信四川公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度救灾物资存放搭棚施工合同
- 2024中国人保财险春季招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度物联网应用开发与合作协议3篇
- 2024年度内容创作与传播合作协议
- 2024“才聚齐鲁成就未来”齐鲁(山东)产业投资限公司招聘2人易考易错模拟试题(共500题)试卷后附参考答案
- 日文简历模板履歴书(JIS规格)
- 储能项目竣工报告
- 审计询证函模板
- 初中数学“问题串”教学研究优秀获奖科研论文
- 小学语文人教二年级上册第三单元-《猜猜我有多爱你》整本书阅读教学设计表胡唯意
- WORD版本刻度尺-A4纸打印可用
- 雪球结构定价与风险深度分析
- 中国惯性导航行业概览
- 上海市各区2017年中考语文二模试题卷分类汇编记叙文阅读专题
- 沪教版初中化学九年级上册 4.1 常见的化学反应燃烧 教案
- 硫化氢二氧化碳分离技术对比
评论
0/150
提交评论