基于JSP的IQ智力测试系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85811319
资源下载地址:https://download.csdn.net/download/sheziqiong/85811319
目 录
摘 要 2
Abstract 4
第一章 引言 8
1.1 课题背景以及研究内容 8
1.1.1 课题背景 8
1.1.2 IQ智商测试系统的特点 8
1.13 IQ测试知识普及 8
第二章 课题设计方案以及难点 10
2.1设计方案 10
2.2实现难点 10
2.2.1 Servlet的搭建 10
2.2.2 ajax的异步认证 10
2.2.3 系统初始化 10
2.2.4 分页数据提交 11
2.2.5 计分统计 11
2.3设计难点最终解决方案 11
第三章 课题的总体架构设计 11
3.1系统加构简介 11
3.2开发环境 12
3.3技术简介 12
3.3.1 Servlet 12
3.3.2 Ajax技术 13
3.3.3 JDBC技术 15
3.3.4 CSS与JavaScript技术 17
3.3.5 MVC架构 17
3.3.6 Spring 18
3.3.7 Apache DBUtils 18
3.3.8 JSP技术 19
3.3.9 Jquery 21
3.3.9 Junit测试 22
3.4开发规范 22
第四章 系统实施 24
4.1部署方案 24
4.1.1 MyEclipse的安装 24
4.1.2 JDK的的简介以及安装 25
4.1.3 Tomcat的简介及其安装 28
4.1.4 MySql数据库的安装 31
4.1.5 开发环境的配置 33
第五章 系统实现 36
5.1 表结构设计 36
5.1.1 用户表(user): 36
5.1.2 试题表(iqinfo): 36
5.1.3 分数表(scoreinfo): 36
5.2代码结构 37
5.2.1系统框架: 37
5.2.2工程结构简介 37
5.2.3 关键实体类简介 39
5.3模块展示 42
5.3.1登入模块 42
5.3.2管理模块 43
5.4 系统测试 46
5.4.1 JUNIT工具介绍 46
5.4.2 JUNIT测试用例 47
5.4.3 FindBugs代码检查 49
第六章 总 结 51
第二章 课题设计方案以及难点
2.1设计方案
本次安全管理系统的网站设计与国内很多网站设计的思路是一致的。严格基于MVC的设计思想,前端通过一个jsp来设计一个前台登入页面,通过用户名和密码时行后台校验,验证成功后方可登录系统。用户信息保存在Session会话中,会话过期将会导致用缓存信息失效,最后通过apache出色的开源框架dbutils来将前台页面与后台数据库相结合。通过这几项处理,一个基本的IQ测试系统的框架就能基本完成了。
2.2实现难点
2.2.1 Servlet的搭建
Servlet 是在服务器上运行的小程序。这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。
2.2.2 ajax的异步认证
Ajax是web2.0时代中一个具有代表性的技术。他可以通过后台与服务器的少量数据交换来实现网页的异步更新。但是他的使用必须遵循一定的硬性要求,所以所在网站设计方面,这方面的难点还是要考虑到的。
2.2.3 系统初始化
由于采用的是标准IQ测试题库,题目中的信息已经维护到数据库中,同步读取只会加大应用端与数据库端的负载,这里想到一些固定的信息,比如题目及分数在应该初始化的时候加载到内存中,目前决定采用单例+监听的方式来加载。
2.2.4 分页数据提交
在顺序答题时,有六十道题要加载到页面,放在同一页肯定影响展示和操作的方便,这里需要进行分页展示;分页展示定时功能和题目的先后顺序会受影响;这里采用session会话按type类型顺序操作,写了一个顺序算法来解决。
2.2.5 计分统计
每个提交答卷的用户,都希望很快看到结果,这里采取同步计算分数的方式,但对于每题都和结果比对一下,会加大服务器压力,性能下降;这里采用的是将分数根据题目编号初始化到内存中,在内存中计算速度超级快的,然后固化到数据库中。
2.3设计难点最终解决方案
前三个难点是自己通过参考书籍以及根据自己学的那些基础来解决的,后面难点是自己征求了知道老师的意见和指导进行设计的,自己验证了一下发展比较科学而且容易实现。
第三章 课题的总体架构设计
3.1系统加构简介
在这里插入图片描述
架构图

3.2开发环境
开发工具:Eclipe+MyEclipe;
JDK版本:JDK6.0;
数据库 : MYSQL7.0
服务器 : Tomcat7.0
技术支持:控制层:Servlet;展示层:JSP;持久层:dbutils;
前端技术:Jquery+CSS+EasyUI;
系统支持:Window环境。

