大数据时代下基于SSM框架的高校毕业生档案管理系统的研发设计
2018-12-20吉豪杰
吉豪杰
大数据时代下基于SSM框架的高校毕业生档案管理系统的研发设计
吉豪杰
(山西农业大学 软件学院,山西 晋中 030800)
基于对当前高校档案管理工作的现状剖析:我国高校对档案管理工作普遍不重视,档案管理工作大多都还处于手工管理的状态,大量的纸质档案不仅占用物理空间,还存在纸质老化、受潮等风险,查找时也比较麻烦;对档案管理人员而言,不仅工作量大,而且管理效率低。为此,本文基于SSM框架并结合当下流行的JSP、POI等技术对高校毕业生档案管理系统的设计和实现进行研究,此系统依据大多数高校档案工作人员的需求进行开发,在大数据时代背景下,为档案工作人员提供了一个能够同时处理大量数据、纸质档案电子化、并且将WEB技术与MicroSoft Office良好结合的管理系统,提高了档案管理的工作效率,节省了档案管理的成本。
SSM;高校档案管理;LODOP;POI;管理系理;Bootstrap;Java
0 引言
根据教育部不完全统计,我国每年高校毕业生的人数不断增加,2018年已达到820万人。这是一个庞大的数字,每个高校每年平均有1.025万的毕业生,学生们毕业之后,各自的学籍档案会去往不同的地方。对于每个高校的档案管理人员,管理如此多的档案是一件头疼的事情。
受当下大数据时代浪潮的影响,为跟进网络信息的发展并提升高校档案管理工作的效率,满足时代发展的需求,开发一款适用于档案管理的系统迫在眉睫。本文讲述了基于SSM框架并结合多种技术的高校毕业生档案管理系统的设计和开发。
1 系统设计
1.1 系统总体设计
本系统将充分考虑用户的需求,并结合时下流行的SSM框架(Spring MVC、Spring、Mybatis)、 JSP动态网页技术、JS、JQuery、Ajax、Bootstrap框架、CSS、displayTag分页插件、POI以及LODOP打印插件等技术,对系统架构进行良好的设计、功能进行合理划分并实现。
本系统在设计时参考了《高等学校档案管理办法》,如图1系统的总体设计图所示,系统分为三个模块:档案管理、权限管理、个人信息,其中个人信息模块用于用户对个人信息的管理,档案管理和权限管理模块是本系统的主要功能模块。档案管理模块下又分为查询档案、删除档案、添加档案、打印档案、导出Excel等模块,这些模块实现了学生档案的管理(增删改查)、打印、生成Excel文件、生成统计报表等功能。权限管理模块实现了系统的权限机制如表1系统的权限机制,满足了系统管理员对系统中其他用户的管理、所有用户操作记录的管理、以及学校中系别和专业的管理等功能。
图1 系统的总体设计图
表1 系统的权限机制
Tab.1 System permission mechanism
1.2 数据库设计
本系统针对每个模块功能的独特性,为每个模块进行数据库的设计。
如图2档案管理模块数据模型所示,该模块中有4张表,student、archive、department、profession表分别用来存储学生、档案、学院部门和专业信息。student与archive属于1对1的关系,即一个学生只能有一份档案;dapartment与profession属于1对多的关系,即一个学院中可以开设多个专业,同时一个专业只属于一个学院;student与profession表属于多对1的关系,即一个学生只能属于一个专业,而一个专业中可以有多个学生。
图2 档案管理模块数据模型
如图3权限管理模块数据模型所示,该模块也有4张表,user、role、authority、record表分别用来存储用户、系统角色、系统权限和用户操作记录信息。user与role是多对1的关系,表示一个用户只能有一个系统角色,一个角色可以属于多个用户;user与record表是1对多的关系,表示一个用户可以有多条操作记录,一条操作记录只属于一个用户;role与authority表是多对多的关系,表示一个系统角色可以有多个权限,而一个权限同时归多个角色所有。
图3 权限管理模块数据模型
整个系统的数据库存储结构通过这两张类图来实现,可见系统中的两个功能模块在数据库的设计上充分解耦,相互独立,降低了系统开发的复杂程度,方便了后期数据库的维护。
1.3 系统核心模块介绍
上文提到本系统的核心模块有档案管理和权限管理两部分,这两部分分别保障了系统的功能性、安全性。档案管理模块实现了系统的主要功能,而权限管理模块是为系统提供了一层安全保障,降低的系统的安全隐患。依据图1系统的总体设计图对每个功能模块进行详细说明。
1.3.1 档案管理模块
(1)添加档案
该功能主要完成用户对学生档案信息的添加,通过此功能将学生档案信息添加到数据库中,实现数据持久化。添加方式主要有两种:单个添加和批量添加。单个添加就是用户通过使用系统提供的输入界面手动输入档案信息完成添加,这种方式效率比较低,适用于添加少量数据的情况。相对地,为了满足用户一次性添加大量数据的要求,系统的批量添加功能实现了只需在操作界面上上传相应的Excel文件,系统便会自动解析数据、验证数据、提取数据、保存数据到数据库中,此功能很大程度上节省了工作时间,提升了工作效率,将以前几个小时的工作量用几秒钟就可以完成。
(2)删除档案
对于系统中错误的、无用的档案信息,系统提供删除功能。同样,删除功能也分为单个删除和批量删除,用户可以选择一个或多个档案信息进行删除。
(3)修改档案
用户可以对档案信息(文本、图片信息)进行修改,修改后将会同步到数据库中。
(4)查询档案
为提高查询的灵活性,系统提供了多种查询方式,比如根据学生的姓名、入学年份、所属院系等信息进行模糊查询,还支持组合查询,通过接受用户输入的多个查询条件精确地查询档案信息。
(5)打印档案
用户需要先查询出需要打印的档案,在操作界面上点击打印,便会弹出打印预览页面,用户浏览后再确认打印。打印功能通过LODOP打印服务来实现,在后文的系统技术架构中会有详细解释。
(6)导出Excel
该功能与批量添加功能相反,批量添加通过导入Excel文件来完成,而该功能是将系统数据库中的数据根据用户的选择导出到Excel文件中,该功能不仅满足了用户的工作需求,还很好地将WEB技术与MicroSoft Excel相结合,是系统包容性、多功能性的体现。
1.3.2 权限管理模块
(1)用户管理
系统为不同角色的用户提供了不同的系统权限,正是利用这样的权限机制使系统更加可控、可靠。用户在系统初期将会通过注册功能,注册一个拥有所有权限的管理员用户,此后,该管理员用户可以对系统中存在的其他用户的信息、权限等进行管理,比如设置用户不允许注册成为管理员,那么其他用户在注册时就会被禁止注册管理员。通过这一功能可以防止系统中存在恶意用户,避免恶意用户对系统数据的窃取等。
(2)操作记录管理
系统会对所有用户在系统上执行的操作进行记录,管理员可以对不同用户的操作记录进行检查,以达到监督系统用户行为的目的。
(3)院系管理
由于每个高校的院系设置的不同,为了适应不同的高校,系统提供院系管理功能,管理员用户可以根据自己所在学校的情况,对学校中的院系信息进行设置。这一功能是系统通用性的体现
2 系统技术架构
本系统可以分为前端开发和服务器端开发两部分,其中前端使用了JSP动态网页技术、Bootstrap框架、Javascript、CSS等技术来实现一个具有人性化、美观化、易操作等特性的用户页面,而服务器端是基于当前流行的SSM框架,结合MVC的设计思想、面向对象的设计思想以及其他一些技术进行开发,数极库使用Mysql数据库,WEB服务器使用Tomcat。如图4系统技术架构图所示。
图4 系统技术架构图
MVC的设计思想就是将软件分为模型、控制器、视图三部分进行开发,使软件系统中各层次之间充分解耦,实际上就是将业务数据与业务数据的操作进行分离,使各层次专注于各自的职责。根据MVC的设计思想,本系统分为4层进行开发:表示层、控制层、业务逻辑层、持久层。下文将介绍系统在每一层中所使用到的技术以及实现原理。
2.1 服务器端技术介绍
2.1.1 SSM框架整合
(1)Spring框架
Spring框架是Rod Johnson为解决EJB开发笨重繁杂、成本高、效率低所提出的一种轻量级框架。通过Spring的依赖注入、控制反转(Ioc)、面向切面编程(Aop)等特性将原先复杂且难以维护的javaEE开发变得简单高效,Spring框架可以与其他框架相结合来更好地实现每一层。
Spring框架通过ContextLoaderListener监听器来初始化,并以XML或注解方式来实现Spring的行为,比如通过注解方式对java类进行依赖注入,减少类之间的耦合程度;配置事务管理器,保证数据的一致性和完整性。本系统关于Spring的配置代码写在spring.xml中:(省略部分代码)
(2)SpringMVC
SpringMVC框架是基于DispatcherServlet(前端控制器)来实现表示层与控制层的交互,通过XML配置的方式将映射处理器、处理适配器、拦截器、视图解析器、文件上传解析器等注入到Spring容器中。为了简化开发还提供了注解方式,只需要在java类上写上相应的注解名,SpringMVC就会对其进行扫描并自动注入。如下java类的代码:
@Controller
@RequestMapping("/system")
public class UserController {//省略代码}
SpringMVC容器就会自动将该类设置为控制器类,@Controller注解是用来标识该类为控制器类,@RequestMapping("/system")则是用来进行控制层与表示层的URL请求映射,用户在浏览器中输入相应的请求名,SpringMVC就会匹配程序中配置的请求来访问相应的服务。如图5本系统的SpringMVC工作流程图。
(3)Mybatis框架、JavaBean技术
在介绍Mybati之前先介绍JavaBean技术,为了更好地实现java程序与数据库的交互,创建一个java类,将数据库表中的各个字段与该类中的各个属性相对应,这个类就被称为JavaBean。持久层的Mybatis框架是ORM映射框架的一种,主要用来处理数据库表与JavaBean之间的映射,将表结构中的数据转换成类属性对应的数据。Mybatis框架与其他的持久层框架不同,Mybatis框架是一种半自动的ORM框架,支持定制化SQL、高级映射等,可以通过简单的XML或注解来配置映射信息,并通过SQL语句将JavaBean映射成数据库中的记录或从数据库中接受数据保存到JavaBean中。
2.1.2 POI技术
POI是由Apache软件基金会的一个开源项目,它提供给Java程序对MicroSoft Office文件的读写功能。在2.3.1档案管理模块中提到的批量添加和导出Excel两个功能需要用到POI技术。POI中有两个与Excel有关结构:HSSF和XSSF,HSSF用来处理Excel 2007版之前的文件(.xls),XSSF用来处理Excel 2007版之后的文件(.xlsx)。本系统结合两种结构来实现Excel文件的读取与导出功能,用户可以上传.xls后缀和.xlsx后缀的两种Excel文件来实现批量添加数据,并且系统默认导出.xlsx后缀的文件。
2.2 前端开发技术介绍
(1)JSP动态网页技术
JSP(Java Server Page)其实是一种运行在服务器端的java技术,用来开发WEB动态网页。准确来讲,JSP是一种服务端的脚本语言,因为系统表示层的视图使用的是jsp文件进行显示,所以在这里对JSP进行介绍。
在JSP页面中除了可以编写前端代码外,还可以编写java代码,每次在请求该页面时,都需要在服务端进行编译和运行之后才能正常显示,这也是为什么被称为动态网页技术的原因。JSP提供独特的标签、指令、九大内置对象、EL表达式等来满足动态网页开发的需要。关于JSP的标签、指令在参考文献[9]中有详细介绍, JSP还有4大作用域:ServletContext(整个应用程序)、session(一次回话)、request(请求域)、pageContext(当前页面),通过这些作用域及其对应的内置对象,可以实现应用程序中数据的共享和传递。EL表达式可以在JSP页面中直接使用,并通过${}的方式将代码写在括号中执行,不仅使用形式简单、灵活,还可以通过自身的内置对象来实现数据的共享与传递。
(2)Bootstrap前端框架
Bootstrap是美国Twitter公司基于HTML、CSS、JavaScript开发的一个美观、简洁、直观、功能强大的前端开发框架。针对HTML中的各个元素提供了多种CSS样式、组件、jQuery以及JavaScript插件,利用Bootstrap框架可以对用户操作界面进行非常多样、人性化的修饰,取代了以往死板、单一、简陋的界面,提升用户的视觉体验。
Bootstrap框架使用前需要去官网下载相应版本的Bootstrap安装包,安装包中包括了CSS文件和JavaScript插件,将这两个文件导入到工程的指定目录下(本系统放在resourse目录下),在jsp页面中可以直接导入需要的文件:
(3)LODOP打印
LODOP是由梦泰尔软件工作室研发的适用于WEB的比较彻底的打印方案。其设计者将WEB下的打印需求分类汇总、高度抽象,设计出仅用几个功能函数就能实现基本打印需求的解决方案。常用的函数比如:PREVIEW打印预览、PRINT_SETUP打印维护、PRINT_DESIGN打印设计、PRINT直接打印等,在2016年发布的6.2版本中还额外加入了C-LODOP云打印服务,C-LODOP实现了调用JS命令远程打印,与LODOP相比,不仅安装文件体积更小,还可以支持任何PC端、移动端的浏览器,使用C-LODOP还可以解决因浏览器变化而引起的无法正常打印的问题,增强了系统的可靠性和功能稳定性。
3 系统实现与优势
对系统当中使用的技术有了简单的了解之后,该部分将会讲解系统的核心功能是如何使用相关技术来实现的,以及系统具有哪些优势。
3.1 SSM框架整合实现
SSM框架通过配置的方式来实现对系统架构中各个层次的控制,spring.xml、spring-mvc.xml、mybatis- config.xml分别代表Spring、SpringMVC、Mybatis框架的配置文件。Spring和SpringMVC都使用了注解方式的依赖注入,通过@Autowired可以将java类中使用到的其他对象自动进行实例化,一方面减少了代码量、提供程序可读性,另一方面又可以缓和类之间的依赖关系,使得程序中各个类之间高内聚低耦合。系统涉及到大量复杂的数据处理操作,为保证数据的一致性与正确性,需要把一组数据操作当做一个事务进行处理,数据操作前要开启事务,数据操作结束之后要关闭事务,如果出现异常则要进行事务回滚,这一系列的事务处理无疑增加了代码的复杂程度。Spring中使用AOP来处理事务,通过事务管理器和声明式事务来对业务层中添加了@Transactional注解的类中的所有方法进行事务管理,将这些方法的事务管理交给Spring容器来进行,使开发人员在编写业务层代码时更专注业务功能的实现。
Spring与Mybatis在整合时,将Mybatis中关于数据库和Mapper映射的配置都放到了Spring的配置文件中,Mybatis的配置文件中只设置了本系统为懒加载模式,只在需要执行持久化操作的时候才加载相应的Mapper映射文件,节省了系统初始化时的时间消耗和空间占用。如下整合的部分代码:
3.2 核心模块的实现
3.2.1 权限管理模块的实现
在表2.1系统的权限机制中介绍了系统的权限设计,不同的用户有不同的系统角色,而不同的系统角色又拥有不同的权限。在本系统中,用户通过账号和密码来进行登录,系统在用户登录前会对其角色进行识别,不同的角色会进入到不同的页面,进行不同的操作。比如管理员登录后进入系统,系统会提供几乎所有的功能;而如果是工作人员登录系统,系统不会对其提供用户管理、操作记录管理等功能,只提供档案管理的功能。
3.2.2 档案管理模块的实现
(1)批量添加功能实现
使用POI技术来实现批量添加,本系统中封装了一个ExcelUtil类用于处理Excel的相关操作,对批量添加功能分步骤实现。
第一步,系统接收到用户上传的Excel文件之后,调用ExcelUtil中的getListByExcel方法来解析并获取数据,以文件流的形式将Excel文件传递给getListByExcel方法。在getListByExcel方法中先判断Excel文件的类型,如果是.xls文件则使用HSSF结构,否则使用XSSF结构;
第二步,然后将Excel文件以工作表(Sheet)为单位进行拆分,每个Sheet又是一个二维表的结构(行和列,分别用Row和Cell表示),在代码中用一个三层的for循环来获取其中的数据,第一层for循环用来遍历每一个Sheet,第二层for循环用来遍历每一个Row,第三层for便是用来获取一个Row中每一个Cell中的值;
第三步,获取每一个Cell中的值时,需要对每一个数据类型的数据进行识别并保存,POI的用户模型的Cell类中提供了几种常用的数据类型:CELL_TYPE_STRING、CELL_TYPE_NUMBER、CELL_TYPE_BOOLEAN、CELL_TYPE_BLANK等,本系统中通过一个switch语句来对每一种不同类型的数据进行操作;
第四步,将每一个Row的数据用一个List集合进行存储,再用一个List集合存储每一个Row对应的List集合,所以整个Excel表结构就转化为一个双层嵌套的List集合的结构。
第五步,系统中学生的档案信息是通过Student类来保存到数据库的student和archive表中的,所以要将上一步的双层嵌套的List集合中的数据放到一个List
第六步,得到最终的List
第七步,前端用户界面显示添加成功或失败。
(2)导出Excel文件
该功能与批量添加功能是反方向实现的,首先会根据用户的需求从数据库中查询出需要导出的数据,将数据保存为List
第一步,获取到用户查询的数据之后,先通过ExcelBean类来创建表头信息、样式、对应的类属性名等。
第二步,将表头信息、查询到的数据信息、以及Student.class作为参数传递到ExcelUtil的createExcelFile方法中,通过该方法来创建Excel文件。
第三步,在createExcelFile方法中,首先判断数据是否为空,如果数据为空,则创建一个空的Excel文件;否则创建一个Sheet,先设置该Sheet的样式(字体、字体大小、对齐方式等),再将ExcelBean对象中的表头信息设置到该Sheet的第一个Row中,最后将数据根据提供的get方法从Student对象中获取出来并添加到每一个Row的Cell中。通过get方法获取值的代码:
//获得getXXX()方法
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(excelBean.getPropertyName(), Student.class); Method getMethod = propertyDescriptor.getReadMethod();
Object getValue = getMethod.invoke(obj);//student对象调用get方法获得属性值
第四步,上一步把所有的数据都添加到对应的Cell中后,一个完整的Excel文件就生成了,createExcelFile函数将生成的Excel文件传递到控制层中,在控制层中将该Excel文件以输出流的形式传递到用户操作界面。
(3)打印档案
打印档案是本系统的主要功能之一,是电子信息输出为纸质化信息的形式,该功能使用LODOP打印控件结合JavaScript来实现动态打印,用户先查询档案信息,再进行打印操作。该功能的优势是间接地与服务器解耦,如图6打印档案执行流程图所示,LODOP部分几乎没有与服务器进行任何交互,,只是获取了系统前一次请求的数据,将数据动态绑定到打印页面中进行打印,这样可以减轻服务器端的压力。如图7打印预览图(以山西农业大学档案馆为例,其中数据为测试数据)。
3.3 系统优势
本系统的视图渲染使用了Bootstrap框架,使用户具有更好地视觉体验,良好的视觉体验有助于办公效率的提高。本系统从功能和安全两个角度进行设计和开发,不仅满足用户的功能需求,还保证系统有一个相对安全的运行环境。结合了SSM框架以及POI、LODOP等技术进行开发,这些技术的结合体现了本系统的可扩展性、可靠性,同时使用SSM框架可以协调好系统中各层之间的关系,提升开发效率并方便后期的维护工作。本系统还支持同时操作一万条以上的数据量,并能保持良好的响应,改变了以往传统的档案管理方式,解决了以往档案管理系统处理数据少、效率低、不安全的问题,这也充分符合了大数据时代下人们的工作要求。
图6 打印档案执行流程图
图7 打印预览图
4 结束语
本文通过对系统中核心功能模块和相关技术的介绍,展示了一款设计合理、功能完善、性能良好的高校毕业生档案管理系统。本系统是根据当前大多数高校档案管理人员的需求,进行充分的设计,采用SSM框架完成系统的开发,并且本系统已经通过了集成测试、系统测试,实现了系统预期的功能,通过了用户的验收,可以适用于大部分高校的毕业生档案管理工作。
[1] 韩凌波. 基于mvc 架构的普法考试系统设计与实现[J]. 软件, 2015, 36(3): 132-134.
[2] 臧进进, 鄂海红. 基于响应式Web设计的网页生成系统研究与实现[J]. 软件, 2015, 36(6): 37-41.
[3] 苏奎, 董默, 张彦超. 响应式Web开发模式分析[J]. 软件, 2015, 36(6): 92-96.
[4] 姚云飞, 杜洪波, 梁建辉. 基于 SpringMVC 框架毕业设计管理系统设计[J]. 软件, 2018, 39(01): 91-93.
[5] 原方圆, 马书南, 雷伟, 等. 高安全性数字化档案管理系统的设计与实现[J]. 软件, 2018, 39(7): 98-102.
[6] Walls, C., 著. Spring实战[M]. 耿渊, 张卫滨, 译. 北京: 人民邮电出版社, 2014.
[7] 林雪南. 基于Apache POI解析Excel文件及内存使用分析[J]. 电脑编程技巧与维护, 2016, (23): 60-98.
[8] Apache POI docs[EB/OL]. [2018-10-26]. http://poi.apache.org/ components/spreadsheet/index.html.
[9] 任继念. 基于Web的证书打印系统的设计与实现[J]. 教学与科技, 2016(4): 16-17.
[10] 贾志城, 王云. JSP程序设计(慕课版)[M]. 北京: 人民邮电出版社, 2016.
[11] Bootstrap 中文网[EB/OL]. [2018-10-26]. https://v3.bootcss. com/css/.
In the Era of Big Data, the Research and Development of the File Management System for College Graduates Based on SSM Framework is Designed
JI Hao-jie
(Software College of Shanxi Agricultural University, Jinzhong, Shanxi 030800, China)
Based on the analysis of the current situation of archives management in colleges and universities: Chinese colleges and universities generally do not pay attention to archives management, and most of them are still in the state of manual management. For the file management personnel, not only the workload, but also low efficiency.Therefore, based on the framework of SSM and combined with the present popular JSP, POI and other technical archives management system of college graduates through the research of the design and implementation of this system on the basis of the demand for development of most archivists in colleges and universities, under the background in the era of big data, for the archivists offers a can handle large amounts of data at the same time, the paper files electronically, and WEB technology combined with good MicroSoft Office management system, improve the efficiency of the archives management work, save the cost of archives management.
SSM; University archives management; LODOP; POI; Management system; Bootstrap; Java
TP315
A
10.3969/j.issn.1003-6970.2018.11.033
吉豪杰(1998-),男,本科生,主要研究方向:软件工程。
吉豪杰. 大数据时代下基于SSM框架的高校毕业生档案管理系统的研发设计[J]. 软件,2018,39(11):151-158