基于C#的研究生管理系统课程设计6228678文档格式.docx
《基于C#的研究生管理系统课程设计6228678文档格式.docx》由会员分享,可在线阅读,更多相关《基于C#的研究生管理系统课程设计6228678文档格式.docx(48页珍藏版)》请在冰豆网上搜索。
3)数据库:
Access2003
3.系统运行环境
客户端:
操作系统:
Windows2007、WindowsXP
服务器端:
数据库:
1.3系统基本功能
在以上环境下对研究生信息管理系统进行开发与设计。
主要实现系统登录、系统管理、专业管理、课程管理、研究生管理、成绩管理、用户管理等主要功能。
第2章系统设计
2.1系统的模块划分
研究生信息管理系统是学校教务系统中不可缺少的一个子系统,它涉及到学生、课程等信息的结合。
学生选课系统包括以下七个模块:
1.登录模块
登录模块提供用户登录界面,用户输入正确的用户名和密码后,则可进入系统主窗口(即导航页面),从而可以选择进入相应的子系统。
2.系统管理模块
系统管理模块主要用户管理用户的基本信息,包括两个方面:
角色管理和用户管理。
其中角色管理包括,新建角色,修改角色权限,删除角色;
而用户管理是管理用户相关信息,主要包括注册用户,注销用户,修改用户权限。
在这个模块中只有系统管理员才有此权限进入并对角色和用户信息进行管理。
3.专业管理模块
专业管理模块主要用于管理专业信息,包括专业代号、专业名、和专业描述,实现对专业的添加,修改,删除,浏览的功能。
4.课程管理模块
课程管理模块主要用于对众多课程的管理,包括课程名,课程代号,课时,所属专业,授课地点。
实现对课程信息的添加,修改,删除,和浏览功能。
5.研究生管理模块
研究生管理模块用于管理维护研究生信息,是该系统的重要一环,包括学号,姓名,性别,出生日期,教师代号,所属专业构成,实现开学时对研究生基本信息的录入与后期管理,所以也是包含了添加,修改,删除,查询四个子功能。
6.成绩管理模块
成绩管理模块用于记录研究生成绩信息,包括学号、课程名和分数。
实现对学生成绩的录入修改删除查询的功能,同时在成绩的变更过程中用学号代替了姓名,有效防止重名等问题导致学生成绩出错的困扰,同时也给学生一点隐私空间,
7.用户管理模块
用户管理模块式唯一不受权限管制的模块,所有用户均可以进入该模块修改登录密码或者重新登录另一位用户。
8.帮助模块
帮助模块简要提示该系统操作要点。
由于系统设计简单实用,凡是不合理操作均有提示,新用户只需根据提示操作即可实现相应功能。
系统功能模块图如图2-1所示。
图2-1研究生管理信息系统模块图
2.2数据库设计
根据前面的分析,研究生管理信息系统数据库(masterMIS)中包括系统用户信息“UserInfo”、角色信息“Roles”、专业信息“MajorInfo”、课程信息“CourseInfo”、研究生信息“StudentInfo”、成绩信息“ScoreInfo”、教师信息“TeacherInfo”七个数据表。
表的结构、表字段的数据类型及相关说明如下:
1.系统用户表
系统用户表“UserInfo”用于存放系统用户的相关数据。
其结构如表2-1所示。
表2-1系统用户表
列名
说明
数据类型
约束
UName
用户名
字符串,长度为16
主键
PWD
用户密码
非空
RoleName
角色
2.角色信息表
角色信息表“Roles”结构如表2-2所示。
表2-2角色信息表
角色名
字符串,长度为20
SystemManage
系统管理
是/否
可空
MajorManage
专业管理
CourseManage
课程管理
MasterManage
研究生管理
ScoreManage
成绩管理
UserManage
用户管理
3.专业信息表
学生信息表“MajorInfo”结构如表2-3所示。
表2-3专业信息表
MName
专业名
字符串,长度为10
MRemark
专业描述
字符串,长度为50
MNo
专业代号
4.课程信息表
课程信息表“CourseInfo”结构如表2-4所示。
表2-4课程信息表
CName
课程名
CDate
课时
整数
CNum
课程号
Mname
所属专业
CPlace
授课地点
字符串,长度20
5.学生信息表
学生信息表“StudentInfo”结构如表2-5所示。
表2-5学生信息表
SID
学号
主键
SName
姓名
SSex
性别
只能选择”男”或”女”
SBirth
生日
TID
教师号
主键,引用TeacherInfo的外码
主键,引用MajorInfo的外码
6.成绩信息表
成绩信息表“ScoreInfo”用于学生成绩的相关数据。
其结构如表2-6所示。
表2-6系统用户表
课程
Score
分数
7.教师信息表
教师信息表“TeacherInfo”结构如表2-7所示。
表2-7选课信息表
TName
第3章 系统的详细设计及实现
3.1公共类
考虑到系统的各个模块都需要访问数据库,因此最好的方法是编写一些访问数据库的方法,如返回数据集的公共查询方法,执行数据操作的公共方法,并把它们放在一个公共的类(DataBase)中,然后在各模块中调用这些方法来实现对数据库的访问。
同样,在用户登录时,可能需要记录一些关于用户的信息,例如用户名、用户权限等,因此也需要使用到一些公共的静态变量,把这些变量放置在一个名为“ClassShared”的类中。
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(Exceptionexp)
MessageBox.Show(exp.Message);
}
if(dataSet.Tables[0].Rows.Count!
=0)
{returndataSet;
}//若找到相应数据返回数据集
else
{returnnull;
}//若找不到相应数据返回空值
2.公共类数据操作方法UpdateDB
公共类数据操作方法UpdateDB用于对数据进行添加、修改和删除操作,若操作成功则返回true,否则返回false。
publicboolUpdateDB(stringsqlStr)//公共数据操作方法,用于对数据进行增,改,删操作
{
try
dataConnection.Open();
command=dataConnection.CreateCommand();
command.CommandText=sqlStr;
command.ExecuteNonQuery();
//关闭连接
returntrue;
catch(Exceptionexp)
MessageBox.Show(exp.Message);
returnfalse;
3.静态公共类ClassShared
用于记录用户名和用户角色,代码如下:
namespace研究生管理信息系统
{
publicclassClassShared//用于记录用户名和用户角色
publicstaticstring[]userInfo=newstring[2];
}
}
3.2系统登录与主窗体
登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性和安全性。
3.2.1登录界面设计
新建一个Windows应用程序,命名为“研究生信息管理系统”,使用PictureBox、Label、TextBox、Button控件将出现的默认窗体Form1设计成如图3-1所示。
图3-1登录界面
3.2.2登录功能实现及代码
接下来编写登录模块的代码。
【确认】按钮用于验证输入的用户名和用户密码,若正确则进入系统主界面;
否则弹出错误提示,并等待用户的重新输入。
登录时,需要记录登录的用户名和用户权限,因此在“ClassShared”公共类中声明公共静态成员,声明后“ClassShared”公共类的代码上文已有。
然后切换到“frmMain”窗体设计器,双击【登录】按钮,编写其单击事件的代码如下:
通过判断输入文本框中的用户名与密码是否与UserInfo表中的用户密码相匹配,决定是进入主界面还是报错提示用户重新输入。
privatevoidbtnOK_Click(objectsender,EventArgse)
try//验证登录密码
DataSetds=newDataSet();
DataBasedb=newDataBase();
stringsqlStr="
selectPWD,RoleNamefromUserInfowhereUName='
+txtUserName.Text.Trim()+"
'
ds=db.GetDataFromDB(sqlStr);
if(ds.Tables[0].Rows[0].ItemArray[0].ToString()==txtPassword.Text.Trim())//密码正确情况,进入主界面
FrmMainfrmmain=newFrmMain();
ClassShared.userInfo[0]=txtUserName.Text.Trim();
ClassShared.userInfo[1]=ds.Tables[0].Rows[0].ItemArray[1].ToString();
frmmain.Show();
this.Hide();
else//密码错误情况,返回重新输入
MessageBox.Show("
用户名或密码输入错误,请重新输入!
);
txtUserName.Text="
txtPassword.Text="
txtUserName.Focus();
catch
用户名或密码错误!
"
错误"
除了窗体中的确认按钮,有时候用户希望输入完密码后想直接按下【Enter】键便进入系统主界面,这就需要编写文本框txtPassword的KeyDown事件代码,判断用户按下的是哪个键,如果是【Enter】则调用“btnOK-Click”方法已登录系统。
privatevoidtxtPassword_KeyDown(objectsender,KeyEventArgse)//Enter键按下确认
if(e.KeyCode==Keys.Enter)
btnOK_Click(sender,e);
3.2.3主窗体界面设计
用户登录成功后,进入系统主界面,通过在选择主界面上的按钮进入相应子系统。
所以应当添加一个名为“frmMain”的主窗体。
添加完窗体,然后开始添加Label、GroupBox,Button和StatusStrip控件。
接着设置各控件的属性,在背景制作上,使用PhotoShop图像处理软件将小图标与大背景融合,再将按钮放置在相应图标旁。
最后更改按钮,状态栏的背景色,使整个界面为蓝色主调,总之需要根据实际情况和美观需求合理设置。
最后将主窗体界面设计成如图3-2所示:
图3-2主界面图
3.2.4主窗体功能实现及代码
1、添加窗体
主窗体是导航界面,是进入各子系统的入口。
因此需要添加7个新的窗体,分别用于系统管理,专业管理,课程管理,研究生管理,成绩管理,用户管理和帮助,其名称分别为“frmSystem”、“frmMajor”、“frmCourse”、“frmMaster”、“frmGrade”、“frmUser”和“frmHelp”,添加方法和步骤与前面介绍的“frmMain”的添加过程相同,这里不再赘述。
2、编写代码
当窗体载入时,将前面公共静态数组“userInfo[]”保存的用户名和角色及权限将在本窗体中体现主来,不同权限的用户将使用不同的功能。
没有相应的权限则不能进入子系统,例如学生、教师就无法进入【系统管理】等权限较高的子系统;
用户名和角色将显示在状态栏中,同时状态栏将显示具体时间;
单击权限许可的按钮将进入相应的子系统;
当用户单击主窗体关闭按钮或【退出】按钮时,应用程序终止运行。
主窗体代码如下:
通过状态栏显示登录的用户、角色和和时间信息;
接着通过条件语句判断用户角色用以确定用户权限,没有权限进入的模块将使用按钮的Enable属性将其设置为false,使其不能触发改按钮事件。
从而实现权限的设置。
privatevoidFrmMain_Load(objectsender,EventArgse)//窗体载入事件
tsslblUser.Text=ClassShared.userInfo[0]+"
"
//状态栏显示当前用户,角色和时间
tsslblRole.Text=ClassShared.userInfo[1];
tsslblTime1.Text="
+DateTime.Now.ToLongDateString()+"
tsslblTime2.Text=DateTime.Now.ToLongTimeString();
//设置不同角色的权限
if(ClassShared.userInfo[1]=="
系统管理员"
)//当前系统预设4种角色
{;
elseif(ClassShared.userInfo[1]=="
普通管理员"
)
button1.Enabled=false;
教师"
button2.Enabled=false;
学生"
button3.Enabled=false;
button4.Enabled=false;
publicFrmMain()
InitializeComponent();
点击相应按钮进入相应的子模块。
按钮共设有8个,分别为系统管理、专业管理、课程管理、研究生管理,成绩管理、用户管理、帮助和退出。
privatevoidbutton1_Click(objectsender,EventArgse)//进入系统管理
FrmSystemfrmsystem=newFrmSystem();
frmsystem.Show();
privatevoidbutton2_Click(objectsender,EventArgse)//进入专业管理
FrmMajorfrmmajor=newFrmMajor();
frmmajor.Show();
privatevoidbutton3_Click(objectsender,EventArgse)//进入课程管理
FrmCoursefrmcourse=newFrmCourse();
frmcourse.Show();
privatevoidbutton4_Click(objectsender,EventArgse)//进入研究生管理
FrmMasterfrmmaster=newFrmMaster();
frmmaster.Show();
privatevoidbutton5_Click(objectsender,EventArgse)//进入成绩管理
FrmGradefrmgrade=newFrmGrade();
frmgrade.Show();
privatevoidbutton6_Click(objectsender,EventArgse)//进入用户管理
FrmUserfrmuser=newFrmUser();
frmuser.Show();
privatevoidbtnClose_Click(objectsender,EventArgse)//点击主窗体【关闭】退出
Application.Exit();
privatevoidFrmMain_FormClosed(objectsender,FormClosedEventArgse)//退出系统
privatevoidbtnHelp_Click(objectsender,EventArgse)//进入帮助
FrmHelpfrmhelp=newFrmHelp();
frmhelp.Show();
3.3系统管理
系统管理模块主要用于管理用户的信息,主要用于实现对用户的添加、修改、删除和对角色的创建、修改权限和删除的功能。
3.3.1角色管理界面设计
打开前面添加的“frmSystem”窗体,使用GroupBox、ToolStip、StatusStrip、Label、Button和DataGridView控件,其中将各Button的Name属性分被改为与其功能相关的名字,如“添加”按钮的Name属性为“btnAdd”。
以此类推将各个控件的“Name”属性改为与功能相适应。
其中需注意将DataDridView的ReadOnly属性改为“True”.将界面设计为如图3-3所示:
图3-3角色管理界面
3.3.2角色管理实现及代码
由于角色管理和用户管理是在同意窗体