《C程序设计》课程设计报告格式_第1页
《C程序设计》课程设计报告格式_第2页
《C程序设计》课程设计报告格式_第3页
《C程序设计》课程设计报告格式_第4页
《C程序设计》课程设计报告格式_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

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

文档简介

1、南京晓庄学院信息技术学院C语言程序设计课程设计报告题 目: 单项选择题标准化考试系统 专 业: 计算机科学与技术 班 级: 2008级 2 班 学 号: 姓 名: 黄 霖 指导教师: 杨 立 林 成 绩: 二00九年 二月 十六日摘 要本次课题是设计设计一个单项选择题标准化考试系统,采用C语言编译,其中包含了菜单选择模块,试题操作模块等,各个功能模块都用函数来实现,通过模块整合成一个完整的系统。程序实现了用文件保存试题库;试题录入;试题抽取;答题;自动判卷的功能,同时实现一些新功能。报告中包含了设计目的、设计任务、程序设计流程图、模块功能说明、开发过程与调试以及源程序。关键字:单项选择题考试系

2、统;文件保存;结构体;指针;循环结构。目 录摘 要1关键字1设计目的1设计任务1总体设计1详细设计2开发过程与调试4总结与体会41. 设计目的(1) 进一步巩固和复习C语言所学基本课程;(2) 培养结构化程序、模块化程序设计的方法和能力;(3) 提高分析问题、解决问题以及综合利用C语言进行程序设计的能力;(4) 熟练掌握应用Microsoft Visual C+ 6.0的方法;(5) 学会软件开发的基本方法以及C语言程序的编译、调试方法;(6) 熟练掌握C语言中关于文件的建立过程和程序,掌握文件的保存、录入以及使用文本菜单界面的程序。2. 设计任务(1)用文件保存试题库。(每个试题包括题干、4

3、个备选答案、标准答案);(2)试题录入:可随时增加试题到试题库中;(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入);(4)答题:用户可实现输入自己的答案;(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。3. 总体设计程序中用到的函数及功能:(1)主函数main()是C程序的主函数,也是入口函数,所有C程序的执行都从main开始至main结束。在主函数中定义一个变量choice,通过判断choice的值,来决定是添加选择题、回答选择题,还是退出,进而实现向列表中插入试题、抽取试题、回答试题、系统自动判卷的函数功能;(2)MenuChoice( )是选择菜单函

4、数,在程序执行时出现在菜单界面上,程序中定义了一个变量choice,让用户选择所要进行的操作;(3)question *InsertList( )功能是向列表中插入试题;(4)question *ListRandSeek( )功能是随机选取一个读题目的位置;(5)GetQuestion(struct question *src)功能是获取问题,选项,以及正确答案;(6)SaveFile(const struct question *ed, FILE *saf) 功能是将列表中的试题保存在文件中;(7)question *LoadFile(struct question *td, long *c

5、ount, FILE *laf)功能是从文件中读取题目,将题目添加到列表中;(8)ExplainQuestion(struct question *que, int n, int len)功能是回答问题,并统计答对题目数,显示得分。Main函数流程图:开 始打开文件从文件中读取题目,并添加至列表关闭文件显示系统菜单响应用户选择保存试题在文件中打开文件关闭文件结 束是否退出NY是否答题Y输入答题数量回答问题,并统计答对题目数,显示得分N输入问题,选项,以及正确答案4.详细设计(1)主函数mainmain()函数是C程序的主函数,也是入口函数,所有C程序的执行都从main开始至main结束。主函数

6、使用了while语句和if语句,在主函数中定义一个变量choice,通过判断choice的值,来决定是添加选择题、回答选择题,还是退出,进而实现向列表中插入试题、抽取试题、回答试题、系统自动判卷的函数功能。(2)MenuChoice( )MenuChoice( )是选择菜单函数,在程序执行时出现在菜单界面上,程序中定义了一个变量choice,让用户选择所要进行的操作。用户每执行完一个模块,菜单界面中便会出现一个菜单来让用户决定下一步操作。(3)question *InsertList( )该函数功能是向列表中插入试题。(4)question *ListRandSeek( ) 该函数功能是随机选

7、取一个读题目的位置,seek是找到指定的位置,len代表要读取的答案数,max代表列表的长度。 (5)GetQuestion(struct question *src)该函数功能是获取问题,选项,以及正确答案,src是指向结构体question的指针。(6)SaveFile(const struct question *ed, FILE *saf) 该函数功能是将列表中的试题保存在文件中,以写的方式打开saf文件,保存试题后,关闭文件,退出函数。(7)question *LoadFile(struct question *td, long *count, FILE *laf)该函数功能是从文件

8、中读取题目,将题目添加到列表中,td指向读取的题目,count用来计数读取的题目数量,laf是文件,函数在用户选择添加题目时被调用。(8)ExplainQuestion(struct question *que, int n, int len)该函数功能是回答问题,并统计答对题目数,显示得分,que是指向结构体question的指针,len是题目的长度,在用户回答完问题后该函数被调用显示用户成绩。4. 开发过程与调试(1)首先将程序框架理清楚,写出需要的结构体和函数,再写出函数体,将函数功能实现,最后写出主函数,通过在主函数中调用,将各函数联系起来。程序完成后,按BuildExecute键来编

9、译并且执行程序,出现错误和警告,双击错误提示,可显示有错误的那行,按照错误出现的顺序,从上到下依次修改,直到程序没错误并且可执行为止。(2)遇到的问题及解决措施:1. Main函数前返回值是int(整型),而在函数体内最后没有返回值,系统报错,在main前面加上 void,或者在函数体内最后加上return 0;即可;2. 输入的选择题中不能有空格,将输入scanf改成gets也不行,还没解决问题;3. 函数体中用到了随机选题的操作,而头文件中没有写#include,导致随机抽取的题目错误,不是文件中保存的题目,加上#include,即可;4.随机抽取题目时容易抽到重复的题,用一个flag做标

10、记,通过限定flag的值来确保抽到的题目不重复。5. 总结与体会程序中用到了结构体来定义选择题的题目、选项和正确答案,用while和if循环来选择菜单,用指针来查找和插入,还用到了for循环,程序中用到了文件的保存、打开和关闭等相关知识。C语言设计中,上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。检查程序和编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方。综合试验设计使我的知识形成了一个完整的框架结构,而不再是零散的

11、知识个体,使我在使用时更加的方便。 参考文献1 Gary J.Bronson.标准C语言基础教程(第四版),北京,电子工业出版社,2007.2 谭浩强、张基温、唐永炎C语言程序设计教程高等教育出版社,2007.3 谭浩强C程序设计题解与上机指导(第3版),清华大学出版社,2005. 4 张基温 C语言程序设计教程 北京,高等教育出版社.5 王家志 C语言程序设计技巧与应用 上海,上海外文图书公司软件出版部.致 谢 经过几周的思考与设计,也问了很多的同学、老师,查阅了好多的资料,终于将编程与设计报告完成,这其中,不仅有我的辛苦与汗水,也有好多人的帮助。 首先要感谢我的指导老师杨立林老师,给我一个

12、这样的锻炼和学习的机会,让我提升了自己,也要感谢他对我们的指导和帮助,并为我们提供了良好的科研环境,让我学到了知识,掌握了科研的方法,也获得了实践锻炼的机会。他严谨的治学态度将使我终身受益。他对程序设计的研究与热爱让我对这个学科更有信心和决心。 其次要感谢我的专业任课老师曲波和郭小梅老师,他们教给了我计算机编程的知识,让我有编程的知识和能力,也为我将来从事计算机行业打下了基础,他们的辛勤劳动才换来了我今天的成绩,谢谢他们! 还要感谢我的父母,是他们对我无怨无悔的付出和辛苦的教育,给了我今天,给了我健康的身体和美好的品德,以及严谨的学习态度和吃苦耐劳的精神,谢谢他们! 还要感谢我的同学,尤其是室

13、友,她们不厌其烦地回答我的一个又一个问题,对我的编程提供了很大的帮助和启发,给了我面对困难以及克服困难的勇气和信心,谢谢她们! 最后,衷心感谢此刻正认真审阅本报告的老师! 源程序清单#include #include #include struct question char ask200;/*选择题题目*/ char answer480;/*选择题选项*/ int right;/*正确答案*/ struct question *next; ; int MenuChoice(void); struct question *InsertList(struct question *fst, con

14、st struct question *ad); struct question *ListRandSeek(struct question *seek, int len, int *posi); struct question *ListSeek(struct question *seek, int posi); void GetQuestion(struct question *src); void SaveFile(const struct question *ed, FILE *saf); struct question *LoadFile(struct question *td, l

15、ong *count, FILE *laf); int GetAnswer(void); void ExplainQuestion(struct question *que, int n, int len); main() struct question *start = NULL, temp; long choice, line = 0, c; FILE *fp = fopen(kstm.dat, a+); start = LoadFile(start, &line, fp); while (choice = MenuChoice() != 3) if (choice = 1) GetQue

