摘 要
现如今,学生网上选课越来越便利,但是大多数在线下教育机构工作的教务人员,在进行教务管理的时候,并没有完全采用信息化管理。随着选择线下教育机构的人数不断增加,人工管理的难度也越来越大,大量的学员信息、教师信息以及学员的选课情况、缴费情况等等,都需要教务人员准确记录并及时更新,工作繁重而且杂乱、资料信息多,使教务人员们每天忙碌的焦头烂额。
传统的选课管理系统显然是不能满足实际的需要,效率也是很低的。而且这种传统的管理方式存在着很多的弊端,如:保密性不强、查询不方便、效率不高,很难及时更新信息等。基于以上现状,借鉴高校的管理工作,通过需求分析确定系统应具有的功能,并进行系统的总体架构设计、数据库设计以及功能的详细设计,最后通过java语言开发出基于web的舞蹈选课管理系统。
系统用于教务管理人员对学生以及课程信息的管理、查询、更新,使用方便,易用性强,图形界面清晰明了。系统基于面向对象编程的web应用程序,用计算机进行信息化数据管理,提高了管理的方便性、安全性等,也适应了当今社会信息化高速发展的特征。
本文通过对线下舞蹈机构教务管理工作流程的分析,以更好的管理功能和更低廉的成本费用为目的,提出一套系统设计方案。
关键词:管理系统;web;系统设计
1 引 言
由于舞蹈课程的特殊性,舞蹈机构并不能进行线上授课,学生只能在网上预订课程来到线下机构上课。当学生在线上进行选课结束后,来到线下机构进行培训时,教务人员需进行信息匹配和记录,而大部分线下教育机构仍在采用传统方式记录信息。大量的学员信息、教师信息以及学员的选课情况缴费情况等等,这些都需要教务管理人员及时记录并更新。随着舞蹈机构越来越受众人欢迎,越来越多人的选择倾向,也加大了线下教师管理选课以及学员信息的负担。
1.1 舞蹈选课管理系统的背景及意义
随着网络技术的发展,越来越多的学校开始启用网上选课系统,而校外机构网上授课选课也已渐成气候。如中公教育、华图教育、新东方教育等。随着教育方式的不断进步,人们足不出户就能选择自己想要的课程。越来越多的线上培训机构为学生提供了更多样的学习方式,如英语四六级、公务员考试等等,学生们越来越倾向于选择线上教育培训机构,线上选课已经成为新时代的趋势。
随着教育方式的不断进步,人们足不出户就能选择自己想要的课程,却忽略了运动对身体的重要,如今跳舞已经成为老少皆宜的运动方式。人们也逐渐将目光放在了专业舞蹈机构上。如今舞蹈机构并没有很好的拓展线上选课,随着越来越多人的选择倾向,加大了线下教师管理选课以及学员信息的负担。人们都将目光放在为学生选课提供便利的同时,也不该忽略为线下机构教务管理提供便捷。将舞蹈机构与选课管理系统相结合,不仅可以使舞蹈选课更加方便,还能利用系统很好记录学员信息和课程信息,减少教务人员的工作量。这就更加需要一个方便快捷的选课管理系统。
网上选课管理有很多优势:(1)信息完整全面等。网上选课系统所提供的信息的数量之多、介绍之全,是令许多传统授课机构望尘莫及的。(2)冲破时空局限。网上选课管理极大地拓展了教务人员的工作区域,无论是在工作时间还是休息时间,只要登录管理系统,就可以随时随地记录学员咨询选课以及缴费情况等各种信息。(3)节省时间。可以在一个系统里同时记录多种信息,大大减少了人力物力。
1.2 系统的研究现状及存在的问题
人们都将目光放在为学生选课提供便利的同时,也不该忽略为线下教育机构教务管理提供便捷。该系统的目的主要是实现教务人员记录信息的方便性,让他们可以在任何地方任何时间选择课程,记录前来咨询人员的信息,可以通过登录系统提交、修改及确认学生所选课程,能够实现学生信息、教师课程信息的增删改查,如学生前来咨询的意向,是否试听课程,选择哪位教师的课程以及课程信息和学员缴费,是否结课等。
作为一名舞蹈兴趣爱好者,我经常会选择一些舞蹈机构去通过集训来提高自己,在其他大型教育机构实习时的教务人员经历让我注意到了线下舞蹈机构的信息整理问题,并作出如下总结:
(1)很多舞蹈初学爱好者,对舞蹈种类并不了解,来到线下机构需要教务人员进行课程推荐,这就需要教务人员对其咨询意向和推荐课程做一些记录,教务人员都是轮班制,学员每次来咨询的老师也不同,由于没有统一的记录方式,教务人员需要学员重新阐述咨询意向或课程选择,或者及时联系其他教务人员更新学员及课程信息的记录。这就很需要教务人员拥有一个统一公用的选课管理系统,传统记录方式很混乱,不利于及时更新,也不便于不同的教务人员共享信息,给教务人员带来更大的工作量。
(2)少儿部舞蹈教学很多选课和缴费都由家长完成,家长平时工作很忙,一般选择利用手机支付转账学费,这就加大了教务人员记录缴费情况的难度,家长在进行缴费时经常联系熟悉的教务人员,时间很有可能并不在工作时间内,这就需要及时通知当时正在上班的其他教务人员进行记录,或等待工作时间进行记录,这中间就不免有遗漏或记录错误的情况发生,不仅容易和家长发生不必要的误会,还会让人对机构产生不信任危机。这就需要有一个可以随时登录记录并更新信息的系统。
1.3 本文的结构
第一章本章阐述了设计该管理系统的背景和它的意义,以及设计之前发现的问题。
第二章对系统进行多方面的可行性分析。
第三章对系统进行了需求分析。包括系统的功能需求和性能需求。
第四章本章主要对系统的总体架构设计以及数据库设计进行一个概要说明;并对系统的功能模块进行整理,描述数据库的建立等。
第五章本章是对上一章进行补充,详细的介绍系统所采用的的技术及环境;例如SSM框架技术等;并详细的介绍系统主要功能的设计与实现。
第六章本章是对已完成的系统进行测试,包括主要功能的测试用例及测试结果;并作出测试结论。
第七章本章中主要是对本次项目进行一次总结与展望,找出在项目中的不足以及需要完善的地方。
2 系统的可行性分析
2.1 社会可行性分析
本系统实现的是一个选课管理系统。系统为教务管理人员对学生信息的录入提供了方便。通过此系统,每位教务人员获得登陆权限可以登陆此管理系统,可以随时对课程信息进行记录或者更改,可以增加、修改和删除教师基本信息、学生基本信息、课程基本信息。
选课管理系统的优势:
(1)信息完整全面:选课系统管理所提供的信息的数量之多、之全,是令许多传统授课机构望尘莫及的。
(2)冲破时空局限:选课管理系统极大地拓展了教务人员的工作区域,无论是在工作时间还是休息时间,只要登录管理系统,就可以随时随地记录学员咨询选课以及缴费情况等各种信息。
(3)节省时间:可以在一个系统里同时记录多种信息,大大减少了人力物力。
通过以上论述,认为系统具有社会可行性。
2.2 技术可行性分析
该系统主要采用web和java技术实现界面操作。由于web页面可以做到把文本,图像,声音,视像等多种媒体信息集于一体,不但使信息的显示更加生动,而且使信息的浏览更加方便[10]。JSP技术使得构造基于Web的应用程序更加容易和快捷。
通过以上论述,认为系统具有技术可行性。
2.3经济可行性分析
采用本系统后可以带来以下几个益处:
(1)可以更好的提高工作效率将大部分日常记录信息等工作简化成键盘录入,为管理过程提供快速、准确的方式。减少手工操作过程的失误。
(2)提供统计功能利于课程管理系统进行分析与统计,最终全面提高管理水平,使选课管理系统走向标准化。
通过以上论述,认为系统具有经济可行性。
3 系统的需求分析
3.1系统的功能需求分析
选课管理系统的设计目的是要教育人员对学生选择的课程和学生其他信息进行管理。
将系统需求总结起来,得出以下系统需求:
(1)系统可以运行在Windows操作系统平台上,并具有友好的用户界面。
(2)系统用户类型为教务管理人员。
(3)系统只允许用户以一种身份登录。
(4)只有教务人员可以记录并更新学生、教师、课程的基本信息。
3.2 系统的性能需求分析
(1)可靠性:传输信息数据要求准确,不能丢失数据,能准确记录
(2)易用性:具有一定的计算机知识和操作能力的管理用户即可使用,对使用人员专业能力要求不高,方便教育机构人员操作。
(3)兼容性:在windows系列操作系统上都可以正常运行。对硬件的要求也不高,一般PC机上即可。
4系统的概要设计
4.1总体架构设计
本系统采用MVC架构模式,简化了后续对程序的修改以及应用程序的复杂度,使程序的结构更加直观。基于MVC架构模式,系统使用SSM框架。
系统采用三个轻量级框架技术,是以spring为中心,集成SpringMVC和mybatis的框架,即SSM整合框架。在SSM整合框架中开发出可扩展、易维护的系统,可以极大地满足系统的需求。
系统运用MVC开发模式进行开发,是可用于web开发的设计模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分,有效的使代码维护更筒单和思路清晰[8]。视图即表现层是用户看到并与之交互的界面,采用的是JSP+Ajax+jQuery技术,数据访问是DAO组件或数据库连接池数据库则采用mysql数据库建立相应的表。最后开始工程的搭建开发。
Mybatis是一种半自动化的ORM框架,可以对SQL语句自由的进行优化,而且现在有插件工具可以实现自动生成实体类和基本的一些语句[12]。综合考虑,本系统采用Mybatis框架。
4.2系统的功能模块描述
(1)用户登录:选课管理系统的登录页面要求用户输入用户名和密码。输入用户名和密码之后,系统将验证用户名和密码是否正确,如果验证成功,则进入相应的页面。否则,显示重新输入密码信息。
(2)记录学生所选课程:在选择课程页面中,其中课程所包含的信息有课程名、教室、上课时间及授课教师等。
查看或管理学生信息:教务人员登录后,可以对学生进行相关的操作,包括查看、增加、编辑以及删除学生的信息。查看或管理教师信息:教务人员登录后,可以对教师信息进行相关的操作,包括查看、增加、编辑以及删除教师的信息。查看或管理课程信息:教务人员登录后,可以对课程信息进行相关的操作,包括查看、增加、编辑以及删除课程的信息。
4.3系统的数据库设计
4.3.1 数据库介绍
SQL Server除了是一个实现强大功能的系统以外,它更易于用户交付使用,安装少且易于管理。
MyBatis可以进行更为细致的SQL优化减少查询字段,因为本系统主要是对数据库的数据进行处理,因此对SQL语句应进行更高度的优化,所以本系统选择MyBatis作为数据库持久层框架[2]。
JDBC支持两层模型,也支持三层模型访问数据库。两层模型中,一个Java Apple或者一个Java应用直接同数据库连接,这就需要能直接被访问的数据库进行连接的JDBC驱动器[14]。在三层模型中,命令将被发送到服务的中间层,而中间层将SQL语句发送到数据库。数据库处理SQL语句并将结果返回“中间层”,然后“中间层”将它们返回用户。“中间层”可以进行对访问的控制并协同数据库的更新,另一个优势就是如果有一个“中间层”用户就可以使用一个易用的高层的API,这个API可以由“中间层”进行转换,转换成底层的调用[14]。
到目前为止,“中间层”通常还是用C或C++实现,以保证其高性能。但随着优化编译器的引入,将java的字节码转换成高效的机器码,用java来实现“中间层”将越来越实际。而JDBC是允许从一个java中间层访问数据库的关键[14]。
Java中连接数据库的技术是JDBC,Java程序通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作[3]。
4.3.2 系统E-R图
E-R图即是数据库的概念设计,也被称为实体-联系图,它是一种概念模型,是对信息进行方便准确的概括。用矩形框表示实体型,框内写明实体名称;用椭圆圆框表示实体的属性,并且,将有一个实体关系的相关实体由实心线段连接。
以下为本系统各实体E-R图:
图4-1学生信息实体E-R图
图4-2 课程信息实体E-R图
4.3.3 数据表
本系统创建的SQL数据库包含以下数据表:
表4-2学生信息数据表
列名 | 数据类型 | 长度 | 是否可空 | 注释 |
id | int | 64 | 否 | id |
name | nvarchar | 255 | 是 | 名字 |
age | int | 64 | 是 | 年龄 |
sex | varchar | 255 | 是 | 性别 |
address | varchar | 255 | 是 | 地址 |
intention | varchar | 255 | 是 | 意向 |
money | double | 255 | 是 | 缴费金额 |
money_time | datetime | 0 | 是 | 缴费时间 |
state | varchar | 255 | 是 | 学生状态 |
course | varchar | 255 | 是 | 课程 |
course_str_date | datetime | 0 | 是 | 课程开始时间 |
course_end_date | datetime | 0 | 是 | 课程结束时间 |
audition_str_time | datetime | 0 | 是 | 试听开始时间 |
audition_end_time | datetime | 0 | 是 | 试听结束时间 |
jffs | varchar | 255 | 是 | 缴费方式 |
create_by | varchar | 64 | 是 | 创建者 |
create_date | datetime | 0 | 是 | 创建时间 |
update_by | varchar | 64 | 是 | 更新者 |
update_date | datetime | 0 | 是 | 更新时间 |
remarks | varchar | 2000 | 是 | 备注信息 |
del_flag | char | 1 | 是 | 删除标记 |
表4-3 课程信息数据表
列名 | 数据类型 | 长度 | 是否可空 | 注释 |
id | int | 64 | 否 | id |
course_name | varchar | 255 | 是 | 课程名称 |
course_str_time | datetime | 0 | 是 | 课程开始时间 |
course_end_time | varchar | 255 | 是 | 课程结束时间 |
teacher | varchar | 255 | 是 | 教师 |
create_by | varchar | 64 | 是 | 创建者 |
create_date | datetime | 0 | 是 | 创建时间 |
update_by | varchar | 64 | 是 | 更新者 |
update_date | datetime | 0 | 是 | 更新时间 |
remarks | varchar | 2000 | 是 | 备注信息 |
del_flag | char | 1 | 是 | 删除标记 |
5系统的详细设计及实现
5.1系统实现所采用的技术
5.1.1 SSM框架技术介绍及运用
(一)Spring MVC概述
Spring MVC框架是通过实现视图-模型-控制器的模式来将业务、展现与数据进行分离。Spring MVC框架基本上提供了构建Web应用程序的全部功能,使用Spring可以插入MVC架构,因此在使用Spring迸行WEB项目并进行开发时,可选择使用Spring MVC框架[13]。
SpringWebMVC是一种基于Java的实现了WebMVC设计模式的请求驱动类型的框架,也可以说是使用了MVC架构模式的思想,SpringWebMVC框架可以简化日常Web的开发[13]。
Spring Web MVC框架也是一个基于请求驱动的Web框架。
Spring Web MVC处理请求的流程如图5-1所示:
图5-1 SpringMVC处理流程
Spring技术研究
Spring是一个为了解决应用程序开发复杂性而创建的开源框架。Spring框架是一个分层架构,由6个定义良好的模块组成,Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean的方式[9]。其核心模块为IOC容器和AOP。Spring的主要特性:
表5-1 Spring主要特性
1. | 降低系统模块之间的耦合度。其主要技术包括控制反转(I0C)和面向切面编程(AOP)两大方面。Spring降低耦合度的功能主要通过IOC来实现,IOC是框架的核心,其原理可以理解为程序的所有组件都是被动的,初始化和调用都有容器(Spring)的负责。 |
2. | 可以使用容器提供的众多服务,提高程序的可重用性和开发效率。 |
3. | 容器提供单例模式支持,开发人员不需要自己来编写实现代码。 |
4. | 容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。 |
5. | 容器提供的众多辅作类,使用这些类能够加快应用的开发。 |
6. | 对主流的应用框架提供了集成支持。 |
5.1.2 MVC开发模式的介绍及运用
使用MVC应用程序被分成三个核心部件:模型、视图、控制器[8]。MVC应用程序总是由这三个部分组成。它强制性的使应用程序的输入、处理和输出分开。
MVC设计模式的工作原理View部分即是应用程序的用户界面,用户通过View层发送请求提交到Controller层,Controller层接受请求根据具体需求调用Model层来处理,再根据Model层调用回来的结果进行跳转[8]。Controller层在整个流程中起到了桥梁的作用,控制数据的流向,而Model层负责业务逻辑的处理和数据库访问。
MVC模式偶合性低,视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可[8]。由于运用MVC的应用程序的三个部件是相互独立,改变其中一个不会影响其它两个,所以依据这种设计思想能构造良好的松耦合构件。
MVC模式的处理流程(图5-2)
图5-2MVC模式的处理流程
用户输入信息后,控制器层(Controller)会将相应的数据传输给模型层(Model),然后模型层会进行相关的业务处理(例如:调用相关类、对数据库进行相应的操作等),在很具处理结果的不同寻找不同的视图(View),视图层将传过来的结果加载到相应的位置,最后显示给用户[8]。
5.1.3 JSP技术介绍及运用
JSP(Java Server Pages)是一种基于Java的脚本技术,这种技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法[7]。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,JSP可以将内容的生成和显示进行分离,用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容[7]。
而且几乎所有平台都支持Java,JSP+JavaBeans几乎可以在所有平台下通行无阻,从一个平台移植到另外一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标准的与平台无关的[4]。
当一个JSP页面被请求后,JSP引擎将该页面转换为一个Servlet,并将Servlet编译成一个class文件,让服务器进行处理,处理完成后,将内容一HTML代码的形式返回给客户端,并在页面中显示出来[1]。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息,如果转换成功,JSP引擎用javac把该Java源文件编译成相应的.class文件[4]。
5.2 系统实现所用的环境及开发工具
(1)环境:Windows10
(2)安装要求:
表5-2 系统的安装要求
处理器 | 1千兆赫或更快 |
内存 | 1GB(32位)或2GB(64)位 |
可用硬盘空间 | 16GB |
图形卡 | 带有WDDM驱动程序的Microsoft Direct X 9图形设备 |
(3)开发工具:Eclipse
Eclipse是一个IDE(集成开发环境),是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件。
5.3关键功能的详细设计与实现
5.3.1用户登录
@RequestMapping(value = “${adminPath}/login”)
publicString login(HttpServletRequest request, HttpServletResponse response, Model model) throwsIOException {
Principal principal = UserUtils.getPrincipal();
if(logger.isDebugEnabled()){
logger.debug(“login, active session size: {}”, sessionDAO.getActiveSessions(false).size());
}
// 如果已登录,再次访问主页,则退出原账号。
if(Global.TRUE.equals(Global.getConfig(“notAllowRefreshIndex”))){
CookieUtils.setCookie(response, “LOGINED”, “false”);
}
// 如果已经登录,则跳转到管理首页
if(principal != null&& !principal.isMobileLogin()){
return”redirect:” + adminPath;
}
/**
* 登录失败,真正登录的POST请求由Filter完成
*/
@RequestMapping(value = “${adminPath}/login”, method = RequestMethod.POST)
publicString loginFail(HttpServletRequest request, HttpServletResponse response, Model model) {
Principal principal = UserUtils.getPrincipal();
// 如果已经登录,则跳转到管理首页
if(principal != null){
return”redirect:” + adminPath;
}
String username = WebUtils.getCleanParam(request, FormAuthenticationFilter.DEFAULT_USERNAME_PARAM);
booleanrememberMe = WebUtils.isTrue(request, FormAuthenticationFilter.DEFAULT_REMEMBER_ME_PARAM);
booleanmobile = WebUtils.isTrue(request, FormAuthenticationFilter.DEFAULT_MOBILE_PARAM);
String exception = (String)request.getAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME);
String message = (String)request.getAttribute(FormAuthenticationFilter.DEFAULT_MESSAGE_PARAM);
if(StringUtils.isBlank(message) || StringUtils.equals(message, “null”)){
message = “用户或密码错误, 请重试.”;
}
model.addAttribute(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM, username);
model.addAttribute(FormAuthenticationFilter.DEFAULT_REMEMBER_ME_PARAM, rememberMe);
model.addAttribute(FormAuthenticationFilter.DEFAULT_MOBILE_PARAM, mobile);
model.addAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME, exception);
model.addAttribute(FormAuthenticationFilter.DEFAULT_MESSAGE_PARAM, message);
if(logger.isDebugEnabled()){
logger.debug(“login fail, active session size: {}, message: {}, exception: {}”,
sessionDAO.getActiveSessions(false).size(), message, exception);
}
// 非授权异常,登录失败,验证码加1。
if(!UnauthorizedException.class.getName().equals(exception)){
model.addAttribute(“isValidateCodeLogin”, isValidateCodeLogin(username, true, false));
}
// 验证失败清空验证码
request.getSession().setAttribute(ValidateCodeServlet.VALIDATE_CODE, IdGen.uuid());
/**
* 登录成功,进入管理首页
*/
@RequiresPermissions(“user”)
@RequestMapping(value = “${adminPath}”)
publicString index(HttpServletRequest request, HttpServletResponse response ,Model model) {
Principal principal = UserUtils.getPrincipal();
// 登录成功后,验证码计算器清零
isValidateCodeLogin(principal.getLoginName(), false, true);
if(logger.isDebugEnabled()){
logger.debug(“show index, active session size: {}”, sessionDAO.getActiveSessions(false).size());
}
5.3.2学生信息管理
/**
* <p>Description:保存学生信息</p>
*/
@RequiresPermissions(value={“student:studentInfo:add”,”student:studentInfo:edit”},logical=Logical.OR)
@RequestMapping(value = “save”)
publicString save(StudentInfo studentInfo, Model model, RedirectAttributes redirectAttributes) throwsException{
if(!beanValidator(model, studentInfo)){
returnform(studentInfo, model);
}
studentInfoService.save(studentInfo);//保存
addMessage(redirectAttributes, “保存学生信息成功”);
if(“1″.equals(studentInfo.getState())){
return”redirect:”+Global.getAdminPath()+”/student/studentInfo/?repage”;
}elseif(“2″.equals(studentInfo.getState())){
return”redirect:”+Global.getAdminPath()+”/student/studentInfo/listScg?repage”;
}elseif(“3″.equals(studentInfo.getState())){
return”redirect:”+Global.getAdminPath()+”/student/studentInfo/listScg?repage”;
}elseif(“4″.equals(studentInfo.getState())){
return”redirect:”+Global.getAdminPath()+”/student/studentInfo/listScg?repage”;
}elseif(“5″.equals(studentInfo.getState())){
return”redirect:”+Global.getAdminPath()+”/student/studentInfo/listScg?repage”;
}else{
return”redirect:”+Global.getAdminPath()+”/student/studentInfo/?repage”;
}
}
/**
* <p>Description:删除学生信息</p>
*/
@RequiresPermissions(“student:studentInfo:del”)
@RequestMapping(value = “delete”)
publicString delete(StudentInfo studentInfo, RedirectAttributes redirectAttributes) {
studentInfoService.delete(studentInfo);
addMessage(redirectAttributes, “删除学生信息成功”);
return”redirect:”+Global.getAdminPath()+”/student/studentInfo/?repage”;
}
5.3.3缴费页面实现
@RequiresPermissions(value={“student:studentInfo:view”,”student:studentInfo:add”,”student:studentInfo:edit”},logical=Logical.OR)
@RequestMapping(value = “formJf”)
publicString formJf(StudentInfo studentInfo, Model model) {
studentInfo.setState(“3”);
model.addAttribute(“crouseList”, courseInofService.findList(newCourseInof()));
model.addAttribute(“studentInfo”, studentInfo);
return”ccqnsoft/data/student/studentInfoJfForm”;
}
5.3.4课程信息管理
/**
* <p>Description:查看,增加,编辑课程表单页面</p>
*/
@RequiresPermissions(value={“course:courseInof:view”,”course:courseInof:add”,”course:courseInof:edit”},logical=Logical.OR)
@RequestMapping(value = “form”)
publicString form(CourseInof courseInof, Model model) {
model.addAttribute(“courseInof”, courseInof);
return”ccqnsoft/data/course/courseInofForm”;
}
/**
* <p>Description:保存课程</p>
*/
@RequiresPermissions(value={“course:courseInof:add”,”course:courseInof:edit”},logical=Logical.OR)
@RequestMapping(value = “save”)
publicString save(CourseInof courseInof, Model model, RedirectAttributes redirectAttributes) throwsException{
if(!beanValidator(model, courseInof)){
returnform(courseInof, model);
}
if(!courseInof.getIsNewRecord()){//编辑表单保存
CourseInof t = courseInofService.get(courseInof.getId());//从数据库取出记录的值
MyBeanUtils.copyBeanNotNull2Bean(courseInof, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
courseInofService.save(t);//保存
}else{//新增表单保存
courseInofService.save(courseInof);//保存
}
addMessage(redirectAttributes, “保存课程成功”);
return”redirect:”+Global.getAdminPath()+”/course/courseInof/?repage”;
}
/**
* <p>Description:删除课程</p>
*/
@RequiresPermissions(“course:courseInof:del”)
@RequestMapping(value = “delete”)
publicString delete(CourseInof courseInof, RedirectAttributes redirectAttributes) {
courseInofService.delete(courseInof);
addMessage(redirectAttributes, “删除课程成功”);
return”redirect:”+Global.getAdminPath()+”/course/courseInof/?repage”;
}
6系统的测试
6.1系统的测试概述
通过测试舞蹈选择管理系统,找出可以通过教学人员使用这个系统时,进一步想方设法提高而造成的错误;也加深的测试方法的理解,并最终满足用户的需求和期望,从而使系统能够更好地为用户服务,并最终满足系统要求。测试内容主要是功能测试,试图找出在系统运行中可能出现的更多的错误,站在学术人员的立场,并认为实际执行信息查询等功能时,教育管理者都会遇到各种各样的错误。异常,从而完善和校正系统。
6.2主要功能的实现
输入正确密码点击登录后,登陆成功,出现课程表和学生信息两个模块(图6-1)
课程表和学生信息 图6-1
课程信息主要有查询(图6-2 图6-3),编辑(图6-4),删除三个功能
点击添加课程,输入test信息(图6-5)
添加课程信息图6-5
输入完整信息后保存,成功出现在课表内(图6-6)
学生信息模块,增加学生信息(图6-7)
学生信息的添加 图6-7
添加测试信息(图6-8)
添加test信息图6-8
保存学生信息成功,出现查询、编辑、推荐试听、删除信息功能 (图6-9图6-10)
学生信息的查询和编辑(图6-11图6-12)
查看学生信息图6-11
编辑学生信息 图6-12
试听结束后,出现缴费功能按钮,点击缴费,自动出现课程选择界面(图6-13图6-14)
选择学生所选课程,自动出现学费信息,需填入缴费金额及缴费时间(图6-15)
选择课程后的自动跳转图6-15
学生结业后,删除学员信息(图6-16图6-17)
图6-16图6-17
6.3测试结论
用户登录界面完整,登录需同时拥有用户名及密码,课程信息和学生信息分成两个大模块,有利于信息更好的分类记录,有效提高工作效率;课程信息和学生信息的增加、删除、查询以及编辑都可以有效运行,基本功能实现全面,有可用性;并且功能按照选课流程:咨询、试听、选课、缴费、上课、结业;依次跳转,节省教务人员分类时间,充分实现了系统提高教务人员工作效率的目标。
7系统的总结与展望
经过一个多月的不懈努力,终于完成了选课管理系统的设计与实现。从选到题目到最后完成系统,我经历了无数次的错误,运行的过程明显感觉到平时学的知识的不足。由于对Eclipse的使用不熟悉,所以遇到了很多困难,但是在老师和同学的帮助下都克服了。通过这次系统的设计,我深刻体会到系统开发的每个细微的细节都必须非常注意。在设计中,会经常遇到一些问题,尤其是选择了并不熟悉的SSM框架进行开发,很多时候都是焦头烂额,不知道该如何进行。
通过本次系统设计,对数据库的WEB应用有了更深入了解,加强了自身对数据库语言的熟悉,也培养了独立思考问题和自学的能力,我认识到只有谦虚好学的态度是不行的,要把学到的东西踏踏实实对的转化为自己的能力,必须改掉浮躁的表面学习方式,努力学习,在工作中体现出自己的价值,进而适应社会的需要。
参考文献
[1] 王春明.JSP Web技术及应用教程[M].北京:清华大学,2018.
[2] 张锦煌.基于SSM整合框架开发的项目管理系统[J].电脑知识与技术,2015,(11);109-111
[3] 霍斯特曼克内尔.Java核心技术[M].北京:机械工业出版社.2014
[4] 邓璐娟.JSP程序设计与项目实训教程[M].北京:清华大学出版社,2016.
[5] 赵利庆.Java Web架构中数据库优化模式的研究与实现[D].北京:北京邮电大学.2015
[6] 王养廷.基于Web的Java框架设计与实现[J].软件导刊,2014,(01);58-59
[7] 王永茂.JSP程序设计[M].北京:清华大学出版社,2016.
[8] 傅宏.基于MVC模式的Web框架设计关键技术研究[J].电脑知识与技术,2011,(10):67
[9] Craig Walls.Spring实战[M].北京:人民邮电出版社,2013.
[10] 许令波.深入分析Java Web技术内幕[M].北京:电子工业出版社,2014.
[11] 田晓玲.JSP动态网页设计案例教程[M].科学出版社,2014.
[12] 陈晓勇.MySQL DBA修炼之道[M].北京:机械工业出版社,2017
[13] Geoffroy,Warin.精通Spring MVC 4[M].北京:人民邮电出版社,2017.
[14]杨悦. 探析Serv1et、JSP Web组件和JDBC编程[D]. 哈尔滨师范大学计算机科学与信息工程学院, 2014.
致 谢
本文能顺利的完成,首先要感谢我的指导老师。是老师仔细耐心的看完整篇文章,并且提出本文出现的一些问题和修改建议,让我有了明确的思路和方向。非常的感谢老师耐心的指导。老师严谨的治学精神,严肃端正的态度,精益求精的工作作风,深深的感染和激励着我。
同时也感谢这篇论文所涉及到的各位学者。如果没有各位学者的研究成果的帮助和启发,我将很难完成这篇论文。
还要感谢我身边的各位同学的帮助,他们也给了我很多的建议和提示,在论文思路方面也让我有了很多的收获。
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/168400.html,