本科毕业设计(论文)
题 目 本科毕业设计管理系统的设计与实现
学院名称 计算机学院
专业名称 信息管理与信息系统
年级班级 1402班
学生姓名 杜新新
指导教师 吴 岩
2018 年 6 月
毕业设计是本科教育的一个重要环节,是锻炼和检验学生专业综合能力的重要途径。毕业设计教学管理中,涉及导师选择、题目拟定、题目审核、开题报告、中期检查、导师指导、毕业答辩等多个环节,因此它是一项系统而复杂的工作。采用传统的毕业设计管理模式,指导教师分配、毕业设计题目审核等工作涉及学生多、信息量大,如不采取信息化的手段进行处理将影响毕业设计管理工作的效率。因此设计毕业设计管理系统具有重要的现实意义。
本毕业设计基于河南理工大学计算机学院毕业设计管理工作的现状,设计并实现了本科毕业设计管理系统。系统以IntelliJ IDEA 2018作为开发工具,采用主流的面向对象的编程语言Java作为后台开发语言,以SSM作为系统开发框架,MySQL8.0作为数据库服务器,Layui框架实现前台网页的显示,设计并实现B/S模式的本科毕业设计管理系统。该系统的开发,使毕业设计的流程更加规范,进一步提高了教师的工作效率,为提升人才培养质量起到积极的推动作用。
关键词:毕业设计;管理系统;JAVA;SSM;Layui
Graduation design is an important part of undergraduate education, which is an important means of exercising and testing the overall professional skills of students.Management of graduation design teaching involves many links such as tutor selection, problem formulation, subject review, open report, mid-term review, tutor guidance, graduation reply, etc. It is therefore a systematic and complicated task.Using the traditional graduation design management model, the tasks of guiding teachers' assignments, graduation project titles, etc. involve a large number of students and a large number. If information processing is not adopted, the efficiency of graduation design management will be affected.Therefore, designing a graduation design management system has important practical significance.
The graduation design is based on the status quo of graduate design management work in the Computer College of Henan Polytechnic University. It has designed and implemented an undergraduate graduation design management system.The system uses IntelliJ IDEA 2018 as a development tool, using the mainstream object-oriented programming language Java as the backstage programming language, using SSM as the development framework, MySQL8.0 as the database server. The Layui framework realizes the display of web pages.I designs and implements a B/S structure graduate design management system.The development of this system has made the graduation design process more standardized, further improved the work efficiency of teachers, and played a positive role in promoting the quality of personnel training.
Key words:Graduation design;Management system;JAVA;SSM;Layui
目录
1.前言 1
1.1研究背景及意义 1
1.1.1研究背景 1
1.1.2研究目的及意义 1
1.2研究现状分析 2
1.3研究内容安排 2
2.项目主要技术分析 5
2.1系统体系结构 5
2.2系统开发技术 6
2.2.1HTML介绍 6
2.2.2CSS介绍 6
2.2.3JavaScript介绍 6
2.2.4JSP介绍 6
2.2.5Java技术介绍 7
2.3框架介绍 7
2.2.1layui框架简介 7
2.2.2Spring框架的简介 7
2.2.3SpringMVC框架的简介 7
2.2.4MyBatis框架的简介 8
3.系统分析 9
3.1可行性分析 9
3.1.1经济可行性 9
3.1.2技术可行性 9
3.1.3操作可行性 9
3.1.4管理可行性 9
3.2业务需求描述 10
3.3系统功能需求分析 12
3.3.1用户登录 13
3.3.2公告管理 14
3.3.3文件管理 15
3.3.4课题管理 15
3.3.5选题管理 16
3.3.6进度管理 17
3.3.7答辩管理 18
3.3.8查询统计 19
3.2.9系统管理 20
3.4系统性能需求分析 20
4.系统设计 21
4.1系统总体设计 21
4.1.1系统总体设计思路 21
4.1.2系统总体结构设计 21
4.2数据库设计 22
4.2.1数据库概念结构设计 22
4.2.2数据库逻辑结构设计 27
5.系统实现 33
5.1项目包结构搭建 33
5.2系统框架的实现 33
5.5.1Mybatis框架实现 33
5.5.2Spring框架实现 34
5.5.3SpringMVC框架实现 36
5.5.4web.xml文件的配置 36
5.3代码设计模块 37
5.3.1实体 37
5.3.2数据访问层(dao) 40
5.3.3业务逻辑层(service) 41
5.3.4控制层(controller) 41
5.4系统通用模块 41
5.5用户登录模块 44
5.6教师模块实现 46
5.6.1申报课题管理模块 46
5.6.2审批课题管理模块 50
5.6.3我的学生模块 53
5.6.4评阅管理模块 58
5.6.5答辩成绩管理模块 59
5.6.6成绩分析模块 59
5.7学生模块实现 62
5.7.1选择课题模块 62
5.7.2我的任务模块 62
5.7.3我的成绩模块 66
5.8管理员模块实现 66
5.8.1教师管理模块 66
5.8.2学生管理模块 66
5.8.3志愿管理模块 67
5.8.4课题管理模块 67
5.8.5公告管理模块 67
5.8.6文件管理模块 68
6.系统测试 69
6.1系统的调试 69
6.2系统的测试 69
6.2.1测试的重要性及目的 69
6.2.2测试方法 69
6.3登录功能模块测试 69
6.4课题管理功能模块测试 76
6.4选题管理功能模块测试 76
7.结论 77
致谢 79
参考文献 81
我国信息技术和网络技术发展迅速,各行各业都在进行信息化管理,教育行业也不例外。数字化校园网为高校教务管理信息化提供了必备的物质基础[1]。随着教育改革的深入发展以及办学规模的不断扩大,各高校教务工作量倍增。面对大量而繁琐的教务管理工作,传统的手工管理方式已经成为学校高效运转的瓶颈。因此,利用信息技术和网络技术实现管理信息化,对教务工作进行高效的管理,成为各大高校的建设目标。
毕业设计是本科教育的一个重要环节,是锻炼大学生综合能力的一个过程,同时也能够全面检测大学生专业知识的掌握与运用情况。毕业设计教学管理中,涉及导师选择、题目拟定、题目审核、开题报告、中期检查、导师指导、毕业答辩等多个环节,涉及专业教师、全体毕业生、专业负责人等大量人员,因此毕业设计教学管理工作是一项系统而复杂的工作。
在传统的毕业设计管理模式中,存在不少管理上的不规范、工作繁琐、效率低下等突出问题,例如:毕业设计的选题、过程管理的监控、文档资料的留存、毕设成绩的统计分析等工作还没有有效地、规范地管理起来,导致学校的教学管理滞后于现代网络化的管理要求。针对目前毕业设计管理工作中存在的问题,本毕业设计对毕业设计管理流程进行调查与研究,设计并开发适合本学院的本科毕业设计管理系统,实现了本学院毕业设计管理的高效化、网络化与规范化。
毕业设计管理系统的开发,不但能够提高工作效率、减轻日常管理人员的负担,也为学生和教师的工作提供更大的方便。如今计算机学院的毕业设计管理系统功能模块不够完善,界面设计不够友好,操作不够方便。针对目前河南理工大学毕业设计管理工作相关制度以及计算机学院学生毕业设计管理工作的特点,本毕业设计对计算机学院毕业设计管理系统进行分析与设计。本系统从课题申报、课题审核、学生选题、相关材料的提交、论文评阅、毕业答辩等环节进行管理,实现了毕业设计的整个流程的管理。毕业设计管理系统的开发,不但方便同学和教师之间的沟通交流,方便指导教师对学生进行指导,同时能够使毕业设计的流程更加规范,也进一步提高了教师的工作效率,为提升人才培养质量起到积极的推动作用,因此,开发毕业设计管理系统具有较强的现实意义。
目前社会上有很多已经实现的毕业设计管理系统,例如:华南理工大学本科毕业设计(论文)管理系统,它们的系统功能齐全,覆盖了整个毕设的工作流程,但是选题模块不能满足学生和导师双选的效果;上海交通大学毕业设计管理系统,没有教师申报指定学生课题的功能,未能实现在线文档编辑功能;东华理工大学毕业设计双向选题系统,主要实现了学生导师双向选题的功能模块。从国内的研究现状来看,目前国内大部分高校对本科毕业设计的管理工作仍然采用传统的手工模式,部分高校根据学校现状和特点,自行开发了适合本校的毕业设计管理系统。
国外的本科毕业设计管理系统的研究方向偏向于双向选题管理和过程监控管理等[3]。双向选题使得学生能够找到自己感兴趣的研究方向,导师也可以择优选择自己的学生,并且能够实现远程办公的功能,使得导师就像面对面指导,实现师生的互动和在线交流;过程监控有效地控制着毕业设计管理工作的整个流程,同时也能监督学生毕设进展,使得学生在指导教师的监控下按阶段完成毕业设计。例如,日本的东京大学计算机科学与技术学院设计开发的毕业设计题目申报与管理系统,主要实现教师课题申报、课题审核、学生选题以及过程监控等功能[3]。
虽然国外的本科毕业设计管理系统相当成熟,由于我国的教学管理理念、教育机制以及管理制度与国外不同,引进国外的毕业设计管理系统并不能满足我们的需求[3]。本毕业设计通过结合河南理工大学毕业设计管理规定,并借鉴其他高校包括国外高校本科毕业设计管理系统,个性化地为本学院设计一个本科毕业设计管理系统。通过引进该系统,不但使毕业设计的管理流程更加规范,同时能够提高教学管理人员以及专业教师的工作效率,提高毕业设计的整体质量。
本论文主要对河南理工大学计算机学院本科毕业设计管理系统的设计与实现过程进行说明。本文共分八章,论文的组织结构如下:
第一章 前言:本章节阐述课题开发背景、目的及意义、当前国内外本科毕业设计管理系统的研究现状和论文主要的研究内容。
第二章 项目主要技术分析:主要描述了本系统使用到的主要技术,包括系统的体系结构和编程框架(Layui、Spring、SpringMVC和Mybatis)。
第五章 系统实现:本章对系统各功能模块的实现进行详细描述,展示系统主要操作界面及部分关键代码。
第六章 系统测试:本章主要描述了系统测试的目的、常用的测试方法,并以登录功能为例,设计合理的测试用例进行实际测试。
第七章 总结:本章对本系统的开发进行总结。说明本系统实现的功能模块及系统的设计过程,分析毕业设计中遇到的问题和相应的解决的方法,最后简单介绍本人毕业设计的心得体会。
第八章 致谢:本章节主要对毕业设计指导教师和给予帮助的同学表达由衷的感谢。
软件体系架构设计是在软件系统设计中最为重要的一环,决定系统是否具有可重用性和可扩展性,对后期的维护和扩展具有重要意义,目前主流的软件体系架构有C/S模式、B/S模式和C/S+B/S混合模式等[2]。
C/S结构指的是客户端/服务器模式的软件体系结构。在该模式中,客户端需要具有一定的数据存储和处理的能力,在接收到用户请求之后,通过一定的协议与服务器进行通信[5],将服务器返回的内容经过处理后以相应的形式展示给用户。
B/S结构指的是浏览器/服务器模式的软件体系结构。在该模式中,客户端只要装上操作系统(自带浏览器),通过使用浏览器,即可成功访问服务器端发布的项目。客户端仅负责接收用户请求并将服务器返回的结果向用户展示,软件应用的事物逻辑完全在服务器端实现。该模式相对于C/S模式,软件构件的独立性高,有较好的重用性,有利于后期对系统进行维护和升级,由于B/S模式采用三层分布式结构,使系统负载均衡分布,用户量的增加对其性能影响较小。
所以本毕业设计管理系统采用B/S模式体系架构进行开发。B/S模式体系结构如图2-1所示。
图2-1 B/S模式体系结构图
超文本标记语言(HTML),通过在文本文件中加入标签,使标签中的内容以规定的格式进行显示。该文件以.html为扩展名,以开头,以结尾,其中包含了
标签和标签。中包含的标记是页面的标题(title)、引入的类库、页面元信息等内容,中的内容通过浏览器解释后以网页的形式向用户展示。CSS(Cascading Style Sheets)是层叠样式表的英文缩写,它提供了丰富的样式定义,可以对HTML文件中的标签样式进行修饰,使页面展示更加美观,还可以配合各种脚本语言动态地对网页中的元素进行修饰。引入CSS样式可以将网页文字内容和样式分开存储,从而使代码逻辑更加清晰,易于使用和修改。
JavaScript简称JS,它是客户端的脚本语言,代码不需要进行编译,由浏览器解释执行。它还是一种采用事件驱动的脚本语言,在用户在网页上执行一些操作之后,它可以不通过web服务器直接对这些事件作出响应,通常使用JS做一些简单的逻辑判断。JavaScript通过和HTML以及CSS技术结合,能够设计出美观友好的用户界面,增强用户的体验。
JSP是Java服务器页面的英文缩写,是以Java语言作为脚本语言建立在Servlet规范提供的功能之上的动态网页技术,用来在网页上显示动态内容,由Java程序片段和JSP标记构成,其根本是一个简化的Servlet设计,能够将请求处理和业务逻辑代码与表示相分离,JSP文件在第一次运行的时候会先解析成servlet源文件,然后编译成servlet类文件,最后才会被servlet容器运行,执行过程如图2-2所示。
图2-2 JSP执行过程
Java是目前主流的面向对象编程语言,有许多有用的类库,Java8通过引入流的API,使得它支持许多处理数据的并行操作,并且编写的代码更简洁。Java的“一次编译,到处运行”的模式,使得它具有卓越的平台移植性。由于Java具有通用性、高效性、平台移植性和安全性等优良特性,使得Java应用具有无比的健壮性和可靠性。
Layui是一款采用自身模块规范编写的响应式前端 UI 框架,遵循前端开发规范,简单易学,非常适合界面的快速开发。Layui 不同于那些基于 MVVM 底层的 UI 框架,它主要是面向服务端开发人员,避开各种前端工具的复杂配置,重新回归到原生态的 HTML/CSS/JavaScript本身。
Spring是一个开放源代码的轻量级Java开发框架,是为了解决企业应用开发的复杂性而创建[4]。Spring可以让简单的JavaBean实现之前只有EJB(Enterprise JavaBean)才能完成的事情,是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,但Spring不仅仅限于服务器端的开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益,Spring最根本的使命是简化Java开发[4]。
Spring MVC是当前非常流行的JAVA框架,提供了MVC(模型-视图-控制器)架构,使用方法映射路径的方式,相比传统的Servlet和Struts2更加灵活简便。同时MVC模式导致应用程序的输入逻辑、业务逻辑和UI逻辑相分离,同时提供这些元素之间的松耦合[10]:
(1)模型(Model)封装了应用程序数据,通常由POJO类组成;
(2)视图(View)负责渲染模型数据,生成客户端浏览器可以解释的HTML文件;
(3)控制层(Controller)负责处理用户请求并构建适当的模型,将其传递给视图进行渲染。
Mybatis框架是一个基于Java的持久层框架,包括SQL Maps和DAO(Data Access Objects),它支持程序员自己编写SQL,同时也能支持存储过程,所以它能够处理一些复杂的和需要优化性能SQL查询,它几乎能做到JDBC所能做到的所有事情,在注意一些规则的基础上,MyBatis可以给我们完成自动映射,这大大提高了开发效率和灵活性[8]。
2.2.5SSM框架的执行流程
SSM框架是由Spring、Spring MVC、Mybatis三层框架组合而成。首先浏览器发起HTTP请求,DispatchServlet捕获并根据请求路径将任务委托给具体的控制器。控制器接收参数并转换为合适的对像传递到Service层,Service层处理具体的业务逻辑,利用Dao层将数据持久化,然后将处理结果返回至Controller,
Controller将结果转换为相应的模型,渲染jsp页面,输出到浏览器,供用户浏览。
SSM程序执行流程图如图2-3所示。
图2-3 SSM程序执行流程图
按照软件工程的思想,在进行软件需求分析前,需要从经济、技术、操作和管理等方面进行可行性分析,从而判断软件是否值得开发,以避免人、才、物的浪费。
经济可行性需要确定出开发本科毕业设计管理系统的总成本和总收益,然后对总成本和总收益进行比较,当总收益大于总成本时,这个项目才值得开发[5]。
毕业设计管理系统作为一个中小型的管理系统,软件开发和维护由本校学生完成,因此不需要投入过多的开发和维护费用,部署所需要的服务器配置也不需要太高,硬件所需费用低,高校完全能够负担起这笔开支。在该系统实施后,不仅可以减轻教学管理人员的工作负担,提高工作效率,而且可以方便指导教师对学生毕设的监控和指导,有利于提高该校学生的毕设质量,其产生的总收益远远超过总成本,因此在经济上是可行的。
随着互联网迅速发展,高校几乎全都实现了校园网络全覆盖,这对该系统的实施提供了网络支持。近年来,随着科技发展的不断加快,硬件性价比也随之提高,电脑在大学生中已经得到普及,这对该系统的实施提供了硬件的支持。在软件方面,本系统以IntelliJ IDEA2018作为开发工具,采用Java8作为后台开发语言,以SSM作为开发框架,tomcat 8.5作为Web服务器,MySQL 8.0作为数据库,用Navicat可视化界面对数据库进行设计,Layui框架实现网页的显示。系统开发涉及到的技术和工具都十分成熟,已经大量应用于企业级信息化系统中,因此技术上是可行的。
本系统采用B/S架构进行设计,用户通过客户机上的IE、火狐等web浏览器即可成功访问该网站,并对其进行操作。系统界面友好,用户仅需简单试用皆能熟练掌握该系统的操作流程,因此本系统具有较好的可操作性。
该系统包括申请课题、课题审核、双向选题、开题报告、中期检查、论文评阅、毕业答辩、成绩管理等模块,通过该系统,方便教师对学生的进度进行监控,也方便教学管理人员对毕设进度进行监控管理,对成绩进行统计分析,因此在管理方面具有可行性。
通过以上四个方面的可行性分析,可以得出该系统的开发具有可行性。
目前计算机学院毕业设计系统功能模块不够完善,系统界面不够友好,模块划分不够清晰,大部分工作仍然采用人工管理方式,为教学管理人员带来了极大的压力,也不利于指导教师对学生的毕业设计的监控和指导。通过对系统需求进行调研,本系统应该满足如下的业务需求:
(1)教师申报课题策略:教师可以申报盲选课题和申报指定学生课题两种形式,在教师申报盲选课题后,由专业负责人根据各专业的培养目标,审核课题是否通过,审核通过的课题,即可在系统中发布,供毕业生选择;对于一些特殊情况,有些学生在本科期间,跟随教师做科研或项目,教师可以在申报毕业设计课题的同时指定学生,使学生能够选择自己感兴趣的课题作为毕设课题。
(2)学生选择课题策略:学生选择课题共分两个阶段,首先学生进行初次选题,初选中每位学生允许选择一个课题,但是每一个课题允许多名学生进行选择,指导教师对选择课题的学生进行筛选,有效地保证了学生与导师之间的双向选择,初选未被选中的学生进入二次选题,二次选题后如有学生仍未选择课题将由专业负责人进行课题分配[11]。
(3)教师指导学生策略:确定选题后,学生在线进行开题报告、中期检查报告的撰写,并将写好的文档上传至系统,毕设论文通过文件提交系统,供指导教师审核,指导教师发现问题后,可以在留言区给学生留言,将问题告知学生,进行修改,直到指导教师满意为止,指导教师根据平时表现,录入平时成绩和评语。
(4)评阅和答辩策略:评阅教师的分配由系统自动完成,评阅教师可以查看为本人待评阅的学生及其论文,并为其录入评阅成绩和评语;专业负责人可以管理(修改和查询)该专业所有学生的评阅成绩和评语。答辩安排由专业负责人完成后交由系统管理员,系统管理员通过公告的方式通知学生和教师进行答辩。答辩完成后,由专业负责人录入答辩成绩和评语,系统自动进行成绩分析,供专业负责人参考。
该系统的业务分析流程图如图3-1所示。
图3-1 业务分析流程图
本系统共涉及系统管理员、全体毕业生、指导教师、评阅教师和专业负责人五种角色。通过这五种角色操作的相互配合,共同完成了从课题申报、审批课题、双向选题、开题报告、中期检查、毕业论文、成绩管理等功能。
(1)指导教师模块:该模块主要负责申报课题(包括申报指定学生的课题和未指定学生的课题)、学生选题结束后选择已选课题的学生、查看指导学生、查看学生提交的成果文档并给出指导建议、评审学生提交的成果文档、录入学生的平时成绩和评语等等
(2)评阅教师模块:该模块主要负责查看评阅学生的论文,填写评阅意见并给出评阅成绩等。
(3)专业负责人模块:该模块主要负责对指导教师的课题进行审批、为未选课题学生指定课题、分配评阅教师、录入答辩成绩及评语、对学生的成绩进行统计分析等。
(4)学生模块:该模块主要负责选择毕业设计题目、提交毕设各阶段成果文档(开题报告、中期检查、毕业论文)、查询毕设成绩等。
(5)系统管理员模块:教师信息管理、学生信息管理、公告信息管理、文件信息管理(包括毕业设计相关表格和优秀毕业论文)、志愿管理、课题信息管理等。
(6)公共模块:公共模块是五大角色都可以访问到的模块,在该模块中,用户可以查看毕业设计进度、查看最新公告、下载毕业设计相关表格、下载优秀论文、查看系统消息等等。
根据本科毕业设计管理系统涉及的各角色的业务需求,画出本科毕业设计管理系统的功能模块图,如图3-2所示。
图3-2 本科毕业设计管理系统的功能模块图
系统中的用户角色包括指导教师、评阅教师、专业负责人、学生以及系统管理员,用户在登录系统前需要选择用户角色,登录后系统会根据用户角色跳转到相应的系统模块,为了保证个人账户的安全性,用户登录后可以进入修改密码页面对密码进行修改。用户登录的用例图如图3-3所示。
图3-3 用户登录用例图
在公告管理模块中,系统管理员具有发布公告的权限,系统管理员、教师(指导教师、评阅教师、专业负责人、答辩组组长)和学生可以查看系统公告,公告管理的用例图如图3-4所示。
图3-4 公告管理用例图
在文件管理模块中,系统管理员可以上传毕业设计相关的文件资料、往届优秀毕业论文,所有角色均可下载需要的文档进行查看,当文件需要更新时,系统管理员可以对文件进行删除,文件管理用例图如图3-5所示。
图3-5 文件管理用例图
在课题管理模块中,指导教师根据自己的科研教学经验,拟定适合该专业学生的毕业设计课题,将拟定好的课题提交后,专业负责人审核该专业教师申请的课题,判断指导教师申请的课题任务量、难易程度等方面是否符合要求,将不符合要求的课题退回,指导教师对这些课题进行修改后,再次上传供专业负责人审核,如果课题符合培养方案的要求,审核通过后供学生选择,课题管理的用例图如图3-6所示。
图3-6 课题管理用例图
课题管理的活动图如图3-7所示。
图3-7 课题管理活动图
在选题管理模块中,列出了当前学生可以选择的课题,学生可以查看课题的名称、类型、指导教师以及该课题的详细信息,选择感兴趣的课题作为毕设课题,学生选题结束后,指导教师能够查看本人申请成功的课题被选情况,并根据学生的综合能力,从多个已经选择该课题的学生中选择最佳的学生,其余学生进入二次选题阶段,在该阶段学生按照同样的方式在剩余课题中选择课题,教师对已选课题进行确认,通过两次双选之后,仍未选择课题的学生,由专业负责人随机指
定。选题管理的用例图如图3-8所示。
图3-8 选题管理用例图
选题管理活动图如图3-9所示。
图3-9 选题管理活动图
在进度管理模块中,学生针对自己的毕业设计课题,按照毕业设计各个阶段的要求,按系统提示的时间阶段填写开题报告、中期检查、论文初稿等文档,供指导教师审阅,指导教师根据文档书写情况,给出修改意见并反馈给学生,学生收到反馈建议后,对文档进行修改,重新提交供指导教师审阅,直到指导教师满意为止,最终版的文档作为毕业设计留存文档。进度管理用例图如图3-10所示。
图3-10 进度管理用例图
进度管理的活动图如图3-11所示。
图3-11 进度管理的活动图
在答辩管理模块中,系统管理员将答辩安排以公告的形式发布在系统中,教师和学生登录系统后,可以查看答辩安排的详细信息(包括答辩组组长、答辩组教师列表、答辩时间、答辩地点、答辩学生列表等),答辩结束后,答辩组组长将该组学生的答辩成绩和评语录入系统,系统按照一定的规则计算出每位学生的总成绩,答辩管理的用例图如图3-12所示。
图3-12 答辩管理的用例图
答辩管理活动图如图3-13所示。
图3-13 答辩管理活动图
在毕设过程中,指导教师能够查看申请的课题是否通过审核,审核通过的课题的被选学生列表,学生能够查看本人选择的课题是否被指导教师确认,系统管理员能够查看指导教师课题申请的详细信息以及学生选题的详细信息。在毕业设计期间,学生能够查看毕设进度,来按时完成各阶段任务,指导教师能够查看本小组每位同学的毕设情况,从而能够实时监控并督促进度滞后的学生尽快调整进度。毕设结束后,学生能够查看本人的成绩,专业负责人能够查看本专业学生的成绩,同时能够生成统计报表,对毕设成绩进行统计分析,查询统计用例图如图3-14所示。
图3-14 查询统计用例图
系统管理模块是专为系统管理员服务,系统管理员可以在该模块中对学生信息、教师信息、公告信息、文件信息、课题信息以及志愿信息进行维护,还可以为教师分配角色,一个教师可以承担不同的角色,不同的角色拥有不同的权限,从而确保数据操作的安全性,系统管理用例图如图3-15所示。
图3-15 系统管理用例
除了系统的功能性需求,系统的稳定性、易用性、安全性、可扩展性等性能需求也是系统需求分析的重要组成部分,在该系统的设计与实现过程中,需要满足以下需求:
(1)稳定性:本系统要求能稳定运行,多用户同时访问时,不易产生系统崩溃或响应时间变慢等情况[9]。
(2)易用性:在该系统开发过程中,应该采用友好美观的用户界面,功能模块分类清晰,符合用户操作习惯,增强与用户交互性设计,通过简单的使用,就能够熟练进行相关的业务操作。
(3)安全性:系统应该充分考虑数据和应用的安全性,防止用户误操作给系统的运行和内部的数据造成破坏[2]。用户登录需要分角色,不同的角色拥有不同的权限,从而保证数据库的安全性,各种输入的信息,必须进行合法性检验,所有删除操作,均需提供警示信息,需要操作者二次确认才能删除。
(4)可扩展性:系统采用模块化设计,在系统上线后依然能够根据用户的需求,对各大功能模块进行扩充,从而适应用户需求的变化。
本科毕业设计管理系统的主要设计思路:首先进行数据库表的结构设计,向数据库中插入测试数据,在IntelliJ IDEA 2018开发工具中搭建SSM框架,然后对前台页面进行设计与实现。具体执行流程为:前台与Controller层交互,将service注入Controller层,Dao注入Service层,最终Dao映射到对应的Mapper.xml文件,通过SQL操作数据库,最终将结果返回给前台,向用户展示。
在需求分析的基础上,经过总体设计,将该系统划分为四大模块,并确立了模块间的调用管理和数据传递关系。
通过浏览器访问该网站,首先会跳转到游客页面,在该网页中包含了最新公告、相关表格、优秀毕业论文等内容,教师、学生、管理员可以通过该页面选择不同的角色进行登录,如果是合法用户,可以跳转到网站首页(网站首页是三大用户共有功能),用户可以查看毕业设计进度、最新公告、下载毕设相关文件、往届优秀论文和待办事项。
(1)以管理员身份登录,其功能有:教师信息管理(教师信息的增、删、改操作和权限分配)、学生信息管理(学生信息的增、删、改操作)、公告管理(上传公告、删除公告)、文件管理(模板和优秀毕业论文的上传和删除)、课题管理、选题管理。
(2)以教师身份登录:如果该教师是指导教师,其功能有:申报课题(可以申报指定学生的课题和未指定学生的课题)、我的学生管理(包括选择学生、指导学生、评审学生文档、录入平时成绩和评语)、我的课题管理;如果该教师是评阅教师,其功能有:查看学生论文、提交评阅成绩和评语;如果该教师是专业负责人,其功能有:审批教师课题、答辩成绩录入、对本专业毕业生的成绩进行分析。
(3)以学生身份登录,其功能有:选择课题、我的任务(包括在线提交开题报告、中期检查,以文件的形式提交论文,还可以在留言区与教师交流)、我的成绩(学生可以在该模块查看本人的平时成绩、评阅成绩和答辩成绩)。
本系统的系统流程图如图4-1所示。
图4-1 系统流程图
数据库设计的优劣将直接影响信息系统的质量和运行效果,如果数据库模型设计的不合理,即使使用性能良好的DBMS软件,也很难使应用系统达到良好的状态[6]。因此,严格按照数据库设计的流程,通过用户需求分析,得到一个独立于DBMS的概念模型[5],将概念模型转换为MySQL所支持的数据模型,通过范式理论优化关系模式,从而在满足系统效率的前提下,设计出一个范式尽可能高的数据库。
通过对系统进行需求分析和数据抽象,从中抽取出系统中与数据相关的各个实体以及实体间的联系,形成数据库概念模型,并用图示方法表示出来,即E-R图(实体-联系图)。毕业设计管理系统中涉及到的实体有:教师实体(含管理员)、学生实体、文件实体、公告实体、课题实体、选题实体、开题报告实体、中期检查实体、论文实体、评阅实体、建议实体,各个实体的具体E-R图描述如下:
教师实体的E-R图描述如图4-2所示。
图4-2 教师实体E-R图
学生实体的E-R图描述如图4-3所示。
图4-3 学生实体E-R图
文件实体的E-R图描述如图4-4所示。
图4-4 文件实体E-R图
公告实体的E-R图描述如图4-5所示。
图4-5 公告实体E-R图
课题实体的E-R图描述如图4-6所示。
图4-6 课题实体E-R图
选题实体的E-R图描述如图4-7所示。
图4-7 选题实体E-R图
开题报告实体的E-R图描述如图4-8所示。
图4-8 开题报告实体的E-R图
中期检查实体的E-R图描述如图4-9所示。
图4-9 中期检查实体E-R图
论文实体的E-R图描述如图4-10所示。
图4-10 论文实体E-R图
评阅实体的E-R图描述如图4-11所示。
图4-11 评阅实体E-R图
建议实体的E-R图描述如图4-12所示。
图4-12 建议实体的E-R图
该系统的总体E-R图如图4-13所示。
图4-13 系统总体E-R图
在数据库需求分析和概念结构设计的基础上,将概念模型转化为相应的逻辑数据表,即对数据库表的结构进行设计。本系统中用到的表有:教师信息表teacher,学生信息表student,文件信息表file,公告(留言)信息表notice,课题信息表title,选题信息表s_t,开题报告信息表open_report,中期检查信息表mid_check,论文信息表thesis,评阅信息表review,建议表comments等。用到的视图有:学生成绩视图grade。如图4-14所示。
图4-14 本系统数据库中的表
系统中用到的主要表结构描述如下:
(1)教师信息表teacher
教师信息表用来存储教师编号、姓名、密码、性别、学院、专业、职称、研究领域、电话号码、邮箱信息,如表4-1所示。
表4-1 教师信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
Tid |
varchar |
64 |
是 |
否 |
教师号 |
Tname |
varchar |
8 |
否 |
否 |
姓名 |
Tpwd |
varchar |
64 |
否 |
否 |
密码 |
sex |
enum |
0 |
否 |
是 |
性别 |
college |
varchar |
16 |
否 |
是 |
学院 |
major |
varchar |
16 |
否 |
否 |
专业 |
rank |
varchar |
16 |
否 |
是 |
职衔 |
research_area |
varchar |
16 |
否 |
是 |
研究领域 |
telephone |
varchar |
16 |
否 |
是 |
电话号码 |
|
varchar |
32 |
否 |
是 |
邮箱 |
(2)学生信息表student
学生信息表用来存储学生学号、姓名、密码、性别、年龄、学院、专业、班级、电话、Email信息,如表4-2所示。
表4-2 学生信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
Sno |
varchar |
64 |
是 |
否 |
学号 |
Sname |
varchar |
8 |
否 |
否 |
姓名 |
Spwd |
varchar |
64 |
否 |
否 |
密码 |
sex |
enum |
0 |
否 |
是 |
性别 |
age |
int |
64 |
否 |
是 |
年龄 |
college |
varchar |
16 |
否 |
是 |
学院 |
major |
varchar |
16 |
否 |
否 |
专业 |
Sclass |
varchar |
16 |
否 |
是 |
班级 |
telephone |
varchar |
16 |
否 |
是 |
电话号码 |
|
varchar |
32 |
否 |
是 |
邮箱 |
(3)文件信息表file
文件信息表用来存储文件编号、文件名、文件存储路径、文件大小、上传时间、文件类型(模板文件、优秀毕业论文和最新公告的附件)信息,如表4-3所示。
表4-3 文件信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
file_id |
bigint |
64 |
是 |
否 |
文件编号 |
file_name |
varchar |
64 |
否 |
否 |
文件名称 |
file_path |
varchar |
255 |
否 |
否 |
文件路径 |
file_size |
int |
64 |
否 |
是 |
文件大小 |
upload_datetime |
datetime |
0 |
否 |
是 |
上传时间 |
type |
varchar |
32 |
否 |
否 |
文件类型 |
(4)公告信息表notice
公告信息表用来存储公告编号、标题、内容、发布的时间、附件编号的信息,如表4-4所示。
表4-4 公告信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
Nid |
bigint |
64 |
是 |
否 |
公告编号 |
N_title |
varchar |
64 |
否 |
否 |
公告标题 |
N_datetime |
datetime |
0 |
否 |
否 |
公告时间 |
N_content |
varchar |
1000 |
否 |
否 |
公告内容 |
N_appendix_id |
bigint |
64 |
否 |
是 |
附件编号 |
(5)课题信息表title
课题信息表用来存储课题编号、课题名称、申请该课题的教师编号、课题描述、课题类型、课题状态的信息,如表4-5所示。
表4-5 课题信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
titleId |
bigint |
64 |
是 |
否 |
课题编号 |
title_name |
varchar |
64 |
否 |
否 |
课题名称 |
tid |
varchar |
64 |
否 |
否 |
教师编号 |
problem_desc |
varchar |
2000 |
否 |
否 |
课题描述 |
kind |
varchar |
10 |
否 |
否 |
课题类型 |
T_state |
enum |
0 |
否 |
是 |
课题状态 |
(6)选题信息表s_t
选题信息表用来存储选课学生的编号、课题编号、选中状态、平时成绩、平时表现评语、答辩成绩和答辩评语的信息,如表4-6所示。
表4-6 选题信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
Sno |
varchar |
12 |
是 |
否 |
学生编号 |
titleId |
bigint |
64 |
是 |
否 |
课题编号 |
sel_state |
enum |
0 |
否 |
否 |
选中状态 |
usual_grade |
double |
0 |
否 |
否 |
平时成绩 |
usual_comments |
varchar |
500 |
否 |
否 |
平时表现评语 |
reply_grade |
double |
0 |
否 |
是 |
答辩成绩 |
reply_comments |
varchar |
500 |
否 |
是 |
答辩评语 |
(7)开题报告信息表open_report
开题报告信息表用来存储开题报告的编号、课题来源、课题预期成果、学生学号、选题依据、目的意义、主要参考文献、研究内容、进度安排、特色和创新点、是否可行、任务量大小、是否同意开题的信息,如表4-7所示。
表4-7 开题报告信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
Rid |
bigint |
64 |
是 |
否 |
开题报告编号 |
Tsource |
varchar |
10 |
否 |
否 |
课题来源 |
expect_outcome |
varchar |
10 |
否 |
否 |
预期成果 |
Sid |
varchar |
64 |
否 |
否 |
学生学号 |
title_basic |
longtext |
0 |
否 |
否 |
选题依据 |
purpose_mean |
longtext |
0 |
否 |
否 |
目的意义 |
references |
longtext |
0 |
否 |
否 |
参考文献 |
research_contents |
longtext |
0 |
否 |
否 |
研究内容 |
schedul |
longtext |
0 |
否 |
否 |
进度安排 |
feature_Inno |
longtext |
0 |
否 |
否 |
特色创新 |
feasibility |
enum |
0 |
否 |
是 |
可行性 |
task_load |
enum |
0 |
否 |
是 |
任务量 |
agree_open |
enum |
0 |
否 |
是 |
是否同意开题 |
Esignature |
varchar |
64 |
否 |
是 |
教师签名 |
(8)中期检查信息表mid_check
中期检查表用来存储中期检查文档编号、学生学号、进度情况、阶段性成果、存在的主要问题及解决方法、教师评语、教师签名、提交日期时间的信息,如表4-8所示。
表4-8 开题报告信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
Mid |
bigint |
64 |
是 |
否 |
中期检查编号 |
Sid |
varchar |
12 |
否 |
否 |
学生学号 |
progress_status |
longtext |
0 |
否 |
否 |
进度情况 |
staged_achieve |
longtext |
0 |
否 |
否 |
阶段成果 |
problem_solve |
longtext |
0 |
否 |
否 |
问题解决方案 |
remark |
varchar |
100 |
否 |
是 |
教师评语 |
signature |
varchar |
64 |
否 |
是 |
教师签名 |
datetime |
datetime |
0 |
否 |
是 |
日期时间 |
(9)论文信息表thesis
论文信息表用于存储学生上传论文的编号、学生学号、课题编号、上传的日期时间、附件编号的信息,如表4-9所示。
表4-9 论文信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
thesis_Id |
varchar |
64 |
是 |
否 |
论文编号 |
author_Id |
varchar |
12 |
否 |
否 |
学生编号 |
Title_Id |
bigint |
64 |
否 |
否 |
课题编号 |
upload_time |
datetime |
0 |
否 |
是 |
日期时间 |
attachment_Id |
bigint |
64 |
否 |
否 |
附件编号 |
(10)评阅信息表review
评阅信息表用于存储学生编号、教师编号、评阅成绩和评阅评语的信息,如表4-10所示。
表4-10 论文信息表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
Sno |
varchar |
12 |
是 |
否 |
学生编号 |
Tid |
varchar |
64 |
是 |
否 |
教师编号 |
review_grade |
double |
32 |
否 |
是 |
评阅成绩 |
review_comment |
varchar |
1000 |
否 |
是 |
评语 |
(11)建议表comments
建议表用于存储建议编号、内容、附件编号、发送者编号、提交日期时间、建议类型(开题报告、中期检查和论文)以及类型编号(用于存储统一类别的留言建议的编号),如表4-11所示。
表4-11 建议表
字段名称 |
数据类型 |
数据长度 |
是否主键 |
允许空值 |
注释 |
id |
bigint |
64 |
是 |
否 |
建议编号 |
content |
varchar |
255 |
否 |
否 |
建议内容 |
attachment_id |
bigint |
64 |
否 |
是 |
附件编号 |
sender_id |
varchar |
64 |
否 |
否 |
发送者编号 |
create_date |
datetime |
0 |
否 |
是 |
日期时间 |
type |
enum |
0 |
否 |
否 |
建议类型 |
typeId |
varchar |
64 |
否 |
否 |
类型编号 |
(12)学生成绩视图grade
学生成绩视图是为了方便专业负责人统计本专业成绩,同时也方便学生查询本人成绩,学生成绩视图如图4-15所示。
图4-15 学生成绩视图
为了保证数据的一致性,在本数据库系统中,根据应用的需要,一共设定了12个外键,分别为:
①s_t表中的“Sno”列参照student表的“Sno”列。
②s_t表中的“tittleId”列参照tittle表的“tittleId”列。
③open_report表中的“Sid”列参照student表的“Sno”列。
④mid_check表中的“Sid”列参照student表的“Sno”列。
⑤thesis表中的“author_Id”列参照student表的“Sno”列。
⑥thesis表中的“tittleId”列参照tittle表的“tittleId”列。
⑦thesis表中的“attachment_Id”列参照file表的“file_id”列。
⑧comments表中的“attachment_id”列参照file表的“file_id”列。
⑨notice表中的“N_appendix_id”列参照file表的“file_id”列。
⑩tittle表中的“tid”列参照teacher表的“Tid”列。
⑪review表中的“Sno”列参照student表的“Sno”列。
⑫review表中的“Tid”列参照teacher表的“Tid”列。
该系统中表之间的关系图如图4-16所示。
图4-16 系统的表间关系图
在创建好的项目中,首先需要创建本项目所需要的包,用于分类存放该项目的代码文件。resources文件夹用于存放项目的资源文件,包括mybatis的配置文件、Spring配置文件、SpringMVC配置文件和数据库属性配置文件;src.com.bysj包下用于存放该项目的源代码文件,包括controller包、dao包、service包、entity包(前台实体和数据库表对应实体)、util包(存放工具类文件)、framework包(异常文件);WebContent文件夹用于存放静态文件(包括CSS文件、js文件、img文件、layui文件)、uploadFiles文件(用于存放上传的文件和模板文件);
WEB-INF文件夹下用于存放jsp文件、该项目用到的类库文件和web.xml。项目包结构如图5-1所示。
图5-1 项目包结构
本系统使用SSM(Spring、SpringMVC和Mybatis)框架实现,首先在mybatis-config.xml中对Mybatis进行配置,然后在applicationContext.xml文件中配置Spring框架并将mybatis框架整合到Spring配置文件中,在applicationContext-mvc.xml中配置SpringMVC框架,最后在web.xml中将applicationContext.xml引入并配置applicationContext-mvc.xml的servlet。
Mybatis框架实现的关键代码的配置:
(1)数据源配置文件
数据源配置文件里存放着数据源的url、驱动名称、数据库连接用户名称、密码的信息,代码如下:
url=jdbc:mysql://127.0.0.1:3306/bysjglxt1?userSLL=true&useUnicode=true
&characterEncoding=utf8
driverClassName:com.mysql.jdbc.Driver
username:root
password:root1
(2)Spring框架的配置
Spring框架实现的关键代码的配置:
(3)Spring框架与Mybatis框架整合代码
将Mybatis整合到Spring中,其配置文件的代码如下:
value="classpath:mybatis/mybatis-conf ig.xml">
class="org.mybatis.spring.SqlSessionTemplate">
value="sqlSessionTemplate"/> SpringMVC框架的代码配置如下: 将配置好的Spring配置文件和SpringMVC的配置文件配置到web.xml文件中,代码如下: (1)Spring配置文件的引入 (2)在web.xml中配置SpringMVC的servlet: org.springframework.web.servlet.DispatcherServlet classpath:spring/ApplicationContext-mvc.xml 在包com.bysj.entity.po下创建数据库表对应的12个持久化对象,在resources/mybatis/mapper路径下创建对应的Mapper映射文件,如图5-2所示。 图5-2 po包和mapper包结构 其中teacher(教师)实体的代码实现如下: package com.bysj.entity.po; import java.io.Serializable; public class Teacher implements Serializable{ private static final long serialVersionUID = 92833768095169162L; private String Tid; private String Tname; private String Tpwd; private String sex; private String college; private String major; private String rank; private String researchArea; private String telephone; private String Email; public static long getSerialVersionUID() { return serialVersionUID; } public String getTid() { return Tid; } public void setTid(String tid) { Tid = tid; } public String getTname() { return Tname; } public void setTname(String tname) { Tname = tname; } public String getTpwd() { return Tpwd; } public void setTpwd(String tpwd) { Tpwd = tpwd; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getCollege() { return college; } public void setCollege(String college) { this.college = college; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public String getRank() { return rank; } public void setRank(String rank) { this.rank = rank; } public String getResearchArea() { return researchArea; } public void setResearchArea(String researchArea) { this.researchArea = researchArea; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public String getEmail() { return Email; } public void setEmail(String email) { Email = email; } } Dao包下存放着用于与数据库交互的接口,每一个接口对应一个mapper.xml映射文件,在mapper.xml文件中存放着接口中未实现的方法对应的sql语句,从而实现对数据库的操作,dao包的结构如图5-3所示。 图5-3 Dao包的结构图 业务逻辑层通过调用数据访问层的对象获得操作所需要的数据,然后通过一定的业务逻辑,对获得的数据进行处理,将处理的结果返回给controller层。包的结构图如图5-4所示。 图5-4 业务逻辑层包的结构图 控制层是用户请求与业务逻辑中间的桥梁,负责拦截各种跳转页面,将通过调用service层的方法来对用户请求进行处理,将结果返回给用户。控制层的包的结构如图5-5所示。 图5-5 控制层的包图 为了保证整个网站的页面风格相同,我们将网站导航栏和菜单栏设置为网站通用模块,无论跳转到哪个页面都可以对其进行引用。 (1)导航栏header.jsp 导航栏页面用于存放网站标志信息、用户登录、退出、个人资料以及修改密码的按钮,部分主要代码如下所示: 5.5.3SpringMVC框架实现
5.5.4web.xml文件的配置
5.3代码设计模块
5.3.1实体
5.3.2数据访问层(dao)
5.3.3业务逻辑层(service)
5.3.4控制层(controller)
5.4系统通用模块
(2)菜单栏left.jsp
菜单栏根据用户角色的不同会展示不同的功能模块,供用户使用。当用户为学生时,其内容是主页、选择课题、我的任务、开题报告、中期检查、毕业论文、我的成绩;当用户为指导教师时,其内容是:申报课题、我的学生、我的课题;当用户为评阅教师时,其内容是:评阅管理;当用户是专业负责人时,其内容是:课题审批、答辩成绩录入、成绩分析;当用户是管理员时,其内容是:教师管理、学生管理、公告管理、文件管理、志愿管理和课题管理。部分主要代码如下:
系统中的用户角色包括教师(指导教师、评阅教师、专业负责人、系统管理员)角色和学生角色,用户在登录系统前需要选择用户角色,登录后系统会根据用户角色跳转到相应的系统模块,所有的用户均需要输入用户名、密码以及验证码,为了保证个人账户的安全性,用户登录后可以进入修改密码页面对密码进行修改,在成功登录系统前,系统会通过调用数据库查询是否存在该用户,如果用户输入的信息正确,会跳转到网站首页,否则会提示错误信息,用户登录的流程图如图5-6所示。
图5-6 用户登录的流程图
登录界面设计如图5-7所示。
图5-7 登录界面
用户点击登录,系统会调用login.js和header.jsp来显示登录界面,用户根据提示选择角色,输入账号、密码以及验证码,点击“登录”按钮,系统会将数据传输到loginController.java页面,在该页面首先对验证码进行判断,如果验证码为空或者错误,向前台输出验证码错误提示框,否则,会根据角色调用相应的service层方法(教师调用TeacherService类的getTeacherByUsernameWithPwd()方法,学生调用StudentService类的getStudentByUsernameWithPwd()),service层调用Dao层方法(教师调用TeacherDao类的getTeacherByUsernameWithPwd()方法,学生调用StudentDao类的getStudentByUsernameWithPwd()),框架通过映射去mapper.xml中查找对应的SQL在数据库中查询,如果存在这样的用户,则跳转到系统首页mainPage.jsp,如果不存在,则提示用户名或密码错误的提示框。
登录功能的主要代码如下:
LoginController.java中的代码:
public ResultBean login(@RequestParam("username") String username,
@RequestParam("password") String password,
@RequestParam("code") String code,
@RequestParam("type") String loginType)
throws LoginException {
String sessionCode = (String)session.getAttribute(Const.SESSION_SECU RITY_CODE);
//测试验证码
if(!sessionCode.equalsIgnoreCase(code)&& Tools.notEmpty(sessionCode)) {
throw new UserIllegalOperatorException("验证码错误");
}
Object user = null;
if (!StringUtil.noEmpty(username,password,loginType)){
return null;
}
if (loginType.equals("student")){
user = studentService.getStudentByUsernameWithPwd(username,
password);
}else {
user = teacherService.getTeacherByUsernameWithPwd(username,
password);
}
//不存在该用户
if (user == null){
throw new AuthenticationException("账号或密码错误");
}
//向session中放入用户数据
session.setAttribute(Const.SESSION_USER,user);
session.setAttribute(Const.LOGIN_TYPE,loginType);
session.setAttribute(Const.SESSION_sideMenuList,
menuService.getMenuByUsername(username));
return new ResultBean();
}
教师登录系统后,点击“申报课题按钮”,系统会跳转到申报课题页面,教师可以在该页面中填入课题名称、指定学生(如果申请指定课题的学生时)、选择课题类型、填写课题描述,点击“提交”按钮,即可成功提交课题信息,系统将在数据库的课题表(title表)将会插入一条记录。该课题信息界面如图5-8所示。
图5-8 申报课题界面
成功添加的课题后,指导教师可以在我的课题模块中查看,界面如图5-9所示。
图5-9 我的课题界面
点击【查看】按钮,可以查看申请课题的详细信息,如图5-10所示。
图5-10 课题详情页
点击【编辑】按钮,可以修改已申报课题,如图5-11所示。
图5-11 修改课题界面
添加课题信息主要代码如下:
(1)applyTittle.jsp页面的代码:
function applyTitle(text) {
$.ajax({
url : 'tec/applyTitle',
type : 'post',
dataType :'json',
data : {
titleName : $("input[name=titleName]").val(),
kind : type,
problemDesc : text,
sno : $("#stu-sno").val()
},
success:function (data) {
if(data.code == ‘1’){
layer.msg("成功添加申请课题");
}
},
error : function () {
layer.msg("连接服务器异常");
}
});
}
(2)TeacherController.java代码:
@Autowired
private HttpSession session;
@Autowired
private TitleService titleService;
@PostMapping("applyTitle")
@ResponseBody
public ResultBean
Teacher teacher = (Teacher) session.getAttribute(Const.SESSION_USER); title.setTid(teacher.getTid());
title.setTitleId(Sequence.nextId());
return new ResultBean<>(titleService.applyTitle(title, sno));
}
⑶TitleService.java代码:
@Autowired
private TitleDao titleDao;
public int applyTitle(Title title,String sno){
List
if (!StringUtil.isEmpty(sno)){
titleDao.insertS_T(sno,title.getTitleId(),null);
}
return titleDao.addTitle(title);
}
(4)TitleMapper.xml代码:
INSERT title
(
titleId,
titleName,
Tid,
problem_desc,
kind,
T_state
)
VALUES(
#{title.titleId,jdbcType = BIGINT},
#{title.titleName},
#{title.Tid},
#{title.problemDesc},
#{title.kind},
#{title.TState,jdbcType = VARCHAR}
)
专业负责人登录系统,通过点击左侧菜单栏中的【审批课题】,在内容区域将会展现该专业教师申请的课题列表,专业负责人可以在该页面中查看到该专业所有教师申请的课题详细信息(包括课题名称、教职工号、教师姓名、查看课题以及审批),将符合专业培养目标的课题审批通过,不符合专业培养目标的课题驳回,界面如图5-12所示。
图5-12 审批课题
专业负责人点击“同意”按钮,该课题即可审批通过,指导教师可以在“我的课题”中查看此课题的审批状态,界面如图5-13所示。
图5-13 审批通过界面
专业负责人点击“驳回”按钮,该课题的状态将会显示未通过,该课题将不能够被学生选择,界面如图5-14所示。
图5-14 选题驳回界面
审批课题主要代码如下:
(1)approve_list.jsp页面: