某中学排课管理系统课程设计报告

学号 《某中学的排课管理系统》
课程设计报告 题目:
某中学的排课管理系统 专业:
网络工程 班级:
姓名:
指导教师:
成绩:
计算机学院 2017年X月X日 目录 一、 设计内容及要求 2 1.1研究的目的和意义 2 1.2数据字典 2 1.3全系统的数据项 3 1.4数据流图 4 二、 概要设计 4 2.1E-R图 4 学生实体E-R图 4 2.2系统说明书 7 三、系统关系模型及结构图 14 3.1关系模型 14 3.2参照完整性约束条件 14 3.3系统结构图 15 四、程序代码 15 4.1创建表 15 4.2程序编码 19 五、参考文献 23 一、 设计内容及要求 学生隶属班级,班级按照课程表上课,课程由老师教授,这些都要有管理人员来管理。总结出如下需求信息:
1) 一个班级有多个学生;

2) 一个学生有多门课,一门课对应多个学生;

3) 一个教师可以教授多门课,一门课可以由多个教师来教授;

4) 一个班级对应一张班级课程表,一个教师也对应一张教师课程表;

5) 一个教师可以教授多个班级;

经过对上述系统功能的分析和需求总结,设计总结如下:
1.1研究的目的和意义 教务管理系统是学校最为核心的信息系统,排课系统又是教务管理系统中非常重要的一个子系统。学校的日常教学管理工作均围绕着它展开。排课系统体现了各学校不同于其它学校的个性化的特点,又将随着学校的人才培养模式的改革而变化。它不仅可以从侧面反映出学校领导的办学思想,也能体现出学校教育教学管理的能力和水平。

随着Internet和信息技术的发展,我国高校教育信息化建设成为信息化建设的前沿阵地和信息时代的弄潮先锋。在国家对高等教育大力发展政策的刺激下,高校教育事业得到了迅速发展,在新的教务管理模式和管理体制下,如何利用有限的资源,以最优化的形式满足教务管理的需要成为了目前急需要解决的重要课题。

通过建立一个以网络应用为基础、高性能、高可靠性、高安全性的云南大学排课系统,并将管理思想与计算机技术、网络技术有机结合,开发出真正符合现代教育管理理念与学习规律、更稳定、功能更强,服务更全面的校院两级排课系统,才能更好地为学生和教学服务,让教务管理人员真正的将精力花在提高教学教务管理质量上,而不是简单和繁重的日常事务处理上。

经过对上述系统功能的分析和需求总结,设计总结如下:
1.2数据字典 1)学生信息表 字段名称 数据类型 默认值 允许空 主键 studentID int 是 name char(10) sex char(2) 是 birthday datetime 是 classID int 是 2)班级信息表 字段名称 数据类型 默认值 允许空 主键 classID int 是 classname char(20) 3)教师信息表 字段名称 数据类型 默认值 允许空 主键 teacherID int 是 name char(10) sex char(2) 是 age int 是 courseID int 是 4) 课程信息表 字段名称 数据类型 默认值 允许空 主键 courseID int 是 classname char(20) teacherID int 是 5)课程表信息表 字段名称 数据类型 默认值 允许空 主键 星期 char(20) 是 第一节 char(20) 是 ...... 第八节 char(20) 是 班级ID Int 6)用户信息表 字段名称 数据类型 默认值 允许空 主键 users varchar(50) 是 password varchar(50) 1.3全系统的数据项 数据项:
1) 学生信息:学生ID、姓名、性别、出生日期、所属班级。

2) 班级信息:班级ID、所属年级。

3) 教师信息:教师ID、姓名、性别、年龄。

4) 课程信息:课程ID、课程名称、教师ID。

5) 课程表信息:星期、第一节、第二节、第三节、第四节、第五节、第六节、第七节、第八节、班级ID。

