认证主体:宁夏凯米世纪网络科技有限公司
IP属地:宁夏
统一社会信用代码/组织机构代码
91640100MA774ECW4K
1、在线考试系统java题目在线考试系统1、实验目的熟练运用java开发环境及工具、并用av语言编写程序;掌握面向对象的概念;掌握系统功能模块的合理划分,并实现各模块接口的连接;掌握/s结构的编程方法;设计数据库模型。2、实验内容编辑生成试题库,随机生成本次考试试题,同时提供在线评分并保存结果。选择access作为后台的数据库。3、实验过程在线考试系统信息管理评卷管理试卷管理题库管理成绩管理考试管理用户管理权限管理31系统模块部分设计题库管理:用于对单个试题的增、删、改、查等基本维护,还可对题库进行数据备份和数据还原。我们针对不同题型、不同应用范围及不同科目对试题进行维护。试卷管理:可进
2、行三种组卷方式的维护:随机组卷、人工组卷、综合组卷。还可对考生的基本信息进行维护。考试管理:对考试分配试卷,并对考试的基本信息进行维护。相当于人工安排考试的过程评卷管理:对试卷的客观题分配评卷人,并对评卷人基本信息进行管理。成绩管理:对每次考试的学生成绩的基本信息进行维护,并提供学生成绩的统计管理。用户管理:对使用本系统的用户基本信息进行维护,用户多数为:系统管理员、老师、教务处人员、其他权限管理:对系统的访问权限进行管理,并对用户可进行权限的分配。系统应该具备的基本功能各模块需完成以下功能:题库管理试卷管理试卷其他维护试卷信息维护其它维护试题维护基本维护综合组卷人工组卷随机组卷题型维护科目维
3、护范围维护题型维护:对试题的题型进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。范围维护:对试题的应用范围进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。科目维护:对试题的科目进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。试题维护:对试题的基本信息进行增、删、改、查操作。在操作之后会自动刷新主页,以使信息更新。其他维护:对试题信息的批量查询,并可进行数据导出、数据备份、数据恢复。随机组卷:用户只需对试卷题型进行设置就可组卷的方式。人工组卷:可使用户选择试卷的题型中的试题的组卷方式。综合组卷:是随机组卷与人工组卷的混合组卷方式,即用户对某一类型的
5、、查操作。成绩其他维护:对考生成绩信息的批量查询,并可进行数据导出、数据备份、数据恢复。用户管理权限管理信息管理权限信息维护用户基本信息信息基本维护用户分配权限用户基本信息维护:对使用本系统的用户进行维护,而用户的权限由权限管理进行维护,并分配给用户,使用户只能访问自己拥有的权限内。权限信息维护:对基本的权限进行维护,用户可自定义维护权限。用户分配权限:对未分配权限的用户进行权限的分配,即对分配权限的增、删、改、查操作。信息基本维护:我们的信息除了有关考试的信息外,还有公告、新闻、留言信息需要我们维护,其中公告、新闻由后台有权限的人进行增、删、改、查操作,而留言是由前台的用户(学生)或游客录入
6、的,我们要防止垃圾数据显示,即对留言有权更改等操作。3.系统结构图、本系统分为学生前台子系统和考试管理子系统,整个系统的结构图如下:在线考试系统考生前台后台管理题库管理评卷管理考试管理试卷管理成绩管理用户管理权限管理学生登陆3.数据库设计试题类型表(estontypable):其中包括了试题的类型的基本信息,如类型名称、答题方式、说明信息等字段;录入时,我们将答题方式确定为大概几种类型:填空方式,选择方式,问答方式,判断方式,综合方式。试题范围表(uestinund_tae):用于控制试题应用的范围,如同样的科目语文,在小学、初中、高中、大学都有,由此我们设定了此表,此表中有范围名称、
8、式(有随机出卷、人工出卷、综合出卷)、试卷名称、试卷应用范围(与试题范围相对应)、试卷所属科目(与试题科目相对应)、试题标题级别、试题标题内容、试题总类型、试题个数、试题总id等基本信息。学生表(studt_tble):用于保存学生的考试的用户名及登陆密码。成绩表(grade_tble):用于存储学生的考试成绩。评题表(appraiser_qustin_table):对于主观题的答案我们须要评卷人(有权限的用户)进行手工评卷,本表用来存储评卷人评卷的一些信息。答案表(sdent_asertae):用于存储学生问答题的答案,如试卷id,学生d及各种试题类型的答案字段。用户表(us_tabe):用
9、于保存用户的登陆的基本信息及分配的权限。权限表(prie_tble):用于存储用户组织的的权限,通过分配操作模块的权限组织权限。4、关键代码及其分析41-ervegi.a-blcoidationpeformd(actinvente)i(.getource()=lo)/boonb=gin();stnguernm=ptionne.hoinpudilg(this,请输入用户名,输入用户名,joptinpane.quesion_essage).tm();strgpassword=joptiopane.owinptalo(this,请输入密码,输入密码,jotinpane.quio
10、n_mssage).ri();f(username=ul|pssord=nu)uernam=temp;password=emp;rtun;dminch(usename,passwor);/验证管理员if(tf=tue)joptinpane.hwmessgedlo(th,登陆成功!,成功,opiopane.ifationmssae);toolbr.etvisble(tre);splitone.sevile(tre);lsejopionpan.showmesgedalog(s,登陆失败!,失败,ptinpne.errormesa);rrn;elseif(e
12、rue)lnareappen(severmanager.inkshow(servrmanaer.linstats)n);elsejptinae.sowmssgedg(hs,服务器还没有启动不能进行操作,警告信息,jtopaneinfomtion_messag);eseif(etsource()=srutton)if(tart=tue)uerarea.append(servergerusrs(ervemage.usestatu)+n);serarea.ppen(seermangr.cunthw(srrmanaer.n);elsepuicvoiadmincek(st
13、rings1,ring2)conectbeancbnewcnctbe();i(!cbopencnnection())sys.otprinn(连接数据失败);sysemexi();return;4.-sr_lin.jav-/定义一个接收用户登陆的类puboir()stns=nul;ts=inreadutf();/接收考试号和密码,然后分别取出stigtokenizrst=nwtrgtokenizr(s,);if(thsorokns())strst.ntoken();str2=s.netken();systmout.printn(usram:+str);ss
14、eot.pri(asswod:+tr);catch(ioeptin)e.prntstckac();/读取数据库里的用户信息并进行验证tynetbeacbnwonnecbn();if(!cbponnectin()ssem.out.rintln(连接数据失败);system.et(1);retrn;b.creteprpadsttemen(seletflafrmstunfohersno=+1+rsultsetrcb.executquery();srgm;wie(r.xt())=rtsting(lag);yem.out.prntl(标识:+m);i(!m.e
17、)erstatus=loginhadr!n;sershow(setats);ervsoctsnull;socku=nu;intpot=8001;trs1=nwsrversckt(por1);sestats=listerpr:+or1;ersho(serstas);cath(ioexcio)erintactrace();whe(tu)ryyo=saet();tch(ioxcioe).inttactrace();if(u!=ul)counter+;ucoun=现在参加考试的人数为:+cnr;countsw(ucount);if(c
18、ountermaoun)usrstats=usip+u.gtnetaddres()+cnct+pt进行登陆;ueshw(usersttus);/第一个线程启动nwserveloin(o).strt();elsserttus=sesip+u.etinetadress()+cnected+por1+中断线程启动;uersow(uestatu);/中断线程启动ewmxcounr(ou);td1.start();/启动一个响应客户端读取试题的线程threadd=newtrad(tw)pblicvoidru()etats=tread2star!;
19、ersow(inkstats);seersockets=null;npr2=8002;rys2=nwsresocket(port2);instus=listenrheport:+port2;lsho(srstts);ctch(ioxcioe)e.rinttackrae();he(tue)sockeo=ull;tryou2=s2.accpt();catch(oeptne)sckte();f(you!nll)userstaus=useriyu2.genetddres()+onned+pot2+进行读题;ushow(se
20、rsatu);neserver_adt(you2)trt();td2.tar()/启动一个接收用户答应并存储的线程thradtd3newthread(thee)serescketss=ull;inport3=003;publicvidru()sestatushead3start!;sesw(serstau);ryss3=eseresocket(port);linkstt=lisnerthprt:+port3;linkhow(nkatus);ctch(ioeptone)cktrce();while(true)scktyo3ul
21、l;yyou3=s.ccept();atch(xctone)e.rntstacktrace();if(ou!=nl)usersttusersip+yugtinetarss()+onced+port3+提交答案;usrshow(erstatus);第3个线程启动neserver_readscre(you3).stat();td3.ar();/启动一个用户查询的线程threatd4newtrad(for)servrsockes4=ul;inort4=8004;publvoidr()serstus=thrastart!;sersho(ratus)
22、;yss4=newseverscket(por4);linstus=ltenerthepot:+por4;linho(linkstu);ca(ioexceptie).pintstacktrce();while(true)socketyo4=u;tryyou4=ss4.acpt();ctc(ioexcptone)e.prisacktrae();f(yu4!null)uerstatus=uersiyu4.tineadress()+nnecte+prt+进行查询;usersho(eratus);.4-servr_redtejav-publi
23、voidrun()srgsl2;/定义查询语句srndb=以下为试题;/试题strings=ull;/接收用户发送的考试科目ttont=0;/试题的数目tr/网络连接部分out.writtf(你连接成功);s=iredutf();ln(ts);数据库连接部分/查询客户端所选试题cnnctbancbneonectbean();if(!b.opencnncio()syste.u.pritln(连接数据失败);system.exit(1);en;/在数据库选题q2selc*fomexamreeids+;cb.crea
25、cetioe).pnsacktrace();systmou.println(notconnectdb);atch(ioxto1)ssem.upritl(noeadlieset!);4.5-/servr_radsor.java-/定义一个接收用户答案的类,判断对错,将分数返回到用户端,并将成绩存入数据库publicsererredscoe(scetsoke)/-创建网络连接-/this.soet=socket;.ublcvdru()/-接收用户提交的答案-/ryedey=in.eautf();system.outrinln(adkey);ath(ioexc
26、eine)e1pittactrac();stigtoenizers=nestringtenzer(eadke,);if(st.hasmoretkens()/客户传来答案的第一个字符为用户名,第二个字符为考试科目str=token().trim();yemout.pritn(用户为:+s1);u=ineger.aseit(sr);i(stc.hasoretoens()第二个字符为考试科目s2=s.exttokn().tim();ysm.t.prinln(试题类型为:+sr2);./-在数据库获取正确答案-/tconncteanb=ew
27、cnnectean();if(!cpenonnection())ssemot.println(连接数据失败);sysemei(1);return;.-判断分数-/fr(iti=0;nteger.paseit(sr4);i+)i(seransweriequls(crreanswer))oun;ystm.utpintln(用户:+t1+,你的得分为:+out);/将分数返回到客户端tryu.wrtuf(nterostring(count);sste.out.println(将分数返回到客户端);out.fush();otoe();catc(ioexein)
28、eprsacktrac();-将分数存到数据库-/yonectbeanbnwcnectban();f(!bopencecio()sysem.u.prntn(连接数据失败);systm.ext();return;preparesttemenps=cbcreatepepadteet(ubjct);s.stint(1,nt);ps.tint(2,u);p.xecteupdae();ytem.ot.nn(更新成功);cb.cmmi();cb.lose();ach(sqlexcptione)todo自动生成ctch块sytem.ou.println(写入数据发生错误!!/
29、ne);4.-ervr.ava-.publcstatioidmain(stingags)newserver();.4-stgui.jv-ubividaionprform(tinente)f(e.getsurce()=calp)/呼叫服务器f(soke!=nul&in!=nulu!=null)/消除以往的连接信息trsock.cle();in.close();out.o();cath(eeptionee)striglogn=user+,pss;ntort1=001;r/建立网络连接scket=newsct(ip,o
30、rt1);i=newdatanuta(ck.genputram();ou=newdatotputstrem(socktgetutputtra();ot.writeuf(ogin);tch(ioeceptnee)/如果连接失败pfed.sttx(呼叫失败);staefieldseext(你呼叫没有成功);itpo4=00;trysocke=newscke(ip,prt4);n=nwdatanputsream(socktgetinputtram());outewdataouputream(sce.getottstrm());ut.wrieut(user);stu
31、nfo.settxt(请求信息已发送);catch(oexceptionee)/如果连接失败ipfeld.setext(呼叫失败);stated.setex(你呼叫没有成功);stuinfo.stext(你呼叫没有成功);if(ockt!=ull)/如果连接成功trngquernfoi.reautf();/得到查询结果tuinf.sette(quryinfo);out.fluh();t.co();catch(oexcpine1)/出现异常ohenosetxt(数据传输错误);li(e.getsourc()=beginex)/生成试题strngmgr=(stng)subject.etselecteem();if(mgequ(英语))/选择英语electt();elsif(mrequals(数学))/选择数学selett();statefild.stext(你已经选择了+r+试题);tinfo.settxt(你已经选择了mgr+试题);tattest.setenbled(ru);elseif(getso