资源描述
单项选择题标准化考试系统程序设计基础课程设计报告专 业: 电子信息工程 班 级: 2007级 1 班 学 号: 2007082027 姓 名: 陈 皓 指导教师: 常 耀 辉 二OO八 年 六月三十日目 录1.课程设计目的12.课程设计题目描述和要求12.1课程题目12.2课程要求13.课程设计报告内容13.1算法描述13.2 源程序24.流程图5课程设计总结:66书目71 课程设计目的 练习自己的动手能力,在学习理论的同时增强自己的编程能力,使理论与实践相结合,在学习书本的同时扩展自己的课外知识.2 课程设计题目描述和要求2.1课程题目 单项选择题标准化考试系统2.2课程要求(一)功能要求:(1)用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。(二)其它要求:(1) 只能使用C/C+语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好)(3) 学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档.3 课程设计报告内容3.1算法描述 定义题目数组,选向数组,输入题目的及选向并给定正确答案。输入所要答的题目数,然后进行答题。输入的答案与标准答案进行比较,如果一致,则正确,否则错误。最后根据题目数及答对题目数进行输出得分。 3.2 源程序#include #include #include dos.husing namespace std;struct question char ask200;/*选择题题目*/ char answer480;/*选择题选项*/ int right;/*正确答案*/ struct question *next; ; /函数声明int MenuChoice(void); /选择菜单struct question *charu_timu(struct question *fst, const struct question *ad); /向列表中插入试题函数struct question *da_an_weizhi(struct question *seek, long len, long max); /确定一个读取答案的位置的函数void GetQuestion(struct question *src); /获取问题,选项,以及正确答案函数void bao_cun(const struct question *ed, FILE *saf); /将列表中的试题保存在文件中的函数struct question *LoadFile(struct question *td, FILE *laf); /从文件中读取题目,将题目添加到列表中的函数int GetAnswer(void); /输入选择题的答案void huida_Question(const struct question *que, int n); /回答问题函数int main() struct question *start = NULL, temp; long choice, line = 0, c; FILE *fp = fopen(chenhao.dat, a+); while (choice = MenuChoice() != 3) if (choice = 1) GetQuestion(&temp); start = charu_timu(start, &temp); +line;/*统计列表的长度*/ system(cls); else if (choice = 2) c =8; while (c 6 | c line) coutc; huida_Question(start, line); return 0; /*da_an_weizhi函数确定一个读取答案的位置,len代表要读取的答案数,max代表列表的长度*/ struct question *da_an_weizhi(struct question *seek, long len, long max) int i; while (i-) seek = seek-next;/找到指定的位置 return seek; /向列表中插入试题 struct question *charu_timu(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) int i = 0; cout请输入选择题题目:src-ask;while (i 4) cout请输入选项char(i + A)的答案:src-answeri+; src-right = GetAnswer(); /*从文件中读取题目,将题目添加到列表中*/struct question *LoadFile(struct question *td, FILE *laf) struct question temp; while (fread(&temp, 1, sizeof(struct question), laf) td = charu_timu(td, &temp); return td; /*将列表中的试题保存在文件中*/ void bao_cun(const struct question *ed, FILE *saf) fclose(saf); if (saf = fopen(chenhao.dat, w) = NULL)/以写的方式重新打开文件 return ; while (ed) fwrite(ed, 1, sizeof(struct question), saf); ed = ed-next; /得到选择题的答案(不保证是正确的答案) int GetAnswer(void) char c=0 ;/必须进行初始化,避免出现偶然性的错误 fflush(stdin); while (c D) /确保输入的答案是A, B, C, D中的一个 cout请输入正确的答案: c; return c; /回答问题,并统计答对题目数,显示得分void huida_Question(const struct question *que, int n) int i = 0, t = n; char result1001, *p = result; for (i = 0; n-; que = que-next) coutaskendl; coutanswer0endl;coutanswer1endl;coutanswer2endl; coutanswer3right) = (*(p + 1) = GetAnswer() +i; *p = 0; cout您回答了t道题, 答对i道题目, 得分: (float)i / t * 100.00endl; /选择菜单int MenuChoice(void) int value; cout *endl;cout * *endl;cout * 1 :添加选择题 *endl;cout * 2 :回答选择题 *endl;cout * 3 :退出 *endl;cout * *endl;cout *value;return value; 4流程图主菜单3. 退出2回答选择题1添加选择题 1. 输入题目2. 输入4个备选答案3. 输入标准答案输入所要选择的答案系统自动储存所输入的题目系统自动判卷后输出成绩返回主菜单5程设计总结:经过编写程序,检验了我们的编程的水平,从这次编程中,我发现我才学到了一点点的知识,有好多的东西都不够熟练,还需要好好的努力学习,在编写这个程序时,出现了好多的问题,经过别人的帮助和自己的认真的调试才完成,这个程序还有好多的不足,还不够美观。有的地方还有漏洞。这个程序我使用的是链表,使我从中掌握了链表的使用方法,积累了经验,这些经验在以后的学习生活中会有很大的帮助的。并且,还熟悉了结构体的用法以及发现了部分用结构体编写程序时会出现的问题。对C+也有了更深一步的了解,为以后学其他计算机语言打下了好的基础。与此同时,还发现了自己编程时的许多不足,如不够严谨、不仔细等问题。我将在以后的学习中逐步改善,争取四年大学能够把所学的计算机语言融会贯通,学精学好,请老师和同学多多指正。6 参考书目1 谭浩强,C+程序设计,北京,清华大学出版社.14
展开阅读全文