…需求分析1.对功能的规定作为一个完整的数据库系统,其各种功能也要求比较完善,本系统的主要功能有:(1)系统登入功能:在系统授权范围内,用户选择各自的用户名,输入密码后登入系统;(2)基本信息管理:教师、教室、班级、课程、课程申请等数据的增、删、改、查;(3)数据处理:自动排课、手动排课、教师、教室、班级、课程、课程申请等数据的输入、编辑、修改、删除等功能;(4)数据输出:查询教师、班级课程表,打印教师、班级课程表,查询教师、班级、教室课程以及课程申请的基本信息;(5)系统设置:对用户权限的设置和密码的更改。
在本系统中,普通用户即教师和学生只能浏览、查询和打印基本信息以及查询课表和打印课表,不能添加、删除、修改基本信息并且无权排课、调课。
教师也可根据实际情况提前申请课程日期。
,2.对性能的规定(1)一个大学由多少个院系组成(院系类);(2)一个院系有多少个专业(专业类);(3)一个专业有多少个年级(年级类);(4)一个年级有多少个自然班(班别类);(5)一个自然班有多少个学生(学生类);(6)一个大学有多少个教师(教师类);:(7)一个大学有多少个教室(教室类);(8)教师和学生都不能发生课时冲突,即没有教师要同时给两个(或两个以上的)班上课,也没有一个班要同时上两门(或两门以上)不同的课程;(9)教师和学生合理的不排课时间要求一定要满足;(10)要求排连堂的课一定要连堂;(11)主课(大学英语、高等数学、大学物理等)课程排上午,副课(思想道德修养、文献检索等)课程排下午,其它课程在上、下午随机分布;(12)满足教师教案的周期性,教师备一次课后应在他授课的所有班上都讲授一遍之后才进入到下一阶段的备课和授课;(13)尽量避免断点,即不出现一天内前、后节次有课,中间无课的现象;(14)文、理课(如高等数学和大学英语)相间,以使学生智力得到调整,提高学习效率;—(15)同一门课一周内在节次上要均匀分布;(16)排课前考虑老师的时间问题。
张教师一周5天共上20节,则尽可能安排每天4节课且4节课不连续安排在如1234或5678节等;(17)排课时还要充分考虑到课程的均匀性问题。
即课程安排尽可能均匀,英语一周3节,若一周上5天的课,尽量每隔一天安排一次课程;(18)对于数量巨大的信息,系统仍具有较快的响应速度和较小的系统开支。
3、逻辑设计整个排课的过程分成一下步骤:(1)管理员通过教师信息,班级信息,教室信息,课程信息,课程申请信息确定所对应的的教师表,班级表,教室表,课程表以及课程申请表。
(2)管理员首先根据教师预先排课申请表手动确定合适部分课程的时间。
(3):(4)自动排课。
从教师表,班级表,教室表,课程表提取相应信息、寻找合适的节次进行合理有序的安排。
或者(2)和(3)颠倒进行。
(5)对确定的课表根据反馈适当性修改,最终确定。
4.系统数据结构图(1)顶级数据流动图管理员 排课系统 打印课程表班级和老师>(2) 第二级数据流动图、数据流动图:{5.基本设计概念和处理流程(活动者1:用户(管理员),系统的最大使用者,可操作系统的全部功能,即使用系统对全校的班级进行排课,首先获得相应的基本信息(教师信息,班级信息,教室信息,课程信息,课程申请信息,预先课程申请信息),根据基本信息进行自动排课和手动调课适当性,合理性结合,并对教师的课表和班级的课表进行查询。
活动者2:用户(学生),作为系统的一般使用者,他们能进行查询和打印课表,并能看到教师、班级、教室、课程基本信息。
学生可以查询自己班级的课表和自己关注的老师的课表;活动者2:用户(教师),作为系统的一般使用者,他们能进行查询和打印课表,并能看到教师、班级、教室、课程和课程申请基本信息。
老师可以查询自己的课表,也可查询自己所教的班级的课表。
用况说明:(1)用况名称:主界面参与者:用户(管理员、教师、学生)主要事件流:,用户在这里根据自己的需要选择需要的操作,其中以管理员身份登入的就可选择此界面上的所有功能操作,而以老师和学生身份登入的就只能浏览各个模块的基本信息并可选择查询这个模块。
(2)用况名称:教师设置参与者:用户(管理员、教师、学生)主要事件流:管理人员对教师的基本情况如姓名、职称、学位、住所等进行编辑、添加、删除、查询等操作;教师和学生能够浏览和查询基本信息。
(3)用况名称:班级设置参与者:用户(管理员、教师、学生)主要事件流:、管理员对班级的基本情况如班级名称、班级人数、专业、年级等进行编辑、添加、删除、查询等操作;教师和学生能够浏览和查询基本信息。
(4)用况名称:教室设置主要事件流:管理员对教室的基本情况如教室名称、教室容量、教室性质等进行编辑、添加、删除、查询等操作;教师和学生能够浏览和查询基本信息。
(5)用况名称:课程设置参与者:用户(管理员、教师、学生)主要事件流:…管理员对课程的基本情况如课程名称、课程类别、考核方式、课程性质等进行编辑、添加、删除、查询等操作;教师和学生能够浏览和查询基本信息。
(6)用况名称:课程申请参与者:用户(管理员、教师、学生)主要事件流:管理员对课程的基本情况如课程名称、教师姓名、班级名称、周课数、学分、开始周、周数等进行编辑、添加、删除、查询等操作;教师能够浏览和查询基本信息。
(7)用况名称:自动排课参与者:用户(管理员)主要事件流:!管理员在输入教师信息、班级信息和教室信息、课程信息后系统就可根据算法和代码自动的安排各班和各老师的课程表。
(8)用况名称:手动排课参与者:用户(管理员)主要事件流:在自动排课后,教务处的管理人员可调整课表的一些冲突问题如场地冲突、时间冲突等进行改正,或是对某些老师由于特殊情况要课程调动的预先课程申请表进行重新安排。
(9)用况名称:高级查询主要事件流:,系统的所有默认用户都可使用这个模块查询他们各自关注的课表信息并且打印课表。
用户输入查询的关键字(查询班级课表的可以输入班级名称,查询老师课表的可以输入老师姓名),系统搜索所需的课表,显示课表信息,用户可对课表进行打印。
6. 系统的物理结构图7. 系统模块图以下对系统模块进行大致的介绍:(1)用户接口模块;(2)数据库管理模块;#(3)核心功能模块;①基本信息管理子模块。
该模块包含:教师设置,教室设置,班级设置,课程设置,课程申请设置。
②系统管理子模块。
该模块包括:用户界面与系统权限。
③排课管理子模块。
该模块包括:手动课程管理、自动排课管理、手动调节管理、排课异常管理以及班级、教师课表管理5个部分。
8.数据库设计设计原则要设计出一个好的管理系统数据库,除满足系统所要求的功能外,还必须遵守下列原则:{(1)基本表的个数越少越好。
(2)主键的个数越少越好。
键是表间连接的工具,主键越少,表间的连接就越简单。
(3)字段的个数越少越好。
(4)所有基本表的设计均应尽量符合第三范式。
在数据库的设计中,如何处理多对多的关系和如何设计主键,是两个有着较大难度、需要重点考虑的问题。
系统数据库设计(1)课程信息数据库:记录课程的基本信息属性:(课程名称,课程代码,课程类型,考核方式,课程性质)其中课程代码唯一标识一门课程,课程类型用来确定课程优先级,而课程性质是课程所需教室条件的信息,如:是否需要多媒体。
如表所示:-课程信息表(2)教师信息数据库:记录院系教师的基本信息属性:(教师姓名,教师代码,职称,学位,住所)其中教师代码唯一标识一位教师,教师职称和学位确定教师优先级,住所判断老师是否在校外居住,排课时给予一定的优先级。
如表3-2所示:表教师表(3)教室信息数据库:记录教室的基本信息属性:(教室名称,教师代码,教室容量,教室性质)其中教室代码唯一标识一个教室,教室容量和性质分别判断是否与班级和课程性质的相匹配。
如表所示:教室表(4)班级信息数据库:记录班级的基本信息\属性:(班级号,班级代码,班级人数,所在专业,所属年级)其中班级代码唯一标识一个班级,所属年级用来确定该班级有哪些课程。
如表所示:班级表(5)课程申请库:记录课程申请的基本信息属性:(申请代码,班级名称,课程名称,开始周,周学时,教师姓名,学分,开始周,周数)其中申请代码唯一标识一个申请记录。
如表所示:"课程表(6)班级和教室课表库:记录班级和教室的课表信息,按班级和教室生成相应的课表(7)密码表库:记录用户信息和用户相对应的密码,根据用户的身份设置系统的权限,如表所示:{密码表^E-R 图数据库设计实体和属性的定义:班级(班级号,学院名,专业名,班级人数)课程(课程代码,课程名称,学时,学分,所属专业,任课教师编号) 教师(教师编号,姓名,职称,所属系别) 时间(上课时间,教学日,教学周,学期)教室(地点,容纳人数,是否为多媒体教室 )#、|9. 关系数据库的逻辑设计(1)导出初始关系模式((2)产生子模式;子模式是用户所用到的那部分数据的描述。
除了指出用户用到的数据外,还应指出数据与概念模式中相应数据的联系,即指出概念模式与子模式之间的对应性。
如表所示:数据结构和程序(模块)关系本系统中,各个模块使用到相应的数据库中的表的关系,如表所示:其中●表示该数据表和相对应的模块间的对应关系。
10.算法设计1)排课细节及需求排课细节需求大体上就是系统开发者需要进一步和用户进行协商,甚至要进入用户的单位深入了解情况,使得开发出来的系统在任何一个环节都能满足用户的要求,甚至比用户想象的更加完美。
由于排课算法以及冲突检测在细节上有很多限制,在设计之前我们做了详细的讨论和分析,得到排课系统有以下细节需求:(1)“公共基础课和公选课优先固定”,由于这两种课一般由教务处制订课程计划,因此应该在自动排课之前将它们优先固定。
(2)“一师多课”冲突情况,即一位教师在同一时间内排了一门以上的课。
(3)“一室多课”冲突情况,即一个教室在同一时间内排了一门以上的课。
(4)“一班多课”冲突情况,即一个班级在同一时间内排了一门以上的课。
(5)“教室容量匹配”情况,即上课班级人数应该与所在教室的人数匹配。
(6)“合班和分班课程”情况,即在排课时要考虑像英语这样的分班课和政治这样的合班课如何排课。
(7)“课程单双周”情况,即某些总课时较少的课程,可以考虑在单周或双周排课。
:(8)“同一课程间隔”情况,尽量让同一课程在一周内课时内的排课分布均匀。
(9)“课程优先级”情况,尽量让学分值高的和重要的课程排在黄金时间,课程优先级低的排在其他时间。
(10)“课程扩充”情况,如果正常情况下无法满足课程的需要,就要在晚上或者周六日进行课时的扩充。
(11)“课程与教室匹配”情况,课程要求的条件必须与教室设备条件相匹配,是否需要多媒体授课等。
2)算法说明(1)变量定义及初始化获取申请课程数量(appNum)及教室数量(roomNum),定义排课数组arr[weekday][time][roomNum][1],其中排课数组中的各维数含义表示如下:Weekday:表示一周的天数,取值为0-5;~Time:每天的上课时间,取值为0-4,分别为(1和2,3和4,5和6,7和8,9和10);roomNum:教室的编号;最后一维表示课程的码值,码值是课程的唯一标识,排课数组的这一维记录了某天某个时候某个教室所上的课程,是冲突检测的唯一根据;定义申请课程数组app(appNum),数组的下标表示申请码,数组值表示申请课程的内容,包括教师姓名,班级名称,周课数,课程名称。