基于SSM框架的投票管理系统设计与实现

发布于:2022-11-28 ⋅ 阅读:(1218) ⋅ 点赞:(1)

目 录
摘 要 I
ABSTRACT II
1 绪论 1
1.1 选题的背景和意义 1
1.2 国内外研究现状 2
1.2.1 国内的研究现状 2
1.2.2 国外的研究现状 2
1.3 论文组织结构 3
1.4 本章小结 4
2 核心使用技术分析 5
2.1 Javascript 5
2.2 Ajax 5
2.3 MySQL 5
2.4 SSM框架 5
2.5 JSP 6
2.6 B/S模式 6
2.7 EasyUI 7
2.8 系统开发平台及运行环境 8
2.8.1 系统开发平台 8
2.8.2 运行环境 9
2.9 本章小结 9
3 需求分析 10
3.1 功能需求分析 10
3.2 非功能需求分析 12
3.3 可行性分析 12
3.3.1 经济可行性 12
3.3.2 技术可行性 13
3.4 本章小结 13
4 系统设计 14
4.1 系统架构 14
4.2 系统功能模块设计 14
4.3 系统工作流程设计 16
4.3.1 系统总体工作流程设计 16
4.3.2 用户投票流程设计 17
4.4 数据库设计 17
4.4.1 数据库概念设计 18
4.4.2 数据库逻辑设计 21
4.5 本章小结 22
5 系统实现 24
5.1 关键代码分析 24
5.2 前台功能模块 30
5.2.1 首页 30
5.2.2 登录注册 30
5.2.3 投票中心 32
5.2.4 投票历史 32
5.3 后台功能模块 33
5.3.1 管理员登录 33
5.3.2 投票信息管理 34
5.3.3 详细投票查看 35
5.3.4 用户信息管理 35
5.3.5 投票信息统计 36
5.4 本章小结 37
6 系统测试 38
6.1 测试的目的与目标 38
6.2 测试方法 38
6.3 测试用例 39
6.4 测试结论 39
6.5 本章小结 40
7 结论与展望 41
致 谢 42
参考文献 43
3 需求分析
需求分析就是详细分析要解决的问题,弄明白问题的要求,包括需要输入哪些数据,将要得到何种结果,最后期望输出什么等。总之,“需求分析”在软件工程当中就是确定要计算机“做什么”[7]。通过本章将了解到投票管理系统的功能需求分析、非功能需求分析和可行性分析。
3.1 功能需求分析
对于投票管理系统来说,最主要的功能就是用户投票功能。如果用户想要进行投票操作,前提是需要注册且处于登录状态。为了满足用户的投票需求,系统需要提供简洁、有效、多样的投票方式。投票方式需支持单选只能投一次、单选一天只能投一次、多选只能投一次、多选一天只能投一次等四种常见方式。
综上,投票管理系统既要实现对于投票的管理,又要实现对于用户的管理,还要兼顾到各个功能模块之间的协调合作,共同完成投票管理系统的业务需求。下面采用UML用例模型对系统功能需求进行分析。
构建UML用例模型的第一步是确定模型中的使用者有哪些,确定使用者的原则有:谁是系统的维护者、谁是系统的参与者等。一般维护者处于系统内部,对系统有绝对的控制权;而参与者一般都位于系统的外部,处于系统的控制之外。
经过对投票管理系统的分析,可以确定本系统用例模型有两种,用户(用户分为游客和注册用户)和系统管理员。本文转载自http://www.biyezuopin.vip/onews.asp?id=14017下面分别对这三个角色的功能进行描述:
1)用户
用户分为游客和注册用户,其中游客只能浏览系统公共部分的内容,还可以注册成为系统用户;注册用户则可以登录系统、进行投票和查看投票历史。用户主要功能如下(图3-1为用户用例图):
a. 登录;
b. 投票;
c. 查看投票历史;
在这里插入图片描述

图3-1 用户用例图
2)系统管理员
系统管理员主要负责系统的后台管理工作,主要功能如下(图3-2为系统管理员用例图):
a. 投票信息管理;
b. 查看投票详细信息;
c. 用户信息管理;
d. 统计投票信息;
在这里插入图片描述

