资源描述
课程名称:管理信息系统分析和设计
班 级:09信管一班
姓 名:任志雄
学 号:0702115
目录
一、 概述
1.1 项目背景---------------------------------------------------------3
1.2 编写目标---------------------------------------------------------3
1.3 开发环境---------------------------------------------------------4
二、 需求分析
2.1 信息要求-----------------------------------------------------------4
2.2 处理要求-----------------------------------------------------------4
2.3 安全性和完整性要求-------------------------------------------6
三、概要设计
3.1系统功效图---------------------------------------------------------7
四、概念结果设计
4.1 基础E-R图设计----------------------------7
五、逻辑结构设计
5.1E-R图转换----------------------------------------------------9
六、关键模块设计和代码---------------------11
6.1登录模块设计-----------------------------------------------------12
6.2管理员、老师、学生模块设计------------------------------13
6.3存放过程-----------------------------------------------------------28
七、总结
7.1碰到问题和处理方法---------------------29
7.2设计体会-------------------------------------------------------30
一、 概述
1. 1项目背景
伴随科学技术、管理方法不停进步,传统方法、方法和手段已经不能适应该代化管理需要,作为培养高质量合格人才为宗旨高等学校,总是走在科技最前沿,教学管理计算机化已成为高校管理现代化、决议科学化一个关键步骤,是开创教学管理工作新局面必由之路。
教学管理系统是一个辅助学校教务人员完成日常工作中,包含学籍管理、老师管理、课程管理和成绩管理等项目标日常比较繁重工作。它应用计算机在数据处理和数据整理保留方面优异性能,帮助工作人员提升工作效率、降低犯错情况。同时还能提供快速查询检索功效。
1. 2编写目标
本系统设计意在实现管理员、老师和学生对信息查询、修改和更新提供便利性。教学管理系统是一个辅助学校教务人员完成日常工作中,包含老师管理、课程管理和成绩管理等项目标日常比较繁重工作。它应用计算机在数据处理和数据整理保留方面优异性能,帮助工作人员提升工作效率、降低犯错情况。
1. 3开发环境
经过思索和选择,决定以.net C#来实现本系统。
二、 需求分析
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.1 系统功效图结构
兰州商学院教学管理系统功效结构图以下:
四、概念结果设计
4.1 基础E-R图设计
E-R图设计:
E-R图中实体有:老师、学生、系部、课程
实体属性
学生:学号、姓名、性别、出生日期、入学成绩、所在系号
老师:职员号、姓名、性别、出身年月、所在系号、职称、专业及教学方向
系:系号、系名称、系介绍
课程:课程号、课程名称、任课老师号、课时、学分、上课时间、上课地点、考试时间
其中各个之间关系以下:学生能够选多个课程,一个课程能够被多个学生选修。学生存在一个系中,一个系能够存在多个学生。一个老师能够教多个课程,一个课程能够被多个老师教。一个老师只能在一个系中,一个系中能够有多个老师。
学生:
学生
学号
姓名
性别
出生日期
所在系号
入学成绩
老师:
老师
职员号
姓名
性别
出生日期
职称
所在系号
专业及教学方向
系:
系
系号
系名
系介绍
课程:
课程
课程号
课程名
老师号
课时
上课时间
学分
上课地点
考试时间
全局E-R图:
五、逻辑结构设计
5.1E-R图转换
表一览:
Account(用户登录表)、Course(课程表)、Student(学生表)、Teacher(老师表)、Dept(系表)、Grades(成绩表)。
表结构:
1、Account(用户登录表)
2、Course(课程表)
3、Student(学生表)
4、Teacher(老师表)
5、Dept(系表)
6、Grades(成绩表)
六、关键模块设计和代码
在本系统中,为方便对数据库连接、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;
}
}
6.1登录模块设计
在本程序登录模块中,当用户输入用户名、密码及其登录权限后,会对数据和数据库数据进行对比,若相同则进入对应权限界面,以进行对应操作。
登录界面以下图所表示 :
登录按钮单击消息响应:当用户输入用户名、密码,单击登录按钮后,数据会和数据库数据进行对比,若相同则经过,不然会提醒用户对应错误汇报。代码以下:
private void button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{ MessageBox.Show("用户名不能为空,请输入用户名!", "提醒");
textBox1.Focus(); return; }
else if ((string. IsNullOrEmpty(textBox2.Text))
{ MessageBox.Show("密码不能为空,请输入密码!", "提醒");
textBox2.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();
}
6.2管理员、老师、学生模块设计
本程序操作端是经过TabControl控件实现,各个tabPage页全部放在了一个对话框上,对于不一样登录权限,会在对话框初始化函数中经过调用tabControl1.TabPages.Remove();函数来实现某个tabPage页隐藏,以表现不一样权限功效。
所以这里只需要对管理员端各个操作进行说明即可,整个界面以下图所表示:
tabPage1:学生管理
在学生管理页面中,管理员能够对学生信息进行查询、删除、修改、录入、及其转学/毕业操作等。
另外,各个表之间是有联络,当删除一个学生信息后,假如此学生选了课,而且有了成绩,系统会同时把此学生选课统计、成绩统计删除。
当录入一个学生信息时,系统提供了判定机制,系统会先检验数据库中是否已存在该学生信息,若存在提醒不能反复。
其录入按钮单击消息对应函数代码为:
private void button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("学号不能为空,请输入学号!", "提醒");
textBox1.Focus();return;
}
else if (string.IsNullOrEmpty(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 == "")
{ string.IsNullOrEmpty(textBox7.Text)
MessageBox.Show("系号不能为空,请输入系号!", "提醒");
textBox7.Focus(); return;
}
else if (string.IsNullOrEmpty(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 (string.IsNullOrEmpty(textBox10.Text))
{
MessageBox.Show("课程号不能为空,请输入课程号!", "提醒");
textBox10.Focus();
return;
}
else if (string.IsNullOrEmpty(textBox11.Text))
{
MessageBox.Show("课程名不能为空,请输入课程名!", "提醒");
textBox11.Focus();
return;
}
else if (string.IsNullOrEmpty(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 where Cno='" + textBox10.Text + "';";
object ob = SQLConn.SQLExecuteScalar(strCmd2);
if (Convert.ToString(ob) != "")
{
MessageBox.Show("已存在课程号为" + textBox10.Text + "信息!\n请重新输入!", "提醒");
textBox10.Text = ""; textBox11.Text = "";
textBox12.Text = ""; textBox13.Text = "";
textBox14.Text = ""; textBox15.Text = "";
textBox16.Text = ""; textBox17.Text = "";
textBox10.Focus();
SQLConn.SQLDataConnectionClose();
return;
}
string strCmd3 = "select * from Teacher where Tno='" + textBox12.Text + "';";
object ob1 = SQLConn.SQLExecuteScalar(strCmd3);
if (Convert.ToString(ob1) == "")
{
if (textBox12.Text != "")
{
MessageBox.Show("不存在老师号为" + textBox12.Text + "老师信息!\n请重新输入!", "提醒");
textBox12.Text = "";
textBox12.Focus();
}
SQLConn.SQLDataConnectionClose();
return;
}
SQLConn.SQLExecuteNonQuery(strCmd);
MessageBox.Show("课程信息输入成功!", "提醒");
//控件清空!
textBox10.Text = ""; textBox11.Text = "";
textBox12.Text = ""; textBox13.Text = "";
textBox14.Text = ""; textBox15.Text = "";
textBox16.Text = ""; textBox17.Text = "";
textBox10.Focus();
SQLConn.SQLDataConnectionClose();
button14_Click( sender, e);
}
tabPage4:老师管理
在老师管理页面中,管理员能够对老师信息进行查询、删除、修改、输入。
当录入一个老师信息时,系统提供了判定机制,系统会先检验数据库中是否已存在该老师信息,若存在提醒不能反复。
其输入按钮单击消息对应函数代码为:
private void button17_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBo6.Text))
{
MessageBox.Show("职员号不能为空,请输入!", "提醒");
textBox6.Focus();
return;
}
else if (string.IsNullOrEmpty(textBox18.Text))
{
MessageBox.Show("姓名不能为空,请输入!", "提醒");
textBox18.Focus();
return;
}
els
展开阅读全文