16、stion(&temp); start = InsertList(start, &temp); +line;/*统计列表的长度*/ else if (choice = 2) c =600; while (c 500 | c line) printf(请输入要回答的问题数量: ); scanf(%d, &c); ExplainQuestion(start, c, line); SaveFile(start, fp);/*进行最后的工作*/ fclose(fp); return 0; /*ListSeek函数确定一个读取答案的位置,len代表要读取的答案数,max代表列表的长度*/ struct

17、question *ListRandSeek(struct question *seek, int len, int *posi) int i; srand(time(NULL); i = rand() % len; /*随机选取一个读题目的位置*/ *posi = i; while (i-) seek = seek-next;/*找到指定的位置*/ return seek; struct question *ListSeek(struct question *seek, int posi) while (posi) seek = seek-next; posi-; return seek;

18、/*向列表中插入试题*/ struct question *InsertList(struct question *fst, const struct question *ad) struct question *newPtr = (struct question *)malloc(sizeof(struct question); if (newPtr = NULL) exit(0); *newPtr = *ad; newPtr-next = fst; return newPtr; /*获取问题,选项,以及正确答案*/ void GetQuestion(struct question *src

19、) int i = 0; printf(请输入选择题题目:n); scanf(%s, src-ask); while (i answeri+); src-right = GetAnswer(); /*从文件中读取题目,将题目添加到列表中*/ struct question *LoadFile(struct question *td, long *count, FILE *laf) struct question temp; while (fread(&temp, 1, sizeof(struct question), laf) td = InsertList(td, &temp); *coun

20、t = *count + 1; return td; /*将列表中的试题保存在文件中*/ void SaveFile(const struct question *ed, FILE *saf) fclose(saf); if (saf = fopen(kstm.dat, w) = NULL)/*以写的方式重新打开文件*/ return ; while (ed) fwrite(ed, 1, sizeof(struct question), saf); ed = ed-next; fclose(saf); /*得到选择题的答案(不保证是正确的答案)*/ int GetAnswer(void) in

21、t c = 0;/*必须进行初始化,避免出现偶然性的错误*/ fflush(stdin); while (c D) /*确保输入的答案是A, B, C, D中的一个*/ printf(请输入正确的答案: ); scanf(%c, &c); return c; /*回答问题,并统计答对题目数,显示得分*/ void ExplainQuestion(struct question *star, int n, int len) int i = 0, j = 0, t = n, k = 0, tm, flag = 1; char result1001, *p = result; int posirecord1001; struct question *que; for (i = 0, j = 0; n-; j+) flag = 1; while(flag)/保证不抽

温馨提示

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

评论

0/150

提交评论