网上选排课系统系统分析及详细设计一、前言顾名思义,网上选排课系统以网络为媒体,以网页的形式面向使用者或者管理者。系统设计采用ASP作为脚本语言。在数据库上考虑到快捷、有效,同时考虑到多用户使用同一数据库的情况,选择SQLSERVER2000作为数据库服务器。网上选排课系统的功能设计上可分为登录、排课和选课3个子系统。登录子系统区分排课者(即系统管理员)、教师和学生这三者的不同身份。给出不同的权限,在页面中根据身份判断其相应具有的功能来使用这套系统。排课子系统主要供排课者使用,排课者可以在这里进行一切与排课有关的活动;教师可在教师反馈系统中队对排课者提出反馈意见,供排课者排课时参考。选课系统面向学生,学生可以在此模块进行选课等相关操作。教师和学生还可以查询课程设置及教室安排等。二、需求分析分析可知,本系统的用户有3种类型,即:排课者(管理者)、教师、学生。不同用户需求的功能不同,同时应对不同的用户设定不同的权限。1.排课者(管理者)排课者的可以完成的操作有:设定选课时段、发布有关排课的消息、查看教师反馈、查询教室使用情况、查询教室基本情况、查询院系课程设置、排课、发布排课结果、查询排课结果、查询教师课表、更改排课、备份排课结果、导入排课结果、查询历史排课结果、查询学生课表、修改密码。2.教师教师可以完成的操作为有:查询教师课表、提出反馈意见、查询排课结果、按课程代号查询选课名单、按教师编号查询教师选课名单、查询学生课表、修改密码。3.学生学生拥有的权限为:查询课程详细情况、查询排课结果、按课程代号查询选课结果、按教师编号查询教师选课信息、查询学生课表、选课、退课、修改密码。具体功能需求如图1,图2,图3所示图1排课者功能权限图图2教师权限功能图查询历史排课结果发布有关排课消息查看教师反馈查看教室使用情况查询院系课程设置排课发布排课结果查询排课结果查询教师课表更改排课备份排课结果导入排课结果更改密码查询教室基本属性按教室查询排课信息息排课者设定排课时段教师查询教师课表查询学生课表更改密码按教师编码查询选课结果按课程代号查询选课结果查询排课就结果提出反馈意见图3学生的权限功能三、系统功能分析设计数据库设计1.实体联系设置分析选排课系统,其必须具备的实体为:管理者、教师、学生、课程、教室、教学楼。同时,为了明确选课范围,便于学生选课和管理者排课,还需要增加以下实体:排课、开课信息、反馈信息、排课备份、选课信息、选课时间段、选课通知、系统用户信息。其中,用户信息、选课通知、选课时间段、备份排课记录与去他实体没有直接的联系,作为单独的实体存储相关信息。分析实体间的联系后,得到的E-R模型图如图4所示:更改密码选课退课学生按教师编号查看教师选课名单按课程代号查看选课名单查询选课结果查询课程详细情况查看学生课表图4E—R模型图2.数据字典设计根据需求和上面的E—R图,建立所需表格(即建立数据字典),为每个实体添加所需要的属性。全部表格如下所示:表1排课表(ARRANGE)BACKUPARRANGELISTCOURSESELECTNOTICECOURSESETINGINFOCLASSROOMINFOCOURSEINFOBUILDINGINFOARRANGEDEPTINFOTEACHERINFOFEEDBACKCOURSESELECTSTUDENTINFO1:NUSERINFOCOURSESELECTINTERVALM:N1:NM:NN:11:NM:NM:N||N:1|0|0|0|0|00||0|0字段说明类型(长度)备注ARRANGE_ID排课编号int(4)主键,标识CLASSROOM_ID上课教室号int(4)外键DAY_TIME上课时间varchar(20)SETTING_ID课程设置号int(4)外键表2院系信息表(DEPTINFO)字段说明类型(长度)备注DEPT_ID院系编号char(10)主键DEPT_NAME院系名称nchar(10)表3学生信息表(STUDENTINFO)字段说明类型(长度)备注STUDENT_ID学生学号varchar(20)主键STUDENT_NAME学生姓名nvarchar(10)DEPT_ID所属院系标号char(10)外键MAJOR_ID专业号varchar(20)表4教师信息表(TEACHER_INFO)字段说明类型(长度)备注TEACHER_ID教师编号varchar(20)主键TEACHER_NAME教师姓名nvarchar(10)DEPT_ID所属院系编号char(10)外键表5教学楼信息表(BUILDING_INFO)字段说明类型(长度)备注BUILDING_ID教学楼编号int(4)主键,标识BUILDING_NAME教学楼名称nchar(10)表6教室信息表(CLASSROOMINFO)字段说明类型(长度)备注CLASSROOM_ID教室编号int(10)主键,标识CLASSROOM_NAME教室名称nchar(10)BUILDING_ID教学楼编号int(4)外键PROPERTY教室属性nchar(10)表7课程详细信息表(COURSEINFO)字段说明类型(长度)备注COURSE_ID课程编号char(20)主键COURSE_NAME课程名称nchar(20)NITRODOCTION课程介绍nvarchar(300)表8开课信息表(COURSEDETTINGIN)字段说明类型(长度)备注SETTING_IDint(4)主键,标识ORIENT_DEPT_IDvarchar(20)SCOREtinyint(1)SELECT_LIMITnchar(4)TEACHER_INFOvarchar(20)TEST_METHODnchar(4)默认值“无”COMMENTnvarchar(200)SELECTOR_NO_LIMITsmallint(1)COURSE_IDchar(20)DEPT_IDchar(10)GRADE_IDtinyint(1)表9反馈信息表(FEEDBACK)字段说明类型(长度)备注FEEDBACK_ID反馈信息编号smallint(1)主键FEEDBACK_TITLE反馈信息标题nvarchar(20)默认值“无”FEEDBACK_CONTENT反馈信息内容nvarchar(300)USER_ID用户IDvarchar(20)FEEDBACK_TIME反馈时间datetime(8)表10备份排课记录表(BACKUPARRANGELIST)字段说明类型(长度)备注LIST_ID列表号int(4)主键BACKUP_ID备份排课记录表IDvarchar(20)表11选课信息表(COURSESELECT)字段说明类型(长度)备注ARRANGE_ID排课编号int(4)STUDENT_ID学生编号varchar(20)表12选课时间段信息表(COURSEINTEVAL)字段说明类型(长度)备注BEGAIN_TIME开始选课时间datetime(8)END_TIME终止选课时间datetime(8)表13选课通知表(COURSESELECTNOTICE)字段说明类型(长度)备注NOTICE_ID通知编号smallint(1)主键,标识NOTICE_TITLE通知标题nvarchar(20)NOTICE_CONTENT通知内容nvarchar(3000)NOTICE_TIME通知时间datetime(8)NOTICE_HOT是否为“热点”bit(2)默认值“0”表14系统用户信息表(USERINFO)字段说明类型(长度)备注USER_TYPE用户类型(排课者,教师,学生)char(1)USER_ID用户编号int(4)USER_NAME用户名varchar(200)PASSWORD用户密码varchar(20)3.建立关系图根据上面设计的数据字典和E—R图,在数据库中建立相应的表,并建立表间的关系,并为各表添加主键约束,建立的关系图如图5所示。图5关系图4.建立存储过程系统中相互关联的联系比较多,使用存储过程能减少系统查表的时间,提高系统运行效率。并最低限度降低错误的发生概率。本系统中最为重要的两个存储过程就是身份验证和冲突检查。由以上分析可知,不同用户的能完成的操作是不同的,需要进行限制,系统采用登录身份验证模式对不同用户分配不同的权利。用户登录时,提交登录信息到数据库验证,数据库验证登录信息的有效性,对无效用户进行错误提示,对有效用户进行身份验证,显示验证结果并分配不同的数据库操纵权限,用户便能进入到相应的子系统进行操作。排课者进行排课时,需要检查是否有排课冲突,例如,同一教室或者同一教师在同一时间不能安排两门课程,同一课程不能在同一时间被排两次。这是逻辑上约束。因此在逻辑设计上,系统需要能完成冲突检查。用户身份验证存储过程数据流程图如图6所示,冲突检查存储过程数据流程图如7所示。用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用图6用户身份验证存储过程数据流程图用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用用示排用成功用用用用用用用用用用用用用用用用用用用用示冲突信息图7排课冲突检查存储过程数据流程图5.建立视图创建两个视图VIEW_ARRANGE和VIEW_SELECT,如图8所示。分别为查询排课信息和选课信息。二者均使用联合查询,其源代码见数据库文件。图8建立的视图系统功能实现针对不同的用户,网上选排课系统可分为三个子系统,身份验证子系统,排课子系统,选课子系统,排课子系统属于教务处或相关部门管理,而选课系统是面向全校学生的,需要与学校的其他系统进行数据交换,例如学生信息管理系统,学生成绩管理系统,院系专业设置系统,教学楼及教室管理系统等。这里假设其他系统已存在并已与本系统关联(只需将学生信息表,教师信息表,院系信息表等相关关系表放入本系统即可)。三个子系统相互关联,有的子系统实现的功能模块比较多,这些功能模块之间具有层次关系。下面是本系统使用到功能模块文件。功能模块2查询教室使用情况模块名称:查询教室使用情况参与者:排课者描述:在排课过程当中,排课者可以查询教室的使用情况。系统显示教学楼列表,排课者可以展开查看具体教室的使用情况。具体教室的使用情况为:每间教室的属性(如多媒体教室、计算机房、大、中和小班教室等);教室的使用情况,即从星期一到星期日的已占用情况(以一节课为单位)。功能模块2查询院系课程设置模块名称:查询院系课程设置参与者:排课者描述:在排课过程当中,排课者可以查询院系课程设置。系统显示院系列表。排课者可以展开查看具体院系的课程开设情况。具体院系的课程开设情况为:课程代号,课程名称,任课教师代号,教师名称和总课时等。功能模块3排课模块名称:排课参与者:排课者描述:排课者按年级排课。排课表内容包括课程代号,课程名称,授课院系,专业代号,专业名称,教师代号,考察方式,学分,开课时间,上课时间,地点,开课院系,最多上课人数,课程选择限制(必修、限选或任选)等。在排课过程当中,排课者可以查询教室使用情况和查询院系课程设置。通过查询院系课程设置栏,排课者可以拖曳课程到正在排的排课表。通过查询教室使用情况栏排课者可以拖曳教室到正在排的课表。在排课者提交排课表以后系统应当确保该排课方案中没有教师时间冲突和教室冲突。如果有冲突,系统应该提示排课者具体冲突的产生原因。功能模块4发布排课结果模块名称:发布排课结果参与者:排课者描述:系统保存通过发布的排课表。排课完成以后,通过发布的排课结果对所有教师可见,可以接受查询;同时通过发布的排课结果对选课系统可见。功能模块5修改排课结果模块名称:修改排课结果参与者:排课者描述:排课者可以修改发布或者没有发布的排课结果。其方式和排课模块是一样的。功能模块6查询排