43
二 二 二 二 〇〇 JAVA 二 二 二二二二 *** 二二二二二二 二二二二 二二二二二二二二 二二二 05 二二二二 **二 二 **二 二 二

read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

  • Upload
    others

  • View
    39

  • Download
    0

Embed Size (px)

Citation preview

Page 1: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

二 〇 〇 九 年 六 月

本科毕业设计说明书题 目 : JAVA排课教务系统的应用与开发学 生 姓 名 : ***学 院 : 信 息 工 程 学 院系 别 : 计 算 机 系专 业 : 计 算 机 科 学 与 技 术班 级 : 计 算 机 0 5指 导 教 师 : **教 授

**工 程 师

Page 2: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

摘 要排课系统的主要任务是将教师、课程、班级等相关信息进行汇总,然后根据教

学计划或教学环节制订各班级的课程表。由于班级数、课程门数、教师、教学时间等排课要素的不确定性,如果用手工进行排课,不可避免地出现教室资源冲突或教师资源冲突的情况。为了使课表的编排更准确、合理、快速,高校教务部门都用计算机来进行排课管理,并先后开发出一些适用的排课软件系统。

本文设计了基于 Struts+Hibernate 框架下的 Java 排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用 Hibernate 技术对数据进行整和处理,Java Servlet Page(JSP)可视化编程技术处理页面,从而有效的处理了课程、老师和班级三者之间的冲突问题,使各项有限资源得到较合理的利用。

本系统不仅实现了条件限制下的排课功能,同时还可以对教师、课程、班级、场地、课表和教务信息进行增加、删除、修改和查询。通过对系统安全性、稳定性和跨平台等因素的考虑,本系统界面采用 JSP 和 JAVAScript 两种技术设计完成,其核 心 部 分 地 处 理 采 用 MVC 模 式 的 Struts+Hibernate 框 架 , 同 时 使 用 了MD5(Message-Digest Algorithm 5)算法对数据进行加密,Oracle 数据库的运用也是研究的重点。

关键词:JAVA 排课;Hibernate;Struts;MVC 模式

Page 3: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

Abstract

Course Scheduling system's main task is to be teachers, courses, classes, and other relevant information in aggregate, then teaching plans or teaching classes part of the preparation of the Timetable. As the number of classes, courses gates, teachers, teaching time, such as arranging schedule elements of uncertainty, if by hand for arranging schedule, a classroom resources inevitably conflict or conflict of teacher resources. Timetable to make the presentation more accurately, reasonable, fast, dean of University departments to use the computer for arranging schedule management, and has developed some software system applicable course arrangement.

This paper designeded course arrangement which based on Struts + Hibernate JAVA course arrangement, the framework of the system can be deployed on the network, to support people at the same time online. the system applicat sampling, traversing cycle algorithm automatically arranging schedule and use Hibernate technical data and conformity data, JSP visual programming technology to treat the pages and to deal effectively with the curriculum, teachers and three classes of The conflict between, so that the limited resources of a more rational use.

This system not only under the conditions of the course arrangement functions, but also still on teachers, courses, classes, space, Timetable and academic information to add, delete, modify, and query features. Through the system security, stability and cross-platform, and other factors to consider, the system interface using JSP and JAVAScripe two technical design is completed, the core of the MVC model used to deal with the Struts

+ Hibernate framework, the use of the data on MD5 (Message-Digest Algorithm

5)algorithm Encrypted, Oracle database is the use of the focus of the study.

Keywords: Java course arrangement; Hibernate; Struts; MVC model

目 录

Page 4: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

引 言 ..................................................................................................................................1

第一章 概述..........................................................................................................................2

1.1 课题的现状.................................................................................................................2

1.2 课题的应用领域......................................................................................................2

1.3 Hibenate 的发展..........................................................................................................2

1.4 Struts 框架的发展.......................................................................................................3

1.5 MD5 数据加密............................................................................................................4

第二章 排课相关算法简述...................................................................................................5

2.1 解决 NP 问题的几种算法............................................................................................5

2.1.1 动态规划法............................................................................................................5

2.1.2 贪心算法................................................................................................................5

2.1.3 回溯法....................................................................................................................6

第三章 系统需求分析...........................................................................................................7

3.1 排课教务系统的实现思想.........................................................................................7

3.2 系统功能需求.............................................................................................................7

3.2.1 问题的描述............................................................................................................7

3.2.2 主要数据结构........................................................................................................8

3.2.3 冲突检测................................................................................................................8

3.2.4 模块功能说明........................................................................................................9

Page 5: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

3.3 系统性能需求...........................................................................................................10

第四章 系统总体设计.........................................................................................................11

4.1 MVC 模式..................................................................................................................11

4.1.1 MVC 架构...........................................................................................................11

4.1.2 处理流程.............................................................................................................12

4.1.3 总体结构设计.................................................................................................13

4.1.4 功能分配.............................................................................................................14

4.2 接口设计...................................................................................................................15

4.3 数据结构设计...........................................................................................................15

4.4 出错处理设计...........................................................................................................18

4.5 安全保密设计...........................................................................................................19

第五章 排课教务系统的实现.............................................................................................20

5.1 Struts 技术的实现.....................................................................................................20

5.2 Hibernate 技术的实现...............................................................................................21

5.3 人机交互的实现.......................................................................................................22

5.4 模块功能实现...........................................................................................................23

5.5 数据库的实现...........................................................................................................30

结 论 ................................................................................................................................31

参考文献..............................................................................................................................33

谢 辞 ................................................................................................................................34

Page 6: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java
Page 7: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

引 言排课问题是一个NP 完全问题,这一论断确立了排课问题的理论深度。对于 NP

问题目前在数学上是没有一个通用的算法能够很好地解决。近 40年来,人们对课程表问题的计算机解法做了许多尝试。其中,课程表编排的整体规划模型将问题归结为求一组 0-1变量的解,但是其计算量非常大。解决 0-1 线性优化问题的技术却只适用于规模较小的课程表编排,Mihoc 和 Balas(1965)将课程表公式化为一个优化问题,Krawczk则提出一种线性编程的方法。Junginger 将课程表问题简化为三维运输问题,而 Tripathy则把课程表问题视作整数线性编程问题并提出了大学课程表的数学模型。

