研究生信息管理系统论文.docx
《研究生信息管理系统论文.docx》由会员分享,可在线阅读,更多相关《研究生信息管理系统论文.docx(31页珍藏版)》请在冰豆网上搜索。
![研究生信息管理系统论文.docx](https://file1.bdocx.com/fileroot1/2023-1/10/afefa91b-aec1-4e59-962f-94a3541ecd3d/afefa91b-aec1-4e59-962f-94a3541ecd3d1.gif)
研究生信息管理系统论文
第1章概述
1.1项目的目的和意义
研究生信息管理是一项非常重要的工作,它关系到整个学校的工作效率。
一个好的信息管理系统能够方便系统管理人员对学校的基本数据进行维护,包括信息的增加,修改以及对各项信息的变动等操作。
采用研究生管理信息系统不仅可以节省人力物力,而且可以增强学校资料的安全性,提高学校的管理能力。
运用该系统,可以清晰地了解研究生的课程、专业、成绩等信息,并根据需要添加、删除、修改相应的信息。
不同的角色,登录得到的界面不同,拥有的权限也不同,这样,起到了对学校资料的保护的作用。
整个系统的管理员可以根据学校情况添加、删除、修改、角色的权限,很方便管理。
当用户忘记密码时,可以通过当时创建用户时所填的工作号进行找回,方便、安全。
1.2项目体系结构及开发环境
1.本系统采用Client/Server体系结构。
2.系统开发环境
1)开发平台:
MicrosoftVisualStudio2005
2)开发语言:
C#
3)数据库:
Access2003
3.系统运行环境
客户端:
操作系统:
Windows2000、WindowsXP
服务器端:
数据库:
Access2003
1.3系统基本功能
在以上环境下对研究生信息管理系统进行开发与设计。
研究生信息管理涉及专业、课程、成绩、个人信息等管理,需要处理大量数据和信息,而且对这些数据和信息的准确性、及时性都要求非常高,任何的错误和遗漏都会造成学校管理的混乱:
若采用纯人工的方法进行管理有一定难度。
因此,目前大多数学校都开始采用计算机技术来实现研究生信息的管理。
该系统的功能主要包括以下几个方面:
1.系统管理员添加年级信息、班级信息、所开设的课程信息和系统用户信息,对用户进行权限设置并对其进行维护;
2.普通管理员录入研究生的基本信息,并在以后的教学中对研究生信息进行基本维护;
3.老师对研究生的成绩进行录入,并对成绩进行分析;给每位研究生选择课程,并可以对研究生的信息和成绩进行查询;
4.每位研究生可以根据自己的需要对以上录入的信息进行适当的查询。
第2章系统设计
2.1系统的模块划分
研究生信息管理系统是学校教务系统中不可缺少的一个子系统,它涉及到学生、课程、成绩、专业等信息的增删改查。
研究生信息管理系统包括以下八个模块:
1.登录模块
登录模块提供用户登录界面,用户输入正确的用户名和密码后,系统会核对用户名和密码,调用该用户的权限并进入相应权限的系统主窗口(即导航页面),从而可以选择进入相应的子系统。
并提供用户忘记密码找回功能。
2.系统管理模块
系统管理模块主要添加用户和新建角色等基本信息,包括添加用户、新建角色。
能对用户信息创建的操作。
3.用户管理模块
用户管理模块主要用于管理用户信息和重新登录,包括更改密码、重新登录,能对密码进行修改操作。
4.课程管理模块
课程管理模块主要对课程信息进行管理,包括添加课程、浏览课程。
能对课程信息进行添加、修改和删除等操作。
5.成绩管理模块
成绩管理模块主要对学生成绩信息进行管理,包括添加成绩、浏览成绩。
能对学生成绩进行添加、修改和删除等操作。
6.专业管理模块
专业管理模块主要对专业信息进行管理,包括添加专业、浏览专业。
能对专业信息进行添加、修改和删除等功能。
7.研究生管理模块
研究生管理模块主要对研究生信息进行管理,包括添加信息、浏览信息。
能对研究生的基础信息进行添加、修改和删除等操作。
8.帮助手册模块
帮助手册模块主要对各模块进行介绍。
系统功能模块图如图2-1所示。
(系统登录)Form1.cs
图2-1系统功能模块图
2.2系统的模块流程图
研究生管理信息系统由系统管理、专业管理、课程管理、研究生管理、成绩管理、用户管理等模块组成,具体如下:
1.系统登录模块:
可以登录系统主功能模块,找回用户密码。
2.系统管理模块:
可以添加新用户,新建角色,并且为角色赋予权限。
3.专业管理模块:
可以浏览、添加、修改、删除专业信息。
4.课程管理模块:
可以浏览、添加、修改、删除课程信息。
5.研究生管理模块:
可以浏览、添加、修改、删除研究生基本信息。
6.成绩管理模块:
可以浏览、添加、修改、删除研究生成绩信息。
7.用户管理模块:
可以修改密码,重新登录。
研究生管理信息系统模块结构如图2-2所示:
图2-2系统模块结构
2.3数据库设计
该系统的数据库数据库命名为masterMIS,数据库中共包括八张表:
1.用户信息表(userinfo),包含用户的名称,口令和角色;
2.角色信息表(roles),包含角色名称和与该角色相关的权限;
3.专业信息表(majorinfo),包含学校所开专业的名称及其详细介绍;
4.课程信息表(courseinfo),包含学校所开设课程的名称及其详细介绍;
5.研究生基本信息表(studentinfo),包含研究生的学号、姓名、性别、专业等基本信息;
6.成绩信息表(scoreinfo),包含研究生的学号、课程、成绩等信息;
7.教师信息表(teacherinfo),包括教师的姓名等信息。
8.找回信息表(zhaohui),包含用户名、工作号等信息。
根据前面的分析,研究生信息管理系统数据库(masterMIS)表的结构、表字段的数据类型及相关说明如下:
1.系统用户表(userinfo)
系统用户表“userinfo”用于存放系统用户的相关数据。
其结构如表2-1所示。
表2-1系统用户表
列名
说明
数据类型
约束
UName
用户名
字符串,长度为16
主键
PWD
用户密码
字符串,长度为16
非空
续表2-1
RoleName
权限
字符串,长度为16
取值为“系统管理员”、“教师”“普通管理员”、“学生”
2.角色信息表(roles)
角色信息表“roles”结构如表2-2所示。
表2-2学生信息表
列名
说明
数据类型
约束
RoleName
角色名
字符串,长度为10
主键
SystemManage
系统管理
Bit
非空
MajorManage
专业管理
Bit
-
CourseManage
课程管理
Bit
-
ScoreManage
成绩管理
Bit
-
3.专业信息表(majorinfo)
专业信息表“majorinfo”结构如表2-3所示。
表2-3课程信息表
列名
说明
数据类型
约束
MID
专业编号
字符串,长度为10
-
MName
专业名称
字符串,长度为20
主键
MRemark
专业描述
字符串
-
4.研究生基本信息表(studentinfo)
研究生基本信息表“studentinfo”结构如表2-4所示。
表2-4研究生基本信息表
列名
说明
数据类型
约束
SID
研究生学号
整数16
主键
SName
研究生姓名
字符串,长度为10
-
SSex
性别
字符串
取值“男”或“女”
SPID
身份证号
整数
-
SBirth
出生日期
整数
-
TID
老师编号
整数
-
MName
专业名称
字符串,长度16
SRemark
备注
字符串
5.成绩信息表(scoreinfo)
成绩信息表“scoreinfo”结构如表2-5所示。
表2-5成绩信息表
列名
说明
数据类型
约束
RID
成绩编号
整数16
主键
SID
学号
整数
-
CName
课程名称
字符串,长度16
-
Score
分数
整数
-
6.教师信息表(teacherinfo)
教师信息表“teacherinfo”结构如表2-6所示。
表2-6教师信息表
列名
说明
数据类型
约束
TID
教师编号
整数,长度16
主键
TName
用户名
字符串,长度16
-
7.找回信息表(zhaohui)
找回信息表“zhaohui”结构如表2-7所示。
表2-7找回信息表
列名
说明
数据类型
约束
Zhucehao
注册号
整数,长度16
主键
Xingming
用户名
字符串,长度16
-
8.课程信息表(courseinfo)
课程信息表“courseinfo”结构如表2-8所示。
表2-8选课信息表
列名
说明
数据类型
约束
CID
课程编号
整数16
主键
CName
课程名称
字符串,长度为10
-
CDate
学时
整数
-
CNum
学分
整数
-
MName
专业名称
字符串,长度为10
-
CRemark
课程描述
字符串
-
2.4数据库关系图
一般情况下,数据库中所包含的表都不是独立存在的,而是表与表之间有一定的关系,称为关联。
如果数据库中的信息不能满足正常的依赖关系,就会破坏数据的完整性和一致性。
根据本实例的特点,需要设置课程信息表、专业信息表、研究生信息表、成绩信息表和教师信息表之间的关系。
设置用户信息表与角色信息表之间的关系,如图2-3、2-4所示。
图2-3数据库关系图
图2-4角色关系图
其中图2-3中成绩信息表中的学生号与研究生信息表中的学生号关联,研究生信息表中的教师号、专业名称分别与教师信息表中的教师号和专业信息表中的专业名称关联,专业信息表中的课程名与课程信息表中的课程名关联。
图2-4中用户信息表中的角色名与角色信息表中的角色名关联。
第3章 系统的详细设计及实现
3.1公共类
考虑到系统的各个模块都需要访问数据库,因此最好的方法是编写一些访问数据库的方法,如返回数据集的公共查询方法,执行数据操作的公共方法,并把它们放在一个公共的类(database)中,然后在各模块中调用这些方法来实现对数据库的访问。
同样,在用户登录时,可能需要记录一些关于用户的信息,例如用户名、用户权限等,因此也需要使用到一些公共的静态变量,把这些变量放置在一个名为“Classshard”的类中。
3.1.1添加database公共类
首先为系统添加一个名为“database”的公共类,用于存放访问数据库的公共方法。
添加公共类的方法和步骤如下:
(1)选择【项目】->【添加类】菜单项,将弹出【添加新项】对话框,保留默认的选择,在“名称”文本框中输入“database”。
(2)单击【添加】按钮,则类“database”已经被添加到项目中,并自动切换到该类的代码窗口。
(3)设置database类的访问修饰符为“Public”。
3.1.2编写公共方法
因为在这些方法中需要使用到OleDbConnection、OleDbDataAdapter、DataSet和MessageBox,所以首先应当引入以下命名空间:
usingSystem.Data;
usingSystem.Data.OleDb;
usingSystem.Windows.Forms;
然后为“database”类声明几个公共变量:
publicOleDbConnectiondataConnection=newOleDbConnection();
publicOleDbDataAdapterdataAdapter;
publicDataSetdataSet=newDataSet();
publicOleDbCommandcommand;
//定义数据库连接字符串.
stringconnstr=@"Provider=Microsoft.Jet.OLEDB.4.0;"+@"DataSource=..\masterMIS.mdb";
1.公共查询方法GetDataFromDB
GetDataFromDB是一个返回数据集的公共查询方法,如果正常访问则返回查询结果;否则返回null。
代码如下:
publicDataSetGetDataFromDB(stringsqlStr)
{
try
{
dataConnection.ConnectionString=connstr;
dataAdapter=newOleDbDataAdapter(sqlStr,dataConnection);
dataSet.Clear();
dataAdapter.Fill(dataSet);//填充数据集
dataConnection.Close();//关闭连接
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
dataConnection.Close();
}
if(dataSet.Tables[0].Rows.Count!
=0)
{
returndataSet;//若找到相应的数据,则返回数据集
}
else
{
returnnull;//若没有找到相应的数据,返回空值
}
}
2.公共查询方法UpdateDB
UpdateDB用于对数据进行添加、修改和删除操作,若操作成功则返回true;否则返回false。
代码如下:
publicboolUpdateDB(stringsqlStr)
{
try
{
dataConnection.ConnectionString=connstr;
dataConnection.Open();//打开数据库
command=dataConnection.CreateCommand();
command.CommandText=sqlStr;
command.ExecuteNonQuery();
dataConnection.Close();//关闭连接
returntrue;
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
returnfalse;
}
}
3.2系统登录与主窗体
登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性和安全性。
本节首先为“研究生信息管理系统”制作了一个登录模块,登录成功后,应当进入系统的主窗体(导航界面),因此本节还详细介绍了主窗体的设计。
3.2.1登录界面设计
新建一个Windows应用程序,命名为“From1”,使用statusbar、Label、TextBox、Button、timer控件将出现的默认窗体Form1设计成如图3-1所示。
图3-1登录界面
3.2.2登录代码
接下来编写登录模块的代码。
【登录】按钮用于验证输入的用户名和用户密码,若正确则进入系统主界面;否则弹出错误提示,并等待用户的重新输入。
登录时,需要记录登录的用户名和用户权限,因此在“Classshard”公共类中声明公共静态成员,声明后“Classshard”公共类的代码如下:
namespace研究生信息管理系统
{
publicclassClassshard
{//数组“userInfo”用于记录登录的用户名和用户权限
publicstaticstring[]userInfo=newstring[2];
}
}
【忘记密码】按钮是若用户忘记密码,可根据创建用户时输入的工作号对密码进想找回。
如图3-2所示。
图3-2找回密码界面
实现代码如下:
try
{
DataSetdt=newDataSet();
databasetb=newdatabase();
stringsqlst="Selectzhucehao,xingmingfromzhaohuiwherexingming='"+txtUserName.Text.Trim()+"'";//工作号与数据库相对,一样则显示密码
dt=tb.GetDataFromDB(sqlst);
…….
若登录3次连续密码输入错误,系统就会自动关闭该用户的登录。
如图3-3所示。
图3-3登录错误连续3次
点击【登录】后即进入研究生信息管理系统主界面。
根据权限不同。
以下图3-4、3-5、3-6、3-7分别为系统管理员界面、普通管理员界面、教师界面、学生界面。
图3-4系统管理员界面
图3-5普通管理员界面
图3-6教师界面
图3-7学生界面
3.3系统管理
系统管理模块包括添加用户和新建角色两个功能,在添加用户界面中首先需要通过dataSet把数据库中的数据和ComBox控件绑定起来,设置为键值对。
在主界面中选择【系统管理】|【添加用户】命令菜单,即可进入添加用户界面,如图3-7所示。
在该界面中可以建立新的用户,并可以在【角色】下拉列表框中选择角色描述。
单击【确定】按钮时需要判断信息是否输入完整,并且判断用户名是否已经存在和两次输入的密码是否一致。
如果用户信息填写完整并且用户名称不重复,则添加成功,否则添加失败。
工作号则是用于找回密码设置的。
图3-7添加用户界面
在该窗体中使用TextBox、Button、ComboBox控件。
【添加】代码实现如下:
if(textBox2.Text.Trim()==textBox3.Text.Trim())
{
stringsql1,sql;
sql1="insertintouserinfovalues('"+textBox1.Text.Trim()+"','"+textBox2.Text.Trim()+"','"+comboBox1.Text.Trim()+"')";//插入信息
sql="insertintozhaohuivalues('"+textBox5.Text.Trim()+"','"+textBox1.Text.Trim()+"')";//插入信息
databasedb=newdatabase();
boolb,a;
b=db.UpdateDB(sql1);//修改信息
a=db.UpdateDB(sql);//修改信息
if(b==true&&a==true)
{
if(MessageBox.Show("添加成功!
继续添加吗?
","添加用户",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.Yes)
在主界面中选择【系统管理】|【新建角色】命令菜单,即可进入新建角色界面,如图3-8所示。
在该界面中可以建立新的角色,并且选择【权限】选项组中的复选框,该角色就具有相应的权限。
图3-8新建角色界面
在新建角色界面中,也要首先判断输入的信息是否完整,角色的名称是否重复。
在该窗体中使用了TextBox、Button、CheckBox控件。
【创建】代码实现如下:
sqlstr="insertintorolesvalues('"+textBox4.Text.Trim()+"',"+checkBox1.Checked+","+checkBox2.Checked+","+checkBox3.Checked+","+checkBox4.Checked+")";
databasedc=newdatabase();
boolb;
b=dc.UpdateDB(sqlstr);//修改信息
if(b==true)
{
if(MessageBox.Show("添加成功!
继续添加吗?
","添加用户",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.Yes)
}
3.4专业管理
在主界面中选择【专业管理】|【添加专业】命令菜单,即可进入添加专业界面,如图3-9所示。
用户可以在该窗体中设置专业信息。
单击【确定】按钮,如果专业信息填写完整并且专业名称不重复则添加成功,否则添加失败。
在该窗体中使用了TextBox、Button控件。
图3-9添加专业界面
【确定】代码如下:
stringsql1="select*frommajorinfowhereMName='"+textName.Text.Trim()+"'";
db.GetDataFromDB(sql1);//查询信息
if(db.GetDataFromDB(sql1)!
=null)
MessageBox.Show("专业名称发生重复,请重新输入!
","提示");
else
{
stringsql="insertintomajorinfo(MName,MRemark)values('"+textName.Text.Trim()+"','"+textRemark.Text.Trim()+"')";
db.UpdateDB(sql);//修改信息
MessageBox.Show("添加专业成功!
");
textName.Clear();
textRemark.Clear();
选择【专业管理】|【浏览专业】命令菜单或者单击工具栏上的【浏览专业】按钮,即可进入浏览专业界面,如图3-10所示。
此界面中有DataGridvied、button控件。
图3-10浏览专业界面
删除专业信息时首先要判断是否有与该专业相关的课程信息,如果有则提示先删掉课程信息再删掉专业信息
修改专业信息时首先要把选择的那条数据信息显示在专业修改界面的各个控件中,然后根据所选的那条数据的唯一编号,对这条数据信息进行修改。
【修改】代码如下:
databasedb=newdatabase();
stringsql1="select*fromcourseinfowhereCName='"+dataGrid1[dataGrid1.CurrentCell]+"'";
if(db.GetDataFromDB(sql1)!
=null)
{
MessageBox.Show("该专业名已经存在,请重新输!
");
}
else
{
stringsql="updatemajorinfosetMName='"+ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][0].ToString().Trim()+"',MRemark='"+ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][1].ToString().Trim