Java Web应用开发——在线模拟考试系统的设计与实现
finally {
//释放数据库连接 rs.close(); stmt.close(); conn.close(); } %>
4.2 登陆注册模块
4.2.1 登录模块
用户登录页面比较简单,为防止用户登录的操作错误,应设置错误处理页面,在登录操作过程中,一般发生的错误有:用户输入了错误的用户名或密码、用户直接单击了登录按钮,对上述情况的判断就要通过Servlet文件来实现。当用户登录的时候,输入的帐号或者密码有其中一项为空时,会有提示框提示,提示您帐号或者密码不能为空。实现这个功能的是用javascript实现的,具体代码如下所示:
验证输入不为空的脚本代码
在登录页面时,当用户提交了登录资料后,就由“loginvc.jsp”这个页面进行验证,它的工作
16
Java Web应用开发——在线模拟考试系统的设计与实现
主要是连接到数据库,从数据中找出输入的用户名和密码并判断其是否一致。如果用户输入了错误的用户名和密码,就会跳出一个登录失败的页面。
用户可以点击返回按钮回到其刚才登录的界面,然后重新输入用户名及密码进行再次登录。若用户提交正确的用户和密码后,如果记录验证无误,就通过JSP重定向语句response.sendRedirect()跳转到相应的主界面。
教师以及管理员的登录验证跟考生相似,只是查询条件和连接的数据库表不同,以及登陆成功之后,跳转的页面不同。
4.2.2 考生注册模块
在此模块,考生需要填写用户名、密码、确认密码、真实姓名。如若填写中缺少一项,那么会有提示,其功能也是由上面所说的一样,通过调用javascript实现的,这里只提供下截图,主要代码如上,如图4-1所示:
图4-1 注册提示页面
当用户填写的内容完全符合注册标准后,点击注册按钮,会转到注册成功的页面;如若用户名已经被注册,会转到注册失败页面,提醒注册用户可能是该用户名已经注册。在此只以注册成功的页面为例,如图4-2所示:
图4-2 注册成功页面
17
Java Web应用开发——在线模拟考试系统的设计与实现
完成注册模块的主要代码如下所示:
首先获取上个页面传过来的数据,用户名、密码、真实姓名
String username = request.getParameter(\ String password = request.getParameter(\ String realname = request.getParameter(\
out.println(username); //打印出username 其次开始连接数据库 try{
Class.forName( \Connection
conn=DriverManager.getConnection(\d=890427&useUnicode=true&characterEncoding=gbk\
Statement stmt=conn.createStatement(); ResultSet rs=null; 查询user表,看用户名是否存在
String sql=\ rs=stmt.executeQuery(sql);
如果存在,提示“ 您好,您注册的用户名已经存在,请重新输入 ”,如果不存在,把接收过来的值付给新的变量:
String s_username=request.getParameter(\ String s_password=request.getParameter(\ String s_realname=request.getParameter(\执行SQL插入语句,把得到的值插入到user表中
sql = \
value('\
如果插入成功,提示:“恭喜您注册成功!”
4.3考生模块
考生登录系统并且用户名也密码正确后,会直接跳转到学生主页,本页面中,考生可以在左侧选择自己下一步要做的事情,有开始考试、历史成绩查询、修改密码。在页面中间,有提示语,告诉考生每个按钮都可以操作什么功能;若考生对考试流程不太熟悉,可以点击帮助,来查询相关问题的答案。如图4-3所示:
18
Java Web应用开发——在线模拟考试系统的设计与实现
图4-3考生主页
4.3.1 开始考试模块
考生点击开始考试,会首先弹出关于所选考试科目的一些介绍,比如考试时间和总共有多少道题目等,然后点击开始考试,倒计时开始,考生选择上一题,下一题进行答卷,当考生答到最大题数时,下一题变成完成答卷按钮。点击完成答卷,进入成绩页面,考生可以知道自己的成绩,并且,成绩通过后台,插入到数据库中。如图4-4所示:
图4-4 考生考试页面
执行的具体代码如下所示: <%
HttpSession sess=(HttpSession)request.getSession(true); int category = (Integer)sess.getAttribute(\ String username = request.getParameter(\ MysqlDjtDao md = new MysqlDjtDao(); //引进包
19
Java Web应用开发——在线模拟考试系统的设计与实现
int valid = md.selectTestRecordByuser(username,category);//去test_record表查询有无考试记录
valid=0;//控制返回值,自己可以自由修改。 if( valid==0 ){
Calendar cl = Calendar.getInstance();//java util 包 表提供的系统时间Calendar long starttime = cl.getTimeInMillis();//得到当前时间的毫秒数
long endtime = starttime+1800000; sess.setMaxInactiveInterval(3600); //设置session的存活时间 sess.setAttribute(\ sess.setAttribute(\ List
tmid.add(0);//设置默认值0
sess.setAttribute(\ int fenshu =0;
sess.setAttribute(\
List
List
List
Random rand = new Random();//Java提供的得到数字的类 for( int a=0;a int hao = rand.nextInt(listsId.size()-1);//取一个随机数,不超过题目的总数 rand.nextInt()取一个随机数 for( Integer vd:tmid ){//去掉重复的题 泛型循环 if( vd==hao ){ hao = rand.nextInt(listsId.size()-1);//如果重复再重新抽,即重新生成一个随机数 } } int bcid = listsId.get(hao);//根据抽到的数得到该题目的Id号 Question qs = md.selectQInfoByid(bcid);//根据Id号查询题目的信息 allwts.add(qs);//把查到的题目的信息插入到allwts集合中 tmid.add(hao);//把已经用过的随机数放入集合,防止重复抽题 } sess.setAttribute(\%> }else{ request.setAttribute(\已经答过题了,不能重复答题!\ 20
毕业论文-基于JavaWeb的在线考试系统的设计与实现-精品



