《C程序设计》课程设计报告.doc
《《C程序设计》课程设计报告.doc》由会员分享,可在线阅读,更多相关《《C程序设计》课程设计报告.doc(15页珍藏版)》请在沃文网上搜索。
1、摘 要本次课题是设计设计一个单项选择题标准化考试系统,采用C语言编译,其中包含了菜单选择模块,试题操作模块等,各个功能模块都用函数来实现,通过模块整合成一个完整的系统。程序实现了用文件保存试题库;试题录入;试题抽取;答题;自动判卷的功能,同时实现一些新功能。报告中包含了设计目的、设计任务、程序设计流程图、模块功能说明、开发过程与调试以及源程序。关键字:单项选择题考试系统;文件保存;结构体;指针;循环结构。目 录摘 要1关键字1设计目的1设计任务1总体设计1详细设计2开发过程与调试4总结与体会41. 设计目的(1) 进一步巩固和复习C语言所学基本课程;(2) 培养结构化程序、模块化程序设计的方法
2、和能力;(3) 提高分析问题、解决问题以及综合利用C语言进行程序设计的能力;(4) 熟练掌握应用Microsoft Visual C+ 6.0的方法;(5) 学会软件开发的基本方法以及C语言程序的编译、调试方法;(6) 熟练掌握C语言中关于文件的建立过程和程序,掌握文件的保存、录入以及使用文本菜单界面的程序。2. 设计任务(1)用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案);(2)试题录入:可随时增加试题到试题库中;(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入);(4)答题:用户可实现输入自己的答案;(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并
3、给出成绩。3. 总体设计程序中用到的函数及功能:(1)主函数main()是C程序的主函数,也是入口函数,所有C程序的执行都从main开始至main结束。在主函数中定义一个变量choice,通过判断choice的值,来决定是添加选择题、回答选择题,还是退出,进而实现向列表中插入试题、抽取试题、回答试题、系统自动判卷的函数功能;(2)MenuChoice( )是选择菜单函数,在程序执行时出现在菜单界面上,程序中定义了一个变量choice,让用户选择所要进行的操作;(3)question *InsertList( )功能是向列表中插入试题;(4)question *ListRandSeek( )功能
4、是随机选取一个读题目的位置;(5)GetQuestion(struct question *src)功能是获取问题,选项,以及正确答案;(6)SaveFile(const struct question *ed, FILE *saf) 功能是将列表中的试题保存在文件中;(7)question *LoadFile(struct question *td, long *count, FILE *laf)功能是从文件中读取题目,将题目添加到列表中;(8)ExplainQuestion(struct question *que, int n, int len)功能是回答问题,并统计答对题目数,显示得分
5、。Main函数流程图:开 始打开文件从文件中读取题目,并添加至列表关闭文件显示系统菜单响应用户选择保存试题在文件中打开文件关闭文件结 束是否退出NY是否答题Y输入答题数量回答问题,并统计答对题目数,显示得分N输入问题,选项,以及正确答案4.详细设计(1)主函数mainmain()函数是C程序的主函数,也是入口函数,所有C程序的执行都从main开始至main结束。主函数使用了while语句和if语句,在主函数中定义一个变量choice,通过判断choice的值,来决定是添加选择题、回答选择题,还是退出,进而实现向列表中插入试题、抽取试题、回答试题、系统自动判卷的函数功能。(2)MenuChoic
6、e( )MenuChoice( )是选择菜单函数,在程序执行时出现在菜单界面上,程序中定义了一个变量choice,让用户选择所要进行的操作。用户每执行完一个模块,菜单界面中便会出现一个菜单来让用户决定下一步操作。(3)question *InsertList( )该函数功能是向列表中插入试题。(4)question *ListRandSeek( ) 该函数功能是随机选取一个读题目的位置,seek是找到指定的位置,len代表要读取的答案数,max代表列表的长度。 (5)GetQuestion(struct question *src)该函数功能是获取问题,选项,以及正确答案,src是指向结构体q
7、uestion的指针。(6)SaveFile(const struct question *ed, FILE *saf) 该函数功能是将列表中的试题保存在文件中,以写的方式打开saf文件,保存试题后,关闭文件,退出函数。(7)question *LoadFile(struct question *td, long *count, FILE *laf)该函数功能是从文件中读取题目,将题目添加到列表中,td指向读取的题目,count用来计数读取的题目数量,laf是文件,函数在用户选择添加题目时被调用。(8)ExplainQuestion(struct question *que, int n, i
8、nt len)该函数功能是回答问题,并统计答对题目数,显示得分,que是指向结构体question的指针,len是题目的长度,在用户回答完问题后该函数被调用显示用户成绩。4. 开发过程与调试(1)首先将程序框架理清楚,写出需要的结构体和函数,再写出函数体,将函数功能实现,最后写出主函数,通过在主函数中调用,将各函数联系起来。程序完成后,按BuildExecute键来编译并且执行程序,出现错误和警告,双击错误提示,可显示有错误的那行,按照错误出现的顺序,从上到下依次修改,直到程序没错误并且可执行为止。(2)遇到的问题及解决措施:1. Main函数前返回值是int(整型),而在函数体内最后没有返回
9、值,系统报错,在main前面加上 void,或者在函数体内最后加上return 0;即可;2. 输入的选择题中不能有空格,将输入scanf改成gets也不行,还没解决问题;3. 函数体中用到了随机选题的操作,而头文件中没有写#include,导致随机抽取的题目错误,不是文件中保存的题目,加上#include,即可;4.随机抽取题目时容易抽到重复的题,用一个flag做标记,通过限定flag的值来确保抽到的题目不重复。5. 总结与体会程序中用到了结构体来定义选择题的题目、选项和正确答案,用while和if循环来选择菜单,用指针来查找和插入,还用到了for循环,程序中用到了文件的保存、打开和关闭等相
10、关知识。C语言设计中,上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。检查程序和编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方。综合试验设计使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便。 参考文献1 Gary J.Bronson.标准C语言基础教程(第四版),北京,电子工业出版社,2007.2 谭浩强、张基温、唐永炎C语言程序设计教程高等教育出版社,2007.3 谭浩强C程序设计
11、题解与上机指导(第3版),清华大学出版社,2005. 4 张基温 C语言程序设计教程 北京,高等教育出版社.5 王家志 C语言程序设计技巧与应用 上海,上海外文图书公司软件出版部.致 谢 经过几周的思考与设计,也问了很多的同学、老师,查阅了好多的资料,终于将编程与设计报告完成,这其中,不仅有我的辛苦与汗水,也有好多人的帮助。 首先要感谢我的指导老师杨立林老师,给我一个这样的锻炼和学习的机会,让我提升了自己,也要感谢他对我们的指导和帮助,并为我们提供了良好的科研环境,让我学到了知识,掌握了科研的方法,也获得了实践锻炼的机会。他严谨的治学态度将使我终身受益。他对程序设计的研究与热爱让我对这个学科更
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 程序设计 课程设计 报告