基于Servlet WebSocket MySQL实现的网络在线考试系统

发布于:2022-12-27 ⋅ 阅读:(247) ⋅ 点赞:(0)

目录
1.开发工具选择: 2
2.开发环境: 2
3.本报告的主要内容: 2
4.关系型数据库 3
5.创建数据库表 3
6.系统总体结构及功能模块划分 3
6.1需求分析 3
6.2 用例建模包括用例设计,用例规约等 6
6.3系统整体架构设计,架构图 8
6.4类图 8
6.5设计模式 9
6.6顺序图 11
6.7测试过程 12
总结 13
1.开发工具选择:
采用一个开放源代码的、基于Java的可扩展开发平台eclipse作为主要开发工具,以及一个大型关系数据库管理系统MySQL 作为数据管理工具,MySQL workbench数据库可视化工具协助管理数据库。
2.开发环境:
开发系统:Win10
JDK环境:jdk1.8.0_251
开发工具:Eclipse for Java EE4.7(Oxygen)
Web服务器:apache-tomcat-9.0.36
web开发技术:eclipse2019
数据库:mysql-8.0.20-winx64
浏览器:最佳为Google Chrome浏览器
分辨率:最佳效果为1440*900像素
3.本报告的主要内容:
本报告详细的介绍了网络在线考试系统的开发过程,主要涉及到的工作如下:考试的一些重要功能,本文转载自http://www.biyezuopin.vip/onews.asp?id=15276如:数据库设计、考试计时模块设计、考试科目模块设计,系统运行与测试。
功能要求:
1.学生用户注册
2.学生用户登录
3.学生查看个人考试科目
4.学生选择考试科目,选择考试试卷,进入考试
5.考试时间倒计时,查看答题卡
6.学生交卷,倒计时结束自动交卷,执行非法动作自动交卷
7.系统自动评分
8.学生查询成绩
4.关系型数据库
关系数据库由表组成。一个关系是由一个二维表来定义的:表的行保存事物的一组属性数据,表的列定义了事物的属性。
5.创建数据库表
设计如下所示的实体和属性的定义:
试卷信息(试卷ID,试卷名称,创建时间,答题时间,科目ID)
考试答案信息(考试ID,问题答案,创建时间,问题ID)
考试问题信息(问题ID,问题标题,问题类型,创建时间,试题答案ID,分数,试卷ID)
考试科目信息(考试ID,考试科目,创建时间)
学生登录信息(ID,用户名,密码,真实姓名,email)
成绩信息(ID,用户名,分数,试卷ID)
6.系统总体结构及功能模块划分
6.1需求分析
问题陈述
现有的大部分学生无法在线下参与考试。在设计初始考虑到的问题不够全面,仅仅用于处理事务比较简单,功能模块较少,系统不够完美。
在线考试系统在设计之初必须考虑到用户的多元化,各个用户的用户需求有所不同,应充分考虑用户需求,定制适合用户使用的功能模块,更贴心的服务于用户。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String msg = request.getParameter("msg");
pageContext.setAttribute("msg", msg);
%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>在线考试————登录</title>
    <!-- Bootstrap -->
    <link href="<%=basePath %>bootstrap-3.3.5-dist/css/bootstrap.min.css" rel="stylesheet">
	<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    <script src="<%=basePath %>bootstrap-3.3.5-dist/js/jquery-1.11.3.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script type="text/javascript" src="<%=basePath %>bootstrap-3.3.5-dist/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="<%=basePath %>proJs/login.js?v=0.55"></script>
  </head>