登录页面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>用户登录</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<link rel="shortcut icon" href="images/favicon.ico">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
		<script type="text/javascript"
			src="js/jquery-easyui-1.2.6/jquery-1.7.2.min.js">
</script>
		<link rel="stylesheet" type="text/css"
			href="js/jquery-easyui-1.2.6/themes/default/easyui.css" />
		<link rel="stylesheet" type="text/css"
			href="js/jquery-easyui-1.2.6/themes/icon.css" />
		<script type="text/javascript"
			src="js/jquery-easyui-1.2.6/jquery.easyui.min.js">
</script>
		<script type="text/javascript"
			src="js/jquery-easyui-1.2.6/locale/easyui-lang-zh_CN.js">
</script>
		<script type="text/javascript">
$(function() {

	//字符验证组件 
	$('#loginname,#password').validatebox( {
		required : true,
		missingMessage : '输入不能为空'

	});
	$('#btn').click(function() {
		if (!$('#myform').form('validate')) {
			$.messager.show( {
				title : 'warn',
				msg : '验证不通过,表单不能提交!'
			});
			return false; //当表单验证不通过的时候 必须要return false 
		}
	});

});
</script>
	</head>
	<body>
		<center>
			<br />
			<br />
			<%
				if (request.getAttribute("res") != null) {
			%>
			<font color="red"><%=request.getAttribute("res")%></font>
			<%
				}
			%>
			<br />
			<br />
			<table border="1" bordercolor="#D2E9FF" width="625px"
				bgcolor="#F5F5F5"
				style="BORDER-LEFT-WIDTH: 0px; BORDER-COLLAPSE: collapse; BORDER-RIGHT-WIDTH: 0px;">
				<tr>
					<td height="126" background="images/logo.png" align="center">
					</td>
				</tr>
				<tr>
					<td align="center">
						<form action="LoginServlet" id="myform" method="post">
							<table height="205px" width="360px" bgcolor="#FFFAF0"
								style="margin-top: 40px; margin-bottom: 40px">
								<tr height="60">
									<th align="center" colspan="2" style="font: 22px;">
										登录中心
									</th>
								</tr>
								<tr>
									<td align="right">
										用户名:&nbsp;&nbsp;
									</td>
									<td>
										&nbsp;&nbsp;
										<input type="text" name="loginname" id="loginname" size="21" />
										<input type="hidden" name="method" value="login">
									</td>
								</tr>
								<tr>
									<td align="right">
										密&nbsp;&nbsp;&nbsp;&nbsp;码:&nbsp;&nbsp;
									</td>
									<td>
										&nbsp;&nbsp;
										<input type="password" name="password" id="password" size="23" />
									</td>
								</tr>
								<tr>
									<td align="center" colspan="2">
										<input type="submit" value="登录" id="btn" />
										&nbsp;&nbsp;&nbsp;&nbsp;
										<input type="reset" value="重置" /><!--
										&nbsp;&nbsp;&nbsp;&nbsp;
										<a href="jsp/login/reg.jsp">注册?</a>
									--></td>
								</tr>
							</table>
						</form>
					</td>
				</tr>
				<tr style="font-style: italic; font-size: 15px;">
					<td height="40" bgcolor="#FFFAF0" align="center">
						<font size="2px" color="blue">Please use IE8 and IE9 to display the best effect.</font>
						<br>
					</td>
				</tr>
			</table>
		</center>
	</body>
</html>

用户信息界面代码:

<%@ page language="java" import="java.util.*,com.bysj.po.*,com.bysj.dao.*,com.bysj.dao.impl.*,com.bysj.util.*"
	pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<%
	User user = (User) request.getAttribute("user");
	if (user == null) {
	} //重新登录
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>user</title>
		<script type="text/javascript"
			src="js/jquery-easyui-1.2.6/jquery-1.7.2.min.js">
</script>
		<link rel="stylesheet" type="text/css"
			href="js/jquery-easyui-1.2.6/themes/default/easyui.css" />
		<link rel="stylesheet" type="text/css"
			href="js/jquery-easyui-1.2.6/themes/icon.css" />
		<script type="text/javascript"
			src="js/jquery-easyui-1.2.6/jquery.easyui.min.js">
</script>
		<script type="text/javascript"
			src="js/jquery-easyui-1.2.6/locale/easyui-lang-zh_CN.js">
</script>
		<script type="text/javascript">
