《2022年单项选择题实用标准化考试系统设计》由会员分享,可在线阅读,更多相关《2022年单项选择题实用标准化考试系统设计(24页珍藏版)》请在金锄头文库上搜索。
1、实用文档文案大全面向对象程序设计(C+ )课程大作业设计题目:单项选择题标准化考试系统设计院系:计算机科学与信息工程学院专业班级:学号姓名:指导教师:某老师2015 年 1 月精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 24 页实用文档文案大全目录一、 成员分工 . 1 二、需求分析 . 2 三、总体设计 . 3 四、详细设计 . 4 五、系统测试 . 10 六、总结 . 13 七、参考文献 . 14 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 24 页实用文档文案大全一
2、 成员分工我们小组成员共有三名,分别是为了能按时圆满的完成这次C+ 课程设计,我们小组进行了详细的分工,以确保设计能按时完成。经过周密的考虑和详细的调查最终确定单项选择题标准化考试系统设计需要以下几个功能模块:(1)需求分析(2)保存试题库(3)试题的录入(4)试题的抽取(5)答题(6)自动判卷(7)系统测试(8)退出系统经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工:神具体完成以下模块的设计与实现:(1 ) 需求分析(2 ) 保存试题库(3 ) 试题的录入具体完成以下模块的设计与实现:(1)试题的抽取(2)答题具体完成以下模块的设计与实现:(1)自动判卷(2)系统测试(3)退出
3、系统精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 24 页实用文档文案大全二 需求分析1设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、 数据结构作一比较和总结, 结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:( 1)进一步巩固、加深学生所学专业课程C+ 程序设计语言的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,
4、开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。( 4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。( 5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。( 6)熟练掌握C+ 语言的基本语法,灵活运用各种数据类型。( 7)进一步掌握在集成环境下如何调试程序和修改程序。2课程设计名称及内容课程设计名称:单项选择题标准化考试系统设计内容:设计一个单项选择题标准化考试系统,该系统要求能自动组卷和评分。3设计方案提示具体的功能:(1) 用文件保存试题库。(每个试题包括题干、 4 个备选答案、标准答案) ;(2) 试题录入:
5、可随时增加试题到试题库中;(3) 试题抽取:每次从试题库中可以随机抽出N 道题(N 由键盘输入);(4) 答题:用户可实现输入自己的答案;(5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。主要知识点:(1) 面向对象程序设计方法(2) 界面的制作, switch 的应用(3) 类和对象(4) 动态数组(链表)类模板精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 24 页实用文档文案大全(5) 文件的读写其他:程序设计可在 Microsoft VC+6.0、Borland C+ Builder 环境下进行。三 总体设
6、计1总的叙述 1、用来保存试题库, 可以用到” Struct TestNode Testquestions”结构体数组, 将试题一一对应的保留下来 , 放在相应的文件里; 2、试题的录入 , 可以定义一个” void InputTitle(int N)”和” Status InsertNode(int &N)”函数将试题录入; 3、 试题的抽取 , 可以定义一个” void printNode(TestNode p,int n)”的函数 , 用到” Rand”函数进行随机抽取; 4、答题方面 , 则定义一个” void answer(int sum)”函数用于答题者的输入答案; 5、自动判卷
7、, 则可以定义一个” Status Match(TestNode p,char m)”函数 , 用来对比答题者答案和正确答案 , 给出判断正确与否; 6、用一个main 函数将上述各个函数功能块连接起来,实现”单项选择题标准化考试系统”的各个方面的功能 , 完成设计2大概流程图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 24 页实用文档文案大全四 详细设计1. 程序流程图(1)保存文件单项选择题标准化考试系统进行答题并判卷显示整张试卷内容插入试题保存到文件退出系统精选学习资料 - - - - - - - - - 名师归纳总结 - -
8、 - - - - -第 6 页,共 24 页实用文档文案大全(2)输出文件(3) 答题功能模块进入函数answer(int sum) i=1,isum Num=rand()%sum 输出数据精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 24 页实用文档文案大全(4)结构程序中主要用到了结构体数组, 定义类型 , 如 typedef int Status等, 用结构体数组可以使得程序比较简便, 易于读懂 , 免去频繁的赋值, 而用定义类型, 可以使得程序具有移植性,健壮性好。2. 功能模块(1)文件的保存和读取模块实现此功能代码如下:把
9、结构体数组保存到文件wenjian中, 如成功保存返回TRUE,否则返回ERROR Status SaveNode(int N) int i; FILE *fp; if(fp=fopen(wenjian,wb)=NULL) return ERROR; for(i=0;iMAX) return ERROR; cout请输入所要插入题题目、题干和选项:endl; cout 请输入题目: ; gets(TestquestionsN.subject); cout 请输入选项A:; gets(TestquestionsN.option1); cout 请输入选项B:; gets(Testquestion
10、sN.option2); cout 请输入选项C:; gets(TestquestionsN.option3); cout 请输入选项D:; gets(TestquestionsN.option4); coutendl; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 24 页实用文档文案大全cout&TestquestionsN.result;getchar(); N+; /N表示结构体数组长度, 通过加 &号使其值能返回return TRUE; (3)试题的输出模块实现此功能相关代码如下:void printNode(TestNod
11、e p,int n)/输出第 n 道题题目 coutn; cout p.subject endl; coutA p.option1 ; coutB p.option2 endl; coutC p.option3 ; coutD p.option4 ; (4)答题判卷模块实现此功能相关代码如下:判断 m是否为 p 题目的答案,若是返回TRUE ,否则返回ERROR Status Match(TestNode p,char m) if(m=p.result) return TRUE; else return ERROR; 进行答题void answer(int sum)/进行答题 int k,sc
12、ore=0,Num; char r; int aMAX,i; for(k=1;k=sum;k+) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 24 页实用文档文案大全 for(i=0; i=1; -i) swap(ai-1, arand()%i); Num=ai-1; /随机函数 , 以随机选定何题进行解答 printNode(TestquestionsNum,Num+1); coutendl; cout&r;getchar(); if( Match(TestquestionsNum,r) /调用函数IsMatch 判断所输入的答
13、案与标准答案是否相同 coutendl; cout 答案正确 !endl; score+; else coutendl; cout 答案错误 !endl; cout 你的总成绩为:score&N;getchar(); InputTitle(N);*/ ReadNode(N); while(flag=N|flag=n) cout 单项选择题标准化考试系统endl; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 24 页实用文档文案大全 coutendl; cout 1 进行答题并判卷endl; cout 2 显示整张试卷内容endl;
14、 cout 3 插入试题 endl; cout 4 保存到文件 endl; cout 5 退出系统 endl; cout chose;getchar(); switch(chose) case 1:system(cls); if(N=0) cout题库中没有试题,请添加后在进行答题!endl; break; cout题库中共有 Nsum;getchar(); if(sumN) cout输入错误,请重新操作!endl; break; answer(sum); break; case 2:system(cls); if(N=0) cout题库中没有试题,请添加后在进行此类操作!endl; brea
15、k; for(i=1;i=N;i+) printNode(Testquestionsi-1,i); coutendl; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 24 页实用文档文案大全break; case 3:system(cls);InsertNode(N);break; case 4:system(cls); if(SaveNode(N) cout保存成功 !endl; else cout保存失败 !endl;break; case 5:cout&flag;getchar(); if(flag=Y|flag=y) exi
16、t(0); system(cls);break; default:cout请输入正确选择!endl; 五 系统测试1运行系统,进入界面2. 开始插入试题进行插入试题连续插入两道题精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 24 页实用文档文案大全显示整张试卷内容3. 保存到文件并进行答题保存到文件进行答题精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 24 页实用文档文案大全4. 退出系统退出系统六 总结经过这么多天的C+ 课程设计的训练, 我学到了很多, 最主要的一点是
17、怎样去运用自己学过的知识,怎样去找到你所需要的资料,并在短时间把它运用到具体的实践中,运用到你所需要的方面。这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。在做这个C+ 课程设计的时候,我原先也是学的不怎么好,什么是结构体数据, 什么是定义类型,精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 24 页实用文档文案大全怎样在一个main 函数中调用别的定义函数,等等,可以说是忘得差不多了。然而, 在这门课程设计中,这些方面却是特别重要的,可以说,掌握
18、了这个, 你就完全可以完成自己的任务。这就要求我们要自己去学, 自己去探索。 当然 ,看书、 问同学是必不可少的,还有, 身边有非常丰富的网络资源给我们好好利用, 百度就是个很不错的地方。这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力。当然 , 由于个人能力所限,这份课程设计有一些别的方面还是要参考人家的的资料,在读懂别人材料的同时,自己取人所长,补己之短,经过多次的调试, 总结 , 最后交出一份自己比较满意的答卷。通过这次的课程设计,让我进一步的了解到C+ 在我们日常生活中的重要性,而且,也更进一步的激发了我学习这门语言的兴趣. 经过这次的训练
19、,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。七 参考文献1. 段钢编著加密与解密(第三版).电子工业出版社.2009 年 8 月.2. 赵树升赵韶平 . Windows 信息安全原理与实现.清华大学出版社.2004 年 9 月.3. 赛奎春 .Visual C+ 信息系统开发实例精选,20054. 杨永国 . Visual C+ 6.0实用教程 . 清华大学出版社 ,2004精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 24 页实用文档文案大全5. 唐俊明 . Visual C+ 6.0 编程实例与技巧
20、 . 高等教育出版, 20026. 潘锦平 . 软件系统开发技术 . 西安电子科技大学出版社 , 1997 7. 郑阿奇丁有和编著 Visual C+(第 2 版) .机械工业出版社.2008 年 8 月.8. 侯俊杰编著 深入浅出MFC (第 2 版) . 华中科技大学出版社.2008 年 1 月.9. 孙鑫余安萍编著 VC+ 深入浅出详解 . 电子工业出版社.2006 年 6 月.附 录源程序:#include #include 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 24 页实用文档文案大全#include #inclu
21、de #include using namespace std; #define TRUE 1 #define ERROR 0 #define MAX 30 typedef int Status; typedef struct char option130,option230,option330,option430,subject150; char result; TestNode; TestNode TestquestionsMAX; Status SaveNode(int N) /把结构体数组保存到文件cheng 中,如成功保存返回 TRUE,否则返回 ERROR int i; FILE
22、*fp; if(fp=fopen(cheng,wb)=NULL) return ERROR; for(i=0;iMAX) return ERROR; cout 请输入所要插入题题目、题干和选项:endl; cout 请输入题目: ; gets(TestquestionsN.subject); cout 请输入选项 A:; gets(TestquestionsN.option1); cout 请输入选项 B:; gets(TestquestionsN.option2); cout 请输入选项 C:; gets(TestquestionsN.option3); cout 请输入选项 D:; 精选学
23、习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 24 页实用文档文案大全gets(TestquestionsN.option4); coutendl; cout&TestquestionsN.result;getchar(); N+; /N 表示结构体数组长度 ,通过加 &号使其值能返回return TRUE; Status DeleteNode(int n)/删除数组中的第n 个元素 return TRUE; void printNode(TestNode p,int n)/输出第 n 道题题目 coutn; cout p.subject
24、 endl; coutA p.option1 ; coutB p.option2 endl; coutC p.option3 ; coutD p.option4 ; Status Match(TestNode p,char m)/判断 m 是否为 p 题目的答案, 若是返回 TRUE,否则返回 ERROR 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 24 页实用文档文案大全if(m=p.result) return TRUE; else return ERROR; void answer(int sum)/进行答题 int k,s
25、core=0,Num; char r; int aMAX,i; for(k=1;k=sum;k+) for(i=0; i=1; -i) swap(ai-1, arand()%i); Num=ai-1; /随机函数 ,以随机选定何题进行解答printNode(TestquestionsNum,Num+1); coutendl; cout&r;getchar(); if( Match(TestquestionsNum,r) /调用函数 IsMatch 判断所输入的答案与标准答案是否相同 coutendl; cout 答案正确 !endl; score+; else coutendl; 精选学习资料
26、 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 24 页实用文档文案大全cout 答案错误 !endl; cout 你的总成绩为 :scoreendl; int main() char flag=N; int N=0,i, sum,score=0,chose; ReadNode(N); while(flag=N|flag=n) cout 单项选择题标准化考试系统endl; coutendl; cout 1 进行答题并判卷endl; cout 2 显示整张试卷内容endl; cout 3 插入试题 endl; cout 4 保存到文件 endl;
27、cout 5 退出系统 endl; cout chose;getchar(); switch(chose) case 1:system(cls); if(N=0) cout 题库中没有试题,请添加后在进行答题!endl; break; cout 题库中共有 Nsum;getchar(); if(sumN) cout 输入错误,请重新操作! !endl; break; answer(sum); break; case 2:system(cls); if(N=0) cout 题库中没有试题,请添加后在进行此类操作!endl; break; for(i=1;i=N;i+) printNode(Tes
28、tquestionsi-1,i); coutendl; break; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 24 页实用文档文案大全case 3:system(cls);InsertNode(N);break; case 4:system(cls); if(SaveNode(N) cout保存成功 !endl; else cout保存失败 !endl;break; case 5:cout&flag;getchar(); if(flag=Y|flag=y) exit(0); system(cls);break; default:cout请输入正确选择 !endl; return 0; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 24 页