资源描述
教学管理系统的设计与实现软件技术
西北大学
继续教育学院
成人高等教育毕业论文
题目: 教学管理系统的设计与实现
指导教师:
学生姓名:
学 号:
专 业: 软件技术
年 级: 级
学历层次: 专 科
学历形式: 函 授
完成时间:二0 年 月 日
摘 要
随着全球信息化的飞速发展,信息网络在人们的日常生活中已占据了十分重要的地位。以往面对面的教学方式已显然不能满足现在社会的需要,逐渐也开始把信息化引入教育领域中,从而打破了孔家和时间的限制,为老师和学生提供了更加便捷的途径。当前我校的教学资源库,具有海量的、无序的、共享性差的特点,导致了她的利用率也相当的低。各个院系都有各自的教学资源库,又导致了资源库的重复建设,造成了人力、物力、财力的严重浪费。
考虑到以上存在的问题,本文研究并设计了一套基于Web的网络教学资源管理系统,本系统中教师能够经过网络教授学生知识,给学生布置作业,完成网上批阅学生提交的作业,实现部分网络教学工作;学生能够经过网络学习,在网上查看并完成老师布置的作业,可查看本系统中提供的教学资源,岁时随思利用网络在线学习,提高学习效率。另一方面我们集中收集并规范我校内部各个学院零散的教学资源,充分发挥本系统教学资源能够共享的优势。该系统的开发研制弥补了传统教学方式中的不足之处,同时减轻了我校管理人员在教学资源管理工作中的压力,有效的提高教学质量。
本文首先接受了网络教学及教学资源的发展背景和现状并对教学资源管理系统的必要性、可行性进行了分析。根据教师、学生、教辅人员给出的需求分析,确定了系统所应具有的基本功能。采用B/S模式和当前流行的JSP技术对系统进行开发,然后根据需求分析设计出系统的总体结构及分析了各个子系统的具体功能,并给出了系统部分界面和实现的部分代码。最后对论文做了总结并对该系统的进一步研究做了展望,明确了下一步的工作和目标。
该系统经过测试运行,基本达到了预期目标。随着软件技术的不断发展和教学需要,本系统也为以后的不断更新升级留有空间。我相信本系统在我校的教学工作和管理工作中都能起到较高的实用价值和较好的应用前景。
关键词:教学资源管理系统,B/S模式,SQL Server ,查询
目 录
前 言 1
第1章 背景、目的及概述 2
1.1项目背景 2
1.2编写目的 2
1.3软件定义 2
1.4开发环境 2
第2章 需求分析 3
2.1信息要求 3
2.2处理要求 3
2.3安全性与完整性要求 4
第3章 概念结果设计 5
3.1基本E-R图设计 5
第4章 逻辑结构设计 8
4.1 E-R图的转换 8
4.2数据约束设计 9
第5章 主要模块的设计以及代码 10
5.1登陆模块设计 11
5.2管理员、教师、学生模块设计 14
5.3存储过程 27
5.4触发器 27
第6章 预测结果 29
6.1遇到的问题以及解决方法 29
6.1.1不同对话框数据的传递 29
6.1.2数据的级联删除 29
6.1.3学生成绩的分析 29
6.2设计的体会 29
结束语 31
致 谢 32
参考文献 33
前 言
教学管理是学校运作的中心枢纽,教学管理的质量直接关系到一所高校在当代社会竞争中的地位甚至生存与发展。当今时代,计算机信息处理技术的广泛应用,为高校教学管理提供了有力手段。一所高等学校要走在时代的先进行列,实现教学管理工作的现代化和科学化,其关键就在于要运用现代网络信息技术建立计算机教学管理系统,实现管理的电脑化。教学工作在学校的发展和建设中占有重要地位。教学管理水平的高低,在某种程度上反映了一所学校管理水平的整体状况。她与学校工作的其它方面有着密切的联系,对学校的教学工作、思想工作、管理工作、建设工作、教育改革以及教育方针的贯彻执行等产生重要作用与影响,而这一系列的工作有影响到整个学校的发展进程。在当前的形势下,随着社会的不断进步与发展,教育的现代化、规范化和管理现代化的步伐也不断加快。教育的现代化要求教学工作也应当现代化、规范化。管理现代化既包括管理思想、管理体制的现代化,也包括管理方法、管理手段的现代化。建立教学管理信息系统,加强计算机技术在高校教学管理中的应用,必将使高校教学管理工作更加科学化、规范化、现代化,从而大大提高高校教学管理水平。
第1章 背景、目的及概述
1.1项目背景
随着科学技术、管理方法的不断进步,传统的方式、方法和手段已经不能适应现代化管理的需要,作为培养高质量合格人才为宗旨的高等学校,总是走在科技的最前沿,教学管理的计算机化已成为高校管理现代化、决策科学化的一个重要环节,是开创教学管理工作新局面的必由之路。
教学管理系统是一个辅助学校教务人员完成日常工作中,涉及学籍管理、教师管理、课程管理和成绩管理等项目的日常比较繁重的工作。它应用计算机在数据处理和数据整理保存方面的优异性能,帮助工作人员提高工作的效率、减少出错情况。同时还能提供快速的查询检索功能。
1.2编写目的
本系统的设计旨在实现管理员、教师以及学生对信息的查询、修改以及更新提供便利性。教学管理系统是一个辅助学校教务人员完成日常工作中,涉及教师管理、课程管理和成绩管理等项目的日常比较繁重的工作。它应用计算机在数据处理和数据整理保存方面的优异性能,帮助工作人员提高工作的效率、减少出错情况。
1.3软件定义
本系统做成了C/S模式,本系统的登陆模块提供了远程连接数据库的方法,以及不同的登陆模式管理员、教师、学生),不同的登陆权限对应着能够实现操作功能是有区别的。
1.4开发环境
经过思考和选择,决定以.net C#来实现本系统。
第2章 需求分析
2.1信息要求
本次系统设计主要需要的信息如下所示,这些信息都是以表的形式存在数据库中,当需要输入、删除、修改等信息时能够经过执行SQL语句来实现。
1、学生信息:学号、姓名、性别、出生日期、入学成绩、所在系号
2、教职工信息:职工号、姓名、性别、出身年月、所在系号、职称、专业及教学方向
3、系的基本信息:系号、系名称、系的简介
4、课程信息:课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间
5、成绩信息:学号、课程号、平时成绩、考试成绩、总评成绩
2.2处理要求
1、学生基本信息管理
新生信息录入、学生信息修改:按学号查询出某学生的信息并做信息修改。
学生转学(转入和转出),学生毕业等。毕业和转学的学生有关信息存储到历史库中。
2、系基本信息管理:系的基本信息输入、修改、删除
3、课程信息管理:课程信息的输入、修改、删除
4、教职工信息管理:教职工信息的输入、修改、删除
5、选课管理:每学期所选课程的学分不能超过15分、学生能够同时选修一门或多门课程、能够同时为多个学生选修某一门或某几门课程、删除和修改选课信息。
6、成绩管理:按课程输入和修改成绩、按学生输入和修改成绩。
7、信息查询:
按学号、姓名、系号查询学生基本信息。
按职工号、姓名、系号查询教职工基本信息。
按系号、系名称查询系的基本信息。
按课程号、课程名称、上课教师姓名查询课程基本信息。
按学号、学生姓名、课程号、课程名称、上课教师姓名、系号查询学生成绩,内容包括课程基本情况。若查询涉及多门课程,则按课程分组。每门课程按总评成绩从高分到低分给出选修该门课程的所有学生的成绩(平时成绩、考试成绩和总评成绩)。
8、统计报表
成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间)、选课学生名单(学号、姓名、性别),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:
顺序输出所有课程的成绩登记表。
按课程号、课程名称、教师姓名输出对应课程的成绩登记表。
按系号输出对应课程的成绩登记表(本系所有教师担任的课程)。
成绩报表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间),选课学生名单(学号、姓名、性别),每个学生的平时成绩、考试成绩和总评成绩,>=90分、>=80分、、>=70分、>=60分及不及格学生的人数及比例,按学号排序:
顺序输出所有课程的成绩报表。(报表格式自己订制,能够参考学校的系统的输出格式)
按课程号、课程名称、教师姓名输出对应课程的成绩报表。
按系号输出对应课程的成绩报表(本系所有教师担任的课程)。
2.3安全性与完整性要求
在数据库中,各个表之间是有联系的,它们存在着参照完整性,在删除数据时,要考虑到一个表中的数据删除的同时也要删除另一个表中对应的数据项。
第3章 概念结果设计
3.1基本E-R图设计
E-R图设计:
E-R图中实体有:教师、学生、系部、课程
实体属性
学生:学号、姓名、性别、出生日期、入学成绩、所在系号
教师:职工号、姓名、性别、出身年月、所在系号、职称、专业及教学方向
系:系号、系名称、系的简介
课程:课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间
其中各个之间的关系如下:学生能够选多个课程,一个课程能够被多个学生选修。学生存在一个系中,一个系能够存在多个学生。一个教师能够教多个课程,一个课程能够被多个教师教。一个教师只能在一个系中,一个系中能够有多个教师。
学生:
学生
学号
姓名
性别
出生日期
所在系号
入学成绩
图3-1学生关系
教师:
教师
职工号
姓名
性别
出生日期
职称
所在系号
专业及教学方向
图3-2教师关系
系:
系信息
系号
系名
系简介
图3-3系关系
课程:
课程
课程号
课程名
教师号
学时
上课时间
学分
上课地点
考试时间
图3-4课程关系
全局E-R图:
学生
系
教师
课程
选课
系/教
学/系
课教
m
n
n
1
1
n
n
m
图3-5学生课程系教师E-R图
第4章 逻辑结构设计
4.1 E-R图的转换
表一览:
Account(用户登录表)、Course(课程表)、Student(学生表)、Teacher(教师表)、Dept(系表)、Grades(成绩表)。
表结构:
1、Account(用户登录表)
图4-1用户登录
2、Course(课程表)
图4-2课程
3、Student(学生表)
图4-3学生
4、Teacher(教师表)
图4-4教师
5、Dept(系表)
图4-5系
6、Grades(成绩表)
图4-6成绩
4.2数据约束设计
数据安全性设计:用户权限的划分。
总体设计时分为三大类用户:数据库管理员、教职工、在校学生。
其各自的权限如下:
数据库管理员具有最高权限:能够对数据库中的任意数据项进行维护和更新。
教师权限:能够对Student关系表访问,可对Teacher关系表进行访问,能够对Grades(成绩表)进行学生成绩的输入、修改和删除。
学生权限:能够对Student关系表访问,可对Teacher关系表进行访问,能够查询某个课程的信息,能够对课程选课,以及查询自己的成绩。
数据完整性设计:
在各个关系模式设计的时候,在满足数据库涉及基本要求的同时,考虑到了外码问题,为后续操作想,各关系模式中部分表定义了外码,以便进行级联操作。
第5章 主要模块的设计以及代码
在进行各个模块的说明前有必要说明一下面向对象的程序设计思想,在本系统中,为方便对数据库的连接、SQL语句的执行以及数据库的关闭。本程序封装了一个SQLDatabase类,类中定义了一系列的函数来完成数据库的连接等操作。
代码及说明如下:
class SQLDatabase
{
public SqlConnection SQLConnection;
public SqlCommand MyCommand;
public SqlDataAdapter sdr;
static public string ServerIP;
public void GetServerIP(string IP)
ServerIP=IP;
public void SQLDataConnectionOpen()
{//本函数完成对数据库的连接
SQLConnection = new SqlConnection();
SQLConnection.ConnectionString = "Server=" + ServerIP + ";User id=sa;pwd=123456;DataBase=TeachingManagementSystem";
SQLConnection.Open();
}
public void SQLDataConnectionClose()//实现数据库的关闭
SQLConnection.Close();
public int SQLExecuteNonQuery(string str)
{//ExecuteNonQuery方法:执行不返回结果的命令
MyCommand = new SqlCommand(str, SQLConnection);
return MyCommand.ExecuteNonQuery();
}
public object SQLExecuteScalar(string str)
{//只返回结果集中第一行的第一列
MyCommand = new SqlCommand(str, SQLConnection);
return MyCommand.ExecuteScalar();
}
public SqlDataAdapter SQLDataAdapter(string strCmd)
{
sdr = new SqlDataAdapter(strCmd, SQLConnection);
return sdr;
}
public SqlDataReader SQLExecuteReader(string strCmd)
{//执行返回数据集的Select语句,返回一个 DataReader 对象
MyCommand = new SqlCommand(strCmd, SQLConnection);
SqlDataReader sdr = MyCommand.ExecuteReader();
return sdr;
}
}
5.1登陆模块设计
在本程序的登陆模块中,当用户输入用户名、密码及其登陆权限后,会对数据与数据库的数据进行对比,若相同则进入相应的权限界面,以进行相应的操作。
登陆界面如下图所示:
图5-1登录
登陆按钮的单击消息响应:当用户输入用户名、密码及登陆权限,单击登陆按钮后,数据会与数据库的数据进行对比,若相同则经过,否则会提示用户响应的错误报告。代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{ MessageBox.Show("服务器IP地址不能为空,请输入用户名!", "提示");
textBox1.Focus(); return; }
else if (textBox2.Text == "")
{ MessageBox.Show("用户名不能为空,请输入用户名!", "提示");
textBox2.Focus(); return; }
else if (textBox3.Text == "")
{ MessageBox.Show("密码不能为空,请输入密码!", "提示");
textBox3.Focus(); return; }
else if (textBox4.Text == "")
{ MessageBox.Show("校验码不能为空,请输入!", "提示");
textBox4.Focus(); return; }
else if (textBox4.Text != label6.Text)
{MessageBox.Show("校验码输入不正确,请重新输入!", "提示");
textBox4.Text = ""; label6.Text = ProduceCheckCode(); textBox4.Focus();
return; }
string identity = "0";
if (radioButton1.Checked)
identity = "3";
else if (radioButton2.Checked)
identity = "2";
else if (radioButton3.Checked)
identity = "1";
SQLDatabase SQLConn = new SQLDatabase();
SQLConn.GetServerIP(textBox1.Text);
SQLConn.SQLDataConnectionOpen();
string strCmd = "select * from Account where Aname='" + textBox2.Text + "'and Apassword='" + textBox3.Text + "'" + "and Apermissions='" + identity + "'";
SqlDataReader sdr = SQLConn.SQLExecuteReader(strCmd);
int n = 0;
while (sdr.Read())
{
n = 1;
Form2 form2 = new Form2(identity,textBox1.Text);
form2.Show();this.Hide();
}
if (n == 0)
{ MessageBox.Show("没有此用户!\n或者用户名或密码错误!\n请重新输入或者注册当前用户!", "提示");
label6.Text = ProduceCheckCode();}
sdr.Close();
SQLConn.SQLDataConnectionClose();
}
另外本模块也提供了校验码认证、用户注册功能。
用户单击登陆按钮后,系统会对用户输入的校验码与系统随机生成的校验码进行对比,不相同会提示用户重新输入。
当用户想注册一个账户时,系统会根据用户输入的用户名、密码、权限,在数据库中查找是否已存在相同的用户名若相同则提示用户注册成功,否则提示用户错误报告。代码与登陆响应类似不再列出。
5.2管理员、教师、学生模块设计
这里需要说明一点的是,本程序的操作端是经过TabControl控件实现的,各个tabPage页都放在了一个对话框上,对于不同的登陆权限,会在对话框的初始化函数中经过调用tabControl1.TabPages.Remove();函数来实现某个tabPage页的隐藏,以体现不同的权限功能。
因此这里只需要对管理员端的各个操作进行说明即可,整个界面如下图所示:
图5-2管理员、教师、学生
tabPage1:学生管理
在学生管理页面中,管理员能够对学生信息进行查询、删除、修改、录入、及其转学/毕业操作等。
另外,各个表之间是有联系的,当删除一个学生的信息后,如果此学生选了课,而且有了成绩,系统会同时把此学生的选课记录、成绩记录删除。
当录入一个学生的信息时,系统提供了判断机制,系统会先检查数据库中是否已存在该学生的信息,若存在提示不同录入。
其 录入 按钮的单击消息响应函数代码为:
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("学号不能为空,请输入学号!", "提示");
textBox1.Focus();return;
}
else if (textBox2.Text == "")
{ MessageBox.Show("姓名不能为空,请输入姓名!", "提示");
textBox2.Focus(); return;
}
string sex="";
if(radioButton1.Checked)
sex="男";
else if (radioButton2.Checked)
sex="女";
SQLDatabase SQLConn = new SQLDatabase();
SQLConn.GetServerIP(SerIP);
SQLConn.SQLDataConnectionOpen();
string strCmd;
string strCmd2;
string strCmd3;
strCmd = "insert into Student values('" + textBox1.Text + "','" + textBox2.Text + "','" +sex+ "','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"');";
strCmd2 = "select * from Student where Sno='" + textBox1.Text + "';";
strCmd3 = "select * from Dept where Dno='" + textBox5.Text + "';";
object ob = SQLConn.SQLExecuteScalar(strCmd2);
if (Convert.ToString(ob) != "")
{
MessageBox.Show("已存在学号为" + textBox1.Text + "的信息!\n请重新输入!", "提示");
textBox1.Text = ""; textBox2.Text = "";
textBox3.Text = ""; textBox4.Text = "";
textBox5.Text = "";
textBox1.Focus();
SQLConn.SQLDataConnectionClose();
return;
}
object ob1 = SQLConn.SQLExecuteScalar(strCmd3);
if (Convert.ToString(ob1) == "")
{
if (textBox5.Text != "")
{
MessageBox.Show("不存在系号为" + textBox5.Text + "的系信息!\n请重新输入!", "提示");
textBox5.Text = ""; textBox5.Focus();
}
SQLConn.SQLDataConnectionClose();
return;
}
SQLConn.SQLExecuteNonQuery(strCmd);
MessageBox.Show("录入成功!", "提示");
//控件清空!
textBox1.Text = ""; textBox2.Text = "";
textBox3.Text = ""; textBox4.Text = "";
textBox5.Text = ""; textBox1.Focus();
SQLConn.SQLDataConnectionClose();
button5_Click(sender, e);
}
tabPage2:系管理
在系管理页面中,管理员能够对系信息进行查询、删除、修改、输入。
另外,各个表之间是有联系的,当删除一个系的信息后,在该系的因此学生记录会同时删除,与此相应的选课、成绩记录也会被删除。
当录入一个系的信息时,系统提供了判断机制,系统会先检查数据库中是否已存在该系的信息,若存在提示不同录入。
其 输入 按钮的单击消息响应函数代码为:
private void button7_Click(object sender, EventArgs e)
{
if (textBox7.Text == "")
{
MessageBox.Show("系号不能为空,请输入系号!", "提示");
textBox7.Focus(); return;
}
else if (textBox8.Text == "")
{
MessageBox.Show("系名不能为空,请输入系名!", "提示");
textBox8.Focus(); return;
}
SQLDatabase SQLConn = new SQLDatabase();
SQLConn.GetServerIP(SerIP);
SQLConn.SQLDataConnectionOpen();
string strCmd;
string strCmd2;
strCmd = "insert into Dept values('" + textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "');";
strCmd2 = "select * from Dept where Dno='" + textBox7.Text + "';";
object ob = SQLConn.SQLExecuteScalar(strCmd2);
if (Convert.ToString(ob) != "")
{
MessageBox.Show("已存在系号为" + textBox7.Text + "的信息!\n请重新输入!", "提示");
textBox7.Text = ""; textBox8.Text = "";
textBox9.Text = ""; textBox7.Focus();
SQLConn.SQLDataConnectionClose();
return;
}
else
SQLConn.SQLExecuteScalar(strCmd);
MessageBox.Show("输入成功!", "提示");
//控件清空!
textBox7.Text = ""; textBox8.Text = "";
textBox9.Text = ""; textBox7.Focus();
SQLConn.SQLDataConnectionClose();
button10_Click(sender,e);
}
tabPage3:课程管理
在课程管理页面中,管理员能够对课程信息进行查询、删除、修改、输入。
另外,各个表之间是有联系的,当删除一个课程的信息后,选择此课程的选课记录,成绩记录也会被同时删除。
当录入一个课程的信息时,系统提供了判断机制,系统会先检查数据库中是否已存在该课程的信息,若存在提示不同录入。
其 输入 按钮的单击消息响应函数代码为:
private void button12_Click(object sender, EventArgs e)
{
if (textBox10.Text == "")
{
MessageBox.Show("课程号不能为空,请输入课程号!", "提示");
textBox10.Focus();
return;
}
else if (textBox11.Text == "")
{
MessageBox.Show("课程名不能为空,请输入课程名!", "提示");
textBox11.Focus();
return;
}
else if (textBox12.Text == "")
{
MessageBox.Show("任课教师号不能为空,请输入课程名!", "提示");
textBox12.Focus();
return;
}
SQLDatabase SQLConn = new SQLDatabase();
SQLConn.GetServerIP(SerIP);
SQLConn.SQLDataConnectionOpen();
string strCmd;
string strCmd2;
strCmd = "insert into Course values('" + textBox10.Text + "','" + textBox11.Text + "','" + textBox12.Text + "','"
+ textBox13.Text + "','" + textBox14.Text+ "','" + textBox15.Text + "','" + textBox16.Text + "','" + textBox17.Text + "')";
strCmd2 = "select * from Course
展开阅读全文