基于C#的研究生管理系统课程设计论文.doc_第1页
基于C#的研究生管理系统课程设计论文.doc_第2页
基于C#的研究生管理系统课程设计论文.doc_第3页
基于C#的研究生管理系统课程设计论文.doc_第4页
基于C#的研究生管理系统课程设计论文.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北石油大学本科生课程设计(论文)目 录第1章 概 述11.1项目的目的和意义11.2项目体系结构及开发环境11.3系统基本功能1第2章 系统设计22.1系统的模块划分22.2数据库设计4第3章 系统的详细设计及实现63.1公共类63.2系统登录与主窗体83.3 系统管理133.4专业管理203.5课程管理303.6研究生管理313.7成绩管理333.8用户管理343.9 帮助36结 论37参考文献381- -东北石油大学本科生课程设计(论文)第1章 概 述1.1项目的目的和意义本次课程设计的题目是“研究生信息管理系统”的设计与实现。该设计是对本学期前八周所学的C#程序设计课程的巩固和深入应用。利用前面学过的知识来解决实际问题,锻炼解决问题的能力和动手编程的能力。同时初步理解软件开发步骤和软件工程思想。并且通过亲手编写程序与开动脑筋,这加深理解并巩固所学专业知识,进一步提高认识问题、分析问题、解决问题的能力,为今后走向社会,适应工作,对某些软件实际要求做好思想准备和知识储备。 1.2项目体系结构及开发环境1 本系统采用Client/Server体系结构。2 系统开发环境1) 开发平台:Microsoft Visual Studio 20082) 开发语言:C#3) 数据库:Access20033 系统运行环境客户端:操作系统:Windows 2007、Windows XP服务器端:数据库:Access20031.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用户密码字符串,长度为16非空RoleName角色字符串,长度为16非空2.角色信息表角色信息表“Roles”结构如表2-2所示。表2-2角色信息表列名说明数据类型约束RoleName角色名字符串,长度为20主键SystemManage系统管理是/否可空MajorManage专业管理是/否可空CourseManage课程管理是/否可空MasterManage研究生管理是/否可空ScoreManage成绩管理是/否可空UserManage用户管理是/否可空3.专业信息表学生信息表“MajorInfo”结构如表2-3所示。表2-3专业信息表列名说明数据类型约束MName专业名字符串,长度为10主键MRemark专业描述字符串,长度为50非空MNo专业代号字符串,长度为20非空4.课程信息表课程信息表“CourseInfo”结构如表2-4所示。表2-4 课程信息表列名说明数据类型约束CName课程名字符串,长度为20非空CDate课时整数非空CNum课程号字符串,长度为10主键Mname所属专业字符串,长度为10非空CPlace授课地点字符串,长度20非空5.学生信息表学生信息表“StudentInfo”结构如表2-5所示。表2-5 学生信息表列名说明数据类型约束SID学号字符串,长度为10主键 SName姓名字符串,长度为10非空SSex性别字符串,长度为10只能选择”男”或”女”SBirth生日字符串,长度为20非空TID教师号字符串,长度为10主键,引用TeacherInfo的外码MName所属专业字符串,长度为20主键,引用MajorInfo的外码6成绩信息表成绩信息表“ScoreInfo”用于学生成绩的相关数据。其结构如表2-6所示。表2-6 系统用户表列名说明数据类型约束SID学号字符串,长度为16主键CName课程字符串,长度为16非空Score分数整数非空7.教师信息表教师信息表“TeacherInfo”结构如表2-7所示。表2-7选课信息表列名说明数据类型约束TID教师号字符串,长度为10主键 TName姓名字符串,长度为10非空第3章 系统的详细设计及实现3.1公共类考虑到系统的各个模块都需要访问数据库,因此最好的方法是编写一些访问数据库的方法,如返回数据集的公共查询方法,执行数据操作的公共方法,并把它们放在一个公共的类(DataBase)中,然后在各模块中调用这些方法来实现对数据库的访问。同样,在用户登录时,可能需要记录一些关于用户的信息,例如用户名、用户权限等,因此也需要使用到一些公共的静态变量,把这些变量放置在一个名为“ClassShared”的类中。3.1.1添加DataBase公共类首先为系统添加一个名为“DataBase”的公共类,用于存放访问数据库的公共方法。添加公共类的方法和步骤如下:(1)选择【项目】-【添加类】菜单项,将弹出【添加新项】对话框,保留默认的选择,在“名称”文本框中输入“DataBase”。(2)单击【添加】按钮,则类“DataBase”已经被添加到项目中,并自动切换到该类的代码窗口。(3)设置DataBase类的访问修饰符为“Public”。3.1.2 编写公共方法因为在这些方法中需要使用到OleDbConnection、OleDbDataAdapter、DataSet和MessageBox,所以首先应当引入以下命名空间:using System.Data;using System.Data.OleDb;using System.Windows.Forms;然后为“DataBase”类声明几个公共变量:public OleDbConnection dataConnection = new OleDbConnection();public OleDbDataAdapter dataAdapter;public DataSet dataSet = new DataSet();public OleDbCommand command;/定义数据库连接字符串,随具体环境而定,应根据内容自行调整string connstr = Provider = Microsoft.Jet.OLEDB.4.0; + DataSource=masterMIS.mdb;1.公共查询方法GetDataFromDBGetDataFromDB是一个返回数据集的公共查询方法,如果正常访问则返回查询结果;否则返回null。代码如下:public DataSet GetDataFromDB(string sqlStr)/这是一个返回数据集的公共查询方法 try dataConnection.ConnectionString = connstr; dataAdapter = new OleDbDataAdapter(sqlStr, dataConnection); dataSet.Clear(); dataAdapter.Fill(dataSet);/填充数据集 dataConnection.Close(); catch (Exception exp) MessageBox.Show(exp.Message); dataConnection.Close(); if (dataSet.Tables0.Rows.Count != 0) return dataSet; /若找到相应数据返回数据集 else return null; /若找不到相应数据返回空值 2.公共类数据操作方法UpdateDB公共类数据操作方法UpdateDB用于对数据进行添加、修改和删除操作,若操作成功则返回true,否则 返回false。代码如下:public bool UpdateDB(string sqlStr)/公共数据操作方法,用于对数据进行增,改,删操作 try dataConnection.ConnectionString = connstr; dataConnection.Open(); command = dataConnection.CreateCommand(); command.CommandText = sqlStr; command.ExecuteNonQuery(); dataConnection.Close(); /关闭连接 return true; catch (Exception exp) MessageBox.Show(exp.Message); return false; 3.静态公共类ClassShared用于记录用户名和用户角色,代码如下:namespace 研究生管理信息系统 public class ClassShared/用于记录用户名和用户角色 public static string userInfo = new string2; 3.2系统登录与主窗体登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性和安全性。3.2.1 登录界面设计新建一个Windows应用程序,命名为“研究生信息管理系统”,使用PictureBox、Label、TextBox、Button控件将出现的默认窗体Form1设计成如图3-1所示。图3-1 登录界面3.2.2 登录功能实现及代码接下来编写登录模块的代码。【确认】按钮用于验证输入的用户名和用户密码,若正确则进入系统主界面;否则弹出错误提示,并等待用户的重新输入。登录时,需要记录登录的用户名和用户权限,因此在“ClassShared”公共类中声明公共静态成员,声明后“ClassShared”公共类的代码上文已有。然后切换到“frmMain”窗体设计器,双击【登录】按钮,编写其单击事件的代码如下:通过判断输入文本框中的用户名与密码是否与UserInfo表中的用户密码相匹配,决定是进入主界面还是报错提示用户重新输入。 private void btnOK_Click(object sender, EventArgs e) try /验证登录密码 DataSet ds = new DataSet(); DataBase db = new DataBase(); string sqlStr = select PWD,RoleName from UserInfo where UName= + txtUserName.Text.Trim() + ; ds = db.GetDataFromDB(sqlStr); if (ds.Tables0.Rows0.ItemArray0.ToString() = txtPassword . Text.Trim() /密码正确情况,进入主界面 FrmMain frmmain = new FrmMain(); ClassShared.userInfo0 = txtUserName.Text.Trim(); ClassShared.userInfo1 = ds.Tables0.Rows0.ItemArray1.ToString(); frmmain.Show(); this.Hide(); else/密码错误情况,返回重新输入 MessageBox.Show( 用户名或密码输入错误,请重新输入!); txtUserName.Text =; txtPassword.Text =; txtUserName.Focus(); catch MessageBox.Show(用户名或密码错误!,错误); 除了窗体中的确认按钮,有时候用户希望输入完密码后想直接按下【Enter】键便进入系统主界面,这就需要编写文本框txtPassword的KeyDown事件代码,判断用户按下的是哪个键,如果是【Enter】则调用“btnOK-Click”方法已登录系统。代码如下:private void txtPassword_KeyDown(object sender, KeyEventArgs e)/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,使其不能触发改按钮事件。从而实现权限的设置。 private void FrmMain_Load(object sender, EventArgs e)/窗体载入事件 tsslblUser.Text = ClassShared.userInfo0 + ;/状态栏显示当前用户,角色和时间 tsslblRole.Text = ClassShared.userInfo1; tsslblTime1.Text = + DateTime.Now.ToLongDateString() + ; tsslblTime2.Text = DateTime.Now.ToLongTimeString(); /设置不同角色的权限 if (ClassShared.userInfo1 = 系统管理员)/当前系统预设4种角色 ; else if (ClassShared.userInfo1 = 普通管理员) button1.Enabled = false; else if (ClassShared.userInfo1 = 教师) button1.Enabled = false; button2.Enabled = false; else if (ClassShared.userInfo1 = 学生) button1.Enabled = false; button3.Enabled = false; button4.Enabled = false; public FrmMain() InitializeComponent(); 点击相应按钮进入相应的子模块。按钮共设有8个,分别为系统管理、专业管理、课程管理、研究生管理,成绩管理、用户管理、帮助和退出。 private void button1_Click(object sender, EventArgs e)/进入系统管理 FrmSystem frmsystem = new FrmSystem(); frmsystem.Show(); private void button2_Click(object sender, EventArgs e)/进入专业管理 FrmMajor frmmajor = new FrmMajor(); frmmajor.Show(); private void button3_Click(object sender, EventArgs e)/进入课程管理 FrmCourse frmcourse = new FrmCourse(); frmcourse .Show(); private void button4_Click(object sender, EventArgs e)/进入研究生管理 FrmMaster frmmaster = new FrmMaster(); frmmaster.Show(); private void button5_Click(object sender, EventArgs e)/进入成绩管理 FrmGrade frmgrade = new FrmGrade(); frmgrade.Show(); private void button6_Click(object sender, EventArgs e)/进入用户管理 FrmUser frmuser = new FrmUser(); frmuser.Show(); private void btnClose_Click(object sender, EventArgs e)/点击主窗体【关闭】退出 Application.Exit(); private void FrmMain_FormClosed(object sender, FormClosedEventArgs e)/退出系统 Application.Exit(); private void btnHelp_Click(object sender, EventArgs e)/进入帮助 FrmHelp frmhelp = new FrmHelp(); 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 角色管理实现及代码由于角色管理和用户管理是在同意窗体中实现的,所以借助gbxNewRole、dgrdvRoles1等的Visible属性实现同一窗体下实现对不同对象管理。通过单击工具栏【角色管理】或者【用户信息管理】显示不同界面,实现不同操作。在实现对角色的添加、修改和删除的功能时,本模块需要用到几个通用方法。如用于清空文本框和组合框的Clear1()方法等等,并且角色信息记录在数据库masterMIS中的Roles表中。以下都将一一列举出来:窗体载入发生事件,讲界面置空,只留下状态栏和工具栏,通过Visible属性完成。 private void FrmSystem_Load(object sender, EventArgs e) /状态栏显示当前用户,角色和时间 tsslblUser.Text = ClassShared.userInfo0 + ; tsslblRole.Text = ClassShared.userInfo1; tsslblTime1.Text = + DateTime.Now.ToLongDateString() + ; tsslblTime2.Text = DateTime.Now.ToLongTimeString(); /设置初始页面为空 gbxNewRole.Visible = false; gbxNewUser.Visible = false; RefreshData1(); RefreshData2(); dgrdvRoles1.Visible = false; dgrdvUser.Visible = false; void Clear1()/用于清空gbxNewrole中的文本框及复选框 txtRole.Text = ; ckxSystem.Checked = false; ckxMajor.Checked = false; ckxCourse.Checked = false; ckxGrade.Checked = false; ckxMaster.Checked = false; ckxUser.Checked = false; void SetHeaderText1()/设置表头名字既列标题 dgrdvRoles1.Columns0.HeaderText = 角色; dgrdvRoles1.Columns1.HeaderText = 系统管理权限; dgrdvRoles1.Columns2.HeaderText = 专业管理权限; dgrdvRoles1.Columns3.HeaderText = 课程管理权限; dgrdvRoles1.Columns4.HeaderText = 研究生管理权限; dgrdvRoles1.Columns5.HeaderText = 成绩管理权限; dgrdvRoles1.Columns6.HeaderText = 用户管理权限; 刷新数据,与数据表Roles关联,保证数据实时更新void RefreshData1()/刷新数据 string comStr; DataBase db = new DataBase(); DataSet ds = new DataSet(); comStr = select * from Roles ; ds = db.GetDataFromDB(comStr); if (ds = null) MessageBox.Show(无该角色信息记录!); else dgrdvRoles1.DataSource = ds.Tables0; SetHeaderText1(); 选择不同角色记录时,将表中信息显示在dgrdvRoles1中private void dgrdvRoles1_RowHeaderMouseClick(object sender,DataGridViewCellMouseEventArgs e)/将选中一列显示在组合框中 int n = this.dgrdvRoles1.CurrentCell.RowIndex; txtRole.Text = this.dgrdvRoles10, n.Value.ToString(); ckxSystem.Checked = Convert.ToBoolean(this.dgrdvRoles11, n.Value); ckxMajor.Checked = Convert.ToBoolean(this.dgrdvRoles12, n.Value); ckxCourse.Checked = Convert.ToBoolean(this.dgrdvRoles13, n.Value); ckxGrade.Checked = Convert.ToBoolean( this.dgrdvRoles14, n.Value); ckxMaster.Checked = Convert.ToBoolean( this.dgrdvRoles15, n.Value); ckxUser.Checked = Convert.ToBoolean( this.dgrdvRoles16, n.Value); 隐藏其他组合框和数据表,显示角色管理操作项。private void toolStripButton1_Click(object sender, EventArgs e)/单击【角色管理】,载入角色管理 gbxNewRole.Visible = true; dgrdvRoles1.Visible = true; gbxNewUser.Visible = false ; dgrdvUser.Visible = false ; 以下实现对角色信息的添改删和退出操作,代码应分别给出。通过调用MessageBox方法和if条件语句判断添加操作正确和错误提示。以下添改删查操作均与数据表Roles相关联。 private void btnAdd1_Click(object sender, EventArgs e)/添加 try if (txtRole.Text.Trim() != null & (ckxSystem.Checked != false | ckxMajor.Checked != false | ckxCourse.Checked != false | ckxMaster.Checked != false | ckxUser.Checked != false | ckxGrade.Checked != false) string sqlStr; sqlStr = insert into Roles values( + txtRole.Text.Trim() + , + ckxSystem.Checked + , + ckxMajor.Checked + , + ckxCourse.Checked + , + ckxMaster.Checked + , + ckxGrade.Checked + , + ckxUser.Checked + ); DataBase db = new DataBase(); bool b; b = db.UpdateDB(sqlStr); if (b = true) if (MessageBox.Show(添加成功!继续添加吗?, 添加学生, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = DialogResult.Yes) ; Clear1(); dgrdvRoles1.Visible = true; else return; else MessageBox.Show(角色名不为空,必须选定一定权限!); txtRole.Focus(); RefreshData1(); catch (Exception ex) MessageBox.Show(ex.Message); Clear1(); 通过MessageBox方法与if语句实现修改和报错,修改代码: private void btnUpdate1_Click(object sender, EventArgs e)/修改 dgrdvRoles1.Visible = true; try if (txtRole.Text =) MessageBox.Show(请点击表选择要修改的对象!); else if (MessageBox.Show(确定修改该角色吗?, 修改角色, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论