进入九十年代以后,国外对课程表问题的研究仍然十分活跃。比较有代表性的有印度的 Vastapur大学管理学院的 ArabindaTripathy、加拿大Montreal大学的Jean Aubin 和 Jacques Ferland 等。目前,解决课程表问题的方法有:模拟手工排课法;图论方法;拉格朗日法;二次分配型法等多种方法。

由于课程表约束复杂,用数学方法进行描述时往往导致问题规模增大,这已经成为应用数学编程解决课程表问题的巨大障碍。研究表明,解决大规模课程表编排问题单纯靠数学方法是行不通的,而利用运筹学中分层规划的思想将问题分解,将是一个有希望得到成功的办法。从实际使用的情况来看,国内外研制开发的这些软件系统在实用性上仍不尽如人意。一方面原因是作为一个很复杂的系统,排课要想面面俱到是一件很困难的事;另一方面每个学校由于其各自的特殊性,自动排课软件很难普遍实用,特别是在调度的过程中一个很小的变动,要引起全部课程的大调整,这意味着全校课程大变动,在实际的应用中这是很难实现的事。

1

Page 8: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

目前对 NP 完全问题研究的主要思想是如何降低其计算复杂度,即利用一个近似算法来代替,力争使得解决问题的时间从指数增长简化到多项式增长。结合到课程表问题就是建立一个合适的现实简约模型,利用该简约模型能够大大降低算法的复杂度,便于程序实现,这是解决排课问题一个很好的思路。

JAVA 排课教务系统是采用 Hibernate+Struts 架构设计的, 是一个可以为 3个班级排 4周课程,且一名教师只能教授一门课程的简单的模型。

第一章 概述1.1 课题的现状

1962年,Gotlieb曾提出了一个课程表问题的数学模型,并利用匈牙利算法解决了三维线性运输问题。次后,人们对课程表问题的算法、解的存在性等问题做了很多深入探讨。但是大多数文献所用的数学模型都是 Gotlieb 的数学模型的简化或补充,至今还没有一个可行的算法来解决课程表问题。此外,有些文献试图从图论的角度来求解课程表的排课问题,但是图的染色问

题也是 NP 完全问题,只有在极为简单的情况下才可以将课程表编排转化为二部图匹配问题,这样的数学模型与实际相差太远,所以对于大多数学校的课程表编排问题来说没有实用价值。

在国内,对课程表问题的研究开始于 80年代初期、具有代表性的有:南京工学院的 UTSS(A University Timetable Scheduling System)系统,清华大学的 TISER(Timetable SchedulER)系统,大连理工大学的智能教学组织管理与

2

Page 9: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

课程调度等,这些系统大多数都是模拟手工排课过程,以“班”为单位,运用启发式函数来进行编排的。但是这些课程表编排系统往往比较依赖于各个学校的教学体制,不宜进行大量推广。

从实际使用的情况来看,国内外研制开发的这些软件系统在实用性上仍不尽如人意。一方面原因是作为一个很复杂的系统,排课要想面面俱到是一件很困难的事;另一方面每个学校由于其各自的特殊性,自动排课软件很难普遍实用,特别是在调度的过程中一个很小的变动,要引起全部课程的大调整,这意味着全校课程大变动,在实际的应用中这是很难实现的事。1.2 课题的应用领域

排课问题的核心为多维资源的冲突与抢占,其研究对类似的问题(特别是与时间表有关的问题:如考试排考场问题、电影院排座问题、航空航线问题)也是个参考。1.3 Hibenate 的发展

Hibernate 三层结构设计使得模块之间的耦合度得到了很大的提高, 但是在开发过程中仍然具有一定的难度, 在开发的过程中要为不同的业务逻辑写不同的代码, 软件开发的效率很低。随着软件开发的不段发展, 又发展成为四层结构,将与数据库打交道的分离出来, 形成数据持久化层,即数据库层,数据持久化层, 业务逻辑层和应用层。每一层都为上层提供服务,下层不依赖于上层结构,具有非常高的内棸和低耦合度。Hibernate就是专门负责数据持久化的。

Hibernate 是从 JDBC 发展而来的,并且对 JDBC作了轻量级的封装。在需要的时候,绕过 hibernate直接通过 JDBC操作数据库。使程序员可以使用对象编程

3

Page 10: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

思想来操作数据库。它不仅提供了从 Java类到数据表的映射,也提供了数据查询和恢复机制。使用 JDBC 和 Serivce Query Language(SQL)来操作数据库,使用Hibernate 能大大的提高实现的效率。Hibernate 框架用配置文件的形式来定义Java 对象和数据表之间的映射关系,同时在更深的层面将数据表之间的关系解释为Java 对 象 之 间 的 继 承 及 包 含 等 关 系 。 通 过 使 用 Hibernate Query

Language(HQL)语句将复杂的关系算法用对象的方式描述,在很大程度上简化了对数据的查询,加快了开发的效率。在 Hibernate中有一个简单而直观的 API,用于对数据库所表示的对象执行查询。要创建或修改这些对象,只需在程序中与它们进行交互,然后告诉Hibernate 保存即可。这样,大量封装持久化操作的业务逻辑不再需 要 编写烦琐的 JDBC 语句, 从 而 使 数 据 持久层得 到 了极大的 简 化 。Hibernate 是开放源码的 Java 实现的持久化的中间件。1.4 Struts 框架的发展

Struts 框架最早是作为 Apache Jakarta 项目的组成部分问世运做,它继承了MVC 的各项特性,并根据 J2EE 的特点,做了相应的变化与扩展。Struts 框架很好的结合了 Jsp,Java Servlet,Java Bean,Taglib 等技术。在 Struts中,承担MVC中控制器角色的是 ActionServlet。ActionServlet 是一个通用的控制组件。这个控制组件提供了处理所有发送到 Struts 的 HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是 Action类的子类)。另外控制组件也负责用 相 应 的请求 参 数填充 Action Form ( FromBean ) , 并传给动作类(ActionBean)。动作类访问核心商业逻辑,即访问 Java Bean 或调用 EJB。最后动作类把控制权传给后续的 JSP 文件,由 JSP 文件生成视图。所有这些控制逻辑

