宿迁学院考研资讯网的设计与实现

系统简介

本科毕业后继续深造成为诸多学子的又一选择。据校内统计数据显示,宿迁学院考研学生数也成逐年上升的趋势。学生在选择报考院校及复习考试的过程中,需要获取相关信息来帮助自己做出最有利于自己的决策。但目前,考研的相关信息比较零散,学生需要花费大量时间去查找,却不一定能获得很全面的信息,不利于选择合适的院校和专业。考研资讯网旨在根据宿迁学院学生报考院校的特点,来搜集和汇总考研相关信息并以网站的形式呈现出来,让学生能够更快速地查阅到相关信息,帮助学生在节约时间的同时做出更准确的判断和决策。
本文主要描述了系统的设计和实现过程,首先确定系统的功能需求,然后基于MySQL设计和实现了数据库;最后基于Java语言和SSM框架完成编码工作实现该网站。系统整合了报考院校、往年真题、往年录取情况、参考书目、常见论坛等信息,能够为广大考研学生提供快速、便捷的查找渠道。

关键词 考研资讯网 Java语 SSM框架 MySQL数据库

引言

近年来,互联网急速发展,网络已经涉及到世界的各个行业,身为学生的我们更是不能离开互联网。对于即将毕业的大四学生来说,考研是最关心的问题,那么势必就需要一个好的网站来提供有用的考研信息,来方便学子们及时了解考研的相关动态,来及时的调整我们学习的重点方向,所以考研资讯网的开发有着重要的意义。在人们日常生活和工作经历中,专业性的信息资讯网也是越来越受到人们的重视,数以万计的人们活跃在网站中,为各个行业的兴旺和交流起到了很大的作用。
在考研热潮的现状下下,大量的学生以及家长想了解这方面的相关信息,考研资讯网就是一个为考研人群提供信息的平台,以便帮助孩子及时的掌握大的考研方向,所以这个资讯网的建立是很有必要的,它会给很多人带来方便。
在设计和实现系统之前,首先做了大量的调研和数据收集工作,根据调研结果和数据特点来确定系统需求,以便最后实现的系统能够达到预期目标,方便考研学生快速、便捷地查找相关信息。
在这样的背景下,考研资讯网系统的实施具有如下现实意义:
第一,通过开发这次考研资讯网系统,能够将自己所学的技术应用于实践的开发中,使自己不仅仅限于理论,更可以立足于实践,为毕业后做项目打下基础。
第二,考研是现在很多大学生和家长所感兴趣的问题,而通过系统游客不需要注册登录,可以自由地随时了解考研新动态,方便广大学子和家长。
第三,通过整个资讯网的开发,我详细的了解了软件开发的流程,为日后走上工作岗位开发软件打下基础。
本课题旨在让宿迁学院想要考研的学生通过考研资讯网,来快速便捷地查询到报考院校,可以通过对报考院校、专业、年份等的选择来查看相关专业的备考科目、参考书籍、常见论坛等信息。

1.相关技术

1.1 开发工具的选择
本论文选择Apache Tomcat作为服务器。Tomcat适用于中小型系统的免费开源服务器,其性能及稳定性受到广泛认可。后台框架则整合了Spring和Mybatis作为控制层和持久层,它们同属于轻量级框架,以配置XML文件为主的方式易学易上手且耦合性较低,后期维护时可酌情直接更改各层级的实现类而不影响整体的系统架构。前端选用HTML、JQuery实现页面设计和动态请求,JQuery封装的Ajax简化了程序。同时我们还借助于Maven将一个项目拆分成多个工程,完成了团队间的合作,也会将依赖的jar包自动的导入到项目中来,极大地减少了学习成本。引入Bootstrap前端框架,用来快速的创建简约页面。
1.2 数据库
选取MySQL作为我们的数据库同时使用SQLyog作为我们的辅助性开发数据库工具。该数据库可以降低成本,支持多种操作系统

2.需求分析

2.1 流程分析
考研资讯网的设计与实现系统的主要面向的服务对象是平台管理员和有需求了解考研相关信息的学生用户。系统的主要功能是向学生用户展示考研的相关信息和考研相关数据的统计结果并查看各个报考院校的官网信息;向平台管理员提供方便快捷的数据填报途径。考研资讯网的设计与实现系统整体框架如图1所示:
在这里插入图片描述

图1考研资讯网的设计与实现系统总体结构设计图
2.2 系统可行性分析
2.2.1 管理可行性研究
(1)系统管理:互联网高度发展的今天,对于基本的信息化操作已经不再是管理的重难点所在,Web操作界面简便易懂,人机交互性良好,已成为企业主流的系统管理方式,系统管理可行性极高。
(2)数据管理:建立在算法基础之上的零售数据管理随着系统功能的逐步实现,将渐由人工转向智能,大批量的数据最终存储在远程的数据库中,处理过程交由系统实现,大大降低人工管理的难度,不但节省人力成本而且使得数据管理过程不易出错,也更加便于维护。
2.2.2 法律可行性分析
本系统设计前双方达成共识,不存在知识侵犯、数据泄露和责任等问题。
2.2.3 经济可行性研究
本系统在数据收集方面,由学院提供大量各专业学生考研的相关数据,在一定程度上降低了我的工作量。其次本系统需要软硬件配置都不高并且开发周期短所以在经济上可行。
考研资讯网的实现为考研学生节约了寻找考研院校专业等相关信息的时间,并提供了往届学生成功考研的学校信息及其录取分数。在政策形势的双重激励下,Web开发成本大大降低,加之其服务人群是社会的新一代人才,市场导向明确,经济可行性毋庸置疑。
2.2.4 技术可行性研究
本次开发建立在学院的大数据支持下,考研相关数据有效性得到保障,数据分析通过数据库及java语句来实现编码从而不用考虑分析算法及数据结构本身带来的问题,降低了复杂度的同时使得开发过程得以将大部分精力用于系统本身的设计实现,侧面缩短了开发周期,提高了开发质量。
Web开发技术经过多年的发展,市场流行的开发框架从前端到后台无不趋于完善。选用轻量级的Apache Tomcat服务器,其性能及稳定性受到广泛认可。Spring是一个轻量级的并且面向切面Java 开发框架,能将简单的组件组合成更为复杂的应用,后期维护时可酌情直接更改各层级的实现类而不影响整体的系统架构。SpringMVC把业务逻辑、数据结构、图形界面显示分离出来并各自组织代码,减小逻辑接口和数据接口耦合性此外,系统开发完成后可以部署在云服务器上,这些软硬件设备市面上都有多家公司提供,所以在技术上也是可行的。

3.系统设计

3.1 系统设计目标
系统开发的总体任务是实现本考研资讯网管理游客查询考研相关的各种信息管理的规范化和自动化,从而达到本考研资讯网管理工作高效率的目的。这样可以提高考研资讯网管理效率,让考研学生不需要从这个网站到另一个网站,到处搜查信息,能够更加快捷的传递信息,实现信息化的管理,减少人力物力的投入。使用计算机来搜集资源会受到限制,可以充分地利用Spring技术和MySQL的功能,设计出具有我们所需要的功能的软件,同时我们也要尽量减少系统对于资源的占用,界面的设置要使用户使用起来感觉舒适和便捷。系统同时也要保证游客查询信息时的安全性和保密性。
3.2 系统功能设计
在做这次考研资讯网系统的总体规划的前提下,个人认为开发系统最重要的是先确定自己想要的系统是什么样子的。制定出此次考研资讯网系统的总体规划的时候,是立足于对考研资讯网系统全面分析调查的基础之上的。系统设计包括以下这几个模块,分别是:管理员登录设计、信息查询设计、报考院校设计、参考书目、往年录取、常见论坛和往年真题等。
基于对数据流图的分析,得到了层次化的模块结构图。
考研资讯网系统使用功能图如图2所示:

