考试系统.docx
- 文档编号:28645404
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:29
- 大小:19.92KB
考试系统.docx
《考试系统.docx》由会员分享,可在线阅读,更多相关《考试系统.docx(29页珍藏版)》请在冰豆网上搜索。
考试系统
//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;
};
/*从文件中加载所有试题*/
list
{
charfilename[20]="test.txt";
ifstreamfin(filename);
chartmp_str[400]={0};
list
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; list 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}; list 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< cout< cout<<"A."< cout<<"B."< cout<<"C."< cout<<"D."< cout<<"correctanswer: "< cout<<""< "< i++; if(i==3) { i=0; system("pause"); } } cout<<"checkover! "< system("pause"); } private: /*获取试题*/ list { list 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; } list 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< cout<<"A."< cout<<"B."< cout<<"C."< cout<<"D."< 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; } /*答题*/ list { chara; list : iteratorit; for(it=list_g.begin();it! =list_g.end();it++) { cout< cout< cout<<"A."< cout<<"B."< cout<<"C."< cout<<"D."< cout<<"inputyouranswer: "; cin>>a; it->s_answer=a; } cout<<"youhavefinshedyourtest! "< returnlist_g; } /*判卷,得出分数*/ doublemark(list { 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,list { 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< < < < < < < } } /*保存得分*/ voidgrade_save(doublegrade) { ostringstreamos; os< stringgrade_file("grades.txt"); ifstreamfin(grade_file.c_str()); list 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考试 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)