<style type="text/css">
html,body {
	height: 100%;
}
.box {
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#003700', endColorstr='#003700'); /*  IE */
	background-image:linear-gradient(bottom, #003700 0%, #003700 100%);
	background-image:-o-linear-gradient(bottom, #003700 0%, #003700 100%);
	background-image:-moz-linear-gradient(bottom, #003700 0%, #003700 100%);
	background-image:-webkit-linear-gradient(bottom, #003700 0%, #003700 100%);
	background-image:-ms-linear-gradient(bottom, #003700 0%, #003700 100%);
	
	margin: 0 auto;
	position: relative;
	width: 100%;
	height: 100%;
}
.login-box {
	width: 100%;
	max-width:500px;
	height: 400px;
	position: absolute;
	top: 50%;

	margin-top: -200px;
	/*设置负值,为要定位子盒子的一半高度*/
	
}
@media screen and (min-width:500px){
	.login-box {
		left: 50%;
		/*设置负值,为要定位子盒子的一半宽度*/
		margin-left: -250px;
	}
}	

.form {
	width: 100%;
	max-width:500px;
	height: 275px;
	margin: 25px auto 0px auto;
	padding-top: 25px;
}	
.login-content {
	height: 300px;
	width: 100%;
	max-width:500px;
	background-color: rgba(255, 250, 250, .6);
	float: left;
}		
	
	
.input-group {
	margin: 0px 0px 30px 0px !important;
}
.form-control,
.input-group {
	height: 40px;
}

.form-group {
	margin-bottom: 0px !important;
}
.login-title {
	padding: 20px 10px;
	background-color: rgba(0, 128, 0, .6);
}
.login-title h1 {
	margin-top: 10px !important;
}
.login-title small {
	color: #fff;
}

.link p {
	line-height: 20px;
	margin-top: 30px;
}
.btn-sm {
	padding: 8px 24px !important;
	font-size: 16px !important;
}
</style>
<body >
<div class="box">
		<div class="login-box">
			<div class="login-title text-center">
				<h1><small>在线考试系统(IBM课程设计)</small></h1>
			</div>
			<div class="login-content ">
			<div class="form">
			<form id="loginform" action="<%=basePath %>syslogin" method="post">
			
				<div class="form-group">
					<div class="col-xs-12  ">
						<div class="input-group">
							<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
							<input type="text" name="USERNAME" class="form-control" placeholder="用户名">
						</div>
					</div>
				</div>
				
				<%//提示用户名密码错误 %>
				<c:if test="${not empty msg }">
					<script type="text/javascript">
						var msg=<%=msg%>;
						if(msg==1){
							alert ('用户名密码错误!');
						}else if(msg==2){
							$(function(){
								alert ('注册失败!');
								register();	//打开注册窗口
							});
						}else if(msg==3){
							alert ('该用户已经存在!');
							$(function(){
								register();	//打开注册窗口
							});
						}
					</script>
				</c:if>
				<div class="form-group">
					<div class="col-xs-12  ">
						<div class="input-group">
							<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
							<input type="password" name="PASSWORD" class="form-control" placeholder="密码">
						</div>
					</div>
				</div>
				<div class="form-group form-actions">
					<div class="col-xs-4 col-xs-offset-4 ">
						<button type="submit" class="btn btn-sm btn-info" ><span class="glyphicon glyphicon-off"></span> 登录</button>
					</div>
				</div>
				<div class="form-group">
					<div class="col-xs-6 link">
						<p class="text-center remove-margin"><small>忘记密码?</small> 
						</p>
					</div>
					<div class="col-xs-6 link">
						<p class="text-center remove-margin"><small>还没注册?</small> <a href="javascript:void(0)" onclick="register ()" id="link_reg"><small>注册</small></a>
						</p>
					</div>
				</div>
			</form>
			</div>
		</div>
	</div>
</div>
<script type="text/javascript">
function register (){
	$("#registerModal").css({'margin-top':function (){return '300';}}).modal();
}
</script>



<div class="modal fade" id="registerModal">
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
				<button class="close" data-dismiss="modal">
					<span aria-hidden="true">&times;</span>
					<span class="sr-only">Close</span>
				</button>
			</div>
			<div class="modal-body" >
			<form id="registerform" action="<%=basePath %>sysregister" method="post">
				<div class="form-group">
					<div class="col-xs-12  ">
						<div class="input-group">
							<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
							<input type="text" name="USERNAME" id="username" class="form-control" placeholder="用户名" maxlength="20" onfocus="$('#usernameInfo').show()" onblur="$('#usernameInfo').hide()" />
						</div>
					</div>
					<div class="well" id="usernameInfo" style="display: none;">
						提示:用户名长度为6-20位英文或数字!
					</div>
				</div>
				
				<div class="form-group">
					<div class="col-xs-12  ">
						<div class="input-group">
							<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
							<input type="password" name="PASSWORD" id="password" class="form-control" placeholder="密码" maxlength="20" onfocus="$('#passwordInfo').show()" onblur="$('#passwordInfo').hide()">
						</div>
					</div>
					<div class="well" id="passwordInfo" style="display: none;">
						提示:密码长度为6-20位英文或数字!
					</div>
				</div>
				
				<div class="form-group">
					<div class="col-xs-12  ">
						<div class="input-group">
							<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
							<input type="password" name="REPASSWORD" id="repassword" class="form-control" placeholder="重复密码" maxlength="20" onfocus="$('#repasswordInfo').show()" onblur="$('#repasswordInfo').hide()">
						</div>
					</div>
					<div class="well" id="repasswordInfo" style="display: none;">
						提示:要与上面输入的密码一致哦!
					</div>
				</div>
				
				<div class="form-group">
					<div class="col-xs-12  ">
						<div class="input-group">
							<span class="input-group-addon"><span class="glyphicon glyphicon-tower"></span></span>
							<input type="text" name="NAME" id="wxname" class="form-control" placeholder="fullname" maxlength="20" onfocus="$('#wxnameInfo').show()" onblur="$('#wxnameInfo').hide()">
						</div>
					</div>
					<div class="well" id="wxnameInfo" style="display: none;">
						提示:真实姓名哦!
					</div>
				</div>
				
				<div class="form-group">
					<div class="col-xs-12  ">
						<div class="input-group">
							<span class="input-group-addon"><span class="glyphicon glyphicon-send"></span></span>
							<input type="text" name="EMAIL" id="email" class="form-control" placeholder="邮箱" maxlength="100" onfocus="$('#emailInfo').show()" onblur="$('#emailInfo').hide()">
						</div>
					</div>
					<div class="well" id="emailInfo" style="display: none;">
						提示:xxxxx@xx.com,这是找回密码的重要凭证!
					</div>
				</div>
				
				<div class="form-group form-actions">
					<div class="col-xs-4 col-xs-offset-4 ">
						<button type="button" class="btn btn-sm btn-info" onclick="subRegister()"><span class="glyphicon glyphicon-off"></span> 注册</button>
					</div>
				</div>
			</form>
			</div>
			<div class="modal-footer">
				<button class="btn btn-default" data-dismiss="modal">关闭</button>
			</div>
		</div>
	</div>
</div>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到