4

Page 11: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

利用 Struts-config.xml 文件来配置。在 Struts 框架中,视图主要由 JSP生成页面完成,Struts提供丰富的 JSP标签库,这有利于分开表现逻辑和程序逻辑。模型以一个或多个 Java Bean 的形式存在。在 Struts中,主要存在三种 Bean,分别是:Action,ActionForm,EJB 或者 Java Bean。

Struts 框架没有具体定义模型层的实现,在实际开发中,模型层通常是和业务逻辑紧密 相连的, 并且要对底层数据 进行操作。下 面介绍一 种开 发策略, 将Hibernate 引入到 Struts 框架的模型层中,使用它来进行数据封装和映射,提供持久化的支持。

Struts 实现了 MVC 架构,即 JSP+Servlet+javaBean 的结构在 MyEclipse

中导入 Struts 中间 系 统会导入 struts 标签库 和 struts 配置文 件 ( struts-

config.xml), 和 hibernate 一样,需要对 struts 进行配置,struts 配置文件主要是配置表单信息, 在第一个表单中都对应着一个 java类,和 hiberante 一样,一个表单对应一个类,这些技术在某种程度上都具有相似之处,这些表单类称为javaBean。1.5 MD5 数据加密所谓MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,它由

MD2、MD3、MD4 发展而来的一种单向函数算法(也就是 HASH 算法),它是国际著名的公钥加密算法标准 RSA 的第一设计者 R.Rivest 于上个世纪 90年代初开发出来的。MD5 的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前“压缩”成一种保密的格式,关键之处在于——这种“压缩”是不可逆的。

5

Page 12: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

MD5 用的是哈希函数,在计算机网络中应用较多的不可逆加密算法有 RSA公司发明的 MD5 算法和由美国国家技术标准研究所建议的安全散列算法 SHA.

MD5 将任意长度的“字节串”变换成一个 128bit 的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5 的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

MD5 的典型应用是对一段 Message(字节串)产生 fingerprint(指纹),以防止被“篡改”。举个例子,你将 一段话写在 一个叫 readme.txt 文 件中, 并 对这个readme.txt产生一个MD5 的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算 MD5 时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用 MD5 还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

第二章 排课相关算法简述2.1 解决 NP 问题的几种算法2.1.1 动态规划法

动态规划法是将求解的问题一层一层地分解成一级一级、规模逐步缩小的子问题,直到可以直接求出其解的子问题为止。分解成的所有子问题按层次关系构成一

6

Page 13: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

颗子问题树。树根是原问题。原问题的解依赖于子问题树中所有子问题的解。动态规划算法通常用于求一个问题在某种意义下的最优解。设计一个动态规划算法,通常可按以下几个步骤进行:

(1)分析最优解的性质,并刻划其结构特征。(2)递归的定义最优解。(3)以自底向上的方式计算出最优解。(4)根据计算最优解时得到的信息,构造一个最优解。步骤 1-3 是动态规划算法的基本步骤。在只需要求出最优解的情况下,步骤 4

可以省去。若需要求出问题的一个最优解,则必须执行步骤 4。此时,在步骤 3中计算最优解时,通常需记录更多的信息,以便在步骤 4中,根据所记录的信息,快速地构造出一个最优解。2.1.2 贪心算法当一个问题具有最优子结构性质时,会想到用动态规划法去解它,但有时会有

更简单、更有效的算法,即贪心算法。顾名思义,贪心算法总是做出在当前看来最好的选择。也就是说贪心算法并不是在整体最优上加以考虑,而是所作出的选择只是在某种意义上的局部最优的选择。虽然贪心算法不是对所有问题都能得到整体最优解,但对范围相当广的许多问题,它能产生整体最优解,如图的算法中单源最短路径问题,最小支撑树问题等。在一些情况下,即使贪心算法不能得到整体最优解,但其最终结果却是最优解的很好的近似解。

在贪心算法中较为有名的算法是 Dijkstra 算法。它作为路由算法用来寻求两个节点间的最短路径。Dijkstra 算法的思想是:假若 G 有 n个顶点,于是我们总共需

7

Page 14: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

要求出 n-1 条最短路径,求解的方法是:初试,写出 V0(始顶点)到各顶点(终顶点)

的路径长度,或有路径,则令路径的长度为边上的权值;或无路经,则令为∞。再按长度的递增顺序生成每条最短路径。事实上生成最短路径的过程就是不断地在始顶点 V 到顶点 W 间加入中间点的过程,因为在每生成了一条最短路径后,就有一个该路径的终顶点 U,那么那些还未生成最短路径的路径就会由于经过 U 而比原来的路径短,于是就让它经过 U。2.1.3 回溯法

回溯法有“通用的解题法”之称。用它可以求出问题的所有解或任一解。概括地说,回溯法是一个既带有系统性又带有跳跃性的搜索法。它在包含问题所有解的一颗状态空间树上,按照深度优先的策略,从根出发进行搜索。搜索每到达状态空间树的一个节点,总是先判断以该节点为根的子树是否肯定不包含问题的解。如果肯定不包含,则跳过对该子树的系统搜索,一层一层地向它的祖先节点继续搜索,直到遇到一个还有未被搜索过的儿子的节点,才转向该节点的一个未曾搜索过的儿子节点继续搜索;否则,进入子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根的所有儿子都已被搜索过才结束;而在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。

8

Page 15: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

第三章 系统需求分析3.1 排课教务系统的实现思想

本系统设计的排课算法由 Java语言实现,其算法主要是循环遍历和随机抽取这两种方法的结合。

排课条件的限制:排课的班级只有 3个,教师为 4名,并且每位教师只能讲授一门课程,而在排

