C语言HSITS系统哈软智能考试系统课程设计.docx
《C语言HSITS系统哈软智能考试系统课程设计.docx》由会员分享,可在线阅读,更多相关《C语言HSITS系统哈软智能考试系统课程设计.docx(37页珍藏版)》请在冰点文库上搜索。
C语言HSITS系统哈软智能考试系统课程设计
哈尔滨学院软件学院
课程设计说明书
题目:
HSITS系统—哈软智能考试系统
院(系)
软件学院
专业
软件工程
年级
093
姓名
左自强
学号
09033335
指导教师
王克朝
职称
讲师
2011年8月31日
摘要
HSITS系统—哈软智能考试系统,是一款集题库管理(单选题)、自动智能组卷、考试与评分等功能于一体的一款智能考试系统,基于计算机进行HSITS系统—哈软智能考试系统的使用,既实现考试的无纸化管理,也方便了校方对考试的管理,还方便了考生。
基于智能考试需求的增加,本文设计并实现了一套智能考试系统。
本系统实现了单选题库管理、自动组卷、考试和评分等基本功能,其中单选题库管理包括试题的增加、删除、查找、修改和显示,而试题删除有包含指定删除和全部删除。
系统采用B/S开发模式,以C作为开发平台,以文件夹作为试题库。
整个系统层次结构简单,操作容易,并具备一定的安全性。
考生借助此系统,可以随时随地的进行各种课程考试。
关键词:
智能考试系统;B/S模式;HSITS系统
Abstract
HSITSSystem-HasoftintelligenttestsystemisasetofBankManagement(Multiplechoice),automaticintelligenttestpaper,testscoreandotherfunctionsandanintelligenttestsystem,computer-basedsystemforHSITS-Hasoftintelligencetestuseofthesystem,bothtoachievepaperlessmanagementoftheexamination,butalsofacilitatetheexaminationofthemanagementoftheschool,butalsofacilitatethecandidate.
Basedonintelligencetestsincreaseddemand,thepaperdesignandimplementasetofintelligenttestsystem.Thedatabasemanagementsystemtoachieveasingleanswer,automatictestpaper,testandscoreandotherbasicfunctions,includinglibrarymanagement,includingmultiplechoicequestionstoadd,delete,find,editanddisplay,anddeletequestionsthatcontainthespecifieddeleteanddeleteall.SystemusesB/Sdevelopmentmodel,withCasadevelopmentplatform,tofileasatestdatabase.Theentiresystemhierarchyissimple,easy,andhavesomesecurity.CandidatesWiththissystem,youcantestanytime,anywhereforavarietyofcourses.
Keywords:
IntelligentTestSystem;B/Smode;HSITSsystem
第一章需求分析
1.1系统需要解决的主要问题
该系统需要解决的主要问题是考生将试题保存在文本文件中,一个单选题对应一个文本文件,进入系统后通过录入试题将题库中的试题录入系统,录入的试题数必须大于等于50而小于等于100。
当考生进行考试时系统首先判断系统中的试题数大于50道题,然后系统自动从系统的题库中随机抽取20道题供考生作答。
答题结束时系统自动将考生答对以及答错的题数告诉用户。
1.2系统应该具备的基本功能
(1)录入试题:
用户输入试题的文件名,并录入正确答案,一个文件为一道客观题。
(2)显示试题:
当系统中存在试题时,将系统中所有的试题的文件名打印出来。
(3)增加试题:
当系统中已经存在一些试题后,还可以通过添加试题来增加试题。
(4)查找试题:
系统首先自动判断系统中的试题数是否为0,若不为零,则提示用户输入题目,然后在系统中进行查找,存在则打印查找成功,;反之则打印查找失败.
(5)修改试题:
在系统中存在被修改的试题的前提下,用户可以通过输入被修改试题的题号重新设置试题。
(6)删除试题:
a.删除指定试题:
通过输入题号,用户可以删除指定位置的试题。
b.全部删除:
删除系统中所有的试题。
c.返回:
返回主菜单。
(7)考试:
首先判断系统中的试题数是否大于等于50,若小于则打印“题库中数据不足请录入试题”,不能进行考试,反之则由系统随机抽取系统中20到题目进行考试,考完后系统自动进行统计答对的试题数和答错的试题数,剩下的则是没有答的。
(8)退出:
退出系统。
第二章开发工具介绍及试题库设计
2.1系统开发工具简介
该系统的开发工具主要是MicrosoftVisualC++6.0
2.2系统试题库实现
在设计试题的数据库时,考虑到系统是由单一用户使用,所以该系统中的试题是以文件库的形式存在,通过将试题放在同一个名为试题的文件夹下,该文件夹的位置最好放在工程所在目录下。
录入试题时如下:
试题\1.txt
试题\2.txt
试题\3.txt
试题\4.txt
试题\5.txt
试题\6.txt
试题\7.txt
.
.
.
试题\(int)x.txt
.
.
.
每道试题的答案在录入试题的时候对应试题录入正确的答案。
第三章概要设计
3.1系统模块结构图
本系统功能模块有:
录入试题,显示试题,增加试题,查找试题,修改试题,删除试题,学生考试。
1.录入试题模块:
主要是向系统中录入试题。
2.显示试题模块:
主要是在系统中存在试题的前提下打印系统中所有题目。
3.增加试题模块:
主要是向系统中增加试题。
4.查找试题模块:
主要是在系统中查找是否存在某个试题。
5.修改试题模块:
主要是修改系统中的试题。
6.删除试题模块:
主要是删除系统中的试题。
7.学生考试模块:
主要是用户通过系统随机出题进行考试。
系统模块结构图如图3.1所示。
图3.1,系统模块结构图
3.2系统流程图
用户对系统进行操作的流程也用图作了形象的解释,系统对操作的用户反馈其对应的信息。
学生对考试过程透明,系统自动在考生考完时打印学生的成绩。
其流程图如图3.2所示。
图3.2,系统流程图
第四章详细设计
4.1系统首页设计
本系统的主界面设计结构采用了分页的结构,总共有三页。
首页显示的是系统的相关信息,图4.1;第二页显示的是用户在使用系统时的相关提示以及信息,图4.2;第三页是主菜单用户所有的操作都是在该页进行的,图4.3;在主菜单当中,由上至下的显示了系统的主要功能。
界面设计如下几图所示。
图4.1系统首页
图4.2系统第二页
图4.3系统第三页
4.2系统基本功能设计与实现
本节将对系统主要功能设计进行详细的说明。
4.2.1录入试题模块设计与实现
由于用户进行考试必须是在系统中存在一定试题的前提下才能进行,因此在用户进行考试前首先需要向系统录入一定量的试题。
当用户输入题目和正确答案之后首先要进行正确答案验证,如果正确答案是属于A,B,C,D,则成功录入试题,反之,如果正确答案不在那个范围内,提示错误信息“答案输入错误,请重新输入:
”,用户重新输入正确的正确答案。
录入试题的程序流程图如图4.4所示。
图4.4录入试题模块程序流程图
录入试题模块的代码如下
do{
cout<<"输入题目"<cin>>num;
cout<<"输入正确答案:
"<cin>>an;
if(an!
='A'&&an!
='B'&&an!
='C'&&an!
='D')
{
cout<<"答案输入错误,请重新输入:
"<cin>>an;
}
Testcc(num,an);
la.Insert(la.length()+1,cc);
cout<<"录入成功,你还想继续吗(y/n)"<cin>>p;
if(p!
='y'&&p!
='Y'&&p!
='n'&&p!
='N')
{
cout<<"指令错误,请重新输入:
"<cin>>p;
}
}while(p=='y'||p=='Y');
4.2.2学生考试模块设计与实现
对于学生考试过程而言,考试时系统首先检查系统中的试题数是否大于等于50道题,如果小于50道题,则提示错误信息“题库中数据不足,请添加足够试题”,反之,系统自动从题库中随机提取20道题随机组合成一套试题供用户考试;考试进行后用户输入自己的答案,系统自动判断输入的答案是否合格,若不合格则提示错误信息“答案输入错误,请重新输入:
”,用户重新输入答案;考试结束时系统自动将用户答案与标准答案进行对比,统计用户答错与答对的题数,然后显示给用户。
学生考试模块的流程图如图4.5所示。
图4.5学生考试模块流程图
学生考试模块的代码如下:
FILE*file;
inttes[20];
charstr[1025];
if(la.length()<50)
{
cout<<"题库中数据不足!
"<cout<<"请添加足够试题!
"<system("PAUSE");
do{
cout<<"输入题目"<cin>>num;
cout<<"输入正确答案:
"<cin>>an;
if(an!
='A'&&an!
='B'&&an!
='C'&&an!
='D')
{
cout<<"答案输入错误,请重新输入:
"<cin>>an;
}
Testcc(num,an);
la.Insert(la.length()+1,cc);
cout<<"录入成功,你还想继续吗(y/n)"<cin>>p;
if(p!
='y'&&p!
='Y'&&p!
='n'&&p!
='N')
{
cout<<"指令错误,请重新输入:
"<cin>>p;
}
}while(p=='y'||p=='Y');
}
else
{
random20(tes,la.length());//生成随机函数
cout<<"考试马上开始\n";
system("PAUSE");
for(inti=1;i<=20;i++)
{
file=fopen((la.getelem(tes[i-1],test)).ch,"rt");
while(fgets(str,1024,file)!
=NULL)
{
cout<}
cout<cout<<"你的答案:
";
cin>>answer;
if(answer!
='A'&&answer!
='B'&&answer!
='C'&&answer!
='D'&&answer!
='')
{
cout<<"答案输入错误,请重新输入:
"<cin>>an;
}
if(answer=(la.getelem(tes[i-1],test)).an)//如果用户答案与正确答案相等,mark++
{
mark++;
}
else
{
wmark++;
}
}
cout<<"你答了20道题"<cout<<"其中你答对了"<cout<<"其中你答错了"<}
第五章系统测试运行
5.1测试目的
测试的目的是为了发现在程序开发过程中没有发现的错误,以及遗漏的功能。
5.2测试方案
对系统进行正确和不正确的输入,以及各种极限输入测试。
5.3测试内容
1.录入试题模块功能的测试
在主菜单中选择功能1进行试题的录入,如果每次录入后都显示“录入成功”,没有出现异常,说明试题录入是成功的。
通过对系统的反复大量的测试,该模块测试成功。
(1)录入正确答案规范,如图5.1
(2)录入正确答案不规范,如图5.2
图5.1录入试题模块的测试
图5.2录入试题模块的测试
2.显示试题模块的测试
当系统中没有数据的时候,显示“没有数据”,反之,若显示的试题数与系统中实际试题数相等,说明显示试题是成功的。
通过对系统的反复大量的测试,该模块测试成功。
(1)当系统中题库为空的时候测试如图5.3
(2)当系统中题库不为空的时候测试如图5.4
图5.3显示试题模块
图5.4显示试题模块的测试
3增加试题模块的测试,如图5.5,图5.6
图5.5增加试题模块的测试
图5.6增加试题模块的测试
4退出模块的测试
通过对系统的反复大量的测试,所有模块测试成功。
总结
本文详细的论述了HSITS系统-哈软智能考试系统的设计与实现,该系统基本实现了需求中的要求,其中试题需要用户自己录入,用户可以进行试题的增、删、改、查、以及考试。
通过开发该系统,对学过的知识进行了一次全面的考核和实践。
虽然最后成功了,但是由于时间和技术的不足系统还存在一些不足。
首先,系统中的题目不能事先存储在一个文本中,从而直接从文本中读取;其次,没有对用户的各种约束;最后就是该系统中试题的录入和考试都是有用户自己操作,没有分开。
因此该系统还待进一步的完善。
参考文献
[1]数据结构与算法分析(c++版)朱宏唐宁九杨秋辉著
[2]c++程序设计教程钱能著
[3]
[4]VisualBasic项目开发案例全程实录安剑孙秀梅著
附录
源代码
#include
#include
#include
#include
usingnamespacestd;
voidrandom20(intpick[],intn)//获取题号在[1,n]之间的任意20个题目
{
inti=0,j=0;
boolflag=true;//不存在为true
srand((unsigned)time(NULL));
for(i=0;i<20;i++)
{
intnum=rand()%n+1;
for(j=i-1;j>=0;j--)
{
if(pick[j]==num)
{
flag=false;
break;
}
flag=true;
}
if(flag)
{
pick[i]=num;
}
else
{
i--;
}
}
}
classTest//试题类
{
public:
charch[222];//题目
charan;//正确答案
Test(){}
Test(char*a,charb){strcpy(ch,a);an=b;}
~Test(){}
};
classList//考试系统
{
protected:
intcount;//试题数
intmaxsize;//系统最大容量
Test*elems;//系统存储对象
boolFull()const{returncount==maxsize;}
voidInit(intsize);
public:
List(){}
List(intsize);
intlength()const;
boolempty()const;
voidclear();
voidtravel();
Testgetelem(intposition,Testtest)const;
voidsetelem(intposition,constTesttest);
voidDelete(intposition,Testtest);
voidInsert(intposition,constTesttest);
~List(){delete[]elems;}
};
voidList:
:
Init(intsize)//初始化考试系统
{
maxsize=size;
if(elems!
=NULL)delete[]elems;
elems=newTest[maxsize];
count=0;
}
List:
:
List(intsize)//有参构造函数
{
elems=NULL;
Init(size);
}
intList:
:
length()const//返回系统中试题数
{
returncount;
}
boolList:
:
empty()const//系统为空返回true
{
returncount==0;
}
voidList:
:
clear()//清空系统试题
{
count=0;
}
voidList:
:
travel()//打印系统中所有试题题目
{
if(empty())
{
cout<<"没有数据!
"<}
else
{
cout<<"所有试题如下!
:
"<for(intposition=1;position<=length();position++)
{
{
cout<}
}
}
}
TestList:
:
getelem(intposition,Testtest)const//获取指定位置试题
{
Testa;
if(position<1||position>length())
{
}
else
{
a=elems[position-1];
}
returna;
}
voidList:
:
setelem(intposition,constTesttest)//修改指定位置试题
{
if(position<1||position>length())
{
}
else
{
elems[position-1]=test;
}
}
voidList:
:
Delete(intposition,Testtest)//删除试题
{
intlen=length();
Testtemp;
if(position<1||position>length())
{
cout<<"位置错误!
"<}
else
{
getelem(position-1,test);
for(inti=position;i<=length();i++)
{
strcpy(elems[i-1].ch,elems[i].ch);
elems[i-1].an=elems[i].an;
}
count--;
cout<<"删除成功!
"<}
}
voidList:
:
Insert(intposition,constTesttest)//添加试题
{
Testtemp;//临时对象
if(Full())
{
cout<<"Listisfull"<}
elseif(position<1||position>length()+1)
{
cout<<"范围错"<}
else
{
count++;
for(inti=length();i>=position;i--)
{
getelem(i,temp);
setelem(i+1,temp);
}
setelem(position,test);
}
}
intmain()
{
Listla(100);
Testtest;
char*num;
num=newchar[222];//题目
charan;//正确答案
charanswer=NULL;//用户答案
charp;
intc,position;//题号
intmark=0;//答对的个数
intwmark=0;//答错的个数
system("coloraF");
cout<<"\n\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|"<cout<<"\n\t\t|********欢迎使用哈软智能考试系统******|"<cout<<"\n\t\t|********学校:
哈尔滨学院**************|"<cout<<"\n\t\t|********班级:
软件学院093班***********|"<cout<<"\n\t\t|********作者:
左自强******************|"<cout<<"\n\t\t|********学号:
09033335****************|"<cout<<"\n\t\t|********QQ:
975942538******************|"<cout