在这里插入图片描述

图2考研资讯网系统使用功能图
3.2.1登录模块
系统用户分为游客和管理员,游客不需要注册账户就可以游览信息。管理员登录进行信息管理,主要是管理学生考研的基础信息,具有信息新增、信息删除和信息的更新、修改和查询等功能。普通学生用户无法进入使用该功能。
在这里插入图片描述

图3管理员登录设计图
3.2.2信息查询模块
在集中收集和整理考研数据的基础上,实现对报考院校信息、参考书目和往年录取等数据的增删改查等功能。查询考研信息时显示报考院校,学院,专业,年份,报考院校及官网链接等信息。访问权限不受限制,普通用户状态也能查询。
在这里插入图片描述

图4管理员登录管理设计流图
3.2.3报考院校模块
此部分主要是从不同学院不同专业对学生考研的报考院校的数据进行整理,给出专业的不同报考院校及其院校的官网链接。
3.2.4参考书目模块
此部分将给出不同院校不同专业的参考书目,通过对院校和专业的选择给出不同的参考书目。
在这里插入图片描述

图5参考书目设计流图

3.3 系统数据库设计
数据库用来盛放系统数据,方便数据的存储及管理,此外数据库也是系统迁移和数据更替的重要手段。数据库设计应当基于系统的需求和功能,一个完善的数据库应可以支持所有系统功能和将来功能拓展,所以在设计数据库时也需按照用户的需求进行需求分析。
3.3.1概念结构设计
概念模型的建立是从数据本身出发的,主要描述的是系统中的数据在传输和存储等过程中的不同状态,用数据项来体现这些状态。
通过以上的数据分析,我们可以知道用户所需的各个实体以及它们之间的关系。
(1)院校
在这里插入图片描述

图8院校实体属性图
(2)专业
在这里插入图片描述

图9专业实体属性图
(3)管理员
在这里插入图片描述

图10管理员实体属性图

实体、属性、联系这三者为E-R模型的组成元素,而E-R模型用E-R图表示。此系统中有很多名称都是相通的,同一个属性会出现在不同的实体或表中。
从数据需求分析中得出系统的实体属性图,包含院校、专业、学科、参考书目、常见论坛以及往年真题等实体,得出系统E-R图,如图16所示:
在这里插入图片描述

图16 E-R图
3.3.2 数据库表逻辑结构设计
根据数据库概念设计,严格遵守数据库设计三范式,将数据结构模型转换为关系模型。规则如下:
(1)保证每一个实体和实体中的属性都是不可再分的数据项。
(2)实体中的非主属性都完全依赖于组合主键,也即只有由实体的组合主键才能唯一确定实体中的每项非主属性。
(3)实体中的非主属性不存在依赖的函数关系。
(4)一对多关系体现于多端关系中,以外键的形式表现出来。
(5)多对多关系将关系转换为关系实体。
根据数据库的转换规则,将宿迁学院考研资讯网的设计与实现系统所需的关系模型转换为如下:
(1)管理员信息表(管理员Id,用户名,密码)
(2)报考院校信息表(院校Id,院校名,院校官网链接)
(3)专业信息表(专业Id,专业名,方向Id,方向名)
(4)参考书目信息表(图书Id,图书名,作者,出版社)
(5)论坛信息表(论坛Id,论坛名,论坛链接)
(6)往年真题信息表(真题Id,真题名,真题链接)
(7)学科信息表(学科Id,学科名)
(8)录取信息表(年份,院校名,专业名,最高分,最低分,录取人数,Id)
(9)院校—专业信息表(院校Id,院校名,专业Id,专业名)
(10)方向—学科信息表(方向Id,方向名,学科Id,学科名)
(11)学科—参考书目信息表(学科Id,学科名,图书Id,图书名)
(12)学科—真题信息表(学科Id,学科名,真题Id,真题名)
(13)学科—论坛信息表(学科Id,学科名,论坛Id,论坛名)
3.3.3 数据库物理结构设计
以上介绍了本系统基本的逻辑结构,下面将介绍本系统全部的物理结构设计。
(1)管理员信息表,如表1所示
表1管理员信息表(user)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
userrId char(2) 主键 UNIQUE 管理员编号
userName varchar(10) UNIQUE 账户
userPassword varchar(6) UNIQUE 密码
注:管理员的个数一般只有几个,若编号为各位则在前面加个0,故将userId的长度设置为2。密码固定设置为六位数,故将userPassword的长度设置为6。

(2)报考院校信息表,如表2所示
表2 报考院校信息表(school)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
schoolId char(10) 主键 UNIQUE 院校编号
schoolName varchar(10) UNIQUE 院校名
schoolWebsite varchar(100) UNIQUE 院校官网链接

(3)专业信息表,如3所示
表3 专业信息表(major)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
majorId char(7) 主键 UNIQUE 专业编号
majorName varchar(10) UNIQUE 专业名
注:majorId代表各个学校专业的编号,而编号都为七位数,故majorId的类型为char类型,长度为7。

(4)参考书目信息表,如表4所示
表4 参考书目信息表(book)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
bookId char(4) 主键 UNIQUE 图书编号
bookName varchar(10) UNIQUE 图书名
author varchar(20) UNIQUE 作者
pruss varchar(20) UNIQUE 出版社

(5)论坛信息表,如表5所示
表5 论坛信息表(forum)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
forumId varchar(10) 主键 UNIQUE 论坛编号
forumName varchar(10) UNIQUE 论坛名
forumWebsite varchar(100) UNIQUE 论坛链接

(6)真题信息表,如表6所示
表6 真题信息表(question)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
questionId varchar(100) 主键 UNIQUE 真题编号
questionName varchar(100) UNIQUE 真题名
questionWebsite varchar(100) UNIQUE 真题链接

(7)科目信息表,如表7所示
表7 科目信息表(subject)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
subjectId char(3) 主键 UNIQUE 学科编号
subjectName varchar(10) UNIQUE 学科名

(8)往年录取信息表,如表8所示
表8 往年录取信息表(admission)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
id varchar(10) 主键 UNIQUE 编号
year date UNIQUE 年份
schoolName varchar(10) UNIQUE 院校名
majorName varchar(10) UNIQUE 专业名
maxScore char(3) UNIQUE 最高分
minScore char(3) UNIQUE 最低分
enrolment varchar(10) 录取人数

(9)院校-专业信息表,如表9所示
表9 院校-专业信息表(schoolMajor)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
schoolId varchar(100) UNIQUE 院校编号
schoolName varchar(10) UNIQUE 院校名
majorId char(7) UNIQUE 学科编号
majorName varchar(10) UNIQUE 学科名

(10)专业-学科信息表,如表10所示
表10 专业-学科信息表(majorSubject)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
majorId char(7) UNIQUE 方向编号
majorName varchar(10) UNIQUE 方向名
subjectId char(3) UNIQUE 学科编
subjectName varchar(10) UNIQUE 学科名

(11)学科-参考书目信息表,如表11所示
表11 学科-参考书目信息表(directionSubject)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
subjectId char(3) UNIQUE 学科编号
subjectName varchar(10) UNIQUE 学科名
bookId char(4) UNIQUE 图书编号
bookName varchar(20) UNIQUE 图书名

