单项选择题标准化考试系统课程设计论文.docx
- 文档编号:30286201
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:23
- 大小:87.10KB
单项选择题标准化考试系统课程设计论文.docx
《单项选择题标准化考试系统课程设计论文.docx》由会员分享,可在线阅读,更多相关《单项选择题标准化考试系统课程设计论文.docx(23页珍藏版)》请在冰豆网上搜索。
单项选择题标准化考试系统课程设计论文
单项选择题标准化考试系统课程设计论文
数据结构课程设计
设计说明书
单项选择题标准化考试系统
起止日期:
2013年12月23日至2013年12月27日
学生姓名班级成绩指导教师(签字)
课程设计任务书
2013—2014学年第1学期
计算机与信息工程学院专业班级课程设计名称:
数据结构课程设计设计题目:
单项选择题标准化考试系统完成期限:
自2013年12月23日至2013年12月27日共1周设计依据、要求及主要内容(可另加附页):
一、设计目的
熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
二、设计要求
在本课程设计过程中要求学生:
(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;
(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者
皆以零分计入本课程设计成绩。
凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程
设计成绩。
(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表。
(4)认真编写课程设计报告。
三、设计内容
1)问题描述
设计一单项选择题标准化考试系统,实现考试的标准化管理。
2)基本要求
功能要求:
(1)用文件保存试题库。
(每个试题包括题干、4个备选答案、标准答案)
(2)试题录入:
可随时增加试题到试题库中
(3)试题抽取:
每次从试题库中可以随机抽出N道题(N由键盘输入)
(4)答题:
用户可实现输入自己的答案
(5)自动判卷:
系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
四、参考文献
1、王红梅,数据结构,清华大学出版社
2、王红梅,数据结构学习辅导与实验指导,清华大学出版社
3、严蔚敏、吴伟民,《数据结构C语言版》,清华大学出版社
1、设计目的...................................................................12、总体设计...................................................................13、详细设计...................................................................1
3.1、程序具体功能..........................................................1
3.2、调试分析..............................................................24、源程序和运行结果...........................................................2
4.1、源程序................................................................2
4.2、运行结果.............................................................125、心得体会..................................................................156、参考文献..................................................................15
单项选择题标准化考试系统1、设计目的
熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
2、总体设计
单项选择题标准化考试系统
试题录入试题抽取答题自动判卷文件保存试题
库
3、详细设计
3.1、程序具体功能:
1(试题录入
可以随时增加试题到题库中。
从键盘输入试题的题干、四个选项以及正确答案。
2.试题抽取
用户从键盘输入想要抽取的试题个数k,如果输入的个数大于试题的数量,会提示“题
库试题不足”,否则系统将随机产生k道不同的试题。
3.答题
用户从键盘输入想要回答的试题个数k,如果输入的个数大于试题的数量,会提示“题
库试题不足”,否则系统将随机产生k道不同的试题,用户将输入自己的答案。
4.自动判卷
系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
1
5(保存试题到文件
将每个试题的题干、四个选项以及正确答案保存到文件。
3.2、调试分析:
1.查看题库试题调试
初始化一个单链表,链表有5个节点,每个节点包含题干、四个选项以及正确选项,运行程
序,查看是否正确输出链表的内容。
2.试题录入调试
运行程序,输入题干、四个选项以及正确选项,录入完成提示“录入成功~”,然后查看题库
试题,查看是否将试题添加进去。
3.试题抽取调试
运行程序,从键盘输入要抽取试题的个数k,查看系统是否随机产生不同k道试题,如果抽
取试题个数大于题库试题总量,则应该显示“题库试题不足~”。
4.答题调试
,然后输入自己选择的答案,查看系统能否正确运行程序,从键盘输入要回答试题的个数k
的判断正误。
5.保存文件调试
运行程序,查看能否将试题保存到文件,并正确读出。
6.输入调试
运行程序,从键盘任意输入数据,查看系统能否正确运行,并显示异常处理的提示信息。
4、源程序和运行结果
4.1、源程序
a.h:
#include
usingnamespacestd;
template
structNode
{
DataTypedata;
Node
2
};
classTitle
{
public:
chartitle[100];//题干
chara[20];//a选项
charb[20];//b选项
charc[20];//c选项
chard[20];//d选项
charanswer;//正确选项
Title()
{}
Title(char*titl,char*aa,char*bb,char*cc,char*dd,charanswer)
{
strcpy(title,titl);
strcpy(a,aa);
strcpy(b,bb);
strcpy(c,cc);
strcpy(d,dd);
this->answer=answer;
}
};
template
{
public:
LinkList();//无参构造函数
LinkList(DataTypea[],intn);//有参构造函数
~LinkList(){};//析构函数
voidmain_menu();//主菜单界面
voidmenu1();//取消菜单界面
intlenth();//题目的个数
voidadd();//增加题目
voidtest();//答题
voidextract();//试题抽取
voidprintdata();//遍历记录
voidsave();//保存记录
private:
Node
};
3
b.cpp:
#include
#include
#include
#include
#include"a.h"
usingnamespacestd;
template
LinkList
:
LinkList()//无参构造函数
{
first=newNode
first->next=NULL;
}
template
LinkList
:
LinkList(DataTypea[],intn)//有参构造函数{
Node
first=newNode
r=first;
for(inti=0;i { s=newNode s->data=a[i]; r->next=s; r=s; } r->next=NULL;} template voidLinkList : main_menu(){ cout<<"*********************************************************"< cout<<"*欢迎使用单项选择题标准化考试系统*"< cout<<"*********************************************************"< cout<<"*1.显示主菜单*"< cout<<"*2.试题录入*"< cout<<"*3.浏览试题*"< cout<<"*4.试题抽取*"< cout<<"*5.答题*"< cout<<"*6.试题数量*"< 4 cout<<"*0.退出*"< cout<<"*********************************************************"< } template voidLinkList : menu1(){ cout<<"*************************************"< cout<<"*您确定要选择该答案吗,*"< cout<<"*1.确定*"< cout<<"*2.取消*"< cout<<"*************************************"< template voidLinkList : add()//增加题目 { Node Node DataTypet; cout<<"请输入题干: "; cin>>t.title; cout<<"请输入A选项: "; cin>>t.a; cout<<"请输入B选项: "; cin>>t.b; cout<<"请输入C选项: "; cin>>t.c; cout<<"请输入D选项: "; cin>>t.d; cout<<"请输入正确选项: "; cin>>t.answer; while(p->next! =NULL) { p=p->next; } s->data=t; p->next=s; s->next=NULL; cout<<"添加成功~"< } template 5 voidLinkList : printdata()//浏览题目 { Node first->next=NULL; ifstreaminfile("123.txt",ios: : in); if(! infile) { cout<<"题目浏览失败~"< return; } chartit[100],aa[20],bb[20],cc[20],dd[20]; charans; while(infile.peek()! =EOF) //判断文件是否为空时使用peek函数,若peek返回EOF则文件为空 { infile>>tit>>aa>>bb>>cc>>dd>>ans; DataTypeh(tit,aa,bb,cc,dd,ans); Node s->data=h; p->next=s; s->next=NULL; p=s; } infile.close(); Node inti=1; while(t! =NULL) { cout<data).title< cout<<"A."<<(t->data).a<<""<<"B."<<(t->data).b<<"" <<"C."<<(t->data).c<<""<<"D."<<(t->data).d<<"" <<(t->data).answer< cout< t=t->next; } } template intLinkList : lenth()//查看个数 { Node 6 intcount=0; while(p->next! =NULL) { count++; p=p->next; } returncount; } template voidLinkList : save()//保存到文件 { Node ofstreamoutfile("123.txt",ios: : out); if(! outfile) { cout<<"题目保存失败~"< return; } while(p! =NULL) { if(p->next==NULL) { outfile<<(p->data).title<<""<<(p->data).a<<"" <<(p->data).b<<""<<(p->data).c<<"" <<(p->data).d<<""<<(p->data).answer; //最后一个不应该换行,//否则读记录时将多一行 break; } else { outfile<<(p->data).title<<""<<(p->data).a<<"" <<(p->data).b<<""<<(p->data).c<<"" <<(p->data).d<<""<<(p->data).answer< } p=p->next; } outfile.close(); } template voidLinkList : extract()//试题抽取 7 { constintMAX=100; intx[MAX]; Node if(p==NULL) { cout<<"题库为空! "< return; } intn=1,j=1,number;//题目数量 cout<<"请输入您要抽取的试题数量: "; cin>>number; if(number>lenth()) { cout<<"题库试题不足~"< return; } for(intk=1;k<=lenth();k++) x[k]=k; srand(unsigned(time(NULL))); while(j<=number) //产生无重复元素的随机数{ inttemp=x[n]; intt=n+rand()%(lenth()-n+1);//产生[n-lenth()]之间的随机数 inti=x[t]; x[n]=x[t]; x[t]=temp; p=first->next;//p再次指向第一个结点 for(intm=1;m { p=p->next; } cout< cout<<"A."< < cout< j++; n++; } } 8 template voidLinkList : test()//答题{ constintMAX=100; intx[MAX]; Node if(p==NULL) { cout<<"题库为空! "< return; } charch; intj=1,n=1,t,sum=0,number;//总分 cout<<"请输入您要答题的数量: "; cin>>number; if(number>lenth()) { cout<<"题库试题不足~"< return; } for(intk=1;k<=lenth();k++) x[k]=k; //随机产生number道不重复的试题 srand(unsigned(time(NULL))); while(j<=number) { boolflag=true; inttemp=x[n]; intt=n+rand()%(lenth()-n+1);//产生[n-lenth()]之间的随机数 inti=x[t]; x[n]=x[t]; x[t]=temp; p=first->next;//p再次指向第一个结点 for(intm=1;m { p=p->next; } cout<data.title< cout<<"A."< < 9 cout< while(flag) { cout<<"请输入答案: "; cin>>ch; menu1(); cout<<"请输入选项(1/2): "; if(cin>>t){}//检验异常 else { cout<<"输入错误~"< cin.sync();//清空流 cin.clear();//清除流错误标记 continue; } switch(t) { case1: if(ch==p->data.answer||ch==p->data.answer+32) { cout<<"回答正确~"< sum+=10; } else cout<<"回答错误~"< flag=false; break; case2: break; default: cout<<"输入错误~"< break; } } j++; n++; } cout<<"******************************************"< cout<<"*每题分,满分为: "<<10*number<<"分*"< if(sum==10*number) 10 { cout<<"*太棒了~您满分~*"< cout<<"******************************************"< } elseif(sum==0) { cout<<"*很遗憾,您全错了,继续努力~*"< cout<<"******************************************"< } else { cout<<"*您的得分为: "< cout<<"******************************************"< } } Main.cpp: #include #include"b.cpp" usingnamespacestd; voidmain() { boolflag=true; LinkList linklist.main_menu(); while(flag){ intt; cout<<"请选择您的选择(0-6)[按返回主菜单]: "; if(cin>>t){}//检验异常 else { cout<<"输入错误~"< cin.sync();//清空流 cin.clear();//清除流错误标记 continue; } switch(t) { case1: linklist.main_menu(); break; 11 case2: linklist.add(); linklist.save(); break; case3: linklist.printdata(); break; case4: linklist.extract(); break; case5: linklist.test(); break; case6: if(linklist.lenth()==0) cout<<"题库为空~"< else cout<<"一共有"< break; case0: flag=fa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单项 选择题 标准化 考试 系统 课程设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)