林丽娟 兰明 庄兰花排课系统.doc_第1页
林丽娟 兰明 庄兰花排课系统.doc_第2页
林丽娟 兰明 庄兰花排课系统.doc_第3页
林丽娟 兰明 庄兰花排课系统.doc_第4页
林丽娟 兰明 庄兰花排课系统.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南 京 工 程 学 院课程设计说明书课 程: 数据库管理系统 题 目: 排课系统 系 部: 经济管理学院 专 业: 信息管理与信息系统 班 级: 信管051 组 员: 林丽娟 庄兰花 兰明 设 计 时 间:2008年12月30日 至 2008年12月31日 指 导 者: 夏 勇 讲师 (姓 名) (专业技术职务) 2008 年 12 月 南 京一、引言 (一)系统简介排课系统是学校用来进行排课的重要工具。它既可以是一个独立运作的管理系统,也可以作为学校信息管理系统的一个子系统。主要内容包括以下几项:条件设置,主要负责管理班级信息、课程信息、教师信息和教学时间信息。课表设置,主要负责进行课表安排、课表调整和查询打印。系统管理,主要负责用户管理、密码维护、重新登录和初始化。(二)系统及数据库的特点本系统利用VB开发前台界面,用SQL Server 开发后台数据库,用VB中的ADO控件连接后台数据库。界面友好,简洁美观,功能齐全便于操作,非常适用于中小学校的排课操作。二、系统分析(一)功能分析:1、能够对排课条件进行管理2、能够自行进行排课,生成科学、合理的课表。3、用户可以对课表进行查询和打印。4、有效地对系统信息进行维护。5、减轻教务管理人员的工作任务,减少人员配置,降低管理成本。(二)需求分析在学校里,排课是一件很复杂但又很重要的事,它包含很多信息数据的管理。以前的排课管理和数据处理都是手工操作,工作量大,出错率高,而且出错后不易更改,通常使管理工作混乱而又复杂。鉴于上诉情况,根据以上对系统特点和功能的分析,一个标准的排课系统应该包括条件设置、课表管理、系统管理等几大功能,同时每一个功能模块又都包含一系列子模块。排课人员登陆系统操作流程如图:班级、课程、教师、时间等的设置条件设置操作 登录成功课表安排、课表调整、查询功能课表管理操作用户登录用户登录用户信息、修改密码、重登录、初始化等系统管理操作确认输入无误,重新登录 。 登录失败系统登录操作流程图三、系统设计(一)总体方案设计(总体构架和具体模块划分与设计)班级设置课程设置条件设置教师设置时间设置课表安排课表调整课表管理排课系统查询打印用户管理密码维护系统管理重新登录初始化“班级设置”模块负责维护班级信息,主要有增加、修改、删除和查询功能。班级信息包括班级名称、班级人数、所在教室和班主任等。每个班级都有自己的教室,这样教室资源不会发生冲突。“课程设置”模块负责维护课程信息,同时进行班级课程分配。可将课程分配到各班级,并指定授课的时间和任课教师。课程信息包括课程名称、总节数、每周节数;班级课程信息包括分配ID、班级名称、课程名称、总节数、每周节数、课程分布和任课教师。“教师设置”模块负责维护教师的基本信息,包括教师编号、教师姓名、所任课程、电话和邮箱。“时间设置”模块负责学校每天的教学时间安排,包括节号、时间段、备注等信息。“课表安排”模块负责对课程的安排,采用“探测法”生成课表。系统排完课程受,将排课结果存在排课信息表内。排课信息包括排课ID、班级名称、节号、星期一、星期二、星期三、星期四、星期五、星期六和星期日。为了能够更合理地进行排课,遵循如下几项排课规则:1、 尽量将同一门课程的两节课进行累排。、2、 教师只能任一门课程,但可以带多个班级的同一门课程。3、 教师同一时间只能为一个班级上课。4、 课程安排必须严格按照课程分布来进行。“课表调整”模块运行管理人员对课表进行调整。“查询打印”模块提供按班级和教师课表进行查询和打印的功能。“用户管理”模块负责管理用户信息。用户信息包括用户ID、用户名称、用户类别、密码、电话和邮箱等。用户类别有教师和管理人员。教师具有“查询打印”、“密码维护”、“重新登录”3个模块的使用权限,管理人员具有全部权限。“密码维护”模块负责维护用户密码信息,为用户提供更改密码的功能。“重新登录”模块负责为用户提供重新登录的功能。“初始化”模块负责初始化数据,并有选择地对数据表进行清空。(二)数据库设计1. 概念模型设计(从实践概括抽象出理论模型E/R)班级名称班级人数邮箱电话所任课程 所在教室教师姓名上课教师班级 1 N教师编号班主任 1 M安排 N任课 N课程名称 1排课课程时间段 M 节号、总节数时间段每周节数备注 其中,班级,课程及时间段各实体之间的具体关系如下:安排课程班级 M N班级课程信息表 生成时间段班级排课排课信息表 生成 (二)逻辑设计 (从理论E/R模型到理论关系模型的整理转换) 通过E/R模型到关系模型的转化,可以得到如下关系模式:(1)班级实体集转换为 关系 班级信息表(班级名称,班级人数,所在教室,班主任)(2)课程实体集转换为 关系 课程信息表(课程名称,总节数,每周节数)(3)教师实体集转换为 关系 教师信息表(教师编号,教师姓名,所任课程,电话,邮箱)(4)时间段实体转换为 关系 时间段信息表(节号,时间段,备注)(5)班级安排课程的联系转换为 关系 班级课程信息表(分配ID,班级名称,课程名称,总节数,每周节数,课程分布,任课教师)(6)排课联系转换为 关系 排课信息表(排课ID,班级名称,节号,星期一,星期二,星期三,星期四,星期五,星期六,星期日)每个关系模式的主键码都用下划线标出。同时,对于从联系导出的关系班级课程信息表,为其设置了主键分配ID,同时必须符合节号和班级名称的外码约束;为排课信息表设置了主键排课ID,同时必须符合班级名称和课程名称的外码约束。 (三)物理设计1.为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引,以下是各表中建立索引的表项: (1)排课信息表(排课ID) (2)教师信息表(教室编号) (3)时段信息表(节号) (4)班级信息表(班级名称) (5)班级课程信息表(分配ID)(6)用户信息表(用户ID)(7)课程信息表(课程名称)2用SQL实现设计 实现该设计的环境为Windows 2000 Perfessinal+MSSQLServer 2000(1)建立排课信息表 CREATE TABLE dbo.排课信息表 ( 排课ID numeric(18, 0) IDENTITY (1, 1) NOT NULL , 班级名称 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 节号 char (6) COLLATE Chinese_PRC_CI_AS NOT NULL , 星期一 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL , 星期二 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL , 星期三 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL , 星期四 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL , 星期五 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL , 星期六 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,星期日 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARY(2)建立教师信息表 CREATE TABLE dbo.教师信息表 ( 教师编号 char (6) COLLATE Chinese_PRC_CI_AS NOT NULL , 教师姓名 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 所任课程 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 电话 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ,邮箱 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARY(3) 建立时段信息表 CREATE TABLE dbo.时间段信息表 ( 节号 char (6) COLLATE Chinese_PRC_CI_AS NOT NULL , 时间段 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,备注 text COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARY TEXTIMAGE_ON PRIMARY(4)建立班级信息表 CREATE TABLE dbo.班级信息表 ( 班级名称 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 班级人数 int NULL , 所在教室 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,班主任 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARY(5)建立班级课程信息表 CREATE TABLE dbo.班级课程信息表 ( 分配ID numeric(18, 0) IDENTITY (1, 1) NOT NULL , 班级名称 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 课程名称 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 总节数 int NOT NULL , 每周节数 int NOT NULL , 课程分布 char (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,任课教师 char (6) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON PRIMARY(6)建立用户信息表 CREATE TABLE dbo.用户信息表 ( 用户ID char (6) COLLATE Chinese_PRC_CI_AS NOT NULL , 用户名称 char (10) COLLATE Chinese_PRC_CI_AS NOT NULL , 用户类别 char (10) COLLATE Chinese_PRC_CI_AS NOT NULL , 密码 char (10) COLLATE Chinese_PRC_CI_AS NULL , 电话 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL , 邮箱 nvarchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARY(7)建立课程信息表 CREATE TABLE dbo.课程信息表 ( 课程名称 nvarchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 总节数 int NOT NULL , 每周节数 int NOT NULL ) ON PRIMARY (8)修改排课信息表 ALTER TABLE dbo.排课信息表 WITH NOCHECK ADD CONSTRAINT PK_排课信息表 PRIMARY KEY CLUSTERED (排课ID) ON PRIMARY (9)修改教师信息表 ALTER TABLE dbo.教师信息表 WITH NOCHECK ADD CONSTRAINT PK_教师信息表 PRIMARY KEY CLUSTERED (教师编号) ON PRIMARY (10)修改时间段信息表 ALTER TABLE dbo.时间段信息表 WITH NOCHECK ADD CONSTRAINT PK_时间段信息表 PRIMARY KEY CLUSTERED (节号) ON PRIMARY (11)修改班级信息表 ALTER TABLE dbo.班级信息表 WITH NOCHECK ADD CONSTRAINT PK_班级信息表 PRIMARY KEY CLUSTERED (班级名称) ON PRIMARY (12)修改班级课程信息表 ALTER TABLE dbo.班级课程信息表 WITH NOCHECK ADD CONSTRAINT PK_班级课程信息表 PRIMARY KEY CLUSTERED (分配ID) ON PRIMARY (13)修改用户信息表 ALTER TABLE dbo.用户信息表 WITH NOCHECK ADD CONSTRAINT PK_用户信息表 PRIMARY KEY CLUSTERED (用户ID) ON PRIMARY (14)修改课程信息表 ALTER TABLE dbo.课程信息表 WITH NOCHECK ADD CONSTRAINT PK_课程信息表 PRIMARY KEY CLUSTERED (课程名称) ON PRIMARY (15)修改排课信息表 ALTER TABLE dbo.排课信息表 ADD CONSTRAINT FK_排课信息表_班级信息表 FOREIGN KEY (班级名称) REFERENCES dbo.班级信息表 (班级名称) CONSTRAINT FK_排课信息表_时间段信息表 FOREIGN KEY (节号) REFERENCES dbo.时间段信息表 (节号)(16)修改教师信息表 ALTER TABLE dbo.教师信息表 ADD CONSTRAINT FK_教师信息表_课程信息表 FOREIGN KEY (所任课程) REFERENCES dbo.课程信息表 (课程名称(17)修改班级课程信息表 ALTER TABLE dbo.班级课程信息表 ADD CONSTRAINT FK_班级课程信息表_班级信息表 FOREIGN KEY ( 班级名称) REFERENCES dbo.班级信息表 (班级名称), CONSTRAINT FK_班级课程信息表_课程信息表 FOREIGN KEY (课程名称 ) REFERENCES dbo.课程信息表 (课程名称)3、 模块设计(1)班级课程信息模块: SQL = select 班级名称 from 班级信息表 初始化课程ComboBox SQL = select 课程名称 from 课程信息表 SQL = select 班级名称,课程名称,总节数,每周节数,课程分布,任课教师 from 班级课程信息表 SQL = SQL & where 班级名称= & Trim(CboQuery.Text) & 获取课程信息的总节数和周节数 SQL = select 课程名称,总节数,每周节数 from 课程信息表 SQL = SQL & where 课程名称= & Trim(CboCourse.Text) & 获得教该课程的教师,初始化教师ComboBox SQL = select 教师编号,教师姓名 from 教师信息表 SQL = SQL & where 所任课程= & Trim(CboCourse.Text) & (2)班级设置模块: 查询班级信息 SQL = SELECT * FROM 班级信息表 ORDER BY 班级名称 检查唯一性 SQL = select * from 班级信息表 where 班级名称= & Trim(txt(0).Text) & (3)教师设置模块: 查询教师信息 SQL = SELECT * FROM 教师信息表 ORDER BY 教师编号 检查唯一性 SQL = select * from 教师信息表 where 教师编号= & Trim(txtId.Text) & (4)课程设置模块: 查询课程信息 SQL = select * from 课程信息表 SQL = SELECT 课程名称 FROM 课程信息表 ORDER BY 课程名称(5)时间设置模块: 查询时间段信息 SQL = select * from 时间段信息表 SQL = select count(*) from 时间段信息表 (6)课表安排模块: 查询班级课程信息 SQL = SELECT 课程名称,总节数,每周节数,课程分布,任课教师 FROM 班级 课程信息表 删除排课信息表 SQL = delete from 排课信息表 得到班级名称集 SQL = select 班级名称 from 班级信息表 order by 班级名称 得到节号集 SQL = select 节号 from 时间段信息表 order by 节号 将初始排课信息插入到课表中 SQL = insert into 排课信息表(班级名称,节号,星期一,星期二,星期三,星 期四,星期五,星期六,星期日) 得到班级的课程集 SQL = select 课程名称 from 班级课程信息表 where 班级名称= & strClass & order by 课程名称 将M_courseTable矩阵写入到排课信息表 SQL =SELECT节号,星期一,星期二,星期三,星期四,星期五,星期六,星期日 SQL = SQL & FROM 排课信息表 where 班级名称= & strClass & ORDER BY 节号 得到课程信息 SQL = select 班级名称,课程名称,每周节数,课程分布 from 班级课程信 息表 SQL = SQL & where 班级名称= & strClass & and 课程名称= & strCourse & 得到当前课程的任课教师 SQL = select 任课教师 from 班级课程信息表 where 班级名称= & M_class & and 课程名称= & M_course & 得到教师所有的授课班级 SQL = select 班级名称 from 班级课程信息表 where 任课教师= & teacher & (7)课表调整模块: 查询班级名称 SQL = SELECT 排课ID,班级名称,节号,星期一,星期二,星期三,星期四,星期五,星期六,星期日 SQL = SQL & FROM 排课信息表 where 班级名称= & Trim(CboQuery.Text) & ORDER BY 班级名称,节号 密码维护模块: SQL = select 用户ID,用户名称,密码 from 用户信息表 where 用户ID= & UserID & SQL = SQL & and 密码= & pOld & (8)用户管理模块: 得到用户信息 SQL = select * from 用户信息表 order by 用户ID(9)重新登录模块: 判断用户是否存在 SQL = select * from 用户信息表 where 用户ID= & UserID & 四、系统实施(一) 运行说明(主要功能界面及其效果图)1、主界面:2、条件设置(1)班级设置(2)课程设置(3)教师设置3、课表管理(1)课表安排(2)课表调整(3)查询打印4、系统管理(1)用户管理(2) 密码维护(3)重新登录(二)在调试中发现的问题说明1、无法连接到数据库原因:没有添加microsoft ado data control 6.0控件,或没有连接到所在的数据库解决方法:Private Sub MDIForm_Activate()ConnectionString=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;Persist Security Info=False;Initial Catalog=排课系统;Data Source=localhostEnd Sub2、初始化错误原因:数据库中没有记录,无法连接到数据库解决方法:在表中添加记录五、设计总结与体会1、技术方案 首先,在SQL Server中建立数据库和表及表的联系和约束。 本系统通过SQL Server和VB软件对排课系统进行设计,在VB环境中导入SQL Server数据库。为了能够对数据库访问进行集中处理,需要创建一个专门访问数据库的公用模块。在项目资源管理器中为项目添加一个模块,并将其保存为QPeratDataBase.Bas。并在工程里选择部件,单击microsoft ado data control 6.0控件连接到数据库,在Sub Main中的程序代码中加入Private Sub MDIForm_Activate()ConnectionString=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;Persist Security Info=False;Initial Catalog=排课系统;Data Source=localhostEnd Sub2、软件开发 本系统主界面由条件设置,课程管理和用户管理三个模块组成。在主界面中,用菜单编辑器对话框编辑菜单项,在主创体运行时需要调用SetRight过程,该过程将根据不同的用户类型来设置系统的使用权限。当用户单击不同的菜单时,将进入不同的界面。用Click事件来完成。各个模块主要是提供增加、修改、删除、打印和查询功能,这些功能需要借助SQL语言来实现。比如查询班级信息:(1)在控件中显示班级信息 Dim key As String If rs.RecordCount 0 Then key = Trim(ListView1.SelectedItem) SQL = SELECT * FROM 班级信息表 WHERE 班级名称= & key & Set rs = SelectSQL(SQL, msg) Call ShowData 重新显示数据 End If(2)添加操作 所有控件重置 Call ControlClear 设置控件Enable值为可用 Call ControlEnable(True) 设置标志flag,表示所进行的操作为添加 flag = Add 添加、修改、删除按钮不可用,取消、保存按钮可用 CmdAdd.Enabled = False: CmdModify.Enabled = False: CmdDelete.Enabled = False CmdCancel.Enabled = True: CmdSave.Enabled = True(3)修改操作 If rs.RecordCount 0 Then 如果存在记录 设置控件Enable值 Call ControlEnable(True) 班级名称不可以修改,其他控件可用 txt(0).Enabled = False 设置标志flag,表示所进行的操作为修改 flag = Modify 添加、修改、删除按钮不可用,取消、保存按钮可用 CmdAdd.Enabled = False: CmdModify.Enabled = False: CmdDelete.Enabled = False CmdCancel.Enabled = True: CmdSave.Enabled = True Else MsgBox (没有可以修改的数据!) End If(4)删除操作On Error GoTo ErrMsg 错误处理 If rs.RecordCount 0 Then msg = MsgBox(删除该条记录吗?, vbYesNo) If msg = vbYes Then rs.Delete 删除数据 清空控件 Call ControlClear Call LoadData 重新装载数据 Call ShowData 显示数据 设置控件Enable值为不可用 Call ControlEnable(False) 添加、修改、删除按钮可用,取消、保存按钮不可用 CmdAdd.Enabled = True: CmdModify.Enabled = True: CmdDelete.Enabled = True CmdSave.Enabled = False: CmdCancel.Enabled = False MsgBox (成功删除的数据!) End If Else MsgBox (没有可删除的数据!) End If Exit SubErrMsg: 报告出错信息 MsgBox Err.Description, vbExclamation, 出错(5)保存操作On Error GoTo ErrMsg 错误处理 If Not CheckData Then Exit Sub 如果数据不合法就退出 If flag = Modify Then 如果是修改数据 msg = MsgBox(您确实要修改这条数据吗?, vbYesNo) If msg = vbYes Then Call setData 设置数据 Else Exit Sub End If ElseIf flag = Add Then 如果是添加新数据 rs.AddNew Call setData 设置数据 End If rs.Update 更新数据 设置控件的可用性 CmdModify.Enabled = True: CmdDelete.Enabled = True: CmdAdd.Enabled = True CmdSave.Enabled = False: CmdCancel.Enabled = False If flag = Add Then MsgBox (成功添加数据!) Else MsgBox (成功更新数据!) End If Call LoadData 重新装载数据 定位到添加或修改记录 If rs.RecordCount 0 Then rs.MoveFirst rs.Find (班级名称= & Trim(Me.txt(0).Text) & ) If Not rs.EOF Then Call ShowData 重新 显示数据 End If Exit SubErrMsg: 报告出错信息 MsgBox Err.Description, vbExclamation, 出错End SubPrivate Function CheckData() As Boolean检查数据的合法性 Dim rst As ADODB.Recordset Dim msgt As String msgt = 检查数据 If Trim(txt(0).Text) = Then 检查班级名称是否为空 msgt = 班级名称为空; 光标定位 txt(0).SetFocus txt(0).SelStart = 0 txt(0).SelLength = Len(txt(0).Text) ElseIf Not IsNumeric(Me.txt(1).Text) Then msgt = msgt & 班级人数输入不合法; txt(1).Text = 0 ElseIf Trim(txt(2).Text) = Then 检查所在教室是否为空 msgt = msgt & 所在教室为空; 光标定位 txt(2).

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论