(12)学科-真题信息表,如表12所示
表12 学科-真题信息表(subjectQuestion)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
subjectId char(3) UNIQUE 学科编号
subjectName varchar(10) UNIQUE 学科名
questionId varchar(100) UNIQUE 真题编号
questionName varchar(100) UNIQUE 真题名

(13)学科-论坛信息表,如表13所示
表13 学科-论坛信息表(subjecForum)
字段名 数据类型(长度) 主/外键约束 其他约束 说明
subjectId char(3) UNIQUE 学科编号
subjectName varchar(10) UNIQUE 学科名
forumId varchar(10) UNIQUE 论坛编号
forumName varchar(10) UNIQUE 论坛名

4.系统实现

4.1 网站首页的实现
网站首页包括学院板块和登录板块。登录板块是实现对管理员进入管理系统的一个验证功能。它用来验证管理员登录时所输入的信息,以此来确定管理员登录的身份。然而系统中所有用户的登录都是通过系统首页的初始界面来展现的。
在本系统运行的时候,管理员需要登录才能进行接下来的操作,管理员的登录信息验证主要涉及:管理员的账号、密码是否与数据库中所存的用户信息相匹配。如果管理员不能进入本系统的管路系统,则说明信息输入不对,这时系统将给出管理员提示信息。反之管理员将成功登录系统。
在地址栏中输入运行网址则表明系统成功的运行,系统运行首页如图5-1所示。用户输入正确的网址后,即来到了网站的首页,如下图所示:
在这里插入图片描述

图17网站首页
在首页中可以选择自己的学院专业,进入后的页面如下图所示:
在这里插入图片描述

图18专业页面
若游客想查看其他院校专业的相关信息,可重新在导航条上选择学院专业。
4.2 报考院校界面的实现
点击报考院校进入报考院校的页面,相关信息直接显示。如下图所示:
在这里插入图片描述

图19报考院校界面
点击院校网址即可进入院校官网。
4.3 参考书目界面的实现
点击参考书目进入页面,可以通过选择院校专业学科来查看相关的参考书目。如下图所示:
在这里插入图片描述

图20参考书目界面
在这里插入图片描述

图21选择后参考书目的界面

4.8 后台管理员管理信息界面
管理员成功登录后,可在此页面对管理员信息进行增删改,对学校、专业、学科、书籍、往年录取记录以及论坛进行增删改查。如下图所示:
在这里插入图片描述

图27管理员管理信息

结 论

本次毕业设计主要以数据库设计和系统功能设计为主,系统完成了数据填报模块的设计和实现。数据库方面完成了基本数据的录入,表结构的优化及查询效率的优化。
建立一个小型的考研信息网站,既可以方便考研同学的学习,也可以让更多的人群去了解考研的相关知识,从经济和需求上分析,能够节省大量考研交流的时间。此设计因时间和自身能力的原因,页面设计不够完美,数据内容不够充分。在独自完成系统开发的过程中,需要去了解学习的知识面非常广泛,不仅仅是服务端的代码,前端的JS甚至到整体页面风格的设计以及框架的合理运用都需要亲自操刀,对缺乏开发经验的我来说都是一项不小的考验。
本次的毕业设计让我学到了很多,亲历整个开发流程在思想上给了我不小的鼓舞,大学四年一步步扎实的知识积淀最终会成为终生的财富,这无疑将引领我在未来的路上无畏前行。

附 录A

附录A1 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<title>首页</title>

 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <script type="text/javascript" src="static/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="static/js/highcharts.js"></script>
<script type="text/javascript" src="static/js/exporting.js"></script>
<script type="text/javascript" src="static/js/highcharts-3d.js"></script>
<script type="text/javascript" src="static/js/buildCharts.js"></script>
<script type="text/javascript" src="static/js/index.js"></script> 

<link rel="stylesheet" href="static/css/index.css">
<link rel="stylesheet" href="static/css/common/bottom_menu.css">
<%
	pageContext.setAttribute("APP_PATH", request.getContextPath());