课的时间上做了严格的限制, 4周的课表,每周为 1个课时,同时每周的上课时间为周 1-周 5,每天的上课时间为早 9 时至晚 5 时。再者,我们通过给定的条件,通过分析得出,我们所要排课的要求。一个教师

一门课程,第一周某位教师在讲授完课程后,不能在后三周再出现,同时该教师在其他两个班级第一周的课表上不能出现,因为这样会产生冲突。

根据以上的特点和条件约束我们如下设计:在从 JSP 表单中获得数据后,我们将将教师和课程进行封装,封装的对象叫 teachercourse,在这个对象中有 2个属性,一个是教师,一个是学生。之后我们将每一个对象都放到一个 LIST中,然后通过随机方法,随机得到一个值,将这个值放入另一个 LIST中,并将这个值从原来的LIST中 REMOVE掉。然后在被 REMOVE掉的 LIST中继续随机取得一个值,再将值放入到第 2个 LIST中,并将此值从原来的 LIST中 REMOVE掉,以此循环完成

9

Page 16: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

整个第一步骤。新生成的这个 LIST 通过 EL语句在 JSP 页面输出,即班级 1 的课程表生成。随后 2个班级的课程表主要通过随机和遍历生成。在原 LIST中随机抽取一个值,然后拿这个值和 LIST1做比较,条件是产生随机数的位置不能和 LIST1 同位置的值相同,同时随后产生的值在不能和 LIST1 的值相同的情况下,还不能和前面产生的值相同,这点是通过 REMOVE原有数组做到的。3.2 系统功能需求3.2.1 问题的描述

自动排课问题的简化描述如下:设安排的课程为{ C1,C2,...,Cn},课程总数为 n,而各门课程每周安排次数(每

次为连续的 2 学时) 为{ N1,N2,...,Nn},每周教学日共 5 天,即星期一至星期五;每个教学日最多安排 4 次课程教学,在这种假设下,显然每周的教学总时间段数为 5 ×4

= 20,并存在以下约束关系:    n ≤20 , (3-1)    N = 6n, i =1, Ni ≤20. (3-2)

自动排课问题是:设计适当的数据结构和算法, 以确定{ C1,C2,...,Cn } 中每个课程的教学应占据的时间段,并且保证任何一个时间段仅由一门课程占据。3.2.2 主要数据结构

对 于每一 门 课 程 , 分 配 2 个字节 的“时 间段分 配字” (无符号整 数 ) :{ T1,T2,..., Tn}。其中任何一个时间段分配字(假设为 Ti ) 都具有如下格式:

Ti 的数据类型 C 语言格式定义为:unsigned int Ti 的最高位是该课程目前是否是有效的标志,0 表示有效,1 表示无效(如停课等);其它各位称为课程分配位,

10

Page 17: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

每个课程分配位占连续的 3 个位(bit),表示某教学日(星期一至星期五) 安排该课程的时间段的值,0 表示当日未安排,1-4 表示所安排的相应的时间段(超过 4 的值无效)。

在这种设计下,有效的时间段分配字的值应小于 32768 (十六进制 8000),而大于等于 32768 的时间段分配字对应于那些当前无效的课程(既使课程分配位已设置好也如此),因此很容易实现停课/开课处理。3.2.3 冲突检测

有时在自动排课完毕后,需要人工调整某些课程的安排时间,如把第 i 门课程在人工干预下改成星期数为 week、时间段为 segment 的位置,则根据上述数据结构需做如下运算:

T [ i ] = T [ i ] &(~ (7 << (week - 1) * 3) ) + (segment << (week -

1)*3)其中&、~ 和 n 分别为按位与、按位取反和按位左移运算符(下同)。问题是如何判断是否已有其它课程安排在同一个时间段上。设人工调整的时间段分配字为T[1 ] ,则该问题描述为:判断时间段分配字 T [1 ] 与{ T[2 ],T [3 ] ,...,T [ n ]}

中的某个分配字是否存在相同课程分配位上的相等的非零时间段值,或者说{ T

[2 ], T [3 ] ,...,T[ n ]} 中是否存在与 T [1 ] 冲突的时间段分配字。为简化起见,在以下算法描述中假设所有时间段分配字的最高位为 0。

算法 2 冲突检测输入 T1 和{ T2,...,Tn}

输出 与 T1 冲突的{ T2,...,Tn} 中的时间段分配字① 对 c-index = 2,3,...,n 做以下操作:

11

Page 18: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

  初始化屏蔽字mask = 7

  对星期值week = 1,2,3,4,5 做以下操作:  如果 T[1] & mask 等于 T[c-index] & mask,而且二者不等于 0

 则:T[ 1 ]与 T[c-index ]相冲突,转①  mask 左移 3 位(或乘 8)

② 算法结束本算法时间复杂度为 O ( n) ( n 为课程门数)

3.2.4 模块功能说明系统总体分为 3个模块,用户模块、信息模块和排课模块,模块及其功能实现

的用例图如下:

图 3-1 用户基本信息模块用例图

12

Page 19: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 3-2 信息模块用例图

图 3-3 排课模块用例图

3.3 系统性能需求1.系统要有很好的可移植性,运行环境不能受系统编码格式限制。

13

Page 20: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

2.系统必须有很好的可维护性。3.系统要有一定的健壮性,有一定的错误处理机制和容错能力。4.界面设计要求美观、大方。5.系统运行必须稳定,尽量少占内存资源。6.系统运行环境:

Windows∕Unix操作系统 512M内存,40G硬盘

7.系统开发环境:MyEclipse5.5 或 6.0

Oracle 9i 或 10gTomcat 5.0Java 5.0

第四章 系统总体设计4.1 MVC 模式

本系统主要采用 MVC 模式进行架构,通过 Struts+Hibernate 实现系统任务,这种方式使得系统模块更加清晰明了,方便修改和维护,以下具体阐述系统的总体设计思想。

图 4-1 MVC 模式

14

Page 21: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