$(function() {

	//字符验证组件 
	$('#loginname,#password').validatebox( {
		required : true,
		missingMessage : '输入不能为空!'

	});
	$('#age').numberbox( {
		//required : true,
		missingMessage : '输入必须是数字!',
		precision : 0
	});
	$('#btn').click(function() {
		if (!$('#myform').form('validate')) {
			$.messager.show( {
				title : '警告',
				msg : '验证失败,不能提交表单!'
			});
			return false; //当表单验证不通过的时候 必须要return false 
		}

	});

});
</script>
<script type="text/javascript">
$(document).ready(function(){ 
	$("#myselect").change(function(){ 
	var v = $(this).children('option:selected').val(); 
	if(v==0){
		alert("请选择有效的类别!");	
	}else{
		$.ajax({
			type: "POST", //用POST方式传输
			dataType: "json", //数据格式:JSON
			cache:false,  
      	    async:false, 
			url: "ServerGuestServlet?method=queryLever", //异步请求
			data: "superid="+v,  
			error : function(XMLHttpRequest,textStatus, errorThrown) {
				alert(errorThrown);
			},
			success : function(json) {
				if(json.result){
					var lis="";
					 $.each(json.list, function(i, item) { //可以对已经 申请的服务标记
				    	lis+="<input name=\"sid\" type=\"radio\" value="+item.id+"><label for=\"radio\">"+item.servername+"</label>";
				    	if((i+1)%4==0){
				    		lis+="<br/>";//每行四个
				    	}
                	 }) 
                 	 $(".classtype").html(lis);      //将遍历出来的数据呈现在所需位置
				}else{
					alert(json.msg);
				}
			}
			});
	}
	
	}) 
});
</script>
	</head>
	<body>
		<center>
			<br>
			<%
				String res = (String)request.getAttribute("res") ;
				if("ok".equals(res)){
					%>
					<font color="red">更新成功!</font>
					<% 
				}
			 %>
			<br><br>
			<form id="myform" method="post" action="UserSevlet?method=update">
				<table width="40%" border="1" cellpadding="0" cellspacing="0"
					style="border-collapse: collapse; border-color: blue;">
					<tr class="line_g hover_bg" align="center" bgcolor="lightblue">
						<th colspan="2">
							用户信息查看|变更
						</th>

					</tr>
					<tr>
						<td align="right">
							登录名:&nbsp;&nbsp;
						</td>
						<td>
							&nbsp;&nbsp;
							<input type="text" name="loginname" id="loginname" value="<%=user.getLoginname() %>" size="21" disabled="disabled"/>
							<input type="hidden" name="role" value="<%=user.getRole() %>"  />
							<input type="hidden" name="uid" value="<%=user.getUid() %>">
						</td>
					</tr>
					<tr>
						<td align="right">
							用户名:&nbsp;&nbsp;
						</td>
						<td>
							&nbsp;&nbsp;
							<input type="text" name="username" id="username" size="21" value="<%=BysjUtil.parseString(user.getUsername()) %>"/>
						</td>
					</tr>
					<tr>
						<td align="right">
							年龄:&nbsp;&nbsp;
						</td>
						<td>
							&nbsp;&nbsp;
							<input type="text" name="age" id="age" value="<%=user.getAge() %>" size="21" />
						</td>
					</tr>
					<tr>
						<td align="right">
							电话:&nbsp;&nbsp;
						</td>
						<td>
							&nbsp;&nbsp;
							<input type="text" name="tel" id="tel" size="21" value="<%=BysjUtil.parseString(user.getTel()) %>"/>
						</td>
					</tr>
					<tr>
						<td align="right">
							身份证:&nbsp;&nbsp;
						</td>
						<td>
							&nbsp;&nbsp;
							<input type="text" name="cardno" id="cardno" size="21" value="<%=BysjUtil.parseString(user.getCardno()) %>"/>
						</td>
					</tr>
					<tr>
						<td align="right">
							地址:&nbsp;&nbsp;
						</td>
						<td>
							&nbsp;&nbsp;
							<input type="text" name="addr" id="addr" size="21" value="<%=BysjUtil.parseString(user.getAddr()) %>"/>
						</td>
					</tr>
					<tr>
						<td align="right">
							性别:&nbsp;&nbsp;
						</td>
						<td>
							&nbsp;&nbsp;
							<input type="radio" name="gender" value="boy" checked="checked" />
							男 &nbsp;&nbsp;
							<input type="radio" name="gender" value="girl"/>
							女
						</td>
					</tr>
					
					<tr align="center">
						<td colspan="2">
							<input type="submit" id="btn" value="更新" />
							&nbsp;&nbsp;&nbsp;&nbsp;
							<input type="reset" value="重置" />
						</td>
					</tr>
				</table>
			</form>
		</center>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资源下载地址:https://download.csdn.net/download/sheziqiong/85811319
资源下载地址:https://download.csdn.net/download/sheziqiong/85811319

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/125500510