考试系统.docx

上传人:b****5 文档编号:28645404 上传时间:2023-07-19 格式:DOCX 页数:29 大小:19.92KB
下载 相关 举报
考试系统.docx_第1页
第1页 / 共29页
考试系统.docx_第2页
第2页 / 共29页
考试系统.docx_第3页
第3页 / 共29页
考试系统.docx_第4页
第4页 / 共29页
考试系统.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

考试系统.docx

《考试系统.docx》由会员分享,可在线阅读,更多相关《考试系统.docx(29页珍藏版)》请在冰豆网上搜索。

考试系统.docx

考试系统

//test.cpp:

Definestheentrypointfortheconsoleapplication.

#include

#include

#include

#include

#include

#include

#include

#include

usingnamespacestd;

/*题目*/

structQuestion{

intm_index;

charm_answer;

chars_answer;

charm_question[200];

charm_a_choice[50];

charm_b_choice[50];

charm_c_choice[50];

charm_d_choice[50];

Question*next;

};

/*从文件中加载所有试题*/

listload()

{

charfilename[20]="test.txt";

ifstreamfin(filename);

chartmp_str[400]={0};

listlist_q;

Question*p=newQuestion;

constchar*seperate="#";

char*result=NULL;

intnum=0;

while(fin.getline(tmp_str,400))

{

p->m_index=++num;

result=strtok(tmp_str,seperate);

strcpy(p->m_question,result);

result=strtok(NULL,seperate);

strcpy(p->m_a_choice,result);

result=strtok(NULL,seperate);

strcpy(p->m_b_choice,result);

result=strtok(NULL,seperate);

strcpy(p->m_c_choice,result);

result=strtok(NULL,seperate);

strcpy(p->m_d_choice,result);

result=strtok(NULL,seperate);

p->m_answer=result[0];

list_q.push_back(*p);

}

returnlist_q;

}