4.1.1 MVC 架构MVC 是模、视图、控制的缩写,在使用 jsp 时,有相应的文件去实现相应的操

作 ,通常 jsp只负责 view显示页面。业务逻辑等有 bean(ejb)去实现。设计思路 :当构建一个 Application 时。首先考虑界面的问题,而界面修改是非常平常的。

如果在 jsp中实现所有的操作,一旦修改界面就比较麻烦了。使用 MVC则可以减少的一些麻烦。在设计时候 jsp只负责显示页面,jsp调用 Bean(Struts,servlet)传过来的数据然后显示,而 Bean(Struts,servlet)负责收集 jsp 需要的数据,用ArrayList(Arttibute)传给 jsp。假如需要提交表单,一般也直接提交给 Struts 来处理 servlet。处理后再返回处理信息。相应的业务逻辑由 Bean去实现。

Bean 的设计 :Bean 通常有三类,分别在 manager,entry,database 目录下面。 manager 下面的 bean做商业逻辑 ,entry 下的 bean就是封装数据,每个数

据库表对应会有一个 bean。jsp 得到的也全部是类。database 下的 bean就是操作数据库,执行如 insert,update,delete,load(查询一条记录)等等,batchload(查询多条记录)。entry负责封装数据,作为 database 的调用参数,返回结果。

15

Page 22: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 4-2 MVC详细框架

4.1.2 处理流程系统从页面获得数据,然后交给 Action,Action 调用 Service方法进行业务逻辑

处理,有数据交互则业务逻辑层调用 Dao层,通过 Dao方法和数据库交互,查询相关的数据。相应的数据和操作都被封装到工厂类中,在工厂类中进行整合处理。具体的时序图如下:

16

Page 23: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 4-3 工厂类时序图

4.1.3 总体结构设计本系统总体结构设计为 3 部分,表示层、业务逻辑层、数据库层,表示层由

JSP 动态实现,提供给用户直观的页面,同时用户可以进行相应的操作。业务逻辑层主要是通过 ActionForm捕获用户填写的信息,并且由 Action调用 Service 进行业务逻辑处理。数据库层则由 Dao层实现,处理用户信息和相应业务逻辑所涉及到的数据。

其中Hibernate 主要负责对象的持久化,对 JDBC 进行封装,连接数据库,并且建立了关系数据和对象之间的映射关系。

17

Page 24: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 4-4 系统结构逻辑图

图 4-5

Hibenate+Struts逻辑结构图

4.1.4 功能分配 Java 排课系统主要功能分为以下几个模块:1.用户基本功能模块:这个模块主要是用户的注册和登陆,同时用户可以修

改自己的信息,密码丢失用户可以通过安全问题找回密码,最后还有用户等级功能。2.排课模块:排课模块是系统的核心模块,其中包括教务信息的发布查阅功

能,以及教师、教室、场地和课程的增加、删除、修改和查询功能。同时核心的排课部分可以获得相应的各部分信息,通过获得的信息用户可以进行条件选择,然后进行排课,排课生成的课程表用户可以保存,保存的课程表可以通过查询课程表功能进行查询,并且打印。

18

Page 25: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

3.信息模块:信息模块主要由 3 部分组成,即:发送信息、发件箱和收件箱。此部分功能主要是用于用户之间进行信息交流,信息可以从页面上获得。

图 4-6 系统功能图

4.2 接口设计系统采用 MVC 模式,此模式合理有效的分层,各层之间通过接口调用,使用

方便简单,同时也方便程序的修改。可 视 化层和业务逻辑层的 接 口 有 : IcoursService 、 ImemberService 、

ImessageService , 对 应 的 实 现 类 为IcourseServiceImpl、ImemberServiceImpl ImessageServiceImpl。业 务 逻 辑 层 和 数 据 层 的 接 口 有 :

19

Page 26: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

IcourseDao 、 ImemberDao 、 ImessageDao , 对 应 的 实 现 类 为 IcourseDaoImpl 、ImemberDaoImpl、ImessageDaoImpl。

其每个实现类中都有相应功能需要所设计的方法,在其对应的实现类中都有其方法的具体实现。4.3 数据结构设计

本系统采用 Oracle 9I 数据库,安全性、稳定性都不错,在数据结构设计中建立了 Memberinfo 等多张表,以下为本系统的数据字典:

表 4-1 MemberInfo(存放会员信息)字段名 字段类型 约束或索引 描述ID Number(Sequence

)PK 记录流水号

NickName Varchar2(20) Not Null 用户昵称Password Varchar2(50) Not Null MD5加密口令,页面上限制为

16字节Gender Varchar2(1) Not Null 性别,’男’或’女’Age Number Not Null 年龄Email Varchar2(100) Not Null 电子邮件PasswordQuestion Varchar2(200) 密码提示问题PasswordAnswer Varchar2(200) 密码提示问题答案ProvinceCity Varchar2(20) 所在省市Address Varchar2(200) 地址Phone Varchar2(50) 联系电话Point Number Default=0 当前积分Recommender Varchar2(20) 推荐人RegisterDate Date 注册时间LatestDate Date 上次上线时间Status Number Default=0 0-正常 1-注销 IsOnline Number Default=0 0- 下线 1-在线GradeId Number 等级 ID

表 4-2 Pcourse(存放排课的信息)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Teacher Varchar2(20) 老师Coursetime Int(5) 课时Class Varchar2(50) 班级Course Varchar2(20) 课程

20

Page 27: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

表 4-3 GradeRecord(存放会员级别的评判规则)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Minpoint Number Not Null 积分的上限Maxpoint Number Not Null 积分的下限Gradename Varchar2(20) Not Null 级别名称IconPath Varchar2(50) Not Null 每个级别分别对应不同的头像

表 4-4 PointRecord(存放会员获取积分的流水记录)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Nickname Varchar2(20) Not Null 获取积分的会员ReceiveDate Date Not Null 获得积分的日期PointactionId Number Not Null 所获积分

