大学自动排课算法设计与实现详细设计.docx
《大学自动排课算法设计与实现详细设计.docx》由会员分享,可在线阅读,更多相关《大学自动排课算法设计与实现详细设计.docx(11页珍藏版)》请在冰点文库上搜索。
大学自动排课算法设计与实现详细设计
大学自动排课算法设计与实现
软件详细设计说明书
学院
电子与计算机科学技术学院
专业
软件工程
题目
大学自动排课算法设计与实现
小组成员
林琳、罗文凤、顾晓、史东海
1.文档介绍
1.1文档目的
为了大学自动排课算法设计与实现系统的可行性,完整性,并能按照预期的设想实现该系统,编写详细设计说明书。
同时,说明书也发挥与策划和设计人员更好地沟通的作用, 使得项目组内成员对整个系统每个细微的功能都有比较清楚的把握。
1.2文档范围
a.项目名称:
大学自动排课算法设计与实现
b.本项目由课程设计题目组提出、由林琳、罗文凤、顾晓、史东海共同开发、预期用户为具有一定排课能力的管理人员、教师、学生。
c.本软件与Java的运行平台有着密不可分的联系。
如果要想在没有Java平台的计算机上运行本软件必须在打包的时候将用到的Java的包连通代码等一起打包进程序,否则将无法运行本系统。
1.3读者对象
本详细设计说明书是为了开发大学自动排课算法设计与实现而编写,主要面向系统分析员、程序员、测试员、实施员和最终用户。
1.4参考文献
Java2实用教程(第三版)
作者:
耿祥义、张跃平
出版社:
清华大学出版社
出版日期:
2006年8月
数据库系统概论(第四版)
作者:
王珊、萨师煊
出版社:
高等教育出版社
出版日期:
2008年12月
数据结构
作者:
严蔚敏、吴伟民
出版社:
清华大学出版社
出版日期:
2008年11月
1.5术语与缩写解释
无
2.模块命名规则
本软件的模块命名规则(如:
类、变量等)主要采用英文,当遇到对应的英文单词是关键字的情况则采用拼音。
不管采用英文还是拼音,均以大写字母开头.
3.模块汇总
3.1模块汇总表
表1模块汇总表
登陆子系统
模块名称
功能简述
classLogin
登陆的主窗口,选择不同的身份登陆
classMainwindow
主窗口,显示一些可操作的内容
classTianjia
管理员通过该类可以向数据库中添加管理员、教师、学生
classShanchu
管理员通过该类可以从数据库中删除管理员、教师、学生
classXiugai
管理员和其他用户可以通过该类修改密码。
管理员可以在不需要旧密码的情况下修改所有人的密码;教师和学生如果想修改密码必须知道旧密码。
信息录入子系统
模块名称
功能简述
classCourseForm
管理员可以通过该类录入要排课的多项课程的基本信息
classTeacherForm
管理员可以通过该类录入要排课的教师的基本信息
classRoomForm
管理员可以通过该类录入要排课的教室的基本信息
classbanjiForm
管理员可以通过该类录入要排课的班级的基本信息
classconditionForm
管理员通过该类录入一些约束条件
排课子系统
模块名称
功能简述
classInitialize
初始化每个班的课程,以每一个班为个体,形成初始群体
classBaseHardContraints
每排一个课程,看是否满足基本硬约束条件。
如:
在同一时间内,同一学生不得上两门课程,同一教师不得教授两门课程,同一教室不得安排两门课程
classHardContraints
每排一门课,看是否满足硬约束条件。
如:
课程的学时在周上分布有一定规律,某些课程可以先行手工排定时间和教室
classSoftContraints
软约束条件。
如:
班级相邻上课地点尽可能距离较近,班级课程表在星期上尽量分布均匀
classFitness
调用Effect.class和Interval.class算出每个班的适应度
classEffect
得到该时段的上课效果
classInterval
得到时间间距效率
classGA2Operation
当Fitness.class算出的适应度不大时,由此方法调用One2pointCrossover.class或Vary.class算子改变父代,形成新的群体
classOne2pointCrossover
单点交叉算子。
采用单点交叉,使选择的父代个体形成新的子代个体
classVary
变异算子。
采用变异方法,使形成新的子代个体
课表查询子系统
模块名称
功能简述
classTschedule
该模块用于教师课表的查询
classSschedule
该模块用于学生课表的查询
classCschedule
该模块用于教室课表的查询
3.2模块关系图
图1大学自动排课算法设计与实现构件图
4.子系统的模块设计
图2大学自动排课算法设计与实现类图
4.1登陆模块
4.1.1类Login
4.1.1.1Login
4.1.1.2登陆
4.1.1.3classLogin
A.属性说明
可见性
属性名称
属性类型
说明
Package
名称
数据类型
具体含义
B.方法说明
方法1
方法原型
publicvoidactionPerformed(ActionEvente)
功能描述
响应动作事件
输入参数
所要监视的对象
输出参数
无
返回值
无
抛出异常
无
方法2
方法原型
publicLogin()
功能描述
创建登陆窗口
输入参数
无
输出参数
无
返回值
无
抛出异常
无
方法3
方法原型
publicvoiditemStateChanged(ItemEvente)
功能描述
响应动作时间
输入参数
所要监视的对象
输出参数
无
返回值
无
抛出异常
无
4.1.2类MainWindow
4.1.2.1Mainwindow
4.1.2.2创建主窗口
4.1.2.3classMainwindow
A.属性说明
可见性
属性名称
属性类型
说明
Package
名称
数据类型
具体含义
B.方法说明
方法1
方法原型
publicMainwindow(Strings)
功能描述
创建主界面
输入参数
无
输出参数
无
返回值
无
抛出异常
无
方法2
方法原型
publicvoidactionPerformed(ActionEvente)
功能描述
响应动作事件
输入参数
所要监视的对象
输出参数
无
返回值
无
抛出异常
无
4.1.3类Tianjia
4.1.3.1Tianjia
4.1.3.2添加用户
4.1.3.3classTianjia
A.属性说明
可见性
属性名称
属性类型
说明
Package
名称
数据类型
具体含义
B.方法说明
方法1
方法原型
PublicTianjia(Strings)
功能描述
创建添加界面、添加用户
输入参数
Username、Newpassword、Newpassword2
输出参数
无
返回值
无
抛出异常
用户名存在、密码错误
方法2
方法原型
publicvoidactionPerformed(ActionEvente)
功能描述
响应动作事件
输入参数
所要监视的对象
输出参数
无
返回值
无
抛出异常
无
方法3
方法原型
publicvoiditemStateChanged(ItemEvente)
功能描述
响应动作事件
输入参数
所要监视的对象
输出参数
无
返回值
无
抛出异常
无
4.1.4类Shanchu
4.1.4.1Shanchu
4.1.4.2删除用户
4.1.4.3classShanchu
A.属性说明
可见性
属性名称
属性类型
说明
Package
名称
数据类型
具体含义
B.方法说明
方法1
方法原型
PublicShanchu(Strings)
功能描述
创建删除界面、删除用户
输入参数
Username、Password
输出参数
无
返回值
无
抛出异常
用户名不存在、密码错误
方法2
方法原型
publicvoidactionPerformed(ActionEvente)
功能描述
响应动作事件
输入参数
所要监视的对象
输出参数
无
返回值
无
抛出异常
无
4.1.5类Xiugai
4.1.5.1Xiugai
4.1.5.2修改用户密码
4.1.5.3classXiugai
A.属性说明
可见性
属性名称
属性类型
说明
Package
名称
数据类型
具体含义
B.方法说明
方法1
方法原型
publicXiugai(Strings)
功能描述
创建修改界面、修改用户密码
输入参数
Username、Oldpassword(管理员不需输入)、Newpassword
输出参数
无
返回值
无
抛出异常
用户名
方法2
方法原型
publicvoidactionPerformed(ActionEvente)
功能描述
响应动作事件
输入参数
所要监视的对象
输出参数
无
返回值
无
抛出异常
无
5.文件组织形式
首先是通过import语句引入本系统所需要的包中的类。
每个类是平等的,类中定义该类所要用到的方法。