1.4数据流图 管理员(用户)
用户 录入信息存储 查询到的信息反馈 排课系统 按系统允许的条件查询信息 信息库 二、 概要设计 2.1E-R图 学生 学生实体E-R图 学生ID 姓名 性别 出生日期 班级ID 班级实体E-R图 班级 班级ID 班级名称 教师实体E-R图 教师 教师ID 姓名 性别 年龄 课程ID 课程实体E-R图 课程 课程ID 课程名称 课程表实体E-R图 第一节 班级ID 第二节 …… 课程表 第八节 全局E-R图 属于 包含 学生 班级 学习 被学习 教授 被教授 教师 课程 被包含 包含 课程表 2.2系统说明书 1) 系统要求 某中学的排课管理系统 l 实现班级、课程等基本信息的管理;

l 实现学生、教师信息的管理;

l 实现班级课程及课程的任课教师和排课管理;

l 创建存储过程检测指定教师、指定节次是否有课;

l 创建存储过程生成指定班级的课程表;

l 创建存储过程生成指定老师的课程表;

l 建立数据库相关表之间的参照完整性约束。

2) 方案和概图 a)设计方案 学生注册 班级设置 课程信息设置 班级信息输入 排课 信息录入 学生信息输入 课程 信息输入 班级信息管理 学生信息管理 课程表信息管理 课程 信息管理 教师 注册 教师信息录入 教师信息管理 b)系统概图 用户登录界面 错误提示界面 排课系统主界面 教师信息主界面 教师信息查询 报错 学生信息查询主界面 学生信息查询 报错 教师课表信息查询主界面 课程信息查询 班级信息查询 报错 查询班级课程表 教师课程表查询 三、系统关系模型及结构图 3.1关系模型 1)学生(学生ID,姓名,性别,出生日期,班级ID)
主键:学生ID 外键:班级ID 2)班级(班级ID,班级名称)
主键:班级ID 3)教师(教师ID,姓名,性别,年龄,)
主键:教师ID 4)课程(课程ID,课程名称,教师ID)
主键:课程名称 外键:教师ID 5)课程表1(星期,第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节)
主键:星期 外键:第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节 6)课程表2(星期,第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节,课程名称)
主键:星期 外键:第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节 3.2参照完整性约束条件 学生——班级 学生.班级ID=班级.班级ID 教师——课程 教师.课程ID=课程.课程ID 课程表——班级 课程表.班级ID=班级.班级ID 课程表——教师 课程表.教师ID=教师.教师ID 3.3系统结构图 排课管理系统 教师信息管理 课程表管理 学生信息管理 课程信息管理 班级信息管理 系统用户管理 用户管理 密码管理 班级信息修改 班级信息查询 班级信息添加 课程信息修改 课程信息查询 课程信息添加 学生信息查询 教师信息添加 学生信息添加 学生信息修改 教师信息修改 教师信息查询 班级课程表管理 教室课程表管理 班级课程添加 班级课程查询 班级课程修改 教师课程查询 教师课程添加 教师课程修改 四、程序代码 4.1创建表 1)
class表 CREATE TABLE [dbo].[class]( [classID] [int] NOT NULL, [classname] [nchar](20) NOT NULL, CONSTRAINT [PK_class] PRIMARY KEY CLUSTERED ( [classID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 2)
course表 CREATE TABLE [dbo].[course]( [courseID] [int] NOT NULL, [coursename] [nchar](20) NOT NULL, [teacherID] [int] NULL, CONSTRAINT [PK_course] PRIMARY KEY CLUSTERED ( [coursename] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ALTER TABLE [dbo].[course] WITH CHECK ADD CONSTRAINT [FK_course_teacher1] FOREIGN KEY([teacherID]) REFERENCES [dbo].[teacher] ([teacherID]) ALTER TABLE [dbo].[course] CHECK CONSTRAINT [FK_course_teacher1] 3)
student表 CREATE TABLE [dbo].[student]( [studentID] [int] NOT NULL, [name] [nchar](10) NOT NULL, [sex] [nchar](2) NULL, [birthday] [datetime] NULL, [classID] [int] NULL, CONSTRAINT [PK_student] PRIMARY KEY CLUSTERED ( [studentID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ALTER TABLE [dbo].[student] WITH CHECK ADD CONSTRAINT [FK_student_class] FOREIGN KEY([classID]) REFERENCES [dbo].[class] ([classID]) ALTER TABLE [dbo].[student] CHECK CONSTRAINT [FK_student_class] 4)
teacher表 CREATE TABLE [dbo].[teacher]( [teacherID] [int] NOT NULL, [name] [nchar](10) NULL, [sex] [nchar](2) NULL, [age] [int] NULL, CONSTRAINT [PK_teacher] PRIMARY KEY CLUSTERED ( [teacherID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 5)
courselist1表 CREATE TABLE [dbo].[courselist1]( [第一节] [nchar](20) NULL, [第二节] [nchar](20) NULL, [第三节] [nchar](20) NULL, [第四节] [nchar](20) NULL, [第五节] [nchar](20) NULL, [第六节] [nchar](20) NULL, [第七节] [nchar](20) NULL, [第八节] [nchar](20) NULL, [星期] [nchar](20) NULL ) ON [PRIMARY] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course] FOREIGN KEY([第一节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course1] FOREIGN KEY([第二节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course1] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course2] FOREIGN KEY([第三节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course2] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course3] FOREIGN KEY([第四节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course3] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course4] FOREIGN KEY([第五节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course4] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course5] FOREIGN KEY([第六节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course5] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course6] FOREIGN KEY([第七节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course6] ALTER TABLE [dbo].[courselist1] WITH CHECK ADD CONSTRAINT [FK_courselist1_course7] FOREIGN KEY([第八节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist1] CHECK CONSTRAINT [FK_courselist1_course7] 6)
courselist2表 CREATE TABLE [dbo].[courselist2]( [第一节] [nchar](20) NULL, [第二节] [nchar](20) NULL, [第三节] [nchar](20) NULL, [第四节] [nchar](20) NULL, [第五节] [nchar](20) NULL, [第六节] [nchar](20) NULL, [第七节] [nchar](20) NULL, [第八节] [nchar](20) NULL, [星期] [nchar](20) NULL ) ON [PRIMARY] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course] FOREIGN KEY([第一节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course1] FOREIGN KEY([第二节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course1] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course2] FOREIGN KEY([第三节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course2] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course3] FOREIGN KEY([第四节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course3] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course4] FOREIGN KEY([第五节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course4] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course5] FOREIGN KEY([第六节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course5] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course6] FOREIGN KEY([第七节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course6] ALTER TABLE [dbo].[courselist2] WITH CHECK ADD CONSTRAINT [FK_courselist2_course7] FOREIGN KEY([第八节]) REFERENCES [dbo].[course] ([coursename]) ALTER TABLE [dbo].[courselist2] CHECK CONSTRAINT [FK_courselist2_course7] 7)
用户user表 CREATE TABLE [dbo].[users]( [username] [varchar](50) NOT NULL, [password] [varchar](50) NOT NULL, CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED ( [username] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 8)创建存储过程生成指定班级的课程表 create proc up_class(@classID int) as select * from courselist1 where courselist1.classID=@classID execute up_class '1101' 9)创建存储过程生成指定老师的课程表 create proc up_teacher(@teacherID int) as select * from courlist1 where courselist1.teacherID=@teacherID execute up_teacher '1' 10)创建存储过程检测指定教师、指定节次是否有课 create proc up_teacheer(@teacherID int,@星期 nvarchar(50)) as select * from coueselist1 where courselist1.teacherID=@teacherID and courselist1.星期=@星期 execute up_teacher '1','第一节' 4.2程序编码 using System.Data.SqlClient; 1)
用户登录关键代码 if (textBox1.Text == ““) { MessageBox.Show(“用户名不能为空!“); return; } if (textBox2.Text == ““) { MessageBox.Show(“密码不能为空!“); return; } string constr = “server=.;database=中学排课系统;uid=sa;pwd=sa“; SqlConnection conn = new SqlConnection(constr); conn.Open(); try { string login = “select * from users where username = '“ + textBox1.Text.Trim() + “' and password = '“ + textBox2.Text + “'“; SqlCommand sqlCmd = new SqlCommand(login, conn); SqlDataReader sqlReader = sqlCmd.ExecuteReader(); sqlReader.Read(); if (sqlReader.HasRows) { sqlReader.Close(); start start = new start(); start.Show(); this.Hide(); } else { MessageBox.Show(“用户名或密码错误!“); } } catch (Exception ex) { MessageBox.Show(ex.Message); MessageBox.Show(“用户名或密码错误!“); } finally { conn.Close(); } 2)
查询关键代码(以教师信息查询为例)
private void chaxun_Click(object sender, EventArgs e) { if (ID.Text.Trim() == ““) { MessageBox.Show(“请填写教师编号!“); return; } string constr = “server=.;database=中学排课系统;uid=sa;pwd=sa“; SqlConnection conn = new SqlConnection(constr); conn.Open(); string str = “select * from teacher where teacherID=“+ID.Text.Trim(); SqlCommand command = new SqlCommand(str, conn); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; DataSet dataSet = new DataSet(); adapter.Fill(dataSet, “type“); dataGridView1.DataSource = dataSet.Tables[0]; conn.Close(); ID.Text = ““; } 3)
添加关键代码(以教师信息添加为例)
private void tianjia_Click(object sender, EventArgs e) { if (ID.Text.Trim() == ““ || na.Text.Trim() == ““ || se.Text.Trim()==““ || ag.Text.Trim()==““) { MessageBox.Show(“请填写完整信息!“); return; } string constr = “server=.;database=中学排课系统;uid=sa;pwd=sa“; SqlConnection conn = new SqlConnection(constr); conn.Open(); try { string str = “insert into teacher values ('“ + ID.Text.Trim() + “', '“ + na.Text.Trim() + “', '“ + se.Text.Trim() + “', “ + ag.Text.Trim() + “)“; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = str; sqlCommand.CommandType = CommandType.Text; sqlCommand.ExecuteNonQuery(); MessageBox.Show(“添加成功!“); } catch (Exception ex) { MessageBox.Show(“添加失败!“); } finally { conn.Close(); } teacherinformation_Load(sender, e); } 4)
删除关键代码(以教师信息删除为例)
private void shanchu_Click(object sender, EventArgs e) { if (ID.Text.Trim() == ““) { MessageBox.Show(“请填写教职工号!“); return; } if (MessageBox.Show(“确定删除吗?“, “提示“, MessageBoxButtons.OKCancel) == DialogResult.OK) { string constr = “server=.;database=中学排课系统;uid=sa;pwd=sa“; SqlConnection conn = new SqlConnection(constr); conn.Open(); try { string str = “delete from teacher where teacherID=“ + ID.Text.Trim(); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = str; sqlCommand.CommandType = CommandType.Text; sqlCommand.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(“删除失败!“); } finally { conn.Close(); } teacherinformation_Load(sender, e); } } 5)
修改关键代码(以教师信息修改为例)
在下边的文本框中显示选中的行 string id = ““; string mingzi = ““; string xingbie = ““; string nianling = ““; private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { id = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); mingzi = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString(); xingbie = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString(); nianling = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(); na.Text = mingzi; se.Text = xingbie; ag.Text = nianling; } 信息修改 private void xiugai_Click(object sender, EventArgs e) { string constr = “server=.;database=中学排课系统;uid=sa;pwd=sa“; SqlConnection conn = new SqlConnection(constr); conn.Open(); try { string str = “update teacher set name = '“ + na.Text.Trim() + “', sex = '“ + se.Text.Trim() + “', age = “ + ag.Text.Trim() + “ where teacherID = “+ id; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = str; sqlCommand.CommandType = CommandType.Text; sqlCommand.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(“修改失败!“); } finally { conn.Close(); } teacherinformation_Load(sender, e); } 五、参考文献 李彦鸿.全面学分制下高校教务管理信息系统的设计与实现[D].云南:云南大学,2006 王能斌.钱祥根.大学课程表调度系统一utss [J].计算机学报,2001(5) 张清绵,徐明.智能教学组织管理与课程表调度系统[J〕.大连理工大学学报,2002(2)

推荐访问:管理系统 课程设计 排课