表 4-5 MessageRecord(存放短信信息)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Sender Varchar2(20) Not Null 发件人登录名Receiver Varchar2(20) Not Null 收件人登录名SendDate Date Default=当前时间, Not

Null发送日期

Title Varchar2(100) Not Null 短信标题,页面上最多 100字Content Varchar2(300) Not Null 短信内容,页面上最多 300字Status Number Default=0 0-未阅读 1-已阅读SenderStatus Number Default=0 0- 表示未删除 1-表示已删除(发

送者)ReceiverStatus Number Default=0 0- 表示未删除 1-表示已删除(接

收者)

表 4-6 Coursetable(存放课程信息的流水记录)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Teachername Varchar2(20) Not Null 获得课表中老师的信息Coursename Varchar2(20) Not Null 获得课表中课程信息Pkdate Date Not Null 课程表生成时间Mark Long Not Null 标记

21

Page 28: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

表 4-7 Groundinfo(存放场地信息的流水记录)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Groundname Varchar2(20) Not Null 场地名称Groundpeoplenumber Varchar2(20) Not Null 场地容量Groundleader Varchar2(20) Not Null 场地管理员Grounddescribe Varchar2(20) Not Null 场地描述

表 4-8 Classinfo(存放存放班级信息的流水记录)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Classinfo Varchar2(20) Not Null 班级信息Classpeoplenumber Number Not Null 班级人数Classleader Varchar2(20) Not Null 班主任Classdescribe Varchar2(20) Not Null 班级描述

表 4-9 Educationalinfo(存放教务信息的流水记录)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Publishtopic Varchar2(20) Not Null 教务主题Publishdepartment Number Not Null 发布教务信息部门Publishdate Varchar2(20) Not Null 发布时间Publishcontent Varchar2(20) Not Null 发布内容

表 4-10 Teacherinfo(存放教师信息的流水记录)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Teachername Varchar2(20) Not Null 教师姓名Teachertitle Varchar2(20) Not Null 教师职称Teachercourse Varchar2(20) Not Null 教师所带课程Teacherdesecribe Varchar2(20) Not Null 描述

表 4-11 Courseinfo(存放课程信息的流水记录)字段名 字段类型 约束或索引 描述ID Number(Sequenc

e)PK 记录流水号

Coursename Varchar2(20) Not Null 课程名称Coursetime Number Not Null 课时

22

Page 29: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

Coursedesecribe Varchar2(20) Not Null 课程描述4.4 出错处理设计

出错处理主要包括 2 部分,程序出错处理(即 Exception)和用户信息错误处理(即错误信息对应的 message)。

Exception : 系 统 中 一 共 定 义 了 MemberServiceException

、CourseServiceException、MessageServiceException 3个异常处理类,它们主要处理系统在运行过程中出现的异常和错误。

Message:根据业务的需求和用户实际操作过程中出现的问题,我们在系统中定义了相应的 Message,当用户在操作时出现错误时,系统会为用户提供相应错误提示。如:用户密码错误、密码长度必须大于等于 6位等等。

23

Page 30: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 4-7 出错处理逻辑图

4.5 安全保密设计系统的用户密码信息采用 MD5 算法加密。

第五章 排课教务系统的实现24

Page 31: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

5.1 Struts 技术的实现Struts 在 MyEclipse 中 导 入 标 签 库 和 配 置 文 件 ( struts-

config.xml),Struts 配置文件主要是配置表单信息,在一个表单中都对应着一个java类 javaBean必须满足的要求为:

1)一个 pojo类2)需要提供一个包名3)实现序列化接口4)提供一个无参构造器(serializable)5)提供 getter/setter方法6)可以提供业务逻辑和数据访问的方法7)可以提供处理事件的方法在 struts-config.xml中还需要配置相当于 servlet 的 action-mapping,使

其每一个动作标签对应的不同的行为。具体的操作将再下面项目中具体介绍。运用 Hibernate 和 struts 开发 J2EE 应用

  下面结合开发实践,以在 J2EE 应用中非常普遍的用户登录过程为例,来说明上述体系结构是如何具体运用的。登录的流程非常清晰:用户从登录页面 login.jsp输入登录信息,系统对登录信息进行验证,如果正确则成功登录,否则提示相应错误信息。

在 开 发 过 程中, 使 用 Eclipse 做为 开 发 环境, 同 时 加载了 对 Struts 及Hibernate提供更好的控制和支持的第三方插件 MyEclipse,Web服务器使用Tomcat,数据库选用了 Mysql。

25

Page 32: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

首先对 Hibernate 进行配置,只需要对系统自动生成的 hibernate.cfg.xml 进行修改,配置好数据库连接的各种参数以及定义数据映射文件。由于 Hibernate所带的连接池主要用于测试,性能不是很好,可以通过 JNDI 将其修改为使用 Tomcat

的连接池。其次是生成持久化类,实际上,由于使用了 Hibernate,持久化类以及对持久

化对象的映射定义均可以借助于系统中的向导自动生成。持久化对象的映射定义放到了 User.hbm.xml中。再次,使用 Struts 框架来实现逻辑控制,利用系统提供的向导可以生成视图及

控制器。具体的配置在 Struts-config.xml 文件中。相关代码如下:输入页面 Login.jsp 将用户填写的登录信息提交给控制器 DoLogin 进行处理,

控制器调用由 Hibernate 定义好的持久化类 User 从数据库中读取相应信息进行验证。操作完 成 后 将提示信 息 展示在 表示层中。 DoLogin 中使 用语句 User

u1=UserDAO.findbyname(username)得到 User 对象,然后就可以进行登录信息的验证。

从整个开发过程可以看出,程序员除了利用向导对有关的配置文件进行修改,只须编写少量代码即可完成登录模块的编码。开发完成的模块符合 MVC 框架的要求,质量比较高,易于修改和维护。5.2 Hibernate 技术的实现获取与数据库连接的 session 对象要与数据库进行通信,首先必须获得与数据库的连接,hibernate提供了一个

Configuration 对 象 , 在 myEclipse 中 添 加 hibernate 组 件 中 , 必 须 对

