基于SSM框架的毕业设计管理系统设计与实现

2020-06-05 03:20刘继华路晓梦张志宏李佳仪
吕梁学院学报 2020年2期
关键词:视图毕业设计选题

刘继华,路晓梦,张志宏,李佳仪

(1.吕梁学院 计算机科学与技术系,山西 离石 033001;2.太原理工大学 软件学院,山西 榆次 030600)

毕业设计是本科生培养过程中的重要环节,是学生通过深入实践、了解社会、完成设计任务、撰写论文等诸环节,着重培养学生综合分析问题、解决问题能力,独立工作能力、组织管理和社交能力,是学习深化、拓宽、综合运用所学知识的重要过程[1].在毕业设计管理中,涉及导师题目拟定、题目审核、选题选导师、开题报告、中期检查、导师指导、毕业答辩、提交设计、提交论文等多个环节,也涉及指导教师、学生、秘书等多种角色人员,因此毕业设计教学管理工作是一项系统而复杂的工作.就目前该项目的实施情况分析,国内大多数院校在实施此流程时,很多环节的工作是传统人工管理办法,工作效率较低.毕业设计管理系统的开发,不但能够提高工作效率、减轻管理人员的负担,也为学生和教师的工作提供更大的方便,因此开发毕业设计管理系统具有较强的现实意义.

1 系统实现框架原理(Spring,Spring MVC, Mybatis)

三层架构是一个分层式的软件体系架构设计,通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)[2].区分层次的目的即为了“高内聚,低耦合”的思想.该项目使用Java语言开发,利用Spring实现业务对象管理,Spring MVC负责请求转发和视图管理, MyBatis作为数据对象持久化引擎.

1.1 Spring

Spring是一个开源框架,是一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架.Spring使用基本JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅限于服务器端的开发[3].从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益.Spring的核心是控制反转(IoC)和面向切面(AOP).简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架.

1.2 Spring MVC框架

很多应用程序的问题在于处理业务数据的对象和显示业务数据的视图之间存在紧密耦合,通常,更新业务对象的命令都是从视图本身发起的,使视图对任何业务对象更改都有高度敏感性.而且,当多个视图依赖于同一个业务对象时是没有灵活性的[4].SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦.基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发.

1.3 MyBatis框架

MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集[5].MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录[6].

2 毕业设计管理系统的设计与实现

2.1 系统流程及功能

系统围绕吕梁学院毕业设计管理中和为各个角色和管理过程的所有阶段.

(1)学生端:

①用户管理:登录、激活、修改密码、个人信息维护;

②选题功能:学生可以选择毕业设计题目,查看题目信息等;

③文件模板下载:学生可以下载相应的文件模板;

④相关资料的上传与下载:学生能上传查看不同阶段的资料(如:开题报告、中期报告、毕业论文等等),可以下载教师的指导意见;

⑤公告查看:能查看来自系统管理员的公告信息.

(2)教师端:

①教师登录:登录、修改密码、个人信息维护;

②添加选题功能:教师可以添加和修改毕业设计题目;

③文件模板下载:教师可以下载相应的文件模板;

④相关资料的上传与下载:教师能查看学生不同阶段的资料(如:开题报告、中期报告、毕业论文等等),可以上传对学生的指导意见;

⑤公告信息查看:能查看来自系统管理员的公告信息.

(3)管理员端:

①教师信息维护:教师信息的增删改查.

②学生信息维护:学生信息的增删改查.

③毕业设计信息维护:对毕业设计所有信息的维护.

④信息维护:对公告信息的维护.

系统的数据流图如下:(见图1)

2.2 系统总体架构

整个系统采用java web三层架构,即持久层、业务逻辑层和网络层。持久层用来持久化数据记录,也就是和数据库打交道[7];业务逻辑层用来处理系统相关的一些业务;网络层用来处理页面请求.当今流行的SSM框架中Spring MVC对应网络层,mybatis对应持久层,Spring统筹全局,业务逻辑层也交给Spring框架处理[8].

总体架构如下图:(见图2)

2.3 系统详细设计

经调研分析后,根据系统需求分析和总体框架结构设计,设计出系统的用例图与类图.

系统用例图如下:(见图3)

系统类图如下:(见图4)

图1 系统数据流图图2 系统总体架构

图3 系统用例图

图4 系统类图

2.4 系统核心功能实现

毕业设计管理系统中选题管理最为关键,主要功能包括:导入毕业设计选题、查看毕业设计选题、查看选题结果.采用POI来实现以Excel形式导入和导出选题,控制器类有:TeacherController,StudentController,AdminController,主要负责对相关角色的选题请求做处理;实体类包括:Topic类、Student类、Teacher类,和数据库里的选题表对应,页面主要有s_topicselect.jsp、t_topicselect.jsp等.

表现层:当用户点击选题按钮时,JSP页面通过ajax携带题目id请求到后端Spring Mvc的Controller.因为用户登录后,系统会将用户信息存放到Session之中,所以这里会先判断用户是否已经选题,用户是否存在,防止非法操作.当符合条件后,通过业务逻辑层提供的接口更改用户对应的选题信息.最终将结果返回,并将Session刷新.

核心代码:

……

@RequestMapping(value = "/topic/select.action")

public void updataTopic(HttpServletRequest request, HttpServletResponse response) throws IOException {

long topic_id = Long.parseLong(request.getParameter("topic_id"));

Student student = (Student) request.getSession().getAttribute(Constants.STUDENT_ID);

if (student.getTopic_id() == null) {

boolean flag = topicService.updateTopic(topic_id, student);

if (flag) {

student.setTopic_id(topic_id);

sessionProvider.setAttribute(request, Constants.STUDENT_ID, student);

}

String json = "{"isTure":" + flag + "}";

response.getWriter().write(json);

} else {

String json = "{"isTure":" + false + "}";

response.getWriter().write(json);

}

}

……

业务逻辑层:表现层通过后,调用业务逻辑层处理业务逻辑,更新课题信息.修改一个课题信息时,需要先查询该课题是否存在,如果存在并处于可选状态再通过持久层接口最终修改数据库中的数据,并将结果返回表现层.

public boolean updateTopic(long topic_id, Student student) {

Topic topic = topicMapper.selectTopicByid(topic_id);

if (topic!=null &&topic.getIs_select()==0){

topic.setSid(student.getUsername());

topic.setSname(student.getRealname());

topic.setIs_select(1);

int i = topicMapper.updateTopicByPrimaryKey(topic);

if(i>0){

student.setTopic_id(topic.getId());

int i1 = studentMapper.updateStudentByPrimaryKey(student);

return true;

}else {

return false;

}

}else{

return false;

}

}

持久层:通过SQL语句,将信息持久化到数据库.Mapper文件详细代码如下:

update student

set topic_id = #{topic_id,jdbcType=BIGINT}

where id = #{id,jdbcType=VARCHAR}

3 结束语

毕业设计管理系统由当下流行的三层架构思想,以及JavaEE中流行的SSM开发框架,通过实时跟随学生与教师的毕业设计工作环节,进行了具体详细的分析设计,解决了传统逐层纸质文件提交,逐级消息通知效率低,毕业设计管理不规范等问题.系统最主要的选题功能和文档上传与下载,已通过性能测试和安全性兼容性测试,经实际应用,该系统对于当前高校毕业设计管理的规范化、科学化具有一定意义,值得推广和应用.

猜你喜欢
视图毕业设计选题
本刊诚征“独唱团”选题
谈诗词的选题
本刊诚征“独唱团”选题
本刊诚征“独唱团”选题
毕业设计优秀作品选登
基于FPGA的毕业设计实践平台实现
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图