classStudent{

public:

/*学生登录*/

boollogin()

{

charid[10]={0};

charname[20]={0};

charpasswd[20]={0};

cin.ignore();

cout<<"Inputid:

";

cin.getline(id,10);

if(!

is_exist(id))

{

cout<<"youhavenotregisted,pleaseregistfirstly!

"<

system("pause");

returnfalse;

}

for(inti=0;i<3;i++)

{

cout<<"Inputpassword:

";

cin.getline(passwd,20);

if(strcmp(m_passwd.c_str(),passwd))

{

cout<<"wrongpassword!

"<

}

else

returntrue;

}

returnfalse;

}

/*答题

*包括获取试题

*开始答题

*判卷得分

*保存考试结果

*/

voidtest()

{

intq_num;

cout<<"inputthenumofquestionsyouwant:

";

cin>>q_num;

listlist_g;

list_g=get(q_num);

if(list_g.size()>0)

{

list_g=answer(list_g);

doublegrade=mark(list_g);

system("pause");

save(grade,list_g);

}

}

/*主菜单*/

voidmenu()

{

intx;

while

(1)

{

system("cls");

cout<

cout<<"------------------------++您在学生界面++-----------------------------"<

cout<

cout<<"------------------------------------------------------------------------"<

cout<<"*1.checkgrade*"<

cout<<"------------------------------------------------------------------------"<

cout<<"*2.checkquestions*"<

cout<<"------------------------------------------------------------------------"<

cout<<"*3.begintoanswerquestions*"<

cout<<"------------------------------------------------------------------------"<

cout<<"*0.exit*"<

cout<<"------------------------------------------------------------------------"<

cin>>x;

switch(x)

{

case1:

check_grade();

break;

case2:

check_question();

break;

case3:

test();

break;

case0:

cout<<"*youaregoingtobacktomainmenu*"<

system("pause");

return;

default:

cout<<"*wronginput,pleaseinputagain*"<

system("pause");

}

}

}

/*注册学生信息*/

voidregist(stringid,stringname,stringpasswd)

{

charfilename[20]="student.txt";

ofstreamfout(filename,ios:

:

app);

fout<

<

<

}

/*判断此学生是否已经注册*/

boolis_exist(stringid)

{

charfilename[20]="student.txt";

ifstreamfin(filename);

chartmp_str[50]={0};

constchar*seperate="#";

char*result=NULL;

while(fin.getline(tmp_str,400))

{

result=strtok(tmp_str,seperate);

m_id=result;

if(m_id==id)

{

result=strtok(NULL,seperate);

m_name=result;

result=strtok(NULL,seperate);

m_passwd=result;

returntrue;

}

}

returnfalse;

}

/*查看历史得分*/

voidcheck_grade()

{

charfilename[20]="grades.txt";

ifstreamfin(filename);

chartmp_str[100]={0};

stringid;

stringname;

constchar*seperate="#";

char*result=NULL;

intnum=0;

boolhas_test=false;

while(fin.getline(tmp_str,100))

{

result=strtok(tmp_str,seperate);

id=result;

result=strtok(NULL,seperate);

name=result;

if(id==m_id)

{

has_test=true;

inttimes=0;

result=strtok(NULL,seperate);

while(result)

{

cout<<++times<<"times:

"<

result=strtok(NULL,seperate);

}

break;

}

}

if(!

has_test)

cout<

system("pause");

}

/*查看做过的试题*/

voidcheck_question()

{

stringfilename(m_id);

filename=filename+".txt";

ifstreamfin(filename.c_str());

chartmp_str[400]={0};

listlist_q;

Question*p=newQuestion;

constchar*seperate="#";

char*result=NULL;

intnum=0;

while(fin.getline(tmp_str,400))

{

p->m_index=++num;

result=strtok(tmp_str,seperate);

strcpy(p->m_question,result);

result=strtok(NULL,seperate);

strcpy(p->m_a_choice,result);

result=strtok(NULL,seperate);

strcpy(p->m_b_choice,result);

result=strtok(NULL,seperate);

strcpy(p->m_c_choice,result);

result=strtok(NULL,seperate);

strcpy(p->m_d_choice,result);

result=strtok(NULL,seperate);

p->m_answer=result[0];

result=strtok(NULL,seperate);

p->s_answer=result[0];

list_q.push_back(*p);

}

inti=0;

list:

:

iteratorit;

for(it=list_q.begin();it!

=list_q.end();it++)

{

cout<m_index<<')';

cout<m_question<

cout<<"A."<m_a_choice<

cout<<"B."<m_b_choice<

cout<<"C."<m_c_choice<

cout<<"D."<m_d_choice<

cout<<"correctanswer:

"<m_answer<

cout<<""<

"<s_answer<

i++;

if(i==3)

{

i=0;

system("pause");

}

}

cout<<"checkover!

"<

system("pause");

}

private:

/*获取试题*/

listget(intnum)

{

listlist_q=load();

intq_size=list_q.size();

if(num>q_size)

num=q_size;

int*g_int=(int*)malloc(q_size*sizeof(int));

memset(g_int,0,sizeof(g_int)*q_size);

intno;

for(inti=0;i

{

no=rand()%q_size;

while(g_int[no]==1)

{

no=rand()%q_size;

}

g_int[no]=1;

}

listlist_g;

list:

:

iteratorit;

intindex=0;

for(it=list_q.begin();it!

=list_q.end();it++)

{

if(g_int[it->m_index-1]==1)

{

cout<<++index<<')';

cout<m_question<

cout<<"A."<m_a_choice<

cout<<"B."<m_b_choice<

cout<<"C."<m_c_choice<

cout<<"D."<m_d_choice<

it->m_index=index;

list_g.push_back(*it);

}

}

if(list_q.size()>0)

{

free(g_int);

cout<<"questionshavebeenreadyforyou!

pushanykeytobegintest"<

}

else

cout<<"thereisnoquestionprepared,askteacheraddingquestionsfirstly"<

system("pause");

returnlist_g;

}

/*答题*/

listanswer(listlist_g)

{

chara;

list:

:

iteratorit;

for(it=list_g.begin();it!

=list_g.end();it++)

{

cout<m_index<<')';

cout<m_question<

cout<<"A."<m_a_choice<

cout<<"B."<m_b_choice<

cout<<"C."<m_c_choice<

cout<<"D."<m_d_choice<

cout<<"inputyouranswer:

";

cin>>a;

it->s_answer=a;

}

cout<<"youhavefinshedyourtest!

"<

returnlist_g;

}

/*判卷,得出分数*/

doublemark(listlist_g)

{

intr_num=0;

list:

:

iteratorit;

for(it=list_g.begin();it!

=list_g.end();it++)

{

if(it->m_answer==it->s_answer)

r_num++;

}

cout<<"yourgradeis"<<(r_num*100.0)/list_g.size()<

return(r_num*100.0)/list_g.size();

}

/*保存考试结果

*包括得分

*试题详细

*/

voidsave(doublegrade,listlist_g)

{

grade_save(grade);

stringdetail_file(m_id);

detail_file=detail_file+".txt";

ofstreamfout_detail(detail_file.c_str(),ios:

:

app);

list:

:

iteratorit;

for(it=list_g.begin();it!

=list_g.end();it++)

{

fout_detail<m_question<<'#'

<m_a_choice<<'#'

<m_b_choice<<'#'

<m_c_choice<<'#'

<m_d_choice<<'#'

<m_answer<<'#'

<s_answer<

}

}

/*保存得分*/

voidgrade_save(doublegrade)

{

ostringstreamos;

os<

stringgrade_file("grades.txt");

ifstreamfin(grade_file.c_str());

listlist_grade;

chartmp_str[100]={0};

constchar*seperate="#";

char*result=NULL;

stringline;

boolexist=false;

while(fin.getline(tmp_str,100))

{

line=tmp_str;

result=strtok(tmp_str,seperate);

if(!

strcmp(m_id.c_str(),result))

{

line=line+"#"+os.str();

exist=true;

}

cout<

list_grade.push_back(line);

}

if(!

exist)

{

line=m_id+"#"+m_name+"#"+os.str();

list_grade.push_back(line);

}

ofstreamfout_grade(grade_file.c_str(),ios:

:

trunc);

list:

:

iteratorit;

for(it=list_grade.begin();it!

=list_grade.end();it++)

{

fout_grade<<*it<

}

}

stringm_id;

stringm_name;

stringm_passwd;

};

classTeacher{

public:

Teacher(stringname="admin",stringpasswd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1