获取项目源文件,技术交流与指导联系Q:1225467431
摘 要
随着信息技术的发展,信息化逐渐扩展到了校园管理、行政办公中,现有学生管理系统因其适应性问题已不能满足目前实际的需要。随着高校招生的增加,学生管理系统的复杂度越来越高,迫切需要借助计算机来实现学生信息管理和统计,更好的为师生提供服务。
论文在研究基于优先级回溯的排课算法的基础之上,使用UML建模语言进行业务建模与设计,基于Java EE平台研发出具有一定特色的学生管理系统,并具有较好的可靠性、可移植性和安全性。论文的主要工作如下:
(1)分析当前环境下学生管理的业务应用流程,构建学生管理的业务模型,并进一步应用UML进行用例描述,系统建模与设计。
(2)在传统优先级回溯算法基础上,提出基于优先级回溯的排课算法;该算法融入了实际院校的优先级选课因素,有效地提升了排课算法在实际中的应用,解决了资源冲突问题。
(3)在前期需求与数据分析基础上,对系统功能模型进行进一步的设计,将Java EE技术应用到系统的研发过程,完成基础课程维护、学生管理、排课管理等核心功能模块,实现一套完整的学生管理系统。
论文进一步结合本校学校学生管理业务实践,将学生管理系统在全校推广试运行,取得了较好的成效。该管理系统上线运行大大地改善了学生管理工作效率, 为学校节约了大量的人力、物力,增强学生、班级、教师、专业间的信息交流和互动,促进学生管理工作的开展,对高校实现信息化具有重要的参考意义。
关键词:排课算法;Java EE;优先级回溯;UML
Abstract
With the development of information technology, it gradually extended to the campus management, administrative offices and the existing student management system. Student management system has been unable to meet the current actual needs because of the adaptability. With the increase enrollment of college and the increasing complexity of the system, it’s urgent to use computers to achieve student information management and statistics, and to provide the better services for teachers and students.
Based on priority Scheduling algorithms backtracking, this paper used UML modeling language to conduct business modeling and design, and developed student management system based on the Java EE platform. The system has certain characteristics, and has good reliability, portability and security. The main work is as follows:
(1) Analysis of business application processed in the new environment of student management to build the business model and further application of the UML for case descriptions, system modeling and design.
(2) The traditional priority backtracking algorithm is proposed based on priority-based backtracking Scheduling algorithms. This algorithm incorporates factors that the actual priority elective institutions to effectively enhance the Scheduling algorithms used in practice to solve the resource conflicts.
(3) After the early requirements and data analysis, we given a further design of the functional model of the system. Using the Java EE technology to develop the system, this article completed the core function module as basic course maintenance, student management, and course scheduling and management. At last we achieved a complete set of student management system.
Further integrating the school student management practices, the student management system is promoted to test run in the school, and achieved good results. The system line operation greatly improved student management efficiency to save a lot of manpower, material resources, which enhanced information exchange and interaction between students, classes and teachers, professional and promoted to carry out students management work on the university, had important reference value to achieve information technology.
Keywords: curriculum arrangement algorithm; Java EE; Priority
backtracking;UML;
目 录
学位论文原创性声明 I
学位论文版权使用授权书 I
摘 要 II
Abstract III
目 录 V
插图索引 VIII
附表索引 X
第一章 绪 论 1
1.1 课题研究背景和意义 1
1.2 国内外研究现状 2
1.3 本文的主要研究工作 4
1.4 论文组织 5
1.5 小结 5
第二章 系统相关技术 6
2.1系统体系结构介绍与比较 6
2.1.1 C/S系统体系结构 6
2.1.2 B/S系统体系结构 7
2.1.3 C/S和B/S的比较 8
2.2系统开发技术介绍 8
2.2.1 RUP开发过程 8
2.2.2 Java EE技术架构 9
2.2.3 开发工具 10
2.2.4 数据库 10
2.2.5 UML建模语言 11
2.3 排课算法介绍 12
2.3.1 优先级回溯算法 12
2.3.2 遗传算法 13
2.3.3 排课算法综合分析 13
2.4 小结 13
第三章 系统需求分析 14
3.1 系统总体目标 14
3.2 系统功能需求分析 14
3.2.1 学生管理组织机构 14
3.2.2 功能需求描述 15
3.2.3 系统用例 16
3.2.4 时序图 18
3.3 系统非功能性需求 22
3.4 小结 23
第四章 系统设计 24
4.1 系统设计原则 24
4.2系统架构设计 25
4.2.1硬件架构设计 25
4.2.2 软件体系结构设计 25
4.3 教务排课算法设计 26
4.4 系统功能模块设计 27
4.4.1 系统类设计 28
4.4.2登陆验证模块设计 30
4.4.3系统权限模块设计 30
4.5 数据库设计 31
4.5.1 概念结构设计 32
4.5.2 逻辑结构设计 33
4.6 小结 35
第五章 系统实现与测试 36
5.1 公共模块实现 36
5.2 系统核心实现 39
5.2.1系统登录模块 40
5.2.2 学生管理模块 42
5.2.2.1 DAO封装 42
5.2.2.2 DAO的工厂模式实现 43
5.2.2.3 界面原型 45
5.2.3 学生排课模块 50
5.3 系统测试 51
5.3.1测试技术 51
5.3.2测试用例 52
5.3.3测试总结分析 53
5.4 小结 54
结论 55
参考文献 56
致 谢 59
插图索引
图2-1 两层C/S架构 7
图2-2 三层C/S架构 7
图3-1学生管理组织机构 15
图3-2学工处人员用例 17
图3-3 系统管理员用例 17
图3-4教师用例 18
图3-5 学生用例 18
图3-6 学生登录时序 19
图3-7 教师录入成绩时序 19
图3-8 学生选课时序 20
图3-9 学生信息录入时序 21
图3-10学生缴费时序 21
图4-1 系统架构图 25
图4-2 软件系统架构 25
图4-3 技术架构 26
图4-4 系统功能模块 27
图4-5 核心实体类 28
图4-6 核心业务类 29
图4-7 核心控制类 29
图4-8 用户登录界面 30
图4-9 用户登录系统流程 30
图4-10权限角色设计 31
图4-11系统ER 32
图5-1 登录界面 40
图5-2 登录失败界面 42
图5-3(a)学生信息管理 45
图5-3(b)学生信息录入管理 45
图5-4 学生奖励登记管理 46
图5-5排课课表 46
图5-6编辑课表 47
图5-7自动排课 47
图5-8展示了专业设置相关的内容。 48
图5-8专业设置 48
图5-9系统维护 48
图5-10权限和模块控制 49
附表索引
表4-1 核心控制类说明 29
表4-2 教师信息表的设计 33
表4-3 课程信息表 33
表4-4 教师课程信息表的设计 34
表4-5 专业信息表的设计 34
表4-6学生奖惩表 34
表4-7奖励学生表 35
表4-8困难补助学生表 35
表5-1 JSP分页实例 38
表5-2 后台分页 38
表5-3 用户登录模块测试用例表 52
表5-4管理员登录模块测试用例表 53
第一章 绪 论
学生工作在高等教育中占有重要的地位,是实现人才培养目标的一个重要组成部分。国家教育改革不断深入,素质教育全面推进,各个学校办学规模不断扩大,教学资源日益紧张。对学校管理部门来说,这不仅增加了工作量,也增加了工作难度。手工记录学生信息存在信息量大,查找困难,保存不便,不可重复使用等问题,这会造成许多硬件设备的浪费以及大量的不必要的人力、物力、财力投入,而且较低的工作效率已经无法满足当前形势的发展需要。教育部门和各大高校都投入很大的人力物力和财力,进行校园信息系统建设和网络设施的完善。到现在为止,很多所学校建立了综合性的信息管理系统,在学校各项管理工作中发挥了积极作用。
1.1 课题研究背景和意义
在高等教育普及化和大范围扩招形势下,学生数量变得庞大,教务管理日趋繁杂,学生管理工作变得极其繁琐。大学学生管理范围涉及到了高校的方方面面,包括教学、科研和管理等各个部门,管理内容也是繁琐广泛,如、学籍和成绩管理、学生信息管理、就业管理、考试课程管理、党组织管理、国家助学贷款管理、贫困生管理、宿舍管理、班级管理、专业管理、奖惩管理等[1]。如果仅依靠手工管理或简单的办公自动化工具来管理与学生相关的资料和数据,已经远远不能满足学生管理工作的需要。学生管理问题成为迫切需要解决的问题。传统的以手工方式为主的信息管理方式已经不再有效,不仅工作量大、事务琐碎,且可能耗费很多的财力人力却达不到较好的效果,难以提高管理水平[2]。
随着现代教育事业的不断发展,信息技术在推动学校发展上发挥了很大作用,网络技术、软件、计算机技术的迅速发展对传统的思想观念、工作方式产生巨大的冲击。计算机软件技术的发展,结合网络技术的快速更新,数字化信息系统已经成为了可能。结合系统和管理科学,在已有校园计算机网络基础上集成一个高效、可靠、实用的信息管理系统成为了可能。传统的学生工作管理也面临着变革,数字化学生管理是一个很重要的方向[3]。管理信息系统MIS(Management Information System)从20世纪60年代开始出现,涉及管理、系统、信息、计算机和现代通讯技术等多个科学领域的一门学科。该系统利用计算机软硬件和数据库等技术进行分析、计划、控制和决策,提供信息并给予企业或组织的运行、管理和决策以支持[4]。
学生管理信息系统能够为学生管理工作各方面提供信息和决策支持,达到学生综合信息管理的目标,高校学生管理信息化需要达到这样的要求[5]。一个良好的信息化学生管理系统能够方便教师、学生、教务处的工作,顺利的完成教学过程,促进教师学生的沟通,保证教学工作的顺利进行,减轻教务处工作人员的负担,为提升学校的竞争力提供了保证,为学校信息化建设的发展做出了贡献。学生管理系统是一个集成教学、教师、课程、学生、奖惩等的现代化、数字化平台框架。虽然不少学校开发出自己的学生管理系统,但大多都存在一定的问题:一是功能要求跟不上形势发展的变化;其次是系统的通用性、扩展性、交互友好性都不令人满意。目前各级教育管理部门和学校使用的教育管理软件大多都不是自主开发,而是委托单位、公司或科研单位进行开发,比如由上级部门下发或从软件公司购买,软件设计存在种种设计不规范、可扩展性差等问题。低水平重复开发现象严重由于校园网仍缺少重要的信息传递和工作流程环节,部门之间仍无法实现信息共享和集成,从而难以实现各部门之间高效率协作[6]。
高校教学管理工作信息化建设,开发一个完善有效的学生管理信息系统,工作部门进行有效的管理,并为学校节约大量的人力、物力,减少工作中容易出现的一些问题。极大地推动了高校学生管理信息化的进程,极大地促进了学生管理工作的开展。对解决高校改革过程中遇到的问题具有十分重要的意义,而这些问题的顺利解决也为高校改革的推进指明了方向,无纸化、智能化、综合化的方向发展,并为进一步实现完善的计算机学生工作管理系统和全校信息系统打下良好基础。系统能够及时提供数据和部门间合作的服务意识,提高工作效率效果,提高管理水平,有助于顺利实现高教管理现代化的宏伟目标[7]。
1.2 国内外研究现状
管理信息系统是一个不断发展的新兴学科,其定义随计算机和通讯技术的进
步也在不断更新和发展。校园管理信息系统是其在教学领域中的一个重要应用。高校信息化建立在高校学生管理信息化的前提之上,高校相关业务部门采用计算机进行信息化管理。计算机网络技术普及以及校园网络基础设施的建设的完善,促进了与学生管理密切相关的管理信息系统的发展[8]。
我国高等教育信息化从整体上仍处于起步阶段。多数高校已有经过了一些时期的发展,有的已经建成了以校园网为核心的,以学术研究、网络教学、信息资源、社区服务和综合办公为主要功能的数字化信息系统。比较有代表性的管理信息系统有以下一些[9]:
上海交通大学的多个MIS应用系统,包括教育管理信息系统、本科教学管理系统、学生管理信息系统;四川省高校学生信息系统由四川省教育厅组织研发,包括任职就业、学历学籍管理、制度管理、院校导航、论坛等内容,为高校日常管理提供了较全面功能;北京大学的学生网上信息查询为查询管理学生工作部相关信息功能提供了方便,包括主要职责、机构设置、工作人员、规章制度、工作通讯和相关信息。浙江师范大学教学管理信息系统以院校为单位,为学校教学管理部门提供教学数据管理维护、数据分析和数据统计;福建农业大学的教学管理系采用C/S结构设计,完成教学管理管理。清华大学的综合教学管理信息系统集C/S和B/S技术于一体,面向各部门及各层用户的综合管理信息系统,管理的内容涉及教学管理各环节。该系统具有多个相互独立又相互联系的模块,主要包括:学籍和注册、课程管理、费用管理、选课管理、成绩管理、毕业就业管理、教学计划管理、选课排课[10]。
国外数字化校园建设发展较早,起点比国内高且投入资金多。“数字化校园”这一概念由麻省理工学院提出,经多年努力,该学院拥有了成熟的数字化校园系统。有研究报告指出,西方发达国家许多高校已经成功完成了数字化校园建设,这得力于政府的强力支持。和国内不同的是,国外关注点为数字资源的提供,系统并非高度集成的综合信息管理系统[11]。
应用于各类高校的学生管理系统有许多的共同之处,但也有很多的个性化差异,存在这开发过程、架构、功能的不同。系统开发方法分为生命周期法、原型法、面向对象系统法,系统运行模式有B/S、C/S、两者结合,基于B/S模式的信息管理系统,已成为主流的发展方向。系统所采用的前台开发软件和后台数据库管理系统都有所不同,比如前台可以采用ASP、JSP、ASP.net、HTML等,后台可以用JAVA、C#、VB等,数据库有MYSQL、SQLServer、ORACLE等[12]。
高校教学管理中,除了学生相关信息管理之外,比较重要的是排课子系统。课程的安排涉及到了教学中的许多方面。每个方面都构成了教学管理中的重要环节,是保证整个教学顺利进行的前提。一个好的排课系统包括了资源管理、班级管理、专业设置、教学质量管理等内容。
排课系统的核心是教务排课算法。该问题的研究由来已久,从Gotlieb采用的匈牙利算法到其后其数学模型的完善,经理了40多年的历史。该问题是NP难问题,在有效时间内难以发现最优解。最新研究表明,采用纯数学方法难以解决此问题。比如手工模拟法、图论、拉格朗日发、二次分配型法。好的排课算法不仅满足性能的需求,更需要较好的灵活性和满足教学实际的需求。
与学生管理相关的各类管理信息系统的发展,为高校学生管理工作的规范化,推动了制度和过程的改革。经过综合分析,这些信息存在着一些不足之处,主要表现在以下几个方面[13,14,15]:
1.功能与具体业务相关,不能包括全部的学生工作。高校各部门划分的方式是根据其功能不同,许多学校各职能部门只是拥有自身的管理信息系统,功能也只涉及其职能范围内的业务,因此不能综合包含学生管理工作的所有内容。
比如高校的学生管理信息系统中,教务管理信息系统仅包括对学生的学籍、选排课、成绩、教学计划等方面的管理;学生处信息系统仅包括学生的奖励考勤贷款、招生就业,但不涉及到学生的成绩;组织机构管理信息系统仅包括党员教育、党组织关系管理。而学生管理工作是这些管理系统的一个综合题,包括学生基本信息、选课及成绩情况、党组织情况、获奖情况、违纪情况、学生助贷、缴费情况和贫困情况等几十项,涉及到学校各部门和各管理信息系统。
2.学生信息源较多,各部门信息间传达通道少,信息不完备甚至不一致。其导致原因并非部门工作失误,而是由于信息管理系统中的信息孤岛造成的。信息管理系统中各部门功能权限范围相对独立,使得信息不能有效互通。
3.各部门管理信息系统相对独立,具有重复工作量。各部门的信息管理系统相对独立,没有集成学生相关数据,难以了解学生全部详细情况。综合信息获取需要查询不同的管理信息系统,这会导致工作繁琐,办事效率低、准确率低。
4.功能偏简单。大多数学生管理系统的功能仅包含公告成绩等信息发布和学生基本信息的增删改查,缺少了信息的智能化处理,比如各个系统的信息自动集成,对各种信息进行综合刷选、统计、分析及生成报表。因而系统为领导等提供综合分析的数据信息不够充足,不能够和自动化分析的发展趋势相吻合。
1.3 本文的主要研究工作
本课题研究如何应用软件工程思想实现一个高效、易用、安全的学生管理系统,使得管理人员可以方便、快地掌握处理学生工作的信息数据,建设师生互相交流及沟通的平台。本课题研究内容如下:
(1)分析新环境下学生管理的业务应用流程,构建学生管理的业务模型,并进一步应用UML进行用例描述,系统建模与设计。
(2)在传统优先级回溯算法基础上,提出基于优先级回溯的排课算法;该算法融入了实际院校的优先级选课因素,有效地提升了排课算法在实际中的应用,解决了资源冲突问题。
(3)在前期需求与数据分析基础上,对系统功能模型进行进一步的设计,将Java EE技术应用到系统的研发过程,完成基础课程维护、学生管理、排课管理等核心功能模块,实现一套完整的学生管理系统。
论文进一步结合本校学校学生管理业务实践,将学生管理系统在全校推广试运行,取得了较好的成效。该管理系统上线运行大大地改善了学生管理工作效率, 为学校节约了大量的人力、物力,增强学生、班级、教师、专业间的信息交流和互动,促进学生管理工作的开展,对高校实现信息化具有重要的参考意义。
1.4 论文组织
第一章为绪论。介绍了课题研究的背景和意义,以及目前国内外的研究现状。指出了本文主要的研究工作,最后介绍了论文的组织结构。
第二章为系统相关技术。介绍了软件开发过程和系统开发技术,最后介绍了UML建模工具。
第三章为学生管理系统需求分析。在确立系统的目标和主要功能需求的基础
上,利用UML建模,建立系统的用例模型、类与对象模型,指出系统应满足的性能需求。
第四章为学生管理系统设计。首先描述了系统的设计原则,提出了系统的设计架构,详细介绍了系统功能模块设计、数据库设计,最后给出了系统性能设计。
第五章为学生管理系统实现和测试。介绍了系统的开发流程,详细介绍了系统各模块的实现,给出界面和关键代码介绍,并进行系统测试。
第六章为总结与展望。课题的研究工作进行全面总结,指明下一步的研究内容和方向。
1.5 小结
介绍了本课题的研究背景和意义,研究了国内外的进展,对本文的主要工作做了描述,最后介绍了论文的组织结构。
第二章 系统相关技术
本章主要对信息管理系统的系统架构和设计开发所使用的相关技术进行介绍,包括C/S和B/S架构、软件开发过程、Java EE架构和UML建模语言。
2.1系统体系结构介绍与比较
2.1.1 C/S系统体系结构
C/S架构的管理系统使用比较广泛,比如数据库应用系统就是典型的C/S架构。信息管理系统一般包括计算机、数据库系统和网络组成,C/S信息系统依据作用划分为3个部分:
1、客户端,有客户电脑组成。客户端运行一个应用程序可以接受和发送数据信息。
2、服务器端,由服务器和数据库等应用软件构成。服务器运行着一些C/S架构的应用程序。
3、中间连接件,主要是可以连接两部分的软硬件。常见的软件连接包括网络的TCP/IP协议、数据库、应用程序接口;硬件包括光纤双绞线等传输介质和网卡等。
C/S结构的基础是专用服务器网络结构,其特点是可以将工作进行分批处理,按照需求分配给不同的客户端和服务器端。客户端和服务器端的界限并非严格,经常可以相互交换。在该模式下,数据存放于服务器上,应用程序运行在客户机上,而且服务器和客户端的软件可以置于同一台计算机。客户端的软件在一般的个人电脑上即可运行,要求较低,服务器软件运行一般在大型的服务器上,提高性能。客户端软件可以进行数据的输入、向服务器发送请求、接收数据进行处理、呈现良好的用户界面。服务器软件进行数据处理、信息共享和数据的安全性保护、接收请求并进行信息处理,将结果返回给客户端。C/S架构能够较好把任务进行分配,减少了网络传输带数据。但同样也存在着很多的问题,突出的问题是软件维护变得困难,分布式处理不易得到扩展。
从80年代到现在为止,很多信息管理系统采取C/S架构进行软件开发,一方面得益于其交互性好、速度快的特点,另一方面为强大的数据处理能力、事务处理的特点。随着软件规模的扩大和软件复杂度的增加,C/S架构的缺点还是相当明显的,主要有:①开发成本高,软件难以移植,程序设计逻辑复杂。C/S架构对配置的要求在不断增加,软件升级就可能要求配置的升级,增加了系统的运行成本。大量的工作室在客户端进行的,所以客户端的程序设计变得复杂。客户端的软件兼容性较差,开发工具和平台的不同导致运行平台较单一。②软件维护和升级困难,难以使用新的技术。一旦选定了开发的工具和平台,难以进行更改。③使用范围局限在小部分局域网,难以在更大网络范围内使用,信息共享度较低。C/S架构示意图如图2-1所示。
图2-1 两层C/S架构
在两层C/S架构基础上,三层C/S架构在客户端和数据库服务器之间增加了一个应用服务器,提高了数据的安全性,系统逻辑更为清晰,在一定程度上提高了软件的可维护性和可用性。三层C/S结构示意图如图2-2所示。
图2-2 三层C/S架构
2.1.2 B/S系统体系结构
B/S架构是较新颖的软件体系结构,包括工具WEB浏览器、服务提供者WEB服务器和数据提供者数据库服务器。B/S模式中,客户端通过浏览器对WEB应用进行访问,即可完成需要的功能。客户端不需要安装应用程序,只需要进行访问,客户端的操作得到了简化,而且真正的做到了瘦客户端。只要网络能够访问和支持http和https协议等,就能够通过网络访问各种资源和进行各种操作。
本学生管理系统拟采用B/S的模式,实现学生信息、课程信息、成绩信息、班级信息、学籍信息、组织管理信息等。服务器端需要安装有WEB服务器和数据数据库服务器,比如配置可以采用较好的CPU和较好的操作系统如Windows2008 Server standard的操作系统。B/S是对C/S的改进,采用三层的体系结构,使用服务器进行数据处理并返回给浏览器,浏览器进行界面翻译和解析,得到最后用户看到的结果。B/S架构的示意图如图2-3所示。B/S的缺点有:
1.并发访问可能导致数据不一致和性能降低。WEB服务器是唯一提供服务的,多个客户端同时发起请求要求服务器响应及时,做好事务处理,防止数据不一致性。每个客户端请求数据最后悔访问数据库服务器,要求数据库访问语句得到优化才能提高性能。
2.Http是一种无状态的连接,每一次的通信都需要进行登录认证。当用户登录到系统之后,必须把数据保存到缓存中,当缓存过期后必须进行重新登录。这种访问对数据库效率不高。密码在传输中必须进行加密,否则容易泄露信息。用户权限信息在应用程序段配置,不能有数据库服务器直接验证,效率一定程度上降低了。
图2-3 B/S架构
2.1.3 C/S和B/S的比较
通过前面的介绍得知,C/S结构一部分应用在客户端,一部分在服务器端,主要适用场景为小规模局域网范围内,对数据共享性、安全性要求不是太高,但是对软件要求较高,专业化程度高,对客户机的有一定的要求。
B/S架构大部分的工作都在服务器端进行,少数数据解析在浏览器端进行,客户端基本负责数据的展示,工作承担量少,用户总成本较低。客户端升级只需要注意浏览器的兼容性即可,维护成本降低了。B/S适合较大访问的网络应用,利于资源共享,对于数据访问的权限设置较为严格,经过硬件防火墙的处理,安全性较高。B/S架构对服务器要求很高,必须能够运行WEB服务器和数据库服务器,且响应速度快。B/S的优点有:(1)系统开发快速、容易维护。B/S功能分为WEB前端和后台数据处理,开发工作降低。(2)操作简单。仅仅通过浏览器就能够访问较为有好多的界面,系统界面设计更为容易,视觉效果更佳。而且使用起来也变得容易。(3)信息共享容易,只需要有网络就能够访问信息,进行数据获取和处理。
2.2系统开发技术介绍
2.2.1 RUP开发过程
RUP(Rational Unified Process,Rational统一过程)是一个先进的通用软件开发过程框架,遵循它的开发方法可以在进度和成本的范围内开发出高质量的软件产品。值)。在RUP中,软件的生命周期是由一系列迭代组成的,这些迭代都是由软件项目分解成的许多袖珍项目。每个迭代都产生以内部版本形式交付的实际结果,其中每个内部版本会增加一个增量并表明所关注的风险得以降低[16]。
RUP中有核心过程工作流6个和核心支持工作流3个。核心过程工作流在整个生命周期中被多次访问,在项目中工作流轮流使用,且每次迭代中各个工作作为不同的重点和以不同强度重复出现[17,18]。
(1)商业建模工作流描述了怎样为新的目标组织开发构想,再基于构想进行组织的过程,角色和责任定义,局限于商业用例模型和商业对象模型中。
(2)需求工作流的目标是对系统应该做什么进行描述,就这一描述促使开发人员和用户达成共识。
(3)分析和设计工作流将需求转化成系统设计,并开发一个健壮的且设计与实现环境相匹配结构,优化其性能。
(4)实现工作流的目的包括三方面:代码组织的结构在定义子系统时采用层次化的形式进行定义;出现的形式为组件,包括了开发的类和对象;将开发出的组件作为单元进行测试以及集成由结果成为可执行的系统。
(5)测试工作流用来验证对象相互间的交互作用,目的为确保软件中组件正确集成,需求已被正确实现,在软件部署之前识别缺陷并处理。
(6)部署工作流的主要目的是将生成的成功版本作为软件交付到最终用户手中。
(7)配置和变更管理工作流用来描述在项目中控制各个项目成员的输出。
(8)软件项目管理以成功交付使用户满意的产品为目标,综合平衡可能产生冲突的各种目标,管理风险,克服各种约束。
(9)环境工作流的作用是提供开发过程和软件开发环境给软件开发组织。
2.2.2 Java EE技术架构
Java EE是一套全然不同于传统应用开发的技术架构[19],包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。Java EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循Java EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
SSH2是spring、struts2、hibernate的缩写[20],是基于Java EE进行开发的一个优秀的开源架构组合,是一个轻量级的开发平台。Spring框架的主要优势之一就是分层架构,它允许使用者选择使用需要的组件,同时为 Java EE 应用程序开发提供集成的框架。其功能强大,具有方便解耦,简化开发、AOP编程的支持、声明式事务的支持、方便集成各种优秀框架等特点。Struts作为Apache软件基金会赞助的开源项目之一,实现了基于Java EE应用的三层设计模式(MVC)的应用框架,基于Sun Java EE平台的MVC框架的实现主要靠Servlet及SP技术[21]。Hibernate是一个持久化的对象关系映射框架,而且提供了源码。它对JDBC进行了轻量级的对象封装,提供了许多有用的模板和接口供程序调用,这使得JAVA程序员可以尽量使用对象编程思维来对数据库做操作。
2.2.3 开发工具
Eclipse 是一个开发开发环境,是基于Java的开源可扩展开发平台[22]。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse是著名的跨平台的自由集成开发环境(IDE),主要用来Java语言开发,众多插件的支持使得Eclipse拥有灵活性,这是其他功能相对固定的开发平台软件很难具有的。大多数用户将 Eclipse当作Java来使用,针对希望扩展 Eclipse 的软件开发人员,允许构建与Eclipse环境无缝集成的工具。Eclipse是使用Java语言开发的,用途并不限于 Java 语言;例如,支持C/C++等编程语言的插件已经可用。Eclipse 框架可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
WebStorm是JetBrains公司旗下一款JavaScript开发工具。被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaSscript IDE”等。它具有快速智能的代码提示和补全支持重构、支持代码格式化细节的自定义、良好的编辑体验(如快速定位最近的编辑、快速查看代码结构及定义等)、轻量、快速等特点[23]。
2.2.4 数据库
数据库技术属于一种使用计算机来辅助管理数据的方法[24],它是信息系统的核心技术之一。它通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论来实现对数据库中的数据进行处理、分析和理解的技术。如何组织和存储数据,如何高效地获取和处理数据是数据库技术的主要研究内容。数据的共享问题是数据库技术的根本目标。常见的数据库有SQL Server、MySQL、ORACLE、DB2等。
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),功能全面,集成了企业级数据管理,使用商业智能工具。SQL Server 2005数据库引擎可以进行安全可靠的数据存储,能够处理关系型数据和结构化数据,其可以构建高可靠性和可用性的数据库应用程序 [25]。Oracle10g数据库是第一款为网格计算而设计的数据库[26],继承了Oracle数据库管理技术的各种优势,又融入了网格计算的各种新的性能特点。据不完全统计,有些高校在校师生高达几万人,存在大量的数据资源需要处理和存储。同时,在学生信息管理系统投入使用后,每天通过该平台实现的信息处理数量也是非常巨大的,系统在某些特定的时间内访问量会达到高峰,比如在学生入学和毕业时间,工作人员进行学生信息录入,学生进行个人信息的修改和查询工作,因此所选用的数据库服务器必须能支持大量交易处理和大量数据存储。
在综合考虑各个数据库的硬件需求和性能上,本文采用Oracle l0g数据库将作为系统数据库。Oracle也是以SQL(高级结构化查询语言)的关系数据库,在创建表格和存储过程时和SQL Server数据库略有不同。Oracle数据具有出色的可移植性,其应用平台性能良好,开发平台安全稳定,是电子商务等安全性要求较高系统的首选。另外,Oracle数据库具有分布式数据库能力,能否进行远端的数据访问,可以进行快速的数据拷贝和复制[27]。
2.2.5 UML建模语言
标准建模语言UML是一种规范化的良好的建模语言[28],从软件系统开发角度思考,它可以完成系统可视化、详述、构造、文档化操作,主要应用在分析与设计阶段。UML的主要特点是表达能力丰富,它汲取了许多概念并成为业界术语,并且在规范文档中对这些概念的语义、概念的图形表示法以及概念的使用规则都做了定义和详细的描述,规范文档有 《UML语义》文献、《对象约束语言规约》等。标准建模语言UML能够完整实现OOA的面向对象的分析与设计方法,实现系统模型的完美表达。
我们在软件开发过程中,经常使用建模语言,一是有助于更深的理解系统的需求和设计,二是能够可视化的说明系统的功能和结构。建模语言为构造系统提供了模板,以文档形式描述决策行为。
传统的信息管理系统设计方法主要是基于E-R模型,设计方式不能够准确地映射问题域和反映系统责任,不完全符合面向对象的设计思想。由于系统在设计中ER的固定化,不能适应学生管理信息系统的发展,难以进行业务重组。某一阶段的行为会影响到全局,增加了项目风险和工作量,这迫切需要使用更加灵活、健壮的模型来代替E-R模型[29]。
标准建模语言UML是一种规范化的良好的建模语言,可以完成系统可视化、详述、构造、文档化操作,主要应用在分析与设计阶段[30]。UML包括概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模型。可视化建模工具提供了代码和报表生成器,动态完整的支持了UML。UML标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面向对象开发过程而设计的。
UML共包括五种类图 [31],用例图、静态图、行为图、交互图、实现图。用例图该类图站在使用者的角度进行考虑描述系统的功能,并且在描述功能的时候,指出了各功能使用者是怎么样的操作者,说明各功能所对应的对象身份;静态图包括类图、对象图和包图三部分内容;交互图是对象间的相互的交互关系正是交互图所描述的内容。交互图包括顺序图和合作图;实现图包括构件图、部件图和配置图三部分内容。
UML提供了三类基本的标准模型建筑块:事物、联系和图形。这些建筑模块间共存在四种基本联系:依赖、泛化、聚合、关联、实现等。“依赖”指模型建筑块间的语义联系,其中一个独立事物发生改变将影响另一个的语义。“泛化”指模型建筑块间的一般与特殊的联系。“关联”指模型建筑块间的结构性连接。“实现”指模型建筑块之间的一种语义联系,一个规定一组约定(协议),另一个负责实现。例如:接口和实现该接口功能的组件、类间的联系就是实现联系。聚合”是一种特殊的关联,表示结构整体和部分关系[32]。
比较好的建模工具有Rational Rose、EA、PowerDesign。Rational Rose是Rational公司推出的统一建模语言可视化建模工具,用于可视化建模和公司级水平软件应用的组件构造[33]。ROSE在开发过程中的各种语义、模块、对象以及流程,状态等描述比较好,能够从各个方面和角度来分析和设计,使软件的开发蓝图更清晰,内部结构更加明朗,对系统的代码框架生成有很好的支持。但对数据库的开发管理和数据库端的迭代不是很好。Power Designer原是一种数据库建模工具。后来引入了对UML的支持,对面向对象语言如 C++、Java、C#等支持不错。 Enterprise Architect(EA)是一个全功能的、基于UML的visual CASE工具,主要用于设计、编写、构建并管理以目标为导向的软件系统[34]。论文在设计中使用到了Rational Rose工具。
2.3 排课算法介绍
2.3.1 优先级回溯算法
对于一般的回溯排课算法而言,对于排课解空间的搜索是完全随机的[35]。在一般排课算法中将班级、课程、教师、教室和时间片作为排课的五个维度进行遍历搜索,寻找可行解,如果有可行解的话,则将这五个维度进行组合,如果遍历全部可能组合之后依然没有可行解,则执行回溯操作,对前一个排课对象重新进行分配并以此类推,直到完成全部组合或回溯到第一个排课组合依然无法找到可行解为止。这样的排课过程完全没有考虑到各种现实情况下的排课需求,可能出现将公共必修课安排在晚上教学或者将每周4课时或 4 课时以上课程安排在连续多天教学的情况,这些安排都是会严重影响教学质量的,也都是应该在排课算法中避免发生了。
2.3.2 遗传算法
基本遗传算法模拟自然进化过程,包括选择操作、交叉操作、变异操作[36]。首先要产生出初始种群,在基础问题数据中随机的选取若干个体形成初始种群,初始种群产生以后,运用适应度函数计算个体的适应度函数值。根据适应度函数值,判断每个个体是不是满足优化准则,如果不满足就需要继续进行下一代个体的生产,可以通过交叉、变异操作产生出新的个体,从而构成新的种群,再计算新种群中每个个体的适应度函数值,这些值满足优化准则就停止迭代,否则继续产生下一代种群,直到满足优化准则为止。与其他优化方法相比,遗传算法的特点是:
1)群体搜索,易于并行化处理;
2)不是盲目穷举,而是启发式搜索;
3)适应度函数不受连续、可微等条件的约束,适用范围很广。
4)遗传算法具有很好的兼容性。
2.3.3 排课算法综合分析
排课问题的研究最早开始于60年代, 此问题在数学上最早提出。Gotlieb提出一个课表问题的数学模型,并使用匈牙利算法解决了一个三维线性运输的问题。之后,很多人纷纷基于Gotlieb的模型进行简化或补充,做了很多实际的工作,但是解决课表问题的算法仍然是困难的。70年代中期,S.Even等人证明了课表问题是NP完全类问题,通过计算机难以找到该类问题的多项式算法。在此研究的基础上,出现了基于经验的自适应专家系统, 局限于当时的人工智能和机器学习,系统并未能够解决排课问题[37]。八十年代末排课问题的研究有了新的发展,Kirkpatrick等人在八十年代末提出著名的模拟退火算法[38],属于基于迭代求解策略的一种随机寻优方法,但是对于寻求最优解仍然无能无力。90年代印度专家运用拉格朗日松弛法和二次分配法进行求解,在一定程度上获得了成功。遗传算法的参数难以实际设置,对于算法的最优解有较大影响。优先级回溯算法没有考虑到部分实际教学的场景,还需要人工进行优化。本排课系统采用的排课算法是基于优先级的回溯排课算法,在一般的回溯排课算法基础上加入本校各学院排课要求的排课优先级结合形成的一种适用于学院排课的回溯算法。
2.4 小结
从C/S和B/S架构的详细介绍和对比开始,介绍了信息管理系统的流行架构,详细描述了论文在设计和开发中使用的技术,包括RUP的软件开发过程、Java EE企业级架构、开发工具Eclipse、数据库技术以及UML建模语言,最后介绍了几种排课算法。
第三章 系统需求分析
系统架构确定好后,需要从整个信息管理系统的需求入手,详细分析系统的目标和各阶段的需求,使用UML建模语言描述系统用例。系统开发中除了功能性需求要考虑外,性能方面的需求也不容忽视。
3.1 系统总体目标
我国高校信息化建设已经出局规模,基础设施建设原来越完善。但从总体上来说,还存在着很多不足指出,许多高校的信息化建设普遍存在“注重建设,轻视使用”。教育部门未能为高校制定完善的信息软件,而且针对不同学校也难以设计,学分制的实施,使得日益增长的学生管理需求和当前软件及管理方式不能有效管理的矛盾日益突出。目前很多高校的管理制度存在不规范的现象,管理系统还不健全,研制一个适合高校的学生管理信息系统势在必行。
本论文研究实现一个基于网络环境的学生管理系统,能够在于解决网络环境下学生综合信息管理过程中存在的具体问题,实现的主要功能包括学生信息管理、学籍管理、招生就业管理、课程管理、成绩管理、考试管理、党组织管理、助贷管理、贫困生管理、宿舍管理、班级管理、奖惩管理等。预计达到以下目标:
(1)保证学生等完成个人信息管理、成绩查询、选课等功能;管理员可以完成基本信息管理、教务事务管理、宿舍信息管理等多种资源管理功能,教师能够完成成绩管理、课程申报等功能,实现一个综合化的信息管理系统;
(2)通用性好,可靠性高,开放性好。系统能够容纳或对接其它的系统,提供与其它教务管理系统良好的数据接口,实现信息互通,为建立功能集成化、网络化和自动化的教务管理信息系统奠定基础;
(3)操作简单便捷,界面大方美观,方便使用;具有各种查询、统计和报表功能,为教师和领导提供决策依据。
3.2 系统功能需求分析
3.2.1 学生管理组织机构
学生管理工作是个系统的复杂的工作流程,需要高校各职能部门协调配合,任何一个部门都需完成范围内管理工作。经实际考察、需求沟通和研究,与学生管理工作相关的各职能部门的组织职能如图3-1所示。
图 3-1学生管理组织机构
3.2.2 功能需求描述
根据部门业务需要,系统需要实现以下功能:
1)奖评管理
(1)设置各院系奖学金;
(2)设置各学院获得各项设奖学金的人数;
(3)学生申请奖学金;
(4)获奖学生上报;
(5)学工处审核获奖学金学生;
(6)奖学金发放清单。
2)违纪处分管理
(1)违纪处分信息批量导入;
(2)增加、修改、删除、导出违纪处分信息;
(3)违纪信息统计分析。
3)学生资助管理
(1)困难补助申请,包括贫困生申请、贫困生困难补助申请、国家助学贷款申请。
(2)贫困生信息的批量导入、单个增加、修改、删除、导出。
(3)困难补助信息的批量导入、单个增加、修改、删除、导出。
(4)国家助学贷款的批量导入、增加、修改、删除 、导出及
(5)学生申请审核。包括对贫困生申请、贫困补助申请、国家助学贷款申请等审核。
(6)贫困生社会活动信息维护。
4)勤工助学管理
(1)岗位申报;
(2)岗位审核;
(3)学生岗位申请;
(4)学生申请审核;
(5)酬金发放。
5)思想教育管理
(1)学生参加培训信息维护;
(2)入党积极分子维护;
(3)预备党员维护;
(4)党员维护。
6)课程管理
(1)课程类别管理;
(2)课程管理;
(3)课程成绩管理;
7)教师管理
(1)教师基本信息;
(2)教师教授课程管理;
(3)课程成绩登记。
8)综合信息查询
学工处、院系、学生可以选择相应的数据表,并选择或输入相应的信息项,系统可按权限查询出相应的信息,并可将查询出的信息输出到Excel或PDF。
9)报表管理
(1)奖励证书、学生证书、毕业证书等证书打印。
(2)年度专项奖学金汇总表
(3)处分学生一览表
(4)困难学生一览表
(5)贷学金发放一览表
(6)勤工助学酬金发放一览表
10)宿舍信息管理
可以查看某个学生所在的房间等信息、卫生评比情况。
11)系统维护系统
用户授权、系统初始化、数据备份与恢复、操作日志维护、系统帮助等功能。
3.2.3 系统用例
(1)学工处人员用例
学工人员的用例如图3-2所示。学工管理人员可进行各类信息的管理。
图 3-2学工处人员用例
(2)系统管理员用例
系统管理员用例如图3-3所示。系统管理员负责设置用户权限、维护系统信息、给系统使用人员设置初始密码等。
图3-3 系统管理员用例
(3)教师用户用例
教师用例如图3-4所示。教师可对系统管理员分配给自己的初始信息进行维护,查询相关学生、电话、宿舍、成绩信息,成绩登记及用户注销。
图3-4教师用例
(4)学生用例
学生用例如图3-5所示。学生维护个人基本信息,查询相关课程、成绩、宿舍信息及用户注销。
图3-5 学生用例
3.2.4 时序图
(1)学生登录时序图
在学生登录时序图中,首先学生输入用户名和密码,在登入成功之后,对个人信息进行录入,信息录入好之后,可能会进行信息更改,修改个人信息之后还需保存个人信息,将数据存入数据库中。如图3-6所示。
图3-6 学生登录时序
(2)教师成绩管理时序图
在教师成绩管理时序中,先输入用户名和密码,登入成功后,可录入成绩,在录入成绩完成后,可以对成绩进行添加、修改和查询操作,最后保存成绩,将数据存入数据库中,成绩录入成功之后,即可退出系统。如图3-7所示。
图3-7 教师录入成绩时序
(3)学生选课时序图
由于选课问题涉及的用户包括了教务处管理员、教师、学生,学生选课可以作为一个功能负责的模块单独处理。在功能管理上,需要进行单独管理,许多学生管理系统中都将学生选课作为一个子系统。选课模块主要功能包括学生选课、学生修改选课、教师申报课程、课程信息删除和统计学生选课信息。该模块在设计运行时要以教学计划为依据,可以对选课信息进行管理,图3-8展示了学生登录系统选课的时序。
图3-8 学生选课时序
(4)学生信息录入时序图
在新生录取完成后,由招生就业办提供学生档案资料,批量导入后就完成学生基本信息初始化,此后,其其它的一些详细信息可以由学生本人登录系统进行录入。学生在校期间的奖励处罚情况、党组织关系、毕业就业等信息由班主任和学生处主管教师共同来完成信息录入。学生信息录入的过程如图3-9所示。
图3-9 学生信息录入时序
(5)学生缴费
学生在缴费时出示学生证进行缴费,登录系统后可以进行缴费基本信息的查询。开学时业务较多的情况下可添加多位管理员进行收费,使用电脑自动打印票据。对欠费学生添加标记,在毕业时进行催缴等。学生缴费时序如图3-10所示。
图3-10 学生缴费时序
3.3 系统非功能性需求
系统非功能需求是满足用户业务需求外的特性要求,功能需求定义了软件的业务,非功能需求包括了性能和系统使用、适用、扩展能方面需求[39]。高校学生管理系统必须让用户感受到良好的系统性能,从视觉、易用、好用为基本出发点,在高校内部需要结合传统的客户端使用习惯,满足用户的实际需要,全面兼顾技术、应用与发展的和谐统一。在注重实效的同时满足用户现实需要,为系统的后续升级和扩展打下基础,从而提升系统的各项指标和整体性能,系统应遵循以下要求[40] [41]:
1、实用
对任何一个信息系统来说,实用是最重要的,能够为用户提供良好的服务。应用适应业务应用的流程化处理特点,应用界面友好。应用软件支持在线帮助功能,而且系统管理员能够修改帮助文本。系统能够进行维护和管理,对不同的用户应该有不同的权限,而不同的权限又应当对系统数据具有不同的维护和管理权限。这个权限可以动态调整。
2、适应性好,扩展性强,可靠性高,具有先进性
一套软件的优秀与否,在很大程度上要看这套软件在使用过程中的适应性和扩展性。对一款好的软件要不断完善,一旦用户的需求有新的变化时要能及时的不作大改动的情况下给予解决,这就要求软件要有良好的可扩展性。软件的设计要能体现最新的理论成果,最新的开发技术,最新的管理思想,最新的设计方法。应用程序要有较高的执行效率,要结合硬件平台及功能需求,在硬件配置层及应用软件层进行优化。系统结构要符合层次性及模块化的设计思想,系统结构清晰合理,软件灵活,可根据今后的需求进行扩充。可靠性原则要求系统数据的来源是可靠的,是正确的。另外还包括当系统出错时,应该有良好的人机界面提示用户错误的发生,并指出错误原因,或自动采用相应的解决办法。技术先进、成熟可以部分保证系统的可靠性。
3、安全性高
因为本系统的运行环境是互联网,而如今互联网上的不安全因素越来越多,如果不注意系统的安全问题,将会给系统造成不可弥补的灾难。一般WEB应该系统应从用户安全、网络层安全、用户程序、系统安全的安全和数据安全等五个方面加以关注和设计。应具备完善的多级别安全控制;采用验证、数字签名、存取控制、加密等多种技术手段,通过角色定义安全级别,把安全控制贯穿系统各个层次。高校排课系统所处理的信息可能涉及学校保密信息,而且不同的办公人员在不同的时刻对办公信息的处理权限也是不同的,因此安全性控制功能成为高校排课系统得以投入使用的先决条件。
(1)容错性
系统容错机制是指当遇到非法输入时能够进行正确的处理,不会报出用户看不明白的不友好的信息提示或者导致系统崩溃或功能不再可用。用户输入非法数据时,能够进行正确的提示,提示用户对输入信息如何进行校正。
(2)系统的内部安全和外在环境安全
系统安全性主要考虑的是系统数据的安全性,保护用户的数据和隐私不被泄露,保护系统不被非法入侵。安全系统要充分考虑设置网络的高安全级别,采取多层次的安全性保护措施。从软件上来说,可以进行系统数据备份、用户权限设置;从硬件上说,可以采用防火墙、硬件路由、硬盘备份等措施。系统用户权限的设置可以阻止未授权用户的访问,确保授权用户的合法使用;数据备份在系统运行过程中进行数据的自动备份,可以进行手动备份和自动备份周期设置,系统崩溃时可以进行还原;硬件防火墙可以防止外网的非法访问。
(3)系统运行安全
系统运行安全需要采用一些必须的措施来保证,包括在系统运行中启动专门的监控程序,监控程序的行为;在系统运行中记录系统的操作日志,在出问题时,对定位问题根源有很大帮助;在系统运行时出现的异常信息进行捕获。
系统设计符合B/S设计思想,结合了万维网浏览技术。随着互联网的普及,网上服务成为技术发展的趋势,是信息化的发展方向,应能够实现与万维网系统之间的结合。系统设计能够支持多种开发语言,支持与各种关系数据库的互连;支持现有主流网络协议标准、邮件与报文传送标准、安全性标准、编程开发标准。
3.4 小结
从系统的总体目标出发,采用UML建模工具进行了详细的功能需求分析说明,包括系统用例、时序图,最后阐述一个良好的系统应该满足的非功能性需求。
第四章 系统设计
在系统需求详细分析的基础上,进行系统的设计,从系统的设计原则出发,结合实际的系统和框架设计系统的软硬件架构,之后进行各个功能模块的划分,并说明了详细设计的过程。基于E-R模型,设计了数据库的逻辑结构。
4.1 系统设计原则
由于本系统采用的基于 B/S 结构的 Web 应用服务器具有许多优点,但要充分发挥其内在潜力,扩大适应能力和挖掘应用深度,就需要在设计软件时就使用先进的架构,使设计出来的系统不但能满足用户需要,而且也能适应发展需要。因此,在开发的时候遵循以下原则:
1、实用原则
对任何一个信息系统来说,实用是最重要的,能够为用户提供良好的服务。
2、适应性和扩展性原则
一套软件的优秀与否,在很大程度上要看这套软件在使用过程中的适应性和扩展性。对一款好的软件要不断完善,一旦用户的需求有新的变化时要能及时的不作大改动的情况下给予解决,这就要求软件要有良好的可扩展性。
3、可靠性原则
可靠性原则要求系统数据的来源是可靠的,是正确的。另外还包括当系统出错时,应该有良好的人机界面提示用户错误的发生,并指出错误原因,或自动采用相应的解决办法。
4、可维护性和管理性原则
系统能够进行维护和管理,对不同的用户应该有不同的权限,而不同的权限又应当对系统数据具有不同的维护和管理权限。这个权限可以动态调整。
5、安全性原则
因为本系统的运行环境是互联网,而如今互联网上的不安全因素越来越多,如果不注意系统的安全问题,将会给系统造成不可弥补的灾难。一般 Web 应该系统应从用户安全、网络层安全、用户程序、系统安全的安全和数据安全等五个方面加以关注和设计。
6、先进性原则
软件的设计要能体现最新的理论成果,最新的开发技术,最新的管理思想,最新的设计方法。
4.2系统架构设计
4.2.1硬件架构设计
系统架构图设计如图4-1所示。用户通过网络访问远端的Web服务内容,Web服务器经过应用服务器分流和分布式的数据库相连接。为防止大量学生的并发访问带来的问题,对访问来源进行了分流,把请求分流到不同的Web服务器。为防止恶意用户的入侵,添加了防火墙,对IP地址进行了屏蔽。
图4-1 系统架构图
4.2.2 软件体系结构设计
系统软件架构如图4-2所示,系统软件架构分为三层,最上层是视图层,中间层是业务逻辑层,最下层是数据库层。
图4-2 软件系统架构
学生管理系统最上层为视图层,用户通过学生管理系统视图访问系统,中间为业务逻辑层,提供了接口供其他的融合,并且可以通过数据处理适配层整合资源资源信息。业务层基础为JAVAEE 技术架构。数据层完成数据的持久化,为上层提供数据操作服务。为完成系统的网络话需求,系统采用分布式架构,需要通过网络通信层完成通信。技术架构如图4-3所示。
图 4-3 技术架构
4.3 教务排课算法设计
本排课系统采用的排课算法是基于优先级的回溯排课算法,在一般的回溯排课算法基础上加入本校各学院排课要求的排课优先级结合形成的一种适用于学院排课的回溯算法。
一般的回溯排课算法对排课解空间的搜索是随机的,算法中将班级、课程、教师、教室和时间片作为排课的五个维度进行遍历搜索,寻找可行解,如果有可行解的话,则将这五个维度进行组合,如果遍历全部可能组合之后依然没有可行解,则执行回溯操作,对前一个排课对象重新进行分配并以此类推,直到完成全部组合或回溯到第一个排课组合依然无法找到可行解为止。此排课过程没有考虑到各种现实情况下的排课需求,可能出现将公共必修课安排在晚上教学或者将多课时的课程连续安排进行教学的情况,严重影响教学质量。为了使排课算法适应与实际学院排课要求,对一般的回溯排课算法进行了改进,定义了多种回溯排课中需要遵循的优先级,比如说在安排课程时遍历计划按照公共必修课>专业必修课>专业选修课>公共选修课的优先级策略进行安排,这样就可以保证最重要的课程在回溯排课算法中被最先安排,再比如说对于每周大于 4个课时的教学计划将排课间隔定为2天时间,如果所有间隔2天的可能都被排除,才对这种间隔进行放宽。
改进的回溯排课算法排课实际情况进行设计,将班级、课程和教师在一般回溯排课算法中相对独立的三个维度融合为一个维度,将五个维度的排课问题简化为教学计划、教室和时间片这三个维度的排课组合问题。
通过以上两个方面的改进,这种基于优先级的回溯排课算法具有了比一般回溯排课算法在解决实际问题上更大的优势,运用该算法排出的课表在实际的教学实践中也具有更高的可行性。
4.4 系统功能模块设计
学生管理系统是一个综合性的信息管理系统,包含了学校许多的职能部门。结合教务管理系统的实际和前面的需求分析过程,学生管理系统功能模块划分如图4-4所示。教务管理模块包括学籍管理、成绩管理、选课管理和考试管理等;学生管理模块包括了招生就业、奖惩管理、贫困生管理(包括国家贷款、困难补助)、宿舍管理作;党委组织管理包括了党组织关系转接和组织教育活动、党员发展等;系统维护包括了权限管理、系统初始工作、数据备份管理、日志管理和联机帮助模块。
图4-4 系统功能模块
4.4.1 系统类设计
统一建模语言包括了静态属性设计和动态功能设计,类图描述了系统静态属性设计,时序图描述了动态功能的设计,下面详细设计高校学生管理系统中所需的类图。
(1)核心类设计
系统的核心功能包括了学生管理和教务管理,系统的核心实体类关系如图4-5所示。该图中描述了各类的关系,类的静态属性和类的方法。Student为学生类,Teacher为教师类,Major为专业类,Course为课程类,Score为分数类,Award为奖励类。
图4-5 核心实体类
(2)核心业务类设计
学生管理系统的核心业务类如图4-6所示。BaseUtil为基础类,包括了信息的增删改查操作;TeacherMange为教师管理类,进行教师信息的所有操作;StudentMange为学生管理类,进行学生信息的所有操作;ScoreMange为分数管理类,进行分数信息的所有操作;CourseMange为课程管理类,进行课程信息的所有操作;MajorMange为专业管理类,进行专业信息的所有操作;AwardMange为奖励管理类,进行奖励信息的所有操作。
图4-6 核心业务类
(3)核心控制类
教务管理核心角控制类主要对课程、学生、教师、奖励等信息进行操作,如图4-7所示。
图4-7 核心控制类
核心控制类的说明如表4-1所示。
表4-1 核心控制类说明
类名 用途
BaseAction 基类,提供了基础的操作,如增删改查
TeacherAction 和前台交互,实现教师信息管理
MajorAction 和前台交互,实现专业信息管理
ScoreAction 和前台交互,实现分数信息管理
CourseAction 和前台交互,实现课程信息管理
StudentAction 和前台交互,实现学生信息管理
下面从具体的业务逻辑角度,说明系统的功能详细设计过程。由于系统功能模块很多,在此列举几个功能模块进行说明。
4.4.2登陆验证模块设计
用户登录的界面设计如图4-8所示。用户需要输入账号和密码进行登录,当登录成功后,根据用户角色进入到不同的系统界面。用户登录流程如图4-9所示。用户提交账号和密码至后台,被Spring配置的拦截器拦截,进行MD5加密校验,通过后使用Struts自动配置跳转至主页面,如果失败,则跳转至失败页面进行信息提示后,再次跳转到登录界面。
图4-8 用户登录界面
图4-9 用户登录系统流程
4.4.3系统权限模块设计
系统权限设计是指对系统所有的操作进行控制,采用基于角色的权限管理机制,包括角色和权限两个组成部分。每个用户拥有自己的角色,每个角色拥有自己的操作权限,而且在程序里控制的是权限,权限定义为具体的系统前台操作。这种实现灵活性强,可配置化程度高。角色由用户按照需求进行定义,尤其是用户在管理过程中发生变化时,只需更改其角色权限或者新增角色,然后为新角色赋与权限,产生新的角色权限控制。如图4-10所示,包含了用户、角色、权限、操作几个表,每个用户拥有至少角色,每个角色对应其操作权限,每个权限对应页面的一个操作。
图4-10 权限角色设计
4.5 数据库设计
信息系统是处理数据的过程,其核心和基础在于数据库。合理设计数据库,进行良好的逻辑和物理设计才能设计好高效完整的信息系统。数据库设计原则如下:
1.共享性
在多个用户和应用之间共享数据,为不同的部门、专业用户提供服务。
2.数据独立性
数据库的逻辑数据独立,各个模块的数据和其应用无关,在物理结构存储方法改变时,逻辑数据不变,其上层应用不用改动。
3.最小冗余性
较高数据冗余增加了数据的维护难度,影响用户的数据查询体验。因此数据库冗余程度尽可能限制较小范围内。
4.安全性
数据表格设计能够控制数据共享范围和使用权限,多个不同用户在权限下进行数据访问,确保数据安全。
关系型数据库设计时是要遵循一定的规则的,尤其是数据库的设计范式。现在简单介绍一下1NF(第一范式)、2NF(第二范式)、3NF(第三范式),另有第四范式和第五范式(第四范式和第五范式属于范式中的较高要求的范式)[20]。
第一范式(1NF)。在关系模式R中的每一个具体关系,如果每个属性值都是由不可分割的最小数据单位组成或者说每个属性的值必须是唯一的,则称R属于第一范式,换一句话说是指:在关系每个元组的所有属性上的值都必须是不可分割的原子值,相反的凡具有集合属性或嵌套子关系的关系都不是第一范式。
第二范式(2NF)。如果关系模式R为第一范式,并且R中每一个非主键属性完全依赖于R的某个候选关键字(通常为主键),即所有非主键列的值都完全信赖于主键列,则称关系R属于第二范式。
第三范式(3NF)。属于第二范式,且表中的任何一个非主属性都不传递函数依赖于任何关键字,则为第3范式;如果关系模式R中的所有非主键属性对于任何候选键都不存在传递依赖,则称关系R属于第三范式。即如果一个表中的任意三列E、F、G,存在着E决定F,且F决定G的情况,那么这个表就不属于第三范式,因为E可以通过传递依赖决定G,这时应该将传递依赖分解到两个表中。
4.5.1 概念结构设计
数据库系统设计主要是进行数据库的逻辑设计,即将数据系统功能的要求和功能模块的划分进行分类、分组,对其系统和逻辑层次重新组织,面向用户,确定学生管理系统的各个组成部分的数据项和数据结构[27]。该数据库的ER图如图4-11所示。系统涉及对象非常多,此处仅列举部分对象作为实体例子,不展示所有实体关系。
图 4-11 系统ER
4.5.2 逻辑结构设计
本系统数据库采用Oracle10g, Oracle10g数据库时常应用于中大型网站建设,具有查询速度快,操作便捷的特点。系统共设计了很多表,此处仅列出几个在系统中起重要作用的表。
1)教师信息表
tbl_teacher_info 表主要保存排课系统中教师信息,该表的具体设计如表4-2所示,collegeId字段是学院信息表的主键,在此作为教师信息表的外键。
表4-2 教师信息表的设计
字段名称 数据类型 是否为空 备注
teacherId long 否 教师编号,主键
teacherName Varchar(100) 否 教师名称
collegeId long 否 系别外键
positionName Varchar(100) 是 职位
Username Varchar(100) 否 用户名
Password Varchar(255) 否 密码
2)课程信息表
tbl_course_info 表主要保存排课系统中的课程信息,该表的具体设计如表4-3所示。
表4-3 课程信息表
字段名称 数据类型 是否为空 备注
courseId long 否 课程编号,主键
courseName Varchar(100) 否 课程名称
CourseTypeId Long 否 课程类型,外键
CourseHour int 是 总课时
CourseHourWeek int 是 每周课时
examinTime Varchar(100) 是 考试时间
startWeek Int 是 开始周次
endWeek Int 是 结束周次
courseScore Int 是 课程学分
CourseRoomTypeId Long 否 教室类型,外键
课程信息表中部分重要字段的说明如下:
(1)CourseTypeId字段是课程类型表的主键,现阶段设置了公共必修,公共选修,专业必修,专业选修四类课程属性。
(2)CourseRoomTypeId字段是教室类型表的主键,现阶段设置了普通教室、室外场地、实验教室、多媒体四类教室类型。
3) 教师课程表
tbl_teacher_course表保存课程和教师的配置信息,该表的具体设计如表4-4所示。teacherId字段和CourseId字段是教师信息表和课程信息表的主键,课程表保存排课系统中的班级信息。
表 4-4 教师课程信息表的设计
字段名称 数据类型 是否为空 备注
teachercourseId long 否 编号,主键
teacherId Long 否 教师编号,外键
CourseId Long 否 课程编号,外键
4)专业表
该表的具体设计如表4-5所示,professinalId字段是专业信息表的主键,在此作为班级信息表的外键;classSectionId为教学组表的主键。
表4-5 专业信息表的设计
字段名称 数据类型 是否为空 备注
professinalId long 否 专业编号,主键
studentTotalNum int 否 学生总数
className Varchar(100) 是 班级名称
classSectionId long 否 教学组编号,外键
5)学生奖惩表
该表的具体设计如表4-6所示,InfoId字段是学生奖惩表的主键,StduentNo为学生信息表的主键,包含了奖惩事件、奖惩类型、奖惩事件等属性。
表4-6学生奖惩表
字段名称 数据类型 是否为空 备注
InfoId long 否 事件编号,主键
studentNo Long 否 学生编号
InfoName Varchar(100) 是 事件名称
InfoDate Varchar(100) 是 事件日期
InfoType Varchar(100) 是 事件类型
6)学生获得奖励的主键为自动编号,学生奖励表格包括了奖励的类型、名称和时间等。奖励学生表见表4-7。
表4-7奖励学生表
字段名称 数据类型 是否为空 备注
awardId long 否 奖励编号,主键
awardType Varchar(100) 否 奖励类型
awardName Varchar(100) 是 奖励名称
awardDate Varchar(100) 是 奖励日期
awardMoney Varchar(100) 是 奖励金钱
7)学生困难补助以学号作为主键,同时也是学生表格的外键,学生获得补助包括补助类型、补助名称、补助日期以及补助金额。学生的困难补助类型不能为空。困难补助学生表见表4-8。
表4-8困难补助学生表
字段名称 数据类型 是否为空 备注
studentId long 否 学生编号,主键
helpType Varchar(100) 否 补助类型
helpName Varchar(100) 是 补助名称
helpDate Varchar(100) 是 补助日期
helpMoney Varchar(100) 是 补助金钱
4.6 小结
首先介绍了系统设计原则,从软硬件两方面设计了系统架构,进行了系统的类设计,详细说明了登录和权限模块的设计,最后进行了数据库设计。
第五章 系统实现与测试
系统设计完成之后就是系统的开发和测试过程了。该过程充分利用了Java EE的架构,数据库连接等公共类进行实现,然后采用工厂模式进行数据接口管理,最后进行了系统页面实现。系统实现后,先保证每个基本模块符合要求,然后在进行整体的连调。
5.1 公共模块实现
(1)数据库连接
Package com.student.manage.db;
import java.sql.Connection;
import java.sql.DriverManager;
/**
/
public class DBConnection {
/* Oracle数据库连接URL*/
private final static final String DB_LINKURL = “jdbc:oracle:thin:@192.168.2.66:1521:orcl66”;
/设定Oracle数据库连接驱动/
private final static String DB_DRIVER = “oracle.jdbc.driver.OracleDriver”;
/设置数据库用户名/
private final static String DB_USERNAME = “student”;
/设置数据库密码/
private final static String DB_PASSWORD = “student@123”;
/
* 获取数据库连接
* @return
/
public Connection getConnection(){
/ 声明Connection连接对象*/
Connection connOracle = null;
try{
/** 使用Class.forName()方法自动创建这个驱动程序的实例且自动调用DriverManager来注册它*/
Class.forName(DB_DRIVER);
/** 通过DriverManager的getConnection()方法获取数据库连接*/
connOracle = DriverManager.getConnection(DB_LINKURL,DB_USERNAME,DB_PASSWORD);
}catch(Exception ex){
Logger.error(ex);
}
return conn;
}
/**
* 关闭数据库连接
*
* @param connect
/
public void closeConnection(Connection conn){
try{
if(conn!=null){
/* 判断当前连接连接果没有被关闭就调用关闭方法*/
if(!conn.isClosed()){
conn.close();
}
}
}catch(Exception ex){
Logger.error(ex);
}
}
}
(2)JSP分页代码
如表5-1所示,JSP页面显示分页。
表5-1 JSP分页实例
JSP分页
每页<%=pageCtl.rowsPerPage%>行
共<%=pageCtl.maxRowCount%>行
第<%=pageCtl.curPage%>页
共<%=pageCtl.maxPage%>页
<%if(pageCtl.curPage1){ out.print(" 首页 上一页"); }else{ %>
首页
上一页
<%}%>
<%if(pageCtl.curPagepageCtl.maxPage){ out.print(“下一页 尾页”); }else{ %>
下一页
尾页
<%}%>
转到第
<% for(int i=1;i<=pageCtl.maxPage;i++) {
if (i== pageCtl.curPage){
%>
图5-1 登录界面
5.2.1系统登录模块
在JSP页面中登录表单为,增加登录类LoginAction,在web包下创建LoginAction类,在其中添加welcome与login方法,前者为index.jsp的跳转方法,它将转向到login.jsp页面。而后者则用来处理登录事件,如果成功将进入到主页面,失败则返回到登录页面。增加拦截器
前台采用Ajax post方法,请求后台的Action,验证用户名和密码是否存在。其部分代码如下:
function check_u_exist()
{
var url = ‘checkU.action’; //对应到struts.xml中的action
var param = Form.serialize(‘loginFrom’);//loginFrom为表单的ID
var myAjax = new Ajax.Request(
url,
{
method:‘post’,
parameters:param,
onComplete:completeFun,
asychronous:true
});
return true;
}
//验证用户名
function check_u(){
obj1 = document.getElementById(“username”);
obj2 = document.getElementById(“u_e”);
while(obj2.hasChildNodes()){
obj2.removeChild(obj2.childNodes[0]);
}
var pattern = /[^\x00-\xff]/g;
if(obj1.value=="") {
sub_t = document.createTextNode(“用户名不能为空!”);
obj2.appendChild(sub_t);
return false;
}
else if(pattern.test(obj1.value)){
sub_t = document.createTextNode(“用户名格式不正确!”);
obj2.appendChild(sub_t);
return false;
}
else if(check_u_exist()) {
return false;
}
else {
return true;
}
}
要实现登录拦截的功能,关键的就是要实现拦截类了,在common包下面再增一个interceptor包,创建AuthorityInterceptor类,并继承MethodFilterInterceptor,为什么继承它呢?因为它是对方法进行拦截,而在这个应用中,对绝大部分的方法进行拦截,而对个别例外的方法排除。
在loginAction中的核心代码如下:
public String execute() throws Exception {
boolean s=loginacService.checkin(loginac);
//System.out.println(“checkaction的S=”+s);
if(s){
System.out.println(“成功登录”);
this.success = true;//用于extjs返回成功与否的信息
this.message = “Checkin Success”;
}else {
System.out.println(“登录失败”);
this.success=false;
this.message=“No User”;
}
System.out.println(“message=”+message+",success="+success);
return SUCCESS;
}
登录验证错后,Struts错误机制返回的提示信息界面。如图5-2所示。
图5-2 登录失败界面
5.2.2 学生管理模块
在第三章中,对学生管理模块作了用例分析。主要使用者是在校学生和学工处管理人员,主要操作为进行大量的信息查询。该模块在设计中要解决的主要问题有如何提高模块的效率和可扩展性以及提高存储机制要可移植性。
5.2.2.1 DAO封装
在基于Java EE平台的应用程序设计中,DAO层一般是封装完好的一个数据库访问接口层,是一个位于业务层之上的集成层,实现了对数据源的访问机制。DAO抽象和封装了所有对数据源的访问,业务组件仅为其客户端使用DAO提供简单的接口,DAO完全向上层业务逻辑隐藏了数据源操作相关的实现细节。采用分层次的模式把业务逻辑和数据库访问逻辑分离,减少耦合,强化内聚,减少业务层组件中数据源访问的复杂性。DAO作为一个通用性的接口,对上层的接口不会改变,即使低层数据源发生了变化,不会影响到其它业务模块的设计逻辑,因而具有强大的灵活性和可靠性。
DAO组件的实现方式为:当一个业务组件向DAO发出访问数据源的请求时,由DAO组件进行对数据源的访问,把数据转化为需要的格式返回给业务组件。在业务组件和DAO之间传递的是另外一个封装的值对象,这个对象受到前台业务的影响,它属于从页面到数据库传递的一个实体。
5.2.2.2 DAO的工厂模式实现
所有模块中要访问的实体类设计为Java Bean组件,包括学生基本信息、学生考试信息、学生成绩信息、学生专业信息、学生惩处信息、学生党组织信息。这些组件在需要访问时,以值对象形式进行传递。值对象作为任意的可串行化的Java对象,使用粗粒度的数据对象传输,提高了远程传输效率。当客户端需要使用数据时,不需要重新去数据库中查询,而是直接从内存中读取,节省了许多时间和系统开销。
StudentDAO是包含数据库访问方法的接口,使用工厂模式实现组件。首先,设计一个数据库访问生产工厂StudentDAOFactory,由其生产出各DAO组件。studentDAOFactory中具有StudentDAO对象的静态方法getDAO(),该方法用来获得数据库联接。StudentDAO组件中包含了对数据各种查询方法。由StudentDAOImpl实现StudentDAO,使用JDBC实现对数据库的访问。调用StudentDAOImpl中的方法便可以实现对数据库的访问。在这里使用到了Hibernate模板类,充分使用系统已有的功能。实现类主要代码如下:
public class StudentDaoImpl extends HibernateDaoSupport implements StudentDao {
public void insertStudent(Student student) {
this.getHibernateTemplate().save(student);
}
@SuppressWarnings(“unchecked”)
public void delStudentBySno(String sno) {
Student stu = null;
List list = this.getHibernateTemplate().find(“from Student s where s.sno=’” + sno + “’”);
if (list != null && list.size() > 0) {
stu = (Student) list.get(0);
}
this.getHibernateTemplate().delete(stu);
}
public void delStudentById(int stuId) {
this.getHibernateTemplate().delete(this.getHibernateTemplate().load(Student.class, stuId));
}
@SuppressWarnings(“unchecked”)
public List queryAllStudents() {
return this.getHibernateTemplate().find(“from Student”);
}
@SuppressWarnings(“unchecked”)
public Student queryStudentBySno(String sno) {
return (Student)this.getHibernateTemplate().get(Student.class, sno);
// return (Student)
// this.getHibernateTemplate().find("from Student s where s.sno = " +
// sno).get(0);
Student stu = null;
List list = this.getHibernateTemplate().find(“from Student s where s.sno=’” + sno + “’”);
if (list != null && list.size() > 0) {
stu = (Student) list.get(0);
}
return stu;
}
学工人员登录系统后,可以管理和查询学生的基本信息,如图5-3(a)所示。图中可以按照系别、年级、学期、专业等查询学生。学生信息录入如图5-3(b)所致。
图5-3(a) 学生信息管理
图5-3(b) 学生信息录入管理
5.2.2.3 界面原型
图5-4为学生奖励登记,展示了登记基本内容,可以依据专业部门、班级、学号检索和按照学期、部门、类别等内容录入。
图5-4 学生奖励登记管理
图5-5为排课课表。
图5-5排课课表
图5-6为编辑课表,对课表的一些信息进行修改,因而能够进行手动微调。
图5-6编辑课表
图5-7为自动排课,可以按照条件和需求进行自动排课。
图5-7自动排课
图5-8展示了专业设置相关的内容。
图5-8专业设置
图5-9为系统维护。
图5-9系统维护
图5-10为系统权限和模块控制,可以对控制教师等角色的操作功能。
图5-10权限和模块控制
图5-8在页面数据列表展示中,使用了分页处理,前台使用分页组件后台使用Hibernate分页技术,定义一个分页类。前台分页代码如下:
// 分页处理方法
Pagination${id}.gotoPage = function(action, c, t) {
var cmd = action;
// 当总记录数量小于等于每页记录数量时,分页动作无效
if (t <= ${webPager.pageInfo.pageSize}) {
return;
}
// 确定按钮处理
if(action == 'input') {
var inValue = $("#${id}_inputPageNo").val();
if(inValue.match(/^[0-9]+$/) && parseInt(inValue) > 0) {
cmd = inValue;
}
else {
// TODO 提示错误信息
return ;
}
}
后台的分页核心代码如下:
public class Pager {
private int totalRows; //总行数
private int pageSize = 10; //每页显示的行数
private int currentPage; //当前页号
private int totalPages; //总页数
private int startRow; //当前页在数据库中的起始行
public Pager() {
}
public Pager(int _totalRows) {
totalRows = _totalRows;
totalPages=totalRows/pageSize;
int mod=totalRows%pageSize;
if(mod>0){
totalPages++;
}
currentPage = 1;
startRow = 0;
}
5.2.3 学生排课模块
排课算法将教学计划的班级、课程、教师主要因素作为排课的基本要素,以教学计划为单位,将其和时间信息进行匹配。每一教学计划都会和对应的时间匹配,如果全部遍历时间片没有匹配则需要对前一个计划计划进行回溯。算法实现的步骤描述如下[42]:
1、初始化教学计划和教室时间片
用两个类分别代表教学计划和教室时间片。每个类里有一个二维矩阵,教学计划的行和列纬度分别表示学院计划和时间片信息;教师时间片矩阵表示可用教室信息和对应时间片。
2、设定优先级进行排课
设定优先级包括课程属性、班级教学、宿舍位置、每周课时数、教师特殊要求等设定优先级。
3、检测排课冲突并处理
冲突原则是教学计划占用教室时间资源是否冲突,如果冲突进行后一个排课的时间片调整。将遍历所有排课的可能性。
4、排课回溯
某个计划不能被排进行教学时间里,则需要进行回溯,回溯将从最近上一次的排课计划开始,重新排课,之后在对本次排课进行排课。倘若一直回溯到第一条排课记录还不能实现排课,则需要调整排课计划。
排课算法主要有几个主要类模块。
(1)void setRangeV():标记可行的排课计划。
(2)void initRangeTimeMtr():初始化排课计划和时间片。
(3)Boolean checkRangeConflict():检查计划是否冲突。
(4)Boolean checkClsRoomConflict():检查教室冲突。
(5)Int arrageClsRoom():安排教室。
(6)Void rollbackCls():回滚计划并重新安排排课。
5.3 系统测试
5.3.1测试技术
科学技术高度发达的今天,企业的软件的质量决定了其生存的能力,高质量产品和优质服务是企业生存的法宝。软件质量的高低,包括了其稳定性、可靠性、可用性等,质量低的软件,用户使用起来不仅不方便,而且在操作过程中会产生各种各样的问题,带来各种程度的后果。一个质量高的软件不一定不存在问题,只是发现问题的概率很小、很低。为发现软件中存在的问题,解决软件在使用后潜在的bug,提高软件的质量,软件需要进行大量的软件测试。软件在测试阶段投入的成本占总工作量的一半以上,才能实现良好的测试。
软件测试作为软件工程的子工程,是为了发现错误而执行程序的过程;测试是为了挑出程序的错误,不能证明程序没有错误;一个好的测试用例是在于它能发现至今未发现的错误:一个成功的测试是发现了至今未发现的错误的测试[43]。
软件测试的目的是发现软件错误和缺陷,在软件投入前进行改正和完善。软件测试对软件规格、设计、编码进行了复审,贯穿于整个软件开发过程[44,45]。
1.确保产品完成了它所承诺或公布的功能,并且所有用户可以访问到的功能都有明确的书面说明。
2.确保产品满足性能和效率的要求。
3.确保产品是健壮的和适应用户环境的。
4.帮助发现当前开发工作所采用的软件过程的缺陷,以便进行改进。
软件测试原则有如下测试原则:
1.所有的测试都应追溯到用户需求。
2.从心理上,在测试前要认为被测软件是肯定有错的,不经过测试而没有错
的软件几乎是不可能存在的。
3.在整个开发过程中要尽早地和不断地进行软件测试。
4.程序员不应该测试自己设计的程序。
测试方案是测试阶段的关键技术问题。为了提高测试效率降低测试成本,本测试方案采用黑盒测试和白盒测试。
黑盒测试:也称为功能测试,指将软件看成黑盒子,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。根据系统分析说明书设计测试用例,通过输入和输出的特性检测是否满足指定的功能。
白盒测试:也称为结构测试。指将软件看成透明的白盒,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。
5.3.2测试用例
根据实际需求进行系统测试,在此仅列举一些测试的实例,说明测试的过程。测试用例如下:
测试一:用户登陆信息
对本系统用户登录模块测试情况如表5-3所示。
表5-3 用户登录模块测试用例表
用户名 密码 测试结果
UserTest admin@123 正确登录
UserTest admin@123456 提示用户名或密码错误
UserTest admin@123 提示用户名后密码错误
测试目的:检查登陆时密码不正确或者是用户名不存在系统是否出现预期设定的操作提示。
预期效果:登陆出现错误时进行报错并提示重写填写。
结果:都出现相应的报错提示。
结论:登陆时信息要全部填写正确才能进行操作。
经过测试,用户登录模块测试成功。
测试二:查询功能测试
测试目的:测试用户是否能进行电视节目 信息的查询。
预期效果:在用户输入查询条件时,成功将信息从数据库中查出。
结果:用户查询后,页面正确显示了符合条件的查寻信息。
结论:用户查询操作成功,程序运行正常。
测试三:资料添加修改功能测试
测试目的:测试用户是否能进行资料添加修改。
预期效果:在用户执行资料添加修改后,成功将资料放入仓库。
结果:执行后,仓库成功显示信息。
结论:用户操作成功,程序运行正常。
测试四:修改个人资料。
测试目的:测试用户是否能修改个人信息。
预测效果:在用户更改个人信息后,更改后的个人信息能成功保存到个人资料中。
结果:执行更改个人信息后,能够成功保存到个人资料中。
结论:更改个人资料成功,程序运行正常。
测试五:管理员登录。
对本系统管理员登录模块测试情况如表5-4所示。
表5-4管理员登录模块测试用例表
用户名 密码 测试结果
Administrator admin@123 成功登录
Administrator admin@123456 用户名或密码错误
Administrators admin@123 用户名或密码错误
测试目的:测试管理员是否能成功登录。
预测效果:登陆出现错误时进行报错并提示重写填写。
结果:都出现相应的报错信息。
结论:登陆时信息要全部填写正确才能进行操作。
经过测试,管理员登录模块测试成功。
测试六:管理员相应功能测试。
测试目的:测试管理员是否能进行相应的增删改查。
预测效果:增删改查正常
结果:管理员执行相应操作后,均成功。
结论:操作成功,程序运行正常。
5.3.3测试总结分析
通过上述对软件测试的研究,可以发现软件测试是一项覆盖范围广泛,繁复的工作。在一个好的系统开发过程中,测试所占据的工作量绝不会比设计实现的工作量少。
本系统的测试工作覆盖了全部的功能模块,进行了黑盒测试和白盒测试,系统并发测试、性能测试。在代码编写的过程中,针对模块进行了单元测试。针对本系统书编写了大量的自测用例,从基本功能到性能及UCD规范性。在系统中有很多潜在的错误,比如多个客户端操作产生的数据不一致、事务操作回滚失败,都进行了针对性检查,发现了存在缺陷的原因,对缺陷修改后又进行了回归测试测试令人满意。
5.4 小结
本章首先进行了公共模块类的实现,包括了数据库、分页等,然后详细介绍了系统登录模块和学生管理模块的实现,接着介绍了系统的主要页面实现,最后进行了系统测试,列举了常用的测试用例。
结论
在高等教育普及化和大范围扩招形势下,学生管理工作变得极其繁琐。大学学生管理范围涉及到了高校的方方面面,包括教学、科研和管理等各个部门,管理内容繁琐广泛,如果仅依靠手工管理或简单的办公自动化工具来管理与学生相关的资料和数据,已经远远不能满足学生管理工作的需要。信息技术在推动学校发展上发挥了很大作用,网络技术、软件、计算机技术的迅速发展使得在现有的校园计算机网络上建立高效、协调、集成的数字化办公系统已成为可能。
本论文研究实现一个基于Java EE框的学生管理系统,能够在于解决网络环境下学生综合信息管理过程中存在的具体问题,实现的主要功能包括学生信息管理、学籍管理、招生就业管理、课程管理、成绩管理、考试管理、党组织管理、助贷管理、贫困生管理、宿舍管理、班级管理、奖惩管理等。所做的主要工作有:
(1)分析当前环境下学生管理的业务应用流程,构建学生管理的业务模型,并进一步应用UML进行用例描述,系统建模与设计。
(2)在传统优先级回溯算法基础上,提出基于优先级回溯的排课算法;该算法融入了实际院校的优先级选课因素,有效地提升了排课算法在实际中的应用,解决了资源冲突问题。
(3)在前期需求与数据分析基础上,对系统功能模型进行进一步的设计,将Java EE技术应用到系统的研发过程,完成基础课程维护、学生管理、排课管理等核心功能模块,实现一套完整的学生管理系统。
论文进一步结合本校学校学生管理业务实践,将学生管理系统在全校推广试运行,取得了较好的成效。该管理系统上线运行大大地改善了学生管理工作效率, 为学校节约了大量的人力、物力,增强学生、班级、教师、专业间的信息交流和互动,促进学生管理工作的开展,对高校实现信息化具有重要的参考意义。
本文研究了软件开发理论的一些技术,探讨了使用UML、RUP开发过程分析设计系统的过程,并对这些理论和技术在实际设计中进行了较深入的应用。由于时间和技能水平的多种原因,本系统设计上还存在着一些不足,需要更进一步的完善。例如不同信息管理系统间的数据共享,如何进行数据移植,如何在此基础上设计功能更强、应用更广泛的大系统都值得进一步的研究和探索。
未来还研究学习实际开发技术相关知识,参照其它系统的设计,取长补短,迸一步完善和修订系统功能,在完成系统设计的基础上进行系统实现。
参考文献
[1]王磊.高校学生信息管理系统的设计与实现[D].山东大学,2007.15-17
[2]杨世清.基于网络环境的学生信息管理系统的研究[D].武汉理工大学,2004.203-205
[3]周光明,徐琳.基于B/S的学生信息管理系统[J].电脑与信息技术,2004,(02):30-32.
[4]潘以锋.基于WEB的高校信息管理系统[D].华东师范大学,2006.178-180
[5]王英合. 基于WEB的学生信息管理系统设计与实现[D].中国海洋大学,2006.43-44
[6]蔡长安,王琪. 基于B/S模式的学生信息管理系统设计与实现[J]. 计算机工程与设计,2006,14:2585-2587.
[7]舒建武. 基于ASP.Net技术和工作流技术的学生信息管理系统的研究与开发[D].浙江工业大学,2009. 58-59
[8]白亚鹏.探讨计算机网络技术在生产信息管理中的应用[J]. 经营管理者,2012,24:398.
[9]李伟.基于JAVA的学生信息管理系统[D].电子科技大学,2009.103-104
[10]俞波,周皓峰. 一种基于Web的学生信息管理系统[J].计算机与现代化,2000,(02):55-60.
[11]郑小蓉. 基于Web的高职学院学生信息管理系统设计与实现[D].重庆大学,2007.157-158
[12]樊伟,周正国. 基于ASP.NET的学生信息管理系统[J]. 和田师范专科学校学报,2007,(01):197-198.
[13]任美璇.基于校园网的学生信息管理系统[D].中国海洋大学,2009.55-57
[14]常化洁.学生信息管理系统的设计与实现[D].华东师范大学,2009.146-148
[15]周忆.学生信息管理系统的设计与开发[D].华中师范大学,2005.76-78
[16]常晓,王凤霞,张景,李军怀.基于RUP的UML建模方法研究[J]. 计算机工程与应用,2004,21:126-130.
[17]张敏,袁兆山,李玲.基于敏捷方法和RUP的软件过程改进[J]. 合肥工业大学学报(自然科学版),2007,(04):440-444.
[18]牟援朝,张杰,王延清.RUP与传统信息系统开发方法的比较研究[J].合肥工业大学学报(自然科学版),2003,S1:919-923.
[19]Min Hu,Ding-ding Pan,Pei-en Zhou. Research and Application of Java EE and AJAX Technologies in Industry Report[J]. Journal of Computers,2011,69
[20]Yongchang Ren,Deyi Jiang,Tao Xing,Ping Zhu. Research on software develop pment platform based on SSH framework structure[J]. Procedia Engin eering, 2011,15
[21]荣幸,郁洲,阮永良,王志强.Java EE平台上MVC设计模式的研究与实现[J]. 计算机应用研究,2003,(03):144-146.
[22]刘洪星,谢玉山. Eclipse开发平台及其应用[J]. 武汉理工大学学报(信息与管理工程版),2005,(02):89-92.
[23]Anonymous. JetBrains introduces PhpStorm 1.0 and WebStorm 1.0[J].
[24]Internet Business News,2010孟小峰,周龙骧,王珊. 数据库技术发展趋势[J]. 软件学报,2004,(12):1822-1836.
[25]蒋晓健,郑力,梁宇澜,田任然,李天煜. 基于SQL Server的面向对象数据库的构建[J].计算机工程与应用,2004,(04):178-181.
[26]孙风栋,闫海珍. Oracle 10g数据库系统性能优化与调整[J].计算机技术与发展,2009,(02):83-86.
[27]张云帆. Oracle数据库备份与恢复策略[J]. 计算机工程,2009,15:85-87.
[28]蒋慧,谢希仁,林东.UML状态机的形式语义[J].软件学报,2002, (12): 2244- 2250.
[29]于帆,王振辉,王振铎. UML模型向ER模型映射方法研究[J]. 计算机系统应用, 2006,(12):29-32.
[30]王聪,王智学.UML活动图的操作语义[J].计算机研究与发展, 2007,(10): 1801- 1807.
[31]蒋慧,谢希仁,林东. UML状态机的形式语义[J].软件学报,2002,(12):2244-2250
[32]孙晓妍. 基于UML的面向对象信息系统开发[J].价值工程,2013,(08):189-190.
[33]欧建志,张福顺,罗焕佐.运用UML和Rational Rose进行Java EE应用开发[J]. 计算机应用研究,2003,(01):143-149.
[34]邓小莉.武警院校学员信息管理系统的设计与实现[D].电子科技大学,2011.52
[35]陈谊,扬怡,张国龙.基于优先级自动排课算法PCSA的设计与实现方案[J].北京工商大学学报,2002(02)
[36]李敏强,李全书著.遗传算法的基础理论与应用[J].科学出版社,2003,(11):56
[37]蔡启明,吴新民.基于中小学校园网的自动排课系统的分析和设计[J].电化教育研究;2003,(03):10-12
[38]陆峰,李新.自动排课系统算法的设计与实现[D].微机发展,2005.65-66
[39]王赓,贾苏冬.高校人事管理信息系统的设计原则与功能分析[J].科协论坛(下半月),2009,12:45-46.
[40]刘霓,钱晓群,何虎.高校教学管理信息系统的设计原则与开发组织[J].西南师范大学学报(自然科学版),2007.48-50
[41]黄浪.企业级的B/S模式应用软件非功能性需求分析与研究[D].厦门大学, 2008.168
[42]殷联甫,许翔,曹海林.一个通用排课系统的设计方法[D]-研究与设计,1998(03)
[43]黄莹. 软件测试技术与测试管理[J]. 工业控制计算机,2003,(05):36-37
[44]张春霞,苏秦. 软件测试过程分析[J]. 计算机应用研究,2004,(05):46-48
[45]张新华,何永前. 软件测试方法概述[J]. 科技视界,2012,(04):35-37
致 谢
在本论文即将完成之际,首先向我的导师致以最衷心的感谢和崇高的敬意!本论文的工作是在导师的悉心指导下完成的。导师渊博的知识、敏锐的洞察力、严谨的治学态度、精益求精的工作作风和对科学的献身精神都给我留下了刻骨铭心的印象,同时导师其高度的责任感和对学生负责的奉献精神,更是深深感染了我,不仅为我在今后的教学、科研和管理工作中树立了榜样,还成为我终身献身教育事业和科学研究的动力。
我要感谢软件学院的领导和老师们的关心和帮助,是你们为我营造了一个良好的学习氛围。老师们更是不辞辛苦,在周末休息的日子里为我们上课、传授知识、解答疑惑,为我在攻读硕士的日子里,创造了优越的学习环境,使我得以在软件工程科学领域中更上一层楼,同时在思想上、人生态度和意志品质方面给予我谆谆教诲,这些教诲使我受益匪浅,将激励着我在今后的人生道路上奋勇向前。
我要感谢我的同学和实验室的老师们,本文的主要工作也得到您们的支持,为本论文提出了许多宝贵意见及建议。我要感谢项目组成员在项目开发中的互助合作,正是集体的努力才使得项目顺利进展,还要感谢你们对我的关心和帮助,当我遇到技术上困难的时候,是你们从技术上和精神上给予强大的支持,使我顺利解决了一个又一个技术难题。
在研究生学习期间,荣辉桂导师和谭炼红导师给予我学业上的指导及长期的鼓励。在撰写论文时,因为有这两位导师的帮助,才能使我顺利完成了论文,在此对他们深表谢意。
还要感谢我的领导、同事,爱人,父母,他们总是默默地关心我、支持我,让我感觉到无私的爱和莫大的支持,也使我常常能够鞭策自己努力完成论文。
最后,在此谨向所有关心、激励和支持我的人致以深深的谢意!
李芳
2014年01月