26

Page 33: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

hibernate 的配置文件进行置,这个 Configuration 对象就对应是这个系统生成的配置文件的信息,在配置文件中必须对数据源进行配置,其中包括数据库的路径(URL),驱动(driver),以及输入用户名和密码。这样 Hibernate才能通过JDBC找到对应的数据库。

下面是配置 hibernate 数据库的配置文件 hibernate.cfg.xml

图 5-1 hibernate.cfg.xml

cfg 配置好了之后,就可以通过 Configuration 对象来获得 Session 对象了,下面是具体的过程:

synchronized public static Session getSession(){Configuration cfg = new Configuration();

cfg.configure("/hibernate.cfg.xml"); //获取配置文件SessionFactory factory = cfg.buildSessionFactory();//获得 session 实例的工厂类Session session = factory.openSession();//获得 Session 对象return session;

27

Page 34: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

}

获得 session 对象之后,就可以对数据库进行操作了。Hibernate 表与类之间的关联映射。由于目前市场上所有数据库基本上都是关

系型的,而我们所写的类都是面向对象的,这就造成了表和类之间并不完全相符,但是表中的字段和类中的属性之间存在了对应的关联。要使 hibernate知道哪个类对应数据库中的哪张表,就需要在配置文件中配置表与类之间的关系。表与表之间存在三种关系, 分别是一对一、一对多、和多对多这三种关系,但在 hibernate 配置文件必须体现这三种映射关系。

在 上 面 的 配 置 文 件 中 配 置 的 是 一 张 学 生 表 , 它 的 字 段 有id,name,select,grade 和 institution

其中的 get/set方法以及构造器没有给出,具体情况可以去参看程序。其中 id 为 主健,按照 sequence 中的 student_seqzhang 自 动生成 ,

hibernate 从中去读取,并将值赋给 id,property 对应的分别是 student 表中的属性,name=“name” 表明类中有一个属性为 name,column=“name“表明对应 student 表中 name字段,其类型为 string类型,其它的映射也是一样,最后一个属性 sc 是一个集合,和数据库中 SC 表是一对多的关系,对应的字段为studentid,lazy 表示延迟加载。5.3 人机交互的实现

系统交互设计采用目前广为流行的,基于 B/S 的架构设计,人机交互界面主要使用当今流行的 JSP 技术,以网页的形式展现给用户。首先,展现在用户面前的是登陆界面,没有注册的用户可点击进入注册页面,而丢失密码的用户则可通过密码找回功能重新获得新的密码,这 3个界面都是通过提示信息与用户进行交流,实现

28

Page 35: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

人机交互。进入整个浏览器后分成四个子框体,最上面的一个框体显示系统的 Log

和系统名称;左边的框体主要是系统功能导航;右边的框体主要是显示第一个功能的操作界面,下面的框体是一个静态也面主要显示公司和版权等一些信息。在功能模块中都有提示信息,这些提示方便了用户的操作和使用。5.4 模块功能实现

(1)用户注册:在 register.jsp页面用户可以注册一个会员帐号,昵称作为以后登陆社区的唯

一标识。密码需要用MD5算法加密。

图 5-2 用户注册界面

(2)用户登陆:在 login.jsp页面上用户可以输入昵称和密码进行登陆,如果用户名和密码都正

确,则登陆成功。如果不正确,需要提示用户。

29

Page 36: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 5-3 用户登陆界面(3)修改密码:用户进入修改密码界面,填写用户名称、密码提示问题和问题答案,通过点击

修改按扭实现,新的密码在弹出的对话框中。

30

Page 37: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 5-4 找回用户密码界面

(4)修改用户信息会员在modify.jsp页面上输入要修改的信息,点击提交,则需要将修改的信息

保存到数据库,并且还需要将 session范围内的memberinfo对象里面的属性值与数据库中的值同步。具体是实现:从 Modify.jsp传入要修改的信息,ModifyAction 从 ModifyForm获得数据进

行处理,具体的处理在 MemberServiceImpl中实现,然后交给 DAO层提交给数据库。

图 5-5 修改用户信息界面31

Page 38: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

(5)新建信息:需要判断接收者是否存在,如果存在,则在 Messagerecord表中插入一条数

据,并且提示用户成功,如果不存在提示用户接收方不存在。

图 5-6 发信息界面

(6)已收信息:显示当前会员接收的所有短信(包括新短信和已读短信),并且可以删除某条

短信,和查看某条短信的详细信息。

32

Page 39: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 5-7 收件箱界面

(7)排课:通过获得的 class 、teacher 、 course 、coursetime四个值进行排课,将生

成的课表显示出来,课程表可保存和打印。

33

Page 40: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 5-8 排课功能界面

(8)从数据库中获得教师、教室、场地、课表和课程等信息,这主要是通过FindClassInfo、FindCourseInfo、FindTeacherInfo、FindGroundInfo这些方法获得,获得的信息显示到排课页面上,用户根据信息选择相应的排课条件 ,TTAction 从 PkActionForm获得用户获得的信息,通过 IcourseService中的方法进行排课。当用户点击保存后,则调用 Savecoursetable方法对课表进行保存。

教务、教师、教室、场地、课表和课程信息:可对教师、教室、场地、课表和课程信息进行增删改查。这几块的功能基本相同,都是提高页面获得数据然后保存到数据库,再从数据

库查询出信息动态的显示到页面上,同时可以删除信息。

34

Page 41: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 5-9 课程相关功能界面

35

Page 42: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 5-10 查看教务信息界面(9)用户可以在查看课程表功能中查看已经排好的课程表。

图 5-11 查看课程表界面(10)用户可以添加、删除、查询教师信息,教师信息包括教师的姓名,所授

课程,描述。在删除信息时会有对话框弹出进行提示。

36

Page 43: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

图 5-12 教师信息功能界面37

Page 44: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

5.5 数据库的实现首先启动 Oracle 数据库,进入 SQLPLUS空间,创建一个空间,然后创建表,

