学生学籍管理系统设计说明书.docx
《学生学籍管理系统设计说明书.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统设计说明书.docx(69页珍藏版)》请在冰豆网上搜索。
学生学籍管理系统设计说明书
学生学籍管理系统
设计说明书
摘要
学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
作为计算机应用的一部分,使用计算机对学生信息进行管理,具有手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生信息管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
第一章需求分析
详见另一文档“需求规格说明书”。
第二章系统设计
2.1数据库设计
2.1.1数据库简介
在系统设计过程中,数据库的设计是系统的核心和基础,把系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。
1.数据库的概念
数据库是长期储存在计算机内大量的有组织的,可以共享的数据的集合,这种数据集合具有如下特点:
尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。
从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
2.新建数据库
在新建一个数据库时,必须先对它进行分析,比如它的大小、权限和备份等问题。
3.修改数据库
数据库的修改主要包括Alterdatabase、Dropdatabase等等。
当然其中涉及到数据库用户的权限问题,管理用户分配给一般用户有修改的权限时才能进行修改。
2.1.2概念结构设计
概念结构设计通常是使用E-R图对它的描述工具进行设计,对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型,设计E-R图。
本系统的E-R图如图2.1所示。
图2.1
2.1.3逻辑结构设计
逻辑结构设计应该首先选择最适于描述与表达相应概念结构的数据模型,然后选择最合适的数据库管理系统。
逻辑结构设计时一般要分两步进行:
∙将概念结构转换为一般的关系、网状、层次模型,并将转化来的关系、网状、层次模型向特定数据库管理系统支持下的数据模型转换
∙对数据模型进行优化
本系统中逻辑结构设计主要是将概念结构设计阶段设计好的的E-R图转换成具体的数据库管理系统支持的数据模型。
关系模型的逻辑结构是一组关系模式的集合。
而E-R图则是由实体、实体的属性和实体之间的联系三个要素组成的。
所以将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则:
一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。
现在需要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
学籍管理系统数据库中各个表格的设计结果如下面的几个表所示。
每个表表示在据库中的一个数据表。
编号
字段名
数据结构
别名
1
studentID
Varchar(15)
学号
2
studentName
Char(8)
姓名
3
className
varchar(30)
班级名称
4
age
smallint
年龄
5
sex
Char
(2)
性别
6
nation
Char(4)
民族
7
nativeplace
Varchar(30)
籍贯
8
majorName
varchar(20)
专业名称
9
status
char(8)
政治面貌
10
homeAddress
varchar(30)
家庭住址
11
birthday
datetime
出生日期
12
indate
datetime
入学日期
图2.2学生表
编号
字段名
数据结构
别名
1
departmentID
char(10)
院系编号
2
departmentName
varchar(30)
院系名称
图2.3院系表
编号
字段名
数据结构
别名
1
classID
varchar(30)
班级编号
2
className
varchar(30)
班级名称
3
departmentName
varchar(30)
院系名称
4
grade
char(10)
年级
5
studentNumber
int
学生人数
6
studentTeacher
cahr(8)
班主任
图2.4班级表
编号
字段名
数据结构
别名
1
courseID
char(10)
课程编号
2
courseName
varchr(50)
课程名称
3
credits
smallint
学分
4
courseHour
int
学时
5
category
varchar(20)
类别
6
teacher
varchar(15)
任课教师
7
departmentName
varchar(30)
开课院系
8
courseNote
varchar(100)
备注
图2.5课程表
编号
字段名
数据结构
别名
1
teacherID
char(10)
教师编号
2
teacherName
char(8)
教师姓名
3
sex
char
(2)
性别
4
teacherTitle
char(4)
职称
5
contact
varchar(50)
联系方式
7
departmentName
varchar(30)
院系名称
图2.6教师表
编号
字段名
数据结构
别名
1
majorID
varchar(20)
专业编号
2
majorName
varchar(30)
专业名称
3
category
varchar(30)
类别
4
departmentName
varchar(30)
所属院系
5
majorNote
varchar(100)
备注
图2.7专业信息表
编号
字段名
数据结构
别名
1
username
varchar(20)
用户名
2
password
varchar(20)
密码
3
rolename
varchar(30)
身份
图2.8用户表
编号
字段名
数据结构
别名
1
semesterID
char(5)
学期编号
2
semesterName
varchar(50)
学期名称
图2.9学期表
编号
字段名
数据结构
别名
1
ID
int
编号
2
studentName
varchar(15)
学生姓名
3
courseName
char(10)
课程名称
4
className
varchar(30)
班级名称
5
semesterName
varchar(20)
学期名称
6
score
smallint
分数
图2.10成绩表
编号
字段名
数据结构
别名
1
rolename
varchar(3)
身份名称
2
viewMenuItem
bit
查询权限
3
XTMenuItem
bit
系统管理权限
4
DMenuItem
bit
院系管理权限
5
CMenuItem
bit
班级管理权限
6
MMenuItem
bit
专业管理权限
7
KMenuItem
bit
课程管理权限
8
TMenuItem
bit
教师管理权限
9
QMenuItem
bit
学期管理权限
10
SMenuItem
bit
成绩管理权限
11
StuMenuItem
bit
学生管理权限
图2.11权限表
2.2总体结构设计
2.2.1模块设计
本系统是一个典型的信息管理系统,主要目标是让使用它的管理用户,包括系统管理员、教师和学生,能很好地管理有关学生学籍方面的工作,比如系统管理员负责日常的学籍管理工作,如各种基本信息的录入、修改、删除等操作,教师使用该系统可完成教学班级信息查询和成绩管理,而学生使用该系统主要完成选课和成绩查询等操作。
根据需求分析中列出的学生学籍管理系统的八个基本模块,设计了如下图2.12所示的学生学籍管理系统总体结构示意图。
图2.12学生学籍管理系统总体结构图
由上述的系统总体结构图所示,将一个开发的学生学籍管理系统分成九个子模块,他们分别为:
系统用户管理模块、权限管理模块、院系信息管理模块、班级信息管理模块、教师信息管理模块、学生信息管理模块、课程信息管理模块、专业信息管理模块、成绩信息管理模块;通过这些子模块完成各项功能,如课程信息管理模块主要完成对课程信息的录入、编辑与删除。
根据该系统功能分析,该系统主要有九个功能模块,具体功能描述如下:
(1)系统用户管理:
●添加用户信息,包括用户名、密码和身份。
●删除已有的用户信息。
●修改用户信息,包括用户名、密码、和身份。
(2)系统权限管理:
●添加角色,包括角色名称和它拥有的权限。
●删除已有的角色信息。
(3)院系信息管理:
●添加院系信息,包括院系编号和院系名称。
●根据院系编号查询院系信息。
●修改和删除院系信息。
(4)班级信息管理:
●添加新的班级信息。
●根据年级或院系查询班级信息。
●修改已存在的班级信息。
●删除已有的班级信息。
(5)教师信息管理:
●添加新教师的基本信息。
●根据院系查询教师信息。
●修改已存在的教师信息。
●删除教师相关信息。
(6)学生信息管理:
●添加新学生的基本信息。
●根据学号或姓名查询学生信息。
●修改已存在的学生信息。
●删除学生相关信息。
(7)课程信息管理:
●添加新的课程基本信息。
●根据开课院系、课程性质、任课教师查询课程基本信息。
●修改或删除已有的课程基本信息。
(8)学期信息管理:
●添加新的学期信息。
●修改或删除学期信息。
(9)成绩信息管理:
●录入学生的成绩信息。
●根据学号或班级查询相应的成绩信息。
●修改或删除成绩信息。
2.2.2系统结构设计
在应用程序的设计中,将系统模块用菜单的形式表示出来,这里有5个下拉菜单。
根据对系统结构的分析和结合应用程序中的设计,得出系统结构图,如图2.13。
图2.13系统结构图
第三章系统实现
3.1系统登录模块
图3.1系统登录图
为了系统的安全,在进入系统之前首先会出现一个登录模块,用户登录分为学生、教师、管理员三类用户登录,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。
本系统能判断用户权限,不同权限的用户进入系统后执行不同的操作。
用户登录窗体中放置了两个文本框(Textbox),用来输入用户名和密码;一个按钮(Button)用来确认登录。
部分代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringConnStr,SQLstr,sql;
ConnStr="Server=(Local);DataBase=学籍管理系统;IntegratedSecurity=true;";
SqlConnectionConn=newSqlConnection(ConnStr);
if(this.textBox1.Text.Trim()==""||this.textBox2.Text.Trim()=="")
MessageBox.Show("用户名和密码不能为空!
","登录失败",MessageBoxButtons.OK,MessageBoxIcon.Warning);
else
try
{
Conn.Open();
SQLstr="selectrolenamefromUserinfowhereuserName='"+textBox1.Text.Trim()+"'andpassWord='"+textBox2.Text.Trim()+"'";
SqlCommandmycomm=newSqlCommand(SQLstr,Conn);
mycomm.CommandText=SQLstr;
stringrolename;
if(null!
=mycomm.ExecuteScalar())//用户权限控制
{
rolename=mycomm.ExecuteScalar().ToString();
this.Hide();
sql="select*fromRolewhererolename='"+rolename+"'";
mycomm.CommandText=sql;
SqlDataReadermyreader=mycomm.ExecuteReader();
MainFormmain=newMainForm();
myreader.Read();
main.XTMenuItem.Visible=(bool)(myreader.GetValue
(2));
main.viewMenuItem2.Visible=(bool)(myreader.GetValue
(1));
main.DMenuItem11.Visible=(bool)(myreader.GetValue(3));
main.CMenuItem12.Visible=(bool)(myreader.GetValue(4));
main.MMenuItem13.Visible=(bool)(myreader.GetValue(5));
main.KMenuItem14.Visible=(bool)(myreader.GetValue(6));
main.TMenuItem15.Visible=(bool)(myreader.GetValue(7));
main.QMenuItem16.Visible=(bool)(myreader.GetValue(8));
main.SMenuItem17.Visible=(bool)(myreader.GetValue(9));
main.StuMenuItem20.Visible=(bool)(myreader.GetValue(10));
main.toolStripStatusLabel2.Text=textBox1.Text.Trim();
main.toolStripStatusLabel4.Text=rolename;//读取用户身份
main.ShowDialog();
}
else
{
MessageBox.Show("用户名或密码不正确请确认后重新输入!
","登录失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
textBox2.Text="";
textBox2.Focus();
}
}
catch(Exceptionexp)
{
MessageBox.Show(exp.Message,"错误");
}
finally
{
Conn.Close();
}
}
3.2系统主界面模块
图3.2系统主界面
登陆成功后,即可进入,系统主界面模块。
窗体名称为界面功能介绍。
主界面为进入学生管理系统各模块的入口,用户可根据菜单上面各个模块名称单击进入各个管理模块,从而进行对系统的管理操作。
主界面下面的statusStrip显示了当前登录的用户名和身份。
3.3系统功能模块
3.3.1用户管理
图3.3用户管理
本窗体只有系统管理员才可以进行管理,可对用户进行添加、删除、查找功能,用户属性有:
用户名、密码、角色。
清空按钮用于清空文本。
代码如下:
privatevoidlistBox1_SelectedIndexChanged(objectsender,EventArgse)
{
stringConnStr,SQLstr;
ConnStr="Server=(Local);DataBase=学籍管理系统;IntegratedSecurity=true;";
SqlConnectionConn=newSqlConnection(ConnStr);
try
{
Conn.Open();
SQLstr="select*fromuserinfowhereusername='"+listBox1.SelectedItem+"'";
SqlCommandmycomm=newSqlCommand(SQLstr,Conn);
SqlDataReadermyreader=mycomm.ExecuteReader();
myreader.Read();
textBox1.Text=myreader.GetValue(0).ToString();
textBox2.Text=myreader.GetValue
(1).ToString();
comboBox1.Text=myreader.GetValue
(2).ToString();
}
catch(Exceptionexp)
{
MessageBox.Show(exp.Message,"错误");
}
finally
{
Conn.Close();
}
button1.Enabled=true;//恢复删除按钮
}
privatevoidusermanage_Load(objectsender,EventArgse)
{
user.Fillrolename(comboBox1);
stringConnStr,SQLstr;
ConnStr="Server=(Local);DataBase=学籍管理系统;IntegratedSecurity=true;";
SqlConnectionConn=newSqlConnection(ConnStr);
try
{
Conn.Open();
SQLstr="selectusernamefromuserinfo";
SqlCommandmycomm=newSqlCommand(SQLstr,Conn);
SqlDataReadermyreader=mycomm.ExecuteReader();
while(myreader.Read())
{
listBox1.Items.Add(myreader.GetValue(0).ToString());
}
listBox1.SelectedIndex=0;
}
catch(Exceptionexp)
{
MessageBox.Show(exp.Message,"错误");
}
finally
{
Conn.Close();
}
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
textBox1.Text="";
textBox2.Text="";
comboBox1.Text="";
button1.Enabled=false;//删除按钮不可用
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringConnStr,SQLstr;
ConnStr="Server=(Local);DataBase=学籍管理系统;IntegratedSecurity=true;";
SqlConnectionConn=newSqlConnection(ConnStr);
try
{
Conn.Open();
SQLstr="deletefromuserinfowhereusername='"+listBox1.SelectedItem+"'";
SqlCommandmycomm=newSqlCommand(SQLstr,Conn);
DialogResultr=MessageBox.Show("确认要删除此用户吗?
","警告",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(r==DialogResult.Yes)
{
mycomm.ExecuteNonQuery();
textBox1.Text="";
textBox2.Text="";
comboBox1.Text="";
listBox1.Items.Clear();
stringupdatesql="selectusernamefromuserinfo";
mycomm.CommandText=updatesql;
SqlDataReadermyreader=mycomm.ExecuteReader();
while(myreader.Read())
{
listBox1.Items.Add(myreader.GetValue(0).ToString());
}
}
}
catch(Exceptionexp)
{
MessageBox.Show(exp.Message,"错误");
}
finally
{
Conn.Close();
}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
stringConnStr,SQLstr;
ConnStr="Server=(Local);DataBase=学籍管理系统;IntegratedSecurity=true;";
try
{
if(textBox1.Text==""||textBox2.Text==""||comboBox1.Text=="")
MessageBox.Show("请把信息填写完整!
","错误",MessageBoxButtons.OK,MessageBoxIcon.Warning);
else
{
/*判断当前用户