%>
</head>
<body>
	 <%@ include file="WEB-INF/views/common/top_menu.jsp" %>
     <div class="row">
	      <div class="bottom">
			  <a href="" class="link">关于我们</a><span>|</span> 
			  <a href="" class="link">常见问题</a><span>|</span>
			  <a href="" class="link">违规投诉</a><span>|</span> 
			  <a href="" class="link">用户协议</a><span>|</span>
			  <span>咨询电话:18751089368(每天8:00 - 23:00</span>
			  <p>
				  <span>版权所有,盗版必究</span>
			  </p>
		  </div>
     </div>
</body>
</html>
附录A2 top_menu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	pageContext.setAttribute("APP_PATH", request.getContextPath());
%>
<script type="text/javascript" src="${APP_PATH }/static/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="${APP_PATH }/static/js/ajaxfileupload.js"></script>
<script type="text/javascript" src="${APP_PATH }/static/js/common/top_menu.js"></script>
<script type="text/javascript" src="${APP_PATH }/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="${APP_PATH }/static/bootstrap-3.3.7-dist/css/bootstrap.css"/>
<link rel="stylesheet" href="${APP_PATH }/static/css/common/top_menu.css"/>
<script>
	$(function(){
		$(".querySecondMenu0").hide();
        $(".querySecondMenu").hide();
        $(".querySecondMenu1").hide();
        $(".querySecondMenu2").hide();
        $(".querySecondMenu3").hide();
        $(".querySecondMenu4").hide();
        $(".querySecondMenu5").hide();
        $(".querySecondMenu6").hide();

        $(".liberal_college a").hover(function(){
            $(".querySecondMenu0").slideDown("fast");
        });
        $(".liberal_college").mouseleave(function(){
            $(".querySecondMenu0").slideUp("fast");
        });

        $(".query_info a").hover(function(){
            $(".querySecondMenu").slideDown("fast");
        });
        $(".query_info").mouseleave(function(){
            $(".querySecondMenu").slideUp("fast");
        });

        $(".information_engineering a").hover(function(){
            $(".querySecondMenu1").slideDown("fast");
        });
        $(".information_engineering").mouseleave(function(){
            $(".querySecondMenu1").slideUp("fast");
        });

        $(".architectural_engineering a").hover(function(){
            $(".querySecondMenu2").slideDown("fast");
        });
        $(".architectural_engineering").mouseleave(function(){
            $(".querySecondMenu2").slideUp("fast");
        });

        $(".index_warn1 a").hover(function(){
            $(".querySecondMenu3").slideDown("fast");
        });
        $(".index_warn1").mouseleave(function(){
            $(".querySecondMenu3").slideUp("fast");
        });

        $(".index_warn2 a").hover(function(){
            $(".querySecondMenu4").slideDown("fast");
        });
        $(".index_warn2").mouseleave(function(){
            $(".querySecondMenu4").slideUp("fast");
        });
        $(".index_warn3 a").hover(function(){
            $(".querySecondMenu5").slideDown("fast");
        });
        $(".index_warn3").mouseleave(function(){
            $(".querySecondMenu5").slideUp("fast");
        });
        $(".index_warn4 a").hover(function(){
            $(".querySecondMenu6").slideDown("fast");
        });
        $(".index_warn4").mouseleave(function(){
            $(".querySecondMenu6").slideUp("fast");
        });

	});
</script>
</head>
<body>
<%
	pageContext.setAttribute("APP_PATH", request.getContextPath());
%>

<div class="container" style="width:auto;">
     <div class="row">
         <div class="header">
              <div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
                     <img class="logo" src="${APP_PATH }/static/image/drug_logo.png" />
              </div>
              <div class="topmenu col-lg-9 col-md-9 col-sm-9 ol-xs-9" style="margin-left:-45px;">
			     <ul>
			    	<li class="home_page"><a href="${APP_PATH }/index.jsp">首页</a></li>
                     <li class="query_info"><a href="${APP_PATH }/law/home">法政学院</a>
			    	   <ul class="querySecondMenu" >
                           <li><a href="${APP_PATH }/law/administration_management" target="content">行政管理</a></li>
                           <li><a href="${APP_PATH }/law/human_resource" target="content">人力资源管理</a></li>
                           <li><a href="${APP_PATH }/law/labor_social" target="content">劳动与社会保障</a></li>
					   </ul>
					</li>
                     <li class="liberal_college"><a >文理学院</a>
                         <ul class="querySecondMenu0" >
                             <li><a href="${APP_PATH }/liberal/chinese_teacher" target="content">汉语言文学</a></li>
                             <li><a href="${APP_PATH }/liberal/primary_education" target="content">小学教育</a></li>
                             <li><a href="${APP_PATH }/liberal/preschool_education" target="content">学前教育</a></li>
                             <li><a href="${APP_PATH }/liberal/information_computing">信息与计算科学</a></li>
                             <li><a href="${APP_PATH }/liberal/applied_mathematics" target="content">数学与应用数学</a></li>

                         </ul>
                     </li>

                     <li class="information_engineering"><a >信息工程学院</a>
                         <ul class="querySecondMenu1" >
                             <li><a href="${APP_PATH }/information/computer_science" target="content">计算机科学</a></li>
                             <li><a href="${APP_PATH }/information/software_engineering" target="content">软件工程</a></li>
                             <li><a href="${APP_PATH }/information/internet_project" target="content">物联网工程</a></li>
                             <li><a href="${APP_PATH }/information/electronic_information_engineering" target="content">电子信息工程</a></li>
                             <li><a href="${APP_PATH }/information/communication_engineering" target="content">通信工程</a></li>
                             <li><a href="${APP_PATH }/information/materials_science_engineering" target="content">材料科学与工程</a></li>

                         </ul>
                     </li>
                     <li class="architectural_engineering"><a >建筑工程学院</a>
                         <ul class="querySecondMenu2">
                             <li><a href="${APP_PATH }/engineering/civil_engineering" target="content">土木工程</a></li>
                             <li><a href="${APP_PATH }/engineering/traffic_engineering" target="content">交通工程</a></li>
                             <li><a href="${APP_PATH }/engineering/engineering_management" target="content">工程管理</a></li>
                             <li><a href="${APP_PATH }/engineering/urveying_mapping_engineering" target="content">测绘工程</a></li>
                             <li><a href="${APP_PATH }/engineering/urban_rural_planning" target="content">城乡规划</a></li>
                             <li><a href="${APP_PATH }/engineering/landscape_architecture" target="content">风景园林</a></li>
                         </ul>
                     </li>

                     <li class="index_warn1"><a href="${APP_PATH }/warning/indexcateg4" >外国语学院</a>
                         <ul class="querySecondMenu3">
                             <li><a href="${APP_PATH }/warning/compareprice" target="content">英语师范</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg4" target="content">英语</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">日语</a></li>
                         </ul>
                     </li>
                     <li  class="index_warn2"><a href="${APP_PATH }/warning/indexcateg4" >商学院</a>
                         <ul class="querySecondMenu4">
                             <li><a href="${APP_PATH }/warning/compareprice" target="content">会计学</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg4" target="content">财务管理</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">市场营销</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">电子商务</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">物流管理</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">互联网金融</a></li>
                         </ul>
                     </li>
                     <li  class="index_warn3"><a href="${APP_PATH }/warning/indexcateg4" >机电工程学院</a>
                         <ul class="querySecondMenu5">
                             <li><a href="${APP_PATH }/warning/compareprice" target="content">机械设计</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg4" target="content">机械电子工程</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">自动化</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">智能制造工程</a></li>
                         </ul>
                     </li>
                     <li  class="index_warn4"><a href="${APP_PATH }/warning/indexcateg4" >艺术传媒学院</a>
                         <ul class="querySecondMenu6">
                             <li><a href="${APP_PATH }/warning/compareprice" target="content">音乐学(师范)</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg4" target="content">音乐学</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">美术学</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">产品设计</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">环境设计</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">数字媒体艺术</a></li>
                             <li><a href="${APP_PATH }/warning/indexcateg3" target="content">广告学</a></li>
                         </ul>
                     </li>
                 </ul>
		      </div>
		      <div class="users col-lg-1 col-md-1 col-sm-1 ol-xs-1">
			       <div class="usersName"><a href="${APP_PATH }/login.jsp">登 录</a></div>
			         <ul class="userMenu ">
				            <li class="safeSet"><a>安全设置</a></li>
				            <li class="out"><a>退出登录</a></li>
			        </ul>
			   </div>
		  </div>
     </div>
 </div>
附录A3 login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>系统登录</title>
<%
	pageContext.setAttribute("APP_PATH", request.getContextPath());
%>
<!-- web路径:
不以/开始的相对路径,找资源,以当前资源的路径为基准,经常容易出问题。
以/开始的相对路径,找资源,以服务器的路径为标准(http://localhost:3306);需要加上项目名
		http://localhost:3306/crud
 -->

<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">

<script type="text/javascript"   src="static/js/jquery-1.12.4.min.js"></script>	
<link rel="stylesheet"  href="static/bootstrap-3.3.7-dist/css/bootstrap.css"/>
<script type="text/javascript" src="static/bootstrap-3.3.7-dist/js/bootstrap.min.js">
</script>
<style type="text/css">
.register {
	float:center;
	border: solid 1px #383838;
	width:300px;
	height:350px;
	background-color:#fbfbfb;
	border:1px solid #B0B0B0;
 	box-shadow:0px 0px 10px #999966;
}


</style>
</head>
<body>
<div class="container">
     <!-- logo -->
     <div class="row">
         <div class="col-md-3 col-sm-4">
			 <img src="static/image/drug_logo.png" />	
		  </div> 
		  <div  class="col-md-1 col-sm-1"> 
		   <br>	 <br>
		  <table style="height:60px;border-color:000000;border-left-style:solid;border-width:1px">
		      <tr>
		          <td valign="top"></td>
		      </tr>
		  </table>
		  </div> 
		  <div class="col-md-4 col-sm-4">
		      <br> <br>
              <h2>登录</h2>
          </div>
     </div>
     <hr>
     <!-- 登录表单 -->
     <div class="row">
         <div class="col-md-6 col-sm-6">
			 <img src="static/image/timg.jpg" />	
		  </div> 
		  <div class="col-md-4  col-sm-4  col-md-offset-1 col-sm-offset-1 register">
			   <h3 align="center">用户登录</h3>
			   <label for="inputusername" class="control-label">用户名</label>
			   <div>
			        <input type="text" name="username" id="username" class="form-control" placeholder="用户名"/> 
			        <span class="help-block"></span>
			   </div>
			   
			   <label for="inputPassword" class="control-label">密码</label>
			   <div>
			       <input type="password" name="password" id="password" class="form-control" placeholder="密码"/>
			       <span class="help-block"></span>
			   </div>
			   <br>
			   
			 
			    
			   <p id="login_error" style="color:red;"></p>
			  
			   <div align="center">
			      <input id="button_submit" type="button" class="btn btn-success" 
			          value="安全登录   "/>
			   </div>
			   <p>忘记密码?<a href="">点击这里</a></p>
		  </div>
     </div>
     
      <hr>
      <div class="row">
        <div class="col-md-12" align="center">
      	<a href="" class="link">关于我们</a><span>|</span> <a href="" class="link">常见问题</a><span>|</span>
		<a href="" class="link">违规投诉</a><span>|</span> <a href="" class="link">用户协议</a><span>|</span>
		<span>咨询电话:18051082728 (每天8:00 - 23:00</span>
		<p>
			<span  style="font-size: 18px;font-weight:bold">版权所有,盗版必究</span>
		</p>
		</div>
     </div>
</div>
<script type="text/javascript">
	$(document).ready(function(){
		$(".register button").mouseover(function(){ 
			$(".register button").fadeTo(300,0.8);
		});
		$(".register button").mouseout(function(){
			$(".register button").fadeTo(300,1);
		});
 	});
	
	var SUCCESS=0;
	var ERROR=1;

	$("#button_submit").click(function(){
		    
			findUser();
		});

	function findUser(){
		var username=$(".register input[name='username']").val();
		var password=$(".register input[name='password']").val();
	
		if(username.trim()=="" || password.trim()==""){
			if(username.trim()=="" && password.trim()=="")
				{
				show_validate_msg("#username", "error", "用户名不能为空");
				show_validate_msg("#password", "error", "密码不能为空");
				return false;
			   }
			else if(username.trim()=="" && password.trim()!=""){
				show_validate_msg("#username", "error", "用户名不能为空");
				show_validate_msg("#password", "success", "");
				return false;
			}
			else{
				show_validate_msg("#username", "success", "");
				show_validate_msg("#password", "error", "密码不能为空");
				return false;
				
			}
		}
		{
			show_validate_msg("#username", "success", "");
			show_validate_msg("#password", "success", "");
		}
		
	
		$.ajax({
			url:"${APP_PATH}/user/getUser",
			data:{"userName":username,
				  "password":password,
				 
				  },
			type:"POST",
			success:function(result){
				if(result.code==100){
					window.location.href="user/index";
				}else{
					$("#login_error").text(result.msg);
				}
			}
		});
	}
	//显示校验结果的提示信息
	function show_validate_msg(ele,status,msg){
		//清除当前元素的校验状态
		$(ele).parent().removeClass("has-success has-error");
		$(ele).next("span").text("");
		if("success"==status){
			$(ele).parent().addClass("has-success");
			$(ele).next("span").text(msg);
		}else if("error" == status){
			$(ele).parent().addClass("has-error");
			$(ele).next("span").text(msg);
		}
	}
</script>
</body>
</html>

附 录B

附录B1 AdmissionController.java
package com.sqc.controller;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sqc.bean.Admission;
import com.sqc.bean.Book;
import com.sqc.bean.Major;
import com.sqc.bean.School;
import com.sqc.bean.User;
import com.sqc.service.AdmissionService;
import com.sqc.service.BookService;
import com.sqc.service.SchoolService;
import com.sqc.utils.Msg;

@Controller
@RequestMapping("/admission")
public class AdmissionController {
	
	@Resource
	AdmissionService admissionService;	
	
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	
	/**
	 * 跳转历年录取列表页面
	 * @param schoolId
	 * @return
	 */
	@RequestMapping("/admissions")
	public String books(String schoolId){
		return "query/admissions";
	}
	
	/**
	 * 分页获取历年录取信息列表
	 * @param pn
	 * @param schoolName
	 * @param schoolWebsite
	 * @return
	 */
	@RequestMapping("/getAdmissions")
	@ResponseBody
	public Msg getschools(@RequestParam(value = "pn", defaultValue = "1") Integer pn,
			@RequestParam(value = "year", required = false) String year){

		PageHelper.startPage(pn, 10);
		List<Admission> admissions =admissionService.selectAllAdmissionByYear(year);

		PageInfo<Admission> page = new PageInfo<>(admissions, 5);
		//page.setTotal(1);
		return Msg.success().add("pageInfo", page);
	}
	
	@RequestMapping("/admissionList")
	public String admins(HttpServletRequest request){
		return "admin/admission-list";
	}
	
	/**
	 * 分页查询管理员列表
	 * 
	 * @param currentPage
	 * @param map
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/admissionPage")
	public  Map<String, Object> queryAdmissionListByPage(@RequestParam(value = "page",defaultValue = "1") int page,
			@RequestParam(value = "limit",defaultValue = "10") int limit) {
		List<Admission> admissionData = null;
		int count = 0;
		admissionData = admissionService.getAdmissionListByPage(page,limit);
		count = admissionService.countAll();
		if (null != admissionData) {
			Map<String,Object> returnObject = new HashMap<>();
			returnObject.put("code", 0);
			returnObject.put("msg", "查询成功");
			returnObject.put("count", count);
			returnObject.put("data", admissionData);
			return returnObject;
		}
		return null;
	}
	
	/**
	 * 打开录取信息添加页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/admission-add")
	public String admissionAdd() {
		return "admin/admission-add";
	}
	
	/**
	 * 添加录取信息
	 * @param JsonParam
	 * @param session    
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/addAdmission")
	public int addAdmissionInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isAdd = 1;
		Admission admission = new Admission();
		try {
			admission.setYear(sdf.parse((String)JsonParam.get("year")));
		} catch (ParseException e) {
			isAdd = -1;
			e.printStackTrace();
		}
		admission.setId(UUID.randomUUID().toString());
		admission.setSchoolName(((String)JsonParam.get("school")));
		admission.setMajorName((String)JsonParam.get("major"));
		admission.setMaxScore((String)JsonParam.get("maxscore"));
		admission.setMinScore((String)JsonParam.get("minscore"));
		admission.setEnrolmen((String)JsonParam.get("enrolmen"));
		try{
			admissionService.addAdmission(admission);
		}catch(Exception e) {
			isAdd = -1;
			e.printStackTrace();
		}
		return isAdd;
	}
	
	/**
	 * 通过id删除录取信息
	 * @param id
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/deleteAdmissionById")
	public int deleteAdmissionById(@RequestParam String id) {
		int isDelete = 1;
		try{
			admissionService.deleteAdmission(id);
		}catch(Exception e) {
			isDelete = -1;
		}
		return isDelete;
	}
	
	/**
	 * 打开录取信息编辑页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/admission-edit")
	public String admissionEdit(@RequestParam("id") String id, Model model) {
		model.addAttribute("admission", admissionService.getById(id));
		return "admin/admission-edit";
	}
	
	/**
	 * 更新录取信息
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/updateAdmission")
	public int updateAdmissionInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isUpdate = 1;
		Admission admission = new Admission();
		try {
			admission.setYear(sdf.parse((String)JsonParam.get("year")));
		} catch (ParseException e) {
			isUpdate = -1;
			e.printStackTrace();
		}
		admission.setId(((String)JsonParam.get("id")));
		admission.setSchoolName(((String)JsonParam.get("school")));
		admission.setMajorName((String)JsonParam.get("major"));
		admission.setMaxScore((String)JsonParam.get("maxscore"));
		admission.setMinScore((String)JsonParam.get("minscore"));
		admission.setEnrolmen((String)JsonParam.get("enrolmen"));
		try{
			admissionService.updateAdmission(admission);
		}catch(Exception e) {
			isUpdate = -1;
		}
		return isUpdate;
	}
	
}
附录B2 SchoolController.java
package com.sqc.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sqc.bean.School;
import com.sqc.bean.User;
import com.sqc.service.SchoolService;
import com.sqc.utils.Msg;

@Controller
@RequestMapping("/school")
public class SchoolController {
	
	@Resource
	SchoolService schoolService;	
		
	/**
	 * 前台-跳转学校列表页面
	 * @param schoolId
	 * @return
	 */
	@RequestMapping("/schools")
	public String schools(String schoolId){
		return "query/school";
	}

	@RequestMapping("/getSchool")
	@ResponseBody
	public Msg getSchool(String schoolId){
		School school= schoolService.getSchool(schoolId);
		return Msg.success().add("school", school);
		
	}
	
	/**
	 * 分页获取院校信息列表
	 * @param pn
	 * @param schoolName
	 * @param schoolWebsite
	 * @return
	 */
	@RequestMapping("/getSchools")
	@ResponseBody
	public Msg getschools(@RequestParam(value = "pn", defaultValue = "1") Integer pn,
			@RequestParam(value="schoolName",required=false) String schoolName,
			@RequestParam(value="schoolWebsite",required=false) String schoolWebsite){

		PageHelper.startPage(pn, 10);
		List<School> schools =schoolService.getScholsByNameOrSchoolWebsite
				(schoolName,schoolWebsite);
		PageInfo<School> page = new PageInfo<>(schools, 5);
		return Msg.success().add("pageInfo", page);
	}
	
	/**
	 * 获取所有院校信息列表
	 * @return
	 */
	@RequestMapping("/getAllSchools")
	@ResponseBody
	public Msg getAllSchools(){
		List<School> schools =schoolService.getAll();
		return Msg.success().add("allSchools", schools);
	}
	
	/**
	 * 后台-跳转学校列表页面
	 * @param schoolId
	 * @return
	 */
	@RequestMapping("/schoolList")
	public String schoolList(String schoolId){
		return "admin/school-list";
	}
	
	/**
	 * 分页查询学校列表
	 * @param currentPage
	 * @param map
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/schoolPage")
	public  Map<String, Object> querySchoolListByPage(@RequestParam(value = "page",defaultValue = "1") int page,
			@RequestParam(value = "limit",defaultValue = "10") int limit) {
		List<School> schoolData = null;
		int count = 0;
		schoolData = schoolService.getSchoolListByPage(page,limit);
		count = schoolService.countAll();
		if (null != schoolData) {
			Map<String,Object> returnObject = new HashMap<>();
			returnObject.put("code", 0);
			returnObject.put("msg", "查询成功");
			returnObject.put("count", count);
			returnObject.put("data", schoolData);
			return returnObject;
		}
		return null;
	}
	
	/**
	 * 打开学校添加页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/school-add")
	public String schoolAdd() {
		return "admin/school-add";
	}
	
	/**
	 * 添加学校
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/addSchool")
	public int addSchoolInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isAdd = 1;
		School school = new School();
		school.setSchoolId(UUID.randomUUID().toString());
		school.setSchoolName((String)JsonParam.get("schoolname"));
		school.setSchoolWebsite((String)JsonParam.get("website"));
		try{
			schoolService.addSchool(school);
		}catch(Exception e) {
			isAdd = -1;
		}
		return isAdd;
	}
	
	/**
	 * 通过id删除学校信息
	 * @param id
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/deleteSchoolById")
	public int deleteSchoolById(@RequestParam String id) {
		int isDelete = 1;
		try{
			schoolService.deleteSchool(id);
		}catch(Exception e) {
			isDelete = -1;
		}
		return isDelete;
	}
	
	/**
	 * 打开学校编辑页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/school-edit")
	public String schoolEdit(@RequestParam("id") String id, Model model) {
		model.addAttribute("school", schoolService.getById(id));
		return "admin/school-edit";
	}
	
	/**
	 * 更新学校信息
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/updateSchool")
	public int updateSchoolInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isUpdate = 1;
		String schoolId = (String) JsonParam.get("id");
		School school = new School();
		school.setSchoolId(schoolId);
		school.setSchoolName((String)JsonParam.get("schoolname"));
		school.setSchoolWebsite((String)JsonParam.get("website"));
		try{
			schoolService.updateSchool(school);
		}catch(Exception e) {
			isUpdate = -1;
		}
		return isUpdate;
	}
	
	/**
	 * 获取所有院校信息列表
	 * @return
	 */
	@RequestMapping("/getAllSchoolsForSelect")
	@ResponseBody
	public Map<String,Object> getAllSchoolsForSelect(){
		List<School> schools =schoolService.getAll();
		Map<String ,Object> retMap = new HashMap<>();
		retMap.put("schools", schools);
		return retMap;
	}
}
附录B3 MajorController.java
package com.sqc.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sqc.bean.Major;
import com.sqc.bean.School;
import com.sqc.service.MajorService;
import com.sqc.service.SchoolService;
import com.sqc.utils.Msg;

@Controller
@RequestMapping("/major")
public class MajorController {
	
	@Resource
	MajorService majorService;	
		
	@RequestMapping("/getMajorsBySchoolId")
	@ResponseBody
	public Msg getMajorsBySchoolId(@RequestParam(value = "schoolId") String schoolId){
		List<Major> majors =majorService.selectBySchoolId(schoolId);
		return Msg.success().add("selectedMajors", majors);
	}
	
	/**
	 * 后台-跳转专业列表页面
	 * @param schoolId
	 * @return
	 */
	@RequestMapping("/majorList")
	public String schoolList(String schoolId){
		return "admin/major-list";
	}
	
	/**
	 * 分页查询专业列表
	 * 
	 * @param currentPage
	 * @param map
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/majorPage")
	public  Map<String, Object> querySchoolListByPage(@RequestParam(value = "page",defaultValue = "1") int page,
			@RequestParam(value = "limit",defaultValue = "10") int limit) {
		List<Major> majorData = null;
		int count = 0;
		majorData = majorService.getMajorListByPage(page,limit);
		count = majorService.countAll();
		if (null != majorData) {
			Map<String,Object> returnObject = new HashMap<>();
			returnObject.put("code", 0);
			returnObject.put("msg", "查询成功");
			returnObject.put("count", count);
			returnObject.put("data", majorData);
			return returnObject;
		}
		return null;
	}
	
	/**
	 * 打开专业添加页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/major-add")
	public String majorAdd() {
		return "admin/major-add";
	}
	
	/**
	 * 添加专业
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/addMajor")
	public int addMajorInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isAdd = 1;
		Major major = new Major();
		String[] school = ((String)JsonParam.get("school")).split(",");
		major.setSchoolId(school[0]);
		major.setMajorId(UUID.randomUUID().toString());
		major.setSchoolName(school[1]);
		major.setMajorName((String)JsonParam.get("majorname"));
		try{
			majorService.addMajor(major);
		}catch(Exception e) {
			isAdd = -1;
		}
		return isAdd;
	}
	
	/**
	 * 通过id删除专业信息
	 * @param id
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/deleteMajorById")
	public int deleteMajorById(@RequestParam String id) {
		int isDelete = 1;
		try{
			majorService.deleteMajor(id);
		}catch(Exception e) {
			isDelete = -1;
		}
		return isDelete;
	}
	
	/**
	 * 打开专业编辑页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/major-edit")
	public String majorEdit(@RequestParam("id") String id, Model model) {
		model.addAttribute("major", majorService.getById(id));
		return "admin/major-edit";
	}
	
	/**
	 * 更新专业信息
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/updateMajor")
	public int updateMajorInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isUpdate = 1;
		String majorId = (String) JsonParam.get("id");
		String[] school = ((String)JsonParam.get("school")).split(",");
		Major major = new Major();
		major.setSchoolId(school[0]);
		major.setMajorId(majorId);
		major.setSchoolName(school[1]);
		major.setMajorName((String)JsonParam.get("majorname"));
		try{
			majorService.updateMajor(major);
		}catch(Exception e) {
			isUpdate = -1;
		}
		return isUpdate;
	}
	
	/**
	 * 获取所有院校信息列表
	 * @return
	 */
	@RequestMapping("/getAllMajorsForSelect")
	@ResponseBody
	public Map<String,Object> getAllMajorsForSelect(){
		List<Major> majors =majorService.getAll();
		Map<String ,Object> retMap = new HashMap<>();
		retMap.put("majors", majors);
		return retMap;
	}
}
附录B4 SubjectConteoller.java
package com.sqc.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.sqc.bean.Major;
import com.sqc.bean.School;
import com.sqc.bean.Subject;
import com.sqc.service.SubjectService;
import com.sqc.utils.Msg;

@Controller
@RequestMapping("/subject")
public class SubjectController {
	
	@Resource
	SubjectService subjectService;	
		
	@RequestMapping("/getSubjectsByMajorId")
	@ResponseBody
	public Msg getSubjectsByByMajorId(@RequestParam(value = "majorId") String majorId){
		List<Subject> majors =subjectService.selectByMajorId(majorId);
		return Msg.success().add("selectedSubjects", majors);
	}
	
	/**
	 * 分页查询科目列表
	 * 
	 * @param currentPage
	 * @param map
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/subjectPage")
	public  Map<String, Object> querySubjectListByPage(@RequestParam(value = "page",defaultValue = "1") int page,
			@RequestParam(value = "limit",defaultValue = "10") int limit) {
		List<Subject> subjectData = null;
		int count = 0;
		subjectData = subjectService.getSubjectListByPage(page,limit);
		count = subjectService.countAll();
		if (null != subjectData) {
			Map<String,Object> returnObject = new HashMap<>();
			returnObject.put("code", 0);
			returnObject.put("msg", "查询成功");
			returnObject.put("count", count);
			returnObject.put("data", subjectData);
			return returnObject;
		}
		return null;
	}
	
	/**
	 * 后台-跳转学科列表页面
	 * @param schoolId
	 * @return
	 */
	@RequestMapping("/subjectList")
	public String schoolList(String schoolId){
		return "admin/subject-list";
	}
	
	/**
	 * 打开专业添加页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/subject-add")
	public String majorAdd() {
		return "admin/subject-add";
	}
	
	/**
	 * 添加专业
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/addSubject")
	public int addSubjectInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isAdd = 1;
		Subject subject = new Subject();
		String[] majorStrs = ((String)JsonParam.get("major")).split(",");
		subject.setMajorId(majorStrs[0]);
		subject.setSubjectId(UUID.randomUUID().toString());
		subject.setSubjectName((String)JsonParam.get("subjectname"));
		subject.setMajorName(majorStrs[1]);
		try{
			subjectService.addSubject(subject);
		}catch(Exception e) {
			isAdd = -1;
		}
		return isAdd;
	}
	
	/**
	 * 通过id删除科目信息
	 * @param id
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/deleteSubjectById")
	public int deleteSubjectById(@RequestParam String id) {
		int isDelete = 1;
		try{
			subjectService.deleteSubject(id);
		}catch(Exception e) {
			isDelete = -1;
		}
		return isDelete;
	}
	
	/**
	 * 打开科目编辑页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/subject-edit")
	public String subjectEdit(@RequestParam("id") String id, Model model) {
		model.addAttribute("subject", subjectService.getById(id));
		return "admin/subject-edit";
	}
	
	/**
	 * 更新专业信息
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/updateSubject")
	public int updateSubjectInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isUpdate = 1;
		String subjectId = (String) JsonParam.get("id");
		String[] major = ((String)JsonParam.get("major")).split(",");
		Subject subject = new Subject();
		subject.setSubjectId(subjectId);
		subject.setSubjectName((String)JsonParam.get("subjectname"));
		subject.setMajorId(major[0]);
		subject.setMajorName(major[1]);
		try{
			subjectService.updateSubject(subject);
		}catch(Exception e) {
			isUpdate = -1;
		}
		return isUpdate;
	}
	/**
	 * 获取所有科目信息
	 * @return
	 */
	@RequestMapping("/getAllSubjectsForSelect")
	@ResponseBody
	public Map<String,Object> getAllSubjectsForSelect(){
		List<Subject> subjects =subjectService.getAll();
		Map<String ,Object> retMap = new HashMap<>();
		retMap.put("subjects", subjects);
		return retMap;
	}
}
附录B5 BookController.java
package com.sqc.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sqc.bean.Book;
import com.sqc.bean.Major;
import com.sqc.bean.School;
import com.sqc.service.BookService;
import com.sqc.service.SchoolService;
import com.sqc.utils.Msg;

@Controller
@RequestMapping("/book")
public class BookController {
	
	@Resource
	BookService bookService;	
	
	/**
	 * 跳转参考书目列表页面
	 * @param schoolId
	 * @return
	 */
	@RequestMapping("/books")
	public String books(String schoolId){
		return "query/books";
	}
	
	/**
	 * 后台-跳转书目列表页面
	 * @param schoolId
	 * @return
	 */
	@RequestMapping("/bookList")
	public String schoolList(String schoolId){
		return "admin/book-list";
	}
	
	/**
	 * 分页获取书目信息列表
	 * @param pn
	 * @param schoolName
	 * @param schoolWebsite
	 * @return
	 */
	@RequestMapping("/getBooks")
	@ResponseBody
	public Msg getschools(@RequestParam(value = "pn", defaultValue = "1") Integer pn,
			@RequestParam(value = "subjectId", required = false) String subjectId){

		PageHelper.startPage(pn, 10);
		List<Map<String,Object>> books =bookService.getBooksPageBySubjectId(subjectId);

		PageInfo<Map<String,Object>> page = new PageInfo<>(books, 5);
		//page.setTotal(1);
		return Msg.success().add("pageInfo", page);
	}
	
	/**
	 * 分页查询书目列表
	 * 
	 * @param currentPage
	 * @param map
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/bookPage")
	public  Map<String, Object> queryBookListByPage(@RequestParam(value = "page",defaultValue = "1") int page,
			@RequestParam(value = "limit",defaultValue = "10") int limit) {
		List<Map<String,Object>> bookData = null;
		int count = 0;
		bookData = bookService.getBookListByPage(page,limit);
		count = bookService.countAll();
		if (null != bookData) {
			Map<String,Object> returnObject = new HashMap<>();
			returnObject.put("code", 0);
			returnObject.put("msg", "查询成功");
			returnObject.put("count", count);
			returnObject.put("data", bookData);
			return returnObject;
		}
		return null;
	}
	
	/**
	 * 打开书目添加页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/book-add")
	public String bookAdd() {
		return "admin/book-add";
	}
	
	/**
	 * 添加书目
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/addBook")
	public int addBookInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isAdd = 1;
		Map<String,Object> forum = new HashMap<>();
		String[] subject = ((String)JsonParam.get("subject")).split(",");
		forum.put("subjectId", subject[0]);
		forum.put("subjectName", subject[1]);
		forum.put("bookId", UUID.randomUUID().toString());
		forum.put("bookName", (String)JsonParam.get("bookname"));
		forum.put("author", (String)JsonParam.get("author"));
		forum.put("press", (String)JsonParam.get("press"));
		try{
			bookService.addBook(forum);
		}catch(Exception e) {
			isAdd = -1;
		}
		return isAdd;
	}
	
	/**
	 * 通过id删除书目信息
	 * @param id
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/deleteBookById")
	public int deleteBookById(@RequestParam String id) {
		int isDelete = 1;
		try{
			bookService.deleteBook(id);
		}catch(Exception e) {
			isDelete = -1;
		}
		return isDelete;
	}
	
	/**
	 * 打开书目编辑页面
	 * @param id
	 * @param model
	 * @return
	 */
	@RequestMapping("/book-edit")
	public String bookEdit(@RequestParam("id") String id, Model model) {
		model.addAttribute("book", bookService.getById(id));
		return "admin/book-edit";
	}
	
	/**
	 * 更新书目信息
	 * @param JsonParam
	 * @param session
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/updateBook")
	public int updateBookInfo(@RequestBody Map<String, Object> JsonParam, HttpSession session) {
		int isUpdate = 1;
		String bookId = (String) JsonParam.get("id");
		String[] subject = ((String)JsonParam.get("subject")).split(",");
		Map<String,Object> book = new HashMap<>();
		book.put("bookId", bookId);
		book.put("bookName", (String)JsonParam.get("bookname"));
		book.put("author", (String)JsonParam.get("author"));
		book.put("press", (String)JsonParam.get("press"));
		book.put("subjectId", subject[0]);
		book.put("subjectName", subject[1]);
		try{
			bookService.updateBook(book);
		}catch(Exception e) {
			isUpdate = -1;
		}
		return isUpdate;
	}
	
}

附 录C

附录C1 AdmissionService.java
package com.sqc.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.sqc.bean.Admission;
import com.sqc.dao.AdmissionMapper;

@Service
public class AdmissionService {
	@Autowired
	AdmissionMapper admissionMapper;

	public List<Admission> selectAllAdmissionByYear(String year) {
		return admissionMapper.selectAllAdmissionByYear(year);
	}

	public int countAll() {
		return admissionMapper.countAll();
	}

	public List<Admission> getAdmissionListByPage(int page, int limit) {
		return admissionMapper.selectByPage((page-1)*limit, limit);
	}

	public int addAdmission(Admission admission) {
		return admissionMapper.addAdmission(admission);
	}

	public int deleteAdmission(String id) {
		return admissionMapper.deleteAdmission(id);
	}

	public Admission getById(String id) {
		return admissionMapper.getAdmission(id);
	}

	public int updateAdmission(Admission admission) {
		return admissionMapper.updateAdmission(admission);
	}
	
}
附录C2 SchoolService.java
package com.sqc.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sqc.bean.School;
import com.sqc.bean.SchoolExample;
import com.sqc.bean.SchoolExample.Criteria;
import com.sqc.dao.SchoolMapper;

@Service

public class SchoolService {
	@Autowired
	SchoolMapper schoolMapper;
	public List<School> getAll() {
        return schoolMapper.selectAll(null);
	}
	
	public School getSchool(String schoolId) {
		return schoolMapper.selectByPrimaryKeyWithCateg(schoolId);
	}

	public List<School> getScholsByNameOrSchoolWebsite(String schoolName, String schoolWebsite) {
		SchoolExample example=null;
		

		
		if(schoolName!=null && schoolName.trim()!=""|| schoolWebsite!=null && schoolWebsite.trim()!="")
		{
			example=new SchoolExample();
		    Criteria criteria=example.createCriteria();//封装
		    if(schoolName!=null && schoolName.trim()!="")
			    criteria.andSchoolNameLike("%"+schoolName+"%");
		    if(schoolWebsite!=null && schoolWebsite.trim()!="")
		    	criteria.andSchoolWebsiteEqualTo(schoolWebsite);
		}
		return schoolMapper.selectAll(example);
	}

	public List<School> getSchoolListByPage(int page, int limit) {
		return schoolMapper.selectByPage((page-1)*limit, limit);
	}

	public int countAll() {
		return (int) schoolMapper.countByExample(null);
	}

	public int addSchool(School school) {
		return schoolMapper.insert(school);
	}

	public int deleteSchool(String id) {
		return schoolMapper.deleteByPrimaryKey(id);
	}

	public School getById(String id) {
		return schoolMapper.selectByPrimaryKey(id);
	}

	public int updateSchool(School school) {
		return schoolMapper.updateByPrimaryKey(school);
	}
	
}
附录C3 MajorService.java
package com.sqc.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sqc.bean.Major;
import com.sqc.dao.MajorMapper;

@Service
public class MajorService {
	@Autowired
	MajorMapper majorMapper;
	public List<Major> selectBySchoolId(String schoolId){
		return majorMapper.selectBySchoolId(schoolId);
	}

	public List<Major> getMajorListByPage(int page, int limit) {
		return majorMapper.selectByPage((page-1)*limit, limit);
	}

	public int countAll() {
		return majorMapper.countAll();
	}

	public int addMajor(Major major) {
		return majorMapper.addMajor(major);
	}

	public int deleteMajor(String id) {
		return majorMapper.deleteMajor(id);
	}

	public Major getById(String id) {
		return majorMapper.getMajor(id);
	}

	public int updateMajor(Major major) {
		return majorMapper.updateMajor(major);
	}

	public List<Major> getAll() {
		return majorMapper.getAll();
	}
}
附录C4 SubjectService.java
package com.sqc.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sqc.bean.Major;
import com.sqc.bean.Subject;
import com.sqc.dao.MajorMapper;
import com.sqc.dao.SubjectMapper;

@Service
public class SubjectService {
	@Autowired
	SubjectMapper subjectMapper;
	
	public List<Subject> selectByMajorId(String majorId){
		return subjectMapper.selectByMajorId(majorId);
	}

	public List<Subject> getSubjectListByPage(int page, int limit) {
		return subjectMapper.getSubjectListByPage((page-1)*limit,limit);
	}

	public int countAll() {
		return subjectMapper.getCountAll();
	}

	public int addSubject(Subject subject) {
		subjectMapper.insert(subject);
		return subjectMapper.addSubject(subject);
	}

	public int deleteSubject(String id) {
		subjectMapper.deleteByPrimaryKey(id);
		return subjectMapper.deleteSubject(id);
	}

	public Subject getById(String id) {
		return subjectMapper.getSubject(id);
	}

	public int updateSubject(Subject subject) {
		subjectMapper.updateByPrimaryKey(subject);
		return subjectMapper.updateSubject(subject);
	}

	public List<Subject> getAll() {
		return subjectMapper.getAll();
	}
}
附录C5 BookService.java
package com.sqc.service;

import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.sqc.bean.Book;
import com.sqc.dao.BookMapper;

@Service
public class BookService {
	@Autowired
	BookMapper bookMapper;

	public List<Map<String,Object>> getBooksPageBySubjectId(String subjectId) {
		return bookMapper.selectAllBookBySubjectId(subjectId);
	}

	public List<Map<String,Object>> getBookListByPage(int page, int limit) {
		return bookMapper.selectByPage((page-1)*limit,limit);
	}

	public int countAll() {
		return bookMapper.countAll();
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值