之 后建立 JAVABEAN 和 对 应 的 Hbm.xml 文 件 , 通 过 Hibernate 进 行映射,Hibernate会自动封装 JDBC 数据源与数据库进行交互。

结 论系统按需求分析,实现了各部分的功能。但是该系统存在了很多的不足,界面

设计过于死板,排课的算法过于简单,而在排课的条件限制上做的不够理想,没能真实的反映出现实需求的情况。

系统使用了主流的 MVC 模式开发,但是系统在很多方面还具有局限性。首先对于服务器端来说,配置低的机器可能无法适应系统的运行。其次在主要的排课算法的实现上存在很多的缺陷,很多排课所涉及到的元素都是不定的,可变的,这增加了算法难度,该系统忽略了这些可变元素,将其设置为定性的,从而实现简单的排课。本系统只做了管理员部分,并没有涉及到权限的管理,最后 MVC 架构的系统在分布式方面有很大的缺憾,这使得在访问量,同时在线量等问题上出现了很大的局限性,系统无法解决这类问题。由于是 WEB 开发,所以以上的局限性需要像EJB 等新技术来解决和完善。因此系统在今后需要做以下改进:

(1)登录模块登录模块的安全性不够高,通过采用随机数字和字母的搭配生成验证码,用户

38

Page 45: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

输入正确的验证码才可登录。自动登录功能,在用户已经注册登录一次后,用户可以选择自动登录模式,这

样用户不需要再填写登录信息就可以登录。(2)排课模块在排课时间的设置上可以采用图论着色法,用户可以根据需要选择每天上几节

课,每周上几天课,同时可以点击课表上的色块选定不能上课的时间。在教务信息、教师信息、课程信息和场地信息这 4 块原有功能中增加修改信息

功能,即对已存在的信息进行修改操作。教务信息、教师信息、课程信息和场地信息的动态显示和操作也是需要改进的

部分 ,新添加 的信 息和 删除 的信 息应该能 动态 的从 排课 界面 上显示,这需 要JAVAScript 和 JAVASessionBean 技术来实现。

排课算法的改进是今后研究的重点方向,可以利用遗传算法和图论着色法综合排课功能,在技术上需要使用到 JAVA5 的新特性。

(3)信息模块信息模块的主要改进点在信息的存储,用户所建立信息实际上都存储在一个数

据库内,用户建立和查看信息都是对这个数据库进行操作,这样不仅安全性不高,当在线人数过多的时候,访问的速度也会受到影响。这将是今后重点学习和解决的问题。

(4)其他系统的界面也是今后改进的内容,本次系统采用界面的模式过于死板,这限制

了内容的布局。

39

Page 46: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

系统可以实现多人在线操作,但是分布式的应用不够理想,因此采用 EJB 技术对系统进行改进是关键。

现有系统中如果对中文内容进行增加、删除和查看功能时,会出现乱码现象。解决的办法有 2 种:

1) 在 Hibernate 的 Hibernate.config.xml 文件中加入防止出现乱码的语句。2) 使用 JDBC连接数据源,对数据进行操作。在解决以上问题的同时,应进一步的探索排课算法和发现系统存在的问题,

通过新技术不断地改进和完善系统。

40

Page 47: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

参考文献[1] An Average Case Approximation Bound for Course Scheduling by Greedy Bipartite

Matching .Gary Lewandowski1.Prakash Ojha2.Jennifer Rizzo1.and Abigail

Walker1 Xavier University.Mathematics and Computer Science Department

[2] A column generation scheme for faculty time-tabling.Paolo Sera.ni. University of

Udine.Italy

[3] Timetabling using a Steady State Genetic Algorithm .Ender Ozcan.Alpay Alkan.Yeditepe University Department of Computer Engineering

[4] Architect Struts applications for Web services .Jerome Josephraj Developer Ford

Europe .IBM.DEVELOPMENT .15 Apr 2003

[5] 王磊杰,崔军波,韩红宇等.J2EE 开发指南-基于 Sping/Struts/Hibernate 的实现. 北京.人民邮电出版社.2007

[6] 孙卫琴 .JAVA 面向对象编程.北京.电子工业出版社.2007

[7] 陈谊,杨怡,张国龙,王尚忠 .基于优先级自动排课算法 PCSA 的设计与实现方案.北京.北京工商大学计算机学院 2003

[8] 董艳云,钱晓群,张宇舒 .基于课元相关运算的高校排课算法 .成都.西南交通大学.2005

[9] 张海藩.软件工程导论.北京.清华大学出版社.1998

[10] 吴建,郑潮,汪杰.UML 基础及 Rose建模案例.北京.人民邮电出版社.2003

41

Page 48: read.pudn.comread.pudn.com/downloads159/doc/714072/JAVA.docx · Web view本文设计了基于Struts+Hibernate框架下的Java排课系统,可部署在网络上,支持多人同时在线进行排课。本系统应用随机采样、循环遍历算法进行自动排课,并利用Hibernate技术对数据进行整和处理,Java

内蒙古工业大学本科毕业设计说明书

[11] [美] Abraham Silberschatz  Henry F.Korth 著.数据库系统概念.北京.机械工业出版社.2004

[12] [美] J.A邦德,U.S.K.默蒂 图论及其应用.北京:科学出版社.1984:97-107

[13] 曾志峰,乐光学 高校排课管理系统的设计与实现.长沙.湖南商学院学报.2001.1:136-137

[14] 胡顺仁,邓毅,王铮 基于高校排课系统中的图论问题研究.计算机工程与应用.2002.4:221-222

[15] 石箐,李宏波 排课算法的比较.福建.福建电脑报.2007年第 8期:19-24

[16] 张剑平..学校管理信息系统.北京.中国铁道出版社,1997

谢 辞另外,衷心感谢我的同学们,在我毕业设计过程中,与他们的探讨交流使我受

益颇多;他们也给了我很多无私的帮助和支持,我再次深表谢意。 最后,向我的亲爱的家人和亲爱的朋友表示深深的谢意,他们给予我的爱、理

解、关心和支持是我不断前进的动力。

42