1、职场大变样社区():下载毕业设计成品全套资料,全部 50 元以下毕业设计论文设计题目 智能排课系统的设计与实现 电大分校: 学生姓名: 学 号: 指导教师: 完成日期: 目 录摘 要 .3第一章 系统概述 .411 智能排课系统概述 412 智能排课系统的目的和意义 4第二章 开发平台的技术 52.1 JAVA 简介52.2 JSP 简介 62.3 Tomcat 的介绍 7第三章 系统分析 .531 编程环境选择 .532 设计大纲 .7第四章 设计内容 941 实现功能 1042 功能与模块的设计 1043 数据库设计 1044 数据表设计 11第五章 系统流程图设计与分析 .1451 登陆
2、系统流程图 1452 主界面中课表生成部分流程图 14521 班级管理流程图 14522 班级课程处理流程图 .15523 课表生成部分流程图 .16524 报表输出功能 .1753 其它模块设计说明 18第六章 系统设计 19第七章 结论和总结 20致谢 .22参考文献: .23附件:程序清单【摘要】选排课系统功能的设计上,学生选排课系统可以分为登录、排课和选课 3 个子系统。登录子系统区分排课者(也即系统的管理者)、教师和学生这三者的不同身份,给出不同的权限,在页面中根据身份判断其相应具有的功能来使用这套系统。排课子系统主要供排课者使用,排课者可以在这里进行一切与排课有关的活动。选课系统主
3、要供学生选课使用,在这里可以进行与选课有关的活动;教师可在教师反馈系统中对排课者提出反馈意见,供排课者在排课时可参考使用。学生排课系统使用 Rational Rose 进行 UMI。建模;过程选择使用 jsp 编写脚本,在数据库上考虑到快捷、有效,同时考虑到多台服务器共同使用同一个数据库的情况,这里选择 SQL Server 2000 作为数据库服务器;对于网页的服务器平台,这里选择使用 Tomcat 5.O 作为 Internet 服务器。【关键词】智能排课系统 UML JSP 【 abstract 】 the functional design of selected arrangemen
4、t system, students choose arrangement system can be divided into login, curriculum and elective 3 subsystems. The login subsystem distinguish curriculum arrangement (e.g., system administrators), teachers and students of the three different identity, give different permissions on page with their cor
5、responding identity judgment according to the function to use this system. Main course for the use of timetabling subsystem, curriculum person can undertake here and all the activities related to the course. Main course for students course system, here can be used with courses related activities; Te
6、achers can be in teachers of feedback systems, the timetable for feedback when the course course in reference to use.Students choose arrangement system Rational UMI started to use. Modeling; Process choose to use JSP scripting, in a database on consideration to the quick, effective, and considering
7、the multiple servers jointly with the same database, here to choose SQL Server 2000 as database Server; For web server platform, here to choose use Tomcat 5. O as Internet server.【 keywords 】 intelligent courses arranging management system UML JSP第一章 系统概述11 智能排课系统概述智能排课系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和
8、管理者来说都至关重要,所以智能排课系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件排课,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对排课信息进行管理 ,具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高智能排课的效率,也是企业的科学
9、化、正规化管理,与世界接轨的重要条件。12 智能排课系统的目的和意义终上所述,开发这样一套智能排课软件成为很有必要的事情。我们所开发的这智能排课软件归纳起来,好处大约有以下几点:1 可以存储历届的排课,安全、高效;2 只需一到二名排课录入员即可操作系统,节省大量人力;3 可以按照录入人员的输入来自动生成课程表,并尽量减少冲突等情况发生。排课系统的设计分析根据实际情况,我们使用原型法(Rapid Prototyping)即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的
10、性质全部满足。此时模块也发展成为最终产品了。第二章 开发平台的技术2.1 JAVA 简介Java 是目前最常用的计算机编程语言,也是主要的网络开发语言之一。Java 具有面向对象、分布式和多线程等先进高级计算机语言的特点,同时它还因可移植、安全性能高和网络移动性等逐渐成为一种行业标准。对于初次接触计算机编程语言的人来说,Java 语言简单易学,不需要长时间的培训就可以编写出适合现在企业或个人需要的程序。Java 的特点:(1). 平台无关性平台无关性是指 Java 能运行于不同的平台。 Java 引进虚拟机 原理,并运行于虚拟机,实现不同平台的 Java 接口之间。使 用 Java 编写的程序
11、能在世界范围内共享。Java 的数据类型与 机器无关,Java 虚拟机(Java Virtual Machine)是建立在 硬件和操作系统之上,实现 Java 二进制代码的解释执行功能, 提供于不同平台的接口的。(2). 安全性 Java 的编程类似 C+,学习过 C+的读者将很快掌握 Java 的精 髓。Java 舍弃了C+的指针对存储器地址的直接操作,程序 运行时,内存由操作系统分配,这样可以避免病毒通过指 针侵入系统。Java 对程序提供了安全管理器,防止程序的 非法访问。(3). 面向对象Java 吸取了 C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护
12、性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java 提供了众多的一般对象的类,通过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类为 Object 类,Object 类功能强大,经常会使用到它及其 它派生的子类。(4). 分布式Java 建立在扩展 TCP/IP 网络平台上。库函数提供了用 HTTP 和 FTP 协议传送和接受信息的方法。这使得程序员使用网
13、络上的文件和使用本机文件一样容易。(5). 键壮性Java 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java 自己操纵内存减少了内存出错的可能性。Java 还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发 Java 应用程序的周期。Java提供:Null 指针检测、数组边界检测、异常出口、 Byte code 校验。2.2 JSP 简介JSP 是 Sun 公司推出的新一代网站开发语言,Sun 公司借助自己在 Java 上的不凡造诣,将 Java 从 Java 应用程序和 Java Applet 之外,又有新的硕果,就是JSP,Java Se
14、rver Page。JSP 可以在 Serverlet 和 JavaBean 的支持下,完成功能强大的站点程序。使用 JSP 技术, Web 页面开发人员可以使用 HTML 或者 XML 标识来设计和格式化最终页面。使用 JSP 标识或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标识和 JavaBeans 群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封装在标识和 Beans 中,那么其它人,如 Web 管理人员和页面设计者,能够编辑和使用 JSP 页面,而不影响内容的产生。在服务器端,JSP 引擎解释 JSP 标识,产生所请求的内容(例如,通过存取 Java
15、Beans 群组件,使用 JDBC 技术存取数据库) ,并且将结果以 HTML(或者 XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于 HTML 的 Web 浏览器的完全可用性。绝大多数 JSP 页面依赖于可重用且跨平台的组件(如:JavaBeans 或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者用户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种群组织在他们现有的技能和优化结果的开发努力中得到平衡。Web 页面开发人员不会都是熟悉脚本语言的程
16、序设计人员。Java Server Page 技术封装了许多功能,这些功能是在易用的、与 JSP 相关的 XML 标识中进行动态内容产生所需要的。标准的 JSP 标识能够存取和实例化 JavaBeans 组件,设定或者检索群组件属性,下载 Applet,以及执行用其它方法更难于编码和耗时的功能。通过开发定制化标识库,JSP 技术是可以扩展的。今后,第三方开发人员和其它人员可以为常用功能建立自己的标识库。这使得 Web 页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。JSP 技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。
17、作为采用 Java 技术家族的一部分,以及 Java 2EE 的一个成员,JSP 技术能够支持高度复杂的基于 Web 的应用。由于 JSP 页面的内置脚本语言是基于 Java 程序设计语言的,而且所有的 JSP 页面都被编译成为 Java Servlet,JSP 页面就具有 Java 技术的所有好处,包括健壮的存储管理和安全性。作为 Java 平台的一部分, JSP 拥有 Java 程序设计语言“一次编写,各处执行”的特点。随着越来越多的供货商将 JSP 支持加入到他们的产品中,您可以使用自己所选择的服务器和工具,修改工具或服务器并不影响目前的应用。2.3 Tomcat 的介绍Tomcat 是
18、 Apache Jakarta 软件组织的一个子项目,Tomcat 是一个 JSP/Servlet容器,它是在 SUN 公司的 JSWDK(Java Server Web Development Kit)基础上发展起来的一个 JSP 和 Servlet 规范的标准实现,使用 Tomcat 可以体验 JSP 和 Servlet 的最新规范。经过多年的发展,Tomcat 不仅是 JSP 和 Servlet 规范的标准实现,而且具备了很多商业 Java Servlet 容器的特性,并被一些企业用于商业用途。粗略地可以将 servlet 容器分为如下几类 : 独立的 servlet 容器内置有 web
19、 服务器的一部分。指当使用基于 Java 的 web 服务器的情形,例如servlet 容器是 JavaWebServer 的一个部分。独立的 servlet 容器是 Tomcat 的默认模式。大多数的 web 服务器并非基于 Java,因此,我们可以得出如下两种容器的模式。 进程内的 servlet 容器servlet 容器作为 web 服务器的插件和 Java 容器的实现。Web 服务器插件在内部地址空间打开一个 JVM(java virtual machine)使 Java 容器得以在内部运行.如有某个需要调用 servlet 的请求,插件将取得对此请求的控制并将他传递(使用 JNI)给
20、 Java容器。进程内容器对于多线程,单进程的服务器非常合适并且提供很好的运行速度,但伸缩性有所不足。 进程外的 servlet 容器servlet 容器运行于 web 服务器之外的地址空间且作为 web 服务器的插件和 Java容器的实现的结合.web 服务器插件和 Java 容器 JVM 使用 IPC 机制(通常是 TCP/IP)进行通讯.当一个调用 servlet 的请求到达时,插件将取得对此请求的控制并将其传递(使用 IPC 等)给 Java 容器 ,进程外容器的反应时间或进程外容器引擎不如进程内容器,但进程外容器引擎在许多其他可比的范围内更好(伸缩性,稳定性等)。Tomcat 既可作
21、为独立的容器(主要是用于开发与调试)又可作为对现有服务器的附加(当前支持 Apache,IIS 和 Netscape 服务器).即任何时候配置 Tomcat 你都必须决定如何应用他,如选择第二或第三种模式,你还需要安装一个 web 服务器接口。第三章系统分析2.1 编程环境选择编程环境的选择微软公司的 Jsp 是 Windows 应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。Jsp 提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统 VB 是一个相对较好的选择。
22、关系型数据库的实现 Sqlserver2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Sqlserver 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Sqlserver 允许创建自定义报表用于打印或输出数据库中的信息。Sqlserver 也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Sqlserver 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Sqlserver 作为关系数据库开发具备了许多优点,可
23、以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。 二者的结合(DBA)微软的 JET 数据库引擎提供了与数据库打交道的途径,我们是通过它以及 Jsp 来访问数据库并对其进行各种操作。Jsp 、Sqlserver 以及其他微软的软件产品都是通过共用 JET 数据库引擎,从而给用户提供了丰富的数据类型。当今的微软对数据库中的 ADO 比较注视,并在.net 上使用了 ADO.net 技术,鉴于 ADO 在很多程序里的广泛应用,使用 ADO 来连接数据库将是最为适用的,并且在定义了 ADO 的连接模块后,对于将来的升级也会很方便,只要修改一下连接源,就可以轻松的更换后台。在使用 Js
24、p 语言进行编程时还有有如下的优点:Jsp 应用程序不同于其他语言开发的单一性程序。使用 Jsp 编程时,必须首先确定应用程序如何与用户交互,如鼠标单击,用户必须编写代码控制这些事件的响应方法。使用 Jsp 开发数据库应用程序的一般步骤如下所示:(1) 建立数据库(2) 建立用户界面(3) 编写代码(4) 调试运行(5) 编译应用程序(6) 发布应用程序界面设计(1) 控件的位置(2) 界面元素的一致性(3) 保持界面的简明(4) 使用颜色和图像:增加视觉的感染力(5) 图像和图标:增加应用程序的视觉上的趣味(6) 选取字体Jsp 应用程序的结构:由于 Jsp 应用程序是基于对象的,所以应用程
25、序的代码结构就是该程序在屏幕上物理表示的模型。根据定义,对象包含数据和代码。在屏幕上看到的窗体代表属性,这些属性定义了窗体的外观和内在特性。本设计主要是运用 ADO 来连接和操作数据库。附: ADO 技术简介ADO 是 Microsoft 目前主要的数据存取技术,从 1997 年 Microsoft 推出 ADO 的第一个版本之后, ADO 的整体架构并没有太大的改变。不过在每一个新的 ADO 版本之中,Microsoft 不断地改善 ADO 的执行效率,提供更多的功能,持续增加 ADO 的稳定性,并且让 ADO 能够存取更多种类的数据源。ADO 是 Microsoft 提出的各种数据存取技术
26、的演化结果,因为随着数据日益复杂,数据存取技术也必须不断地进步以适应应用系统的需求。目前,虽然 ADO 是Windows 平台存取数据的标准技术,不过 ADO 也将会继续演变。要了解 ADO 为什么会成为目前的标准,可以从 Windows 平台数据存取技术的进化而得知。1. ODBC1992 年 Microsoft 和 Sybase、Digital 共同制定了 ODBC 标准接口,以单一的ODBC API 来存取各种不同的数据库。随后 ODBC 便获得了许多数据库厂商和 Third-Party 的支持而逐渐成为标准的数据存取技术。ODBC 以当时的业界标准规范 X/Open Call-Leve
27、l Interface(CLI)和 ISO / IEC9075-3 Call-Level Interface(SQL/CLI)为涵盖的范围,因而支持了广阔的数据库。虽然 ODBC 在初期的版本中执行效率不佳,而且功能有限,因此也为人们所贬低。但是,随着 Microsoft 不断地改善 ODBC,使ODBC 的执行效率不断增加,ODBC 驱动程序的功能也日渐齐全。到目前,ODBC 已经是一个稳定并且执行效率良好的数据存取引擎。不过 ODBC 仅支持关系数据库,以及传统的数据库数据类型,并且只以 C / C + +语言 API 形式提供服务,因而无法符合日渐复杂的数据存取应用,也无法让脚本语言使用
28、。因此 Microsoft 除了 ODBC 之外,也推出了其他的数据存取技术以满足程序员不同的需要。2. DAO1993 年 Microsoft 为了让程序员能够存取 Sqlserver 数据库,使用 OLE Automation 技术封装了 Jet Engine。这些使用 Jet Engine 存取 Sqlserver 数据库的 OLE Automation Object 便称为 Data Sqlserver Object(DAO)。DAO 能够存取 x Base 的数据库以及 Excel 文件,并且能够结合 ODBC 存取关系数据库。但是 DAO 毕竟主要的设计目的是存取 Sqlserve
29、r 数据库,因此 DAO 在存取 Sqlserver 数据库时非常有效率,但是在存取其他的数据源时却表现得不怎么好。目前 DAO 已经慢慢接近维护的状态。3. RDO由于 DAO 在结合 ODBC 存取关系数据库时表现得并不好,因此在 1995 年Microsoft 同样以 OLE Automation 技术直接封装 ODBC API,让程序员能够存取关系数据库。这种数据存取技术便称为 Remote Data Object(RDO)。Microsoft 之所以推出 RDO,是因为 ODBC API 是非常复杂的 API,许多程序员无法直接使用 ODBC API 来开发应用程序,因此 Micro
30、soft 以简化的 RDO 对象让程序员能够较为简单存取数据。此外,通过 RDO,VB 和脚本语言也能够存取各种关系数据库。不过目前 RDO 也已经逐渐地被放弃了。4. OLE-DB随着数据源日益复杂化,现今的应用程序很可能需要从不同的数据源取得数据,加以处理,再把处理过的数据输出到另外一个数据源中。更麻烦的是这些数据源可能不是传统的关系数据库,而可能是 Excel 文件,Email 或 Internet/Intranet 上的电子签名信息。Microsoft 为了让应用程序能够以统一的方式存取各种不同的数据源,在 1997 年提出了 Universal Data Sqlserver(UDA)
31、架构。UDA 以 COM 技术为核心,协助程序员存取企业中各类不同的数据源。UDA 以 OLE-DB (属于操作系统层次的软件)作为技术的骨架。OLE-DB 定义了统一的 COM 接口作为存取各类异质数据源的标准,并且封装在一组 COM 对象之中。藉由 OLE-DB,程序员就可以使用一致的方式来存取各种数据。5. ADOADO(ActiveX Data Object)是微软新近推出的新一代数据访问规范,其使用简便功能强大,在 Delphi 中其地位等同于一个和 BDE 并列的数据库引擎。ADO 是 MDAC 的应用程序设计接口,从它的字面意思上可以看出,ADO 和 Active X 技术密不可
32、分,而 Active X 技术又和 OLE,COM(组件对象模型,也由微软提出,旨在实现软件组件化)等技术有深厚的历史渊源。OLE DB 则是系统级的接口,定义了一套从关系数据库及文件系统访问数据的 COM 接口。2.2 设计大纲经过慎重考虑,并尽量使排课的速度加快,因此对各位教师和各班级都建立一个占用表,首先计算当前要排课程的老师的已排课程占用情况,将其与排课班级的占用表进行对比,获取有用空间,即得到的空间都会适合,这样使用随机推举的方式来自动生成一个新位置,达到排课效果,并且不会造成冲突等情况的发生。排课作为系统的主要重点,在编写中就要尽量避免各种各样的冲突和错误发生,因此也需要经过投入长
33、时间的测试与使用才能使程序的功能达到最好,速度最快。在课程表输出方面,将采用目前最常用的报表形式来进行输出,并且同时使用VB 中操作 EXECL 的方法将课程表输出到 EXECL 自制的课程表模板文件中,并且同时可以实现打印,这样用户如果在认为报表输出的格式并不能让您满意的话,就可以根据自己的需要来修改 EXECL 的模板,达到课程表的完美输出。第三章 设计内容3.1 实现功能1 掌握学校所有的课程和教师的信息。包括每门课程的时间、班级以及任课老师的姓名等。2 针对不同的人员授予不同的权限。提供灵活的浏览、查询功能。可以查看某个系、某个班级所有课程的信息。3 可以对一个或多个班级进入课程管理与
34、排课表管理,可以不限次的生成该班级课程表。4 可以对课程进行变动管理。既可以手工排课,又可以实现自动排序功能。5 帮助系统维护可以实现:操作日志、重新登录、打印设置(包括统计各种报表及打印等) 、退出等操作。6 提供一种或多种课程表输出功能,并使用活动的模板输出功能,输出样式可以由用户自定义。7 实现功能全面化,由于每个学校或班级的每天课程数目或时间都不太一样,实现智能计算总课程数目和管理对应的时间段,并且根据每门课程的独立分布式来进行排列(例如:大学语文自动排列的分布方式可以是周一至周六,那么系统就会自动将其平均分布在周一至周六这些天里)8 用户管理:设置两个级别用户:管理员和普通用户,管理
35、员有权限操作系统中的所有数据,普通用户只能以执行查询,输出之类的功能,无法对系统进行实质性的操作,用户使用本系统之前必须先通过身份认证(用户级别、用户名和密码,密码输入有次数限制,连续三次输入错误密码则锁定该用户)3.2 功能与模块的设计3.2.1 设计思想 本系统采用各班级独立划分管理,所有教师均可为任何班级服务,各班级根据每天课程数目来进行自动排序,同时各教师允许教学多门课程,因此为了每名教师配置了时间占用表,只要与班级对应的时间空间表未被占用,都可以参与排课,并根据用户定义的要求排出课程。数据管理类:由于班级,时间,教师,课程等信息都需要一个活动的管理过程,因为在节省资源的情况下,将各数
36、据所需要的代码合并在一起进行编写和使用。排 课 系 统系 统 还 原 班 级 管 理 课 程 管 理 时 间 段 设 置用 户 管 理 课 表 生 成 离 开 系 统系统启动画面系统认证排课系统主画面3.2.2 各模块设计与分析此处中各模块的设计与分析在以下各模块数据流图与程序中同步讲解。3.2.3 系统 ER 图班 级班 级 名 称辅 导 员教 室 号课 程课 程 名教 师 姓 名临 时 生 成 课 表时 间 段星 期 一星 期 二星 期 三星 期 四星 期 五星 期 六星 期 日班 级自 动 编 号班 级 课 程 信 息课 程 名课 节 数每 周 课 数需 要 周 数任 课 老 师两 节
37、课 累 排课 程 分 布所 属 班 级1:N1:N 1:N从属 从属 从属系统 E -R 图说明:本系统是一个智能排课系统,主要是根据班级为单位,利用班级与课程来进行排课。班级与课程是一对多的关系,班级不能重复,但是课程可以随意出现任何班级。班级与班级课程信息之间也是一对多的关系,一个班级,可以有很多不同的课程。班级与临时生成课表是一对多的关系,一个班级,只能有一个课程表,而排列的方式都同样由班级获得。其余的数据库建立都是在让系统方便使用的基础上建立的,还有一个无需用户手动添加数据的,做为内部参数来使用的表,这里就不用标出的了。3.2.4 数据字典数据字典是在需求分析阶段建立,在数据库设计过程
38、中不断修改、充实完善的。明确地需求收集和分析作为数据库设计的第一阶段是十分重要的。这一阶段收集到的基础数据(用数据字典来表达)和一组数据流程图(Data Flow Diagram,简称DFD)是下一步进行概念设计的基础。以下是本系统的数据结构,因实现使用方便的特点,数据库中的各字段列表直接用中文来表示,所以数据字典在以下数据库设计中已经没有什么太大的必要。详见数据库的设计:3.3 数据库设计数据库的概念数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(relat
39、ional) 。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,像记录、域等。新建一个数据库创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。创建一个数据库的大体思路如下:1 标识需要的数据;2 收集被标识的字段到表中;3 标识主关键字字段;4 绘制一个简单的数据图表;5 规范数据;6 标识指定字段的信息;7 创建物理表。 3.2 修改已建的数据库数据库的修改分为:添加、编辑和删除记录。这三种操作均可由 Jsp 创建的程序来完成,下面的章节将详细描述实现的具体方法。 实现数据库之间的联系数据库之间的关系指明
40、两个库之间共享一个共同的关键字值。一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。一个更高级的连接形式称为自连接。这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中由重复数据的组合字段。数据库中有三种不同类型的关键字:主关键字、组合关键字和外关键字。在表中使用的关键字类型用于描述数据库表示什么以及在数据库中如何与其它的库建立关系。在众多的数据库中,Microsoft 的 Sqlserver 是操作最简单,使用最为广泛的一种数据库软件,在单机上运行有着方便、实用、操作员要求低等特点。在这里,我选择
41、了使用 Sqlserver 数据库管理系统,来开发一个小型的销售管理系统。在系统的数据库设计中,应遵守以下的原则:数据结构的合理性。即数据文件的合理组织,数据元素的合理归类和划分,以及数据项的合理描述。数据存储的安全性。提高安全性的最为有效的措施是增加数据的冗余,而数据的大量冗余往往为维护数据的一致性带来了困难。对此,根据实际需要进行合理取舍,在尽量降低冗余的前提下,确保数据的安全性和可靠性。维护和管理方便。存储结构的设计,首先应保证对数据进行管理和维护上的方便,它是提高系统运行效率的基础。3.4 数据表设计在使用 Sqlserver 创建“智能排课系统”数据库系统中需要建立的数据表有:1 登
42、陆字段 数据类型 字段大小 必填字段 索引 允许为空用户名 文本 50 是 无 否密码 文本 50 否 有(无重复) 否权限 文本 50 是 无 否2 课程名字 段 数据类型 字段大小 必填字段 索引 允许为空课程名 文本 4 否 有(无重复) 是教师姓名 文本 50 是 无 否3 课程信息表字 段 数据类型 字段大小 必填字段 索引 允许为空课程名 文本 50 否 有(无重复) 否课节数 数字 长整型 是 无 是每周课数 数字 长整型 是 无 否需要周数 数字 长整型 是 有(有重复) 否任课老师 文本 50 否 无 否两节课累排 文本 50 否 无 否课程分布 文本 50 否 无 否所属班
43、级 文本 50 否 无 否4 临时生成表 字段 数据类型 字段大小 必填字段 索引 允许为空时间段 文本 50 是 无 是星期一 文本 50 否 无 是星期二 文本 50 否 无 是星期三 文本 50 否 无 是星期四 文本 50 否 无 是星期五 文本 50 否 无 是星期六 文本 50 否 无 是星期日 文本 50 否 无 是所属班级 文本 50 否 无 是自动编号 自动编号 是 无 否5 课程占用表字段 数据类型 字段大小 必填字段 索引 允许为空班级 文本 50 是 无 否占用 文本 50 否 有(无重复) 否6 系统日志字段 数据类型 字段大小 必填字段 索引 允许为空用户名 文本
44、50 是 无 否时间 文本 50 否 无 否操作记录 文本 255 否 无 否7 系统设定字段 数据类型 字段大小 必填字段 索引 允许为空每天课数 数字 长整型 是 无 否8 占用字段 数据类型 字段大小 必填字段 索引 允许为空教师姓名 文本 50 是 无 否占用 文本 50 否 无 否第四章 系统流程图设计与分析4.1 登陆系统流程图登 陆 界 面输 入 用 户 名 和 密 码 退 出 系 统验 证 帐 号 和 密 码登 入 排 课 主 界 面YN=3设计说明:进入主界面后,等待操作用户输入用户名和密码,在输入之后按确定进入,验证用户名和密码,实现流程:(1) 检测数据库中有无管理员帐号
45、,如果有,则等待用户输入用户名和密码,否则按程序本身自动执行插入命令,新建一个管理员用户,并等待用户输入.(2) 验证用户名和密码是否正确,错误次数不能超过三次,超过三次则退出系统登陆界面(3) 当验证通过后,检测该登陆用户的管理权限,并设置变量传值给主窗体.4.2 主界面中课表生成部分流程图4.2.1 班级管理流程图班 级 管 理添 加 保 存 修 改 删 除 返 回输 入 数 据 验 证 重 复执 行 保 存模块设计说明:班级的操作部分是排课程序正常执行的重要部分,班级的添加不允许有同名的班级出现,而修改也不能做到修改班级名,班级名称将作为不可修改的数据部分,而删除部分,在删除之前必须保证
46、该班级的课表是否已经生成,如果是,则需要注销课程表,这样做是让该班级生成的课表占用教师空间的部分全部返回,这样不会使教师的空间被反复占用,而最终导致错误发生。4.2.2 班级课程处理流程图班 级 课 程 处 理添 加 保 存 修 改 删 除输 入 数 据 验 证 重 复执 行 保 存课 程 是 否 生 成 提 示 并 返 回 操 作YN模块设计说明:课程数据的添加,修改或删除都会影响到已生成课程表的返回,因为在操作之前必要保证课程表属于未生成状态,如果当前为生成状态,则需要注销课程表,这样才可以继续操作。注:已生成课程表的返回:由于课程表排列好后,对应的课程后教师的排课占用表都会有标记标明,如
47、果这时修改了某此数据后,这教师的占用表并没有恢复到未生成状态,这样就会导致不可预知的错误发生。4.2.3 课表生成部分流程图生 成 课 表显 示 课 程a注 解 :A:每 周 课 程 数 是 否 大 于 课 程 表 的 表 格 数B:退 回 以 前 曾 生 成 的 课 程 表 , 此 操 作 达到 将 各 位 老 师 和 该 班 级 的 排 课 占 用 情 况返 回 到 未 生 成 状 态b进 入 排 课 循 环排 课 完 成 并 退 出Y 退 出N排 课 循 环C C: 当 前 所 排 课 程 与 当 前 班 级 的 可排 课 位 置 生 成D:获 取 随 机 生 成 的 位 置 对 应 值
48、 , 并利 用 获 取 的 值 来 计 算 课 程 表 上 对 应的 横 向 与 纵 向 坐 标F:根 据 用 户 的 设 置 来 确 定 允 许 排 课的 课 节 数 ( 例 如 : 允 许 同 一 课 程 两节 课 连 排 , 则 可 以 进 行 某 个 操 作 步骤 ) , 根 据 当 前 需 求 , 目 前 只 开 发2节 课 连 排 与 单 节 课 排 列 。G:在 当 前 课 程 当 前 节 排 列 成 功 后 ,将 会 为 该 课 程 的 教 师 的 课 程 占 用 情况 与 班 级 的 占 用 作 修 改 , 做 个 标 记DF2节 课 连 排 单 节 课 排 列G次 数 取
49、决 于 课 程 总 数是 否 再 次 循 环允 许 几 节 连 排退 出模块设计说明:此处将执行的数据分成很多小部分来执行,这样做可以在测试中便如发现问题,因为排课系统的要求非常高,所以在程序实现方面是以由简到繁的过程。(1)排课中要求的每周课程数相加不能超出定义的课表范围,否则也将会出现死循环。(2)列出对应课程教师的未被占用的排课列表和班级的课程占用表。(3)穷举法列出以上两者之间的共通点,可用点。(4)最后通过循环随机选择来实现课程的定位与排列。(5)课程定位中不允许每天有相同的课程重复,并按规定来执行按什么样的格式来排列,例如两节连排,也就是说可以把该课程在同一天排在一起,可以实现两节课连上,这是大学课表里最常用的一个功能。4.2.4 报表输出功能报 表 输 出aa: 通 过 班 级 来 获 取 对 应 的 生 成 课 程 表 数 据并 赋 值 给 某 个 打 印 变 量 或 数 据 集b: 打 开 MDI窗 体 , 并 在 其 中 显 示 报 表 窗体 , 将 该 报 表 的 数 据 源 定 义 为 a所 赋 值 的语 句 变 量b打 印 退 出EXECL模 板 输 出a获 取 模 板 并