图3-2 系统管理员用例图
确定了用户用例模型和管理员用例模型后,就可以构建投票系统的用例模型,整个系统的用例图如图3-3系统总体用例图所示:
在这里插入图片描述
在这里插入图片描述

图3-3 系统总体用例图

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>在线投票系统</title>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path;
%>
<c:set var="path" value="<%=basePath%>"></c:set>
<link href='${path }/home-resources/images/reception/index.png' rel='shortcut icon' type='image/x-icon'>
<link href="${path }/home-resources/css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="${path }/home-resources/js/zeroModal/zeroModal.css" />
</head>
<body style="background-color: #EEEEEE;">

	<div style="width: 100%; height: 100%;">
		<div class="container">
			<div class="row clearfix">
				<div class="col-md-12 column">
					<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
						<div class="navbar-header">
							 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
							 <span class="sr-only">Toggle navigation</span>
							 <span class="icon-bar"></span>
							 <span class="icon-bar"></span>
							 <span class="icon-bar"></span>
							 </button>
							 <a class="navbar-brand" href="index.jsp">猿来入此</a>
						</div>
						
						<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
							<ul class="nav navbar-nav">
								<li>
									 <a href="">首页</a>
								</li>
								<li>
									 <a  target="home" style="cursor: pointer;" href="home/vote_list">投票中心</a>
								</li>
								<li>
									 <a id="mineCenter-link" userId="${user.id}" target="home" style="cursor: pointer;" href="home/vote_history_list">投票历史</a>
								</li>
							</ul>
							<ul class="nav navbar-nav navbar-right" style="margin-right: 10px;">
								<li class="dropdown">
									 <c:if test="${user != null }">
									 	<a href="#" class="dropdown-toggle" data-toggle="dropdown">
										 	<img class="img-circle" src="home-resources/images/reception/photo.jpg" alt="Photo" style="width: 30px; height: 30px;" />	
										 	<strong class="caret"></strong>
										 </a>
										<ul class="dropdown-menu">
											<li>
												<a href="home/change_pwd?id=${user.id}" id="self">${user.name }</a>
											</li>
											<li class="divider"></li>
											<li>
												<a href="home/login_out">退出登录</a>
											</li>
										</ul>
									 </c:if>
									 <c:if test="${user == null }">
										<div class="btn-group" style="margin-top: 5px;">
											<button type="button" class="btn btn-default btn-sm" id="studentLogin">登录</button>
											<button type="button" class="btn btn-default btn-sm" id="studentRegister">注册</button>
											<a href="system/login" target="_blank" class="btn btn-default btn-sm" id="studentLogin">登录后台</a>
										</div>
									 </c:if>
								</li>
							</ul>
						</div>
					</nav>
				</div>
			</div>
		</div>
		<div style="margin-top: 0px; width: 100%;height:950px;">
			<iframe src="home.jsp" width="100%" height="100%" name="home"></iframe>
		</div>
	</div>


	<!-- js引入 -->
	<script src="${path }/home-resources/js/jquery.js"></script>
	<script src="${path }/home-resources/js/bootstrap/bootstrap.min.js"></script>
	<script src="${path }/home-resources/js/zeroModal/zeroModal.min.js"></script>
	<script src="${path }/home-resources/js/login.js"></script>
	<script type="text/javascript">
		$(function() {
			$("#examCenter-link, #mineCenter-link").click(function() {
				//判断是否登录
				var userId = $(this).attr("userId");
				if(userId.trim() == "" || userId == null) {
					zeroModal.show({
						title: "提示",
						content: "登录后才能查看",
						width : '200px',
						height : '130px',
						overlay : false,
						ok : true,
						onClosed : function() {
							location.reload();
						}
					});
					return false;
				}
			});
			
			$("#self").click(function() {
				var href = $(this).attr("href");
				zeroModal.show({
					title: "Self",
					content: "个人信息查看",
					width : '400px',
					height : '200px',
					top : '100px',
					left : '430px',
					url: href,
					overlay : false,
					ok : true,
					onClosed : function() {
						location.reload();
					}
				});
				return false;
			});
		});
	</script>
</body>
</html>

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

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