课程设计(论文)-研究生信息管理系统.doc_第1页
课程设计(论文)-研究生信息管理系统.doc_第2页
课程设计(论文)-研究生信息管理系统.doc_第3页
课程设计(论文)-研究生信息管理系统.doc_第4页
课程设计(论文)-研究生信息管理系统.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

东北石油大学本科生课程设计(论文)目 录第1章概述21.1 项目的目的21.2项目的意义21.3项目体系结构及开发环境2第2章系统功能32.1系统功能简述32.1系统功能模块设计4第3章数据库设计53.1 数据库设计53.2 数据库中表的关系图7第4章系统的详细设计及功能实现84.1公共类84.2 登录模块104.3 主窗体设计154.4 系统管理模块174.5 专业管理模块194.6 课程管理模块224.6 研究生管理模块244.7 成绩管理模块264.8 用户管理模块31第5章 结 论34第6章 参考文献35第1章 概述1.1 项目的目的研究生信息管理是一项非常重要的工作,它关系到整个学校的工作效率。一个好的信息管理系统能够方便系统管理人员对学校的基本数据进行维护,包括信息的增加,修改以及对各项信息的变动等操作。采用研究生信息管理系统不仅可以节省人力物力,而且可以增强学校资料的安全性,提高学校的管理能力。运用该系统,可以清晰地了解研究生的课程、专业、成绩等信息,并根据需要添加、删除、修改相应的信息。但是不同的角色,登录得到的界面不同,拥有的权限也不同,这样,起到了对学校资料的保护的作用。整个系统的管理员可以根据学校情况添加、删除、修改、角色的权限,很方便管理。1.2项目的意义本次课程设计的题目是“研究生信息管理系统”的设计与实现。该设计是对本学期前八周所学的面向对象程序设计课程的巩固和深入应用。利用前面学过的知识来解决实际问题,锻炼解决问题的能力和动手编程的能力。同时初步理解软件开发步骤和软件工程思想。1.3项目体系结构及开发环境1 本系统采用Client/Server体系结构。2 系统开发环境1) 开发平台:Microsoft Visual Studio 20052) 开发语言:C#3) 数据库:Access20033 系统运行环境客户端:操作系统: Windows 2000、Windows XP服务器端:数据库:Access2003第2章 系统功能2.1系统功能简述研究生信息管理涉及专业、课程、成绩、个人信息等的管理,需要处理大量数据和信息,而且对这些数据和信息的准确性、及时性都要求非常高,任何的错误和遗漏都会造成学校管理的混乱:若采用纯人工的方法进行管理有一定难度,因此,目前大多数学校都开始采用计算机技术来实现研究生信息的管理。1. 该系统的功能主要包括系统管理、专业管理、课程管理、研究生管理、成绩管理和用户管理等主要模块,还有一些其他模块如帮助模块以及登录模块上的功能。2. 系统管理员添加年级信息、班级信息、所开设的课程信息和系统用户信息,对用户进行权限设置并对其进行维护;3. 新生入学时,普通管理员录入研究生的基本信息,并在以后的教学中对研究生信息进行基本维护;4. 考试结束后,由任课老师对研究生的成绩进行录入,并对成绩进行分析;5. 学期之初,导师给每位研究生选择课程,并可以对研究生的信息和成绩进行查询;6. 每位研究生可以根据自己的需要对以上录入的信息进行适当的查询。系统登录系统主界面帮助用户管理成绩管理研究生管理课程管理专业管理系统管理图2-1 主文件架构图2.1系统功能模块设计本研究生信息管理系统的功能由登录界面和主窗体界面两部分的功能组成。其中主窗体界面的功能由系统管理、专业管理、课程管理、研究生管理、成绩管理、用户管理等模块组成。具体如下:1. 登录模块:通过登录模块,用户可以进入本系统进行相关操作。同时用户通过“忘记密码”链接,可以找回密码。用户还可以通过友情链接,浏览研究生的一些相关消息。2. 系统管理:通过本模块,用户可以注册新用户,删除用户和清空系统访问量。3. 专业管理模块:通过本模块,用户可以添加,浏览专业信息,浏览过程中可以进行修改、删除和更新。4. 课程管理模块:通过本模块,用户可以添加,浏览课程信息,浏览过程中可以进行修改、删除和更新。 5. 研究生管理模块:通过本模块,用户可以添加,浏览学生信息,浏览过程中可以进行修改、删除和更新。6. 成绩管理模块:通过本模块,用户可以添加,浏览学生成绩,浏览过程中可以进行修改、删除和更新。7. 用户管理模块:通过本模块,用户可以修改密码和密保,也可以进行重新登录。8. 帮助模块:本模块分为操作引导和关于两功能。操作引导告诉用户如何使用本系统。而关于则是本系统的一些其他的信息。研究生管理信息系统课程管理用户管理成绩管理研究生管理专业管理系统管理重新登录修改密保修改密码删除成绩修改成绩浏览成绩添加成绩删除学生修改学生浏览学生添加学生删除课程修改课程浏览课程添加课程删除专业修改专业浏览专业添加专业清空访问量注册新用户图2-2 系统功能模块结构图第3章 数据库设计根据研究生管理信息系统的功能要求,我们设计该系统需要整理研究生信息、教师信息、课程信息、专业信息、成绩信息、用户信息、角色信息。这样我们运行系统时,根据需要执行便可看到预想的信息。根据所学的数据库知识知道我们可以给该系统建立数据库,并在建立的数据库中创建所需信息的表以及各表间的关系图。3.1 数据库设计该系统的数据库命名为masterMIS,数据库中共包括七张表,如表3-13-8所示:1. 用户信息表(userinfo),包含用户的名称,密码,角色,密保问题以及答案;2. 角色信息表(roles),包含角色名称和与该角色相关的权限;3. 专业信息表(majorinfo),包含学校所开专业的名称及其详细介绍;4. 课程信息表(courseinfo),包含学校所开设课程的名称及其详细介绍;5. 研究生基本信息表(studentinfo),包含研究生的学号、姓名、性别等信息;6. 成绩信息表(scoreinfo),包含研究生的学号、课程、成绩等信息;7. 教师信息表(teacherinfo),包括教师的姓名等信息。8. 访问信息表(visted),记录系统的访问量。下面列出了各个表的数据结构,如表3-1表3-8所示。表3-1 用户信息表(userinfo)字段名数据类型描述Unamevarchar用户名(主键)PWDvarchar密码RoleNamevarchar角色名Questionvarchar密保问题Answervarchar密保问题答案表3-2 角色信息表(roles)字段名数据类型描述RoleNamevarchar角色名(主键)SystemManagebit系统管理MajorManagebit专业管理CourseManagebit课程管理ScoreManagebit成绩管理表3-3 专业信息表(majorinfo)字段名数据类型描述MIDint专业编号MNamevarchar专业名称(主键)MRemarkvarchar专业描述表3-4 课程信息表(courseinfo)字段名数据类型描述CIDint课程编号(主键)CNamevarchar课程名称CDatevarchar学时CNumvarchar学分MNamevarchar专业名称CRemarkvarchar课程描述表3-5 研究生基本信息表(studentinfo)字段名数据类型描述SIDint研究生学号(主键)SNamevarchar研究生姓名SSexvarchar性别SPIDvarchar身份证号SBirthvarchar出生日期TIDint老师编号MNamevarchar专业名称SRemarkvarchar备注表3-6 成绩信息表(scoreinfo)字段名数据类型描述RIDint 成绩编号(主键)SIDint学号CNamevarchar课程名称Scorevarvhar分数表3-7 教师信息表(teacherinfo)字段名数据类型描述TIDint教师编号(主键)TNamevarchar用户名表3-8 系统访问信息表(visted)字段名数据类型描述vistedcountint系统访问量3.2 数据库中表的关系图一般情况下,数据库中所包含的表都不是独立存在的,而是表与表之间有一定的关系,称为关联。如果数据库中的信息不能满足正常的依赖关系,就会破坏数据的完整性和一致性。根据本实例的特点,需要设置课程信息表、专业信息表、研究生信息表、成绩信息表和教师信息表之间的关系,如图3-1所示。设置用户信息表与角色信息表之间的关系,如图3-2所示。图3-1 数据库关系图图3-2 用户角色关系图第4章 系统的详细设计及功能实现4.1公共类考虑到系统的各个模块都需要访问数据库,因此最好的方法是编写一些访问数据库的方法,如返回数据集的公共查询方法,执行数据操作的公共方法,并把它们放在一个公共的类(DataBase)中,然后在各模块中调用这些方法来实现对数据库的访问。同样,在用户登录时,可能需要记录一些关于用户的信息,例如用户名、用户权限等,因此也需要使用到一些公共的静态变量,把这些变量放置在一个名为“ClassShared”的类中。4.1.1添加DataBase公共类并编写公共方法首先为系统添加一个名为“DataBase”的公共类,用于存放访问数据库的公共方法。然后在此类中编写公共方法。因为在这些方法中需要使用到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; + Data Source=E:SelectCourse.mdb;1.公共查询方法GetDataFromDBGetDataFromDB是一个返回数据集的公共查询方法,如果正常访问则返回查询结果;否则返回null。在方法中添加代码如下: dataConnection.ConnectionString = connstr;dataAdapter = new OleDbDataAdapter(sqlStr, dataConnection); dataSet.Clear(); dataAdapter.Fill(dataSet); /填充数据集 dataConnection.Close();/关闭连接 if (dataSet.Tables0.Rows.Count != 0) return dataSet; /若找到相应的数据,则返回数据集 else return null;/若没有找到相应的数据,返回空值 2.公共数据操作方法UpdateDB公共数据操作方法UpdateDB用于对数据进行添加、修改和删除操作,若操作成功则返回true;否则返回false。在方法中添加代码如下:dataConnection.ConnectionString = connstr;dataConnection.Open();command = dataConnection.CreateCommand();command.CommandText = sqlStr;command.ExecuteNonQuery(); dataConnection.Close();/关闭连接return true;3.随机生成验证码的方法随机生成验证码,参数codeLength是验证码的长度,本系统统一是4个字符。在方法中添加代码如下:string str = ;string codechars = abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ;int j;Random rnd = new Random();for (int i = 0; i codeLength; i+)j = rnd.Next(codechars.Length);str += codecharsj;return str;/str即为随机生成的验证码4.1.3 添加ClassShared公共类类似于添加DataBase公共类那样,为项目添加一个名为“ClassShared”的公共类,用来存放一些公共的静态变量,以在窗体之间传递数据。4.2 登录模块登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性和安全性。本节首先制作一个登录模块,登录成功后,即可进入系统的功能界面。4.2.1 登录界面设计新建一个Windows应用程序,使用Label、TextBox、Button、LinkLable、ComboBox等控件并修改各控件的属性,设计成如图4-1所示。图4-1 登录界面4.2.2 登录模块代码接下来编写登录模块的代码。【登录】按钮用于验证输入的用户名和用户密码,若正确则进入系统主界面;否则弹出错误提示,并等待用户的重新输入。登录时,需要记录登录的用户名和用户权限,因此在“ClassShared”公共类中声明公共静态成员,并在“ClassShared”公共类添加如下代码:public static string userInfo = new string2;下面编写登录按钮的代码,由于用户登录时的类别有系统管理员、普通管理员、教师、学生四种,每种身份类别的代码相似,下面就不详细书写。/双击【登录】按钮,编写其单击事件的代码如下: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() = txtUserPassword.Text.Trim() & ds.Tables0.Rows0.ItemArray1.ToString() = cmbType.SelectedItem.ToString() if (cmbType.SelectedItem.ToString().Trim() = 系统管理员) frmMain myFrmMain = new frmMain(); ClassShared.userInfo0 = txtUserName.Text.Trim(); ClassShared.userInfo1 = ds.Tables0.Rows0.ItemArray1.ToString(); string str = Update visted Set vistedcount=vistedcount+1; db.UpdateDB(str); myFrmMain.Show(); this.Hide(); else if (cmbType.SelectedItem.ToString().Trim() = 普通管理员) /如上,显示普通管理员主窗体界面 else if (cmbType.SelectedItem.ToString().Trim() = 教师) /如上,显示教师主窗体界面 else/如上,显示学生主窗体界面 else MessageBox.Show(用户名或密码错误,请重新输入!); txtUserName.Focus(); 有时候,用户希望在输入完密码或用户名后直接按下【Enter】键便进入系统主界面,这就需要编写文本框txtUserPassword和txtUserName的KeyDown事件代码,以txtUserPassword为例,添加代码如下:if (e.KeyCode = Keys.Enter) btnOK_Click(sender, e); 4.2.3 找回密码功能的实现 还有些时候用户可能会忘记密码,这时候可以点击界面中忘记密码链接进入找回密码界面,然后通过回答密保问题,如果经验证成功的话即可找回用户的密码。接下来按前面的方法设计如图4-2和4-3 所示窗体: 图4-2 找回密码图4-3 找回密码当用户点击忘记密码连接时,就要显示找回密码的窗体。并且如果用户已经在登录界面输入了自己的用户名,那么当显示如图4-2所示的窗体时,用户名和验证码也会自动显示在该窗体中。/下面是忘记密码链接(forget)的事件代码forget.LinkVisited = true;findPWD myfind = new findPWD();/找回密码的窗体this.Hide();/隐藏当前窗体myfind.txtUserName.Text = this.txtUserName.Text;myfind.Tag = this.txtUserName.Text;myfind.Show();/显示找回密码窗体当用户单击下一步时,如果用户输入的信息完整并且正确,就会显示图4-3所示的窗体,并且系统会自动填充用户的密保问题,不需要用户自己输入。所以下一步按钮事件的添加代码:string s = select UName,RoleName from userinfo where Uname= + txtUserName.Text.Trim() + ;DataBase db = new DataBase();DataSet ds = db.GetDataFromDB(s);if (txtUserName.Text.Trim() = ds.Tables0.Rows0.ItemArray0.ToString() & cmbType.SelectedItem.ToString() = ds.Tables0.Rows0.ItemArray1.ToString()if (txtTest.Text = lalTest.Text) this.Hide(); findPWD1 myf1 = new findPWD1(); string s1 = select Question from userinfo where UName= + txtUserName.Text.Trim() + ; DataBase db1 = new DataBase(); DataSet ds1 = db1.GetDataFromDB(s1); myf1.txtQustion.Text = ds1.Tables0.Rows0.ItemArray0.ToString(); myf1.Tag = txtUserName.Text.Trim(); myf1.Show(); else MessageBox.Show(验证码输入有误!, 提示); txtTest.Text = ; lalTest.Text = db.MakePasscode(4); 当用户点击提交按钮时,如果用户信息填写完整,系统会判断用户的回答是否与数据库中的数据相同,如果相同系统将会告知用户自己的密码,如果不同则会提示用户回答有误,不会提示任何密码信息。在提交按钮的事件中添加代码如下:string s = select Answer from userinfo where Question=+txtQustion.Text.Trim()+; DataBase db = new DataBase();DataSet ds = db.GetDataFromDB(s);/如果经验证用户的回答与数据库中的数据相同时就会提示用户的密码,代码如下: string s1 = select PWD from userinfo where UName=+this.Tag.ToString()+; DataBase db1 = new DataBase(); DataSet ds1 = db1.GetDataFromDB(s1); string s2 = ds1.Tables0.Rows0.ItemArray0.ToString(); MessageBox.Show(您的密码是:+s2+,请牢记!); frmLogin myf = new frmLogin(); myf.txtUserName.Text = this.Tag.ToString(); myf.Show(); this.Close();4.3 主窗体设计用户登录成功后,进入系统的主界面,但是不同类别的用户,所能进行的操作是不同的。例如系统管理员可以完成系统管理、专业管理、课程管理、研究生管理、成绩管理、用户管理等主要功能。而普通管理员则不能进行系统管理和专业管理。为了使系统整体美观,就需要做四个不同的功能界面,如图4-44-7所示。4.3.1主窗体界面设计图4-4 系统管理员主窗体界面图4-5 普通管理员主窗体界面图4-6 教师主窗体界面图4-7 学生主窗体界面4.3.2主窗体代码以系统管理员主窗体为例,当主窗体载入时,将前面用公共静态数组“userInfo”保存的用户登录信息作为其标题显示在标题栏中;进入主窗体后,用户单击上面的按钮可以进入相应的子系统;并且,当用户单击主窗体的退出按钮时,应当终止应用程序的运行。添加代码如下:在主窗体的load事件中添加如下代码:lalName.Text =ClassShared.userInfo1+-+ ClassShared.userInfo0;DataBase db = new DataBase();DataSet ds;string sql = select vistedcount from visted;ds = db.GetDataFromDB(sql);lalCount.Text = ds.Tables0.Rows00.ToString();/显示访问量timer2.Enabled = !timer2.Enabled;在timer1的tick事件中添加如下代码:lalTime.Text = DateTime.Now.ToLongTimeString();/显示当前时间在timer2的tick事件中添加如下代码制作动态欢迎标语,if (lblWelcome.Left -500) lblWelcome.Left = 680;else lblWelcome.Left -= 3;点击系统管理时,显示系统管理窗体,并隐藏本窗体(其它模块按钮代码相似) this.Hide(); frmSystem mySystem = new frmSystem(); mySystem.Show();备注:窗体载入事件代码的功能是将登录的用户名“userInfo0”与用户的权限“userInfo1”连接起来,中间用“”隔开,并作为下标显示。载入窗体事件中还添加了timer控件用来辅助显示当前时间和动态欢迎,同时还显示出系统的访问量。4.4 系统管理模块系统管理模块主要有添加用户、删除用户和清空访问量三个功能,仅对系统管理员开放。下面介绍该模块实现的方法和步骤。4.4.1 用户界面设计 添加Windows窗体,使用Label、TextBox、Button、LinkLable、ComboBox等控件,修改各控件的属性,设计成如图4-8所示。图4-8 系统管理模块界面4.4.1 编写代码本小节介绍系统管理模块,本模块采用父子窗体设计,系统管理界面为父窗体,注册新用户和删除用户分别为两个子窗体。 【注册新用户】和【删除用户】,当点击这两个按钮时会弹出注册或删除用户窗体,并关闭其它窗体,以注册用户为例,在按钮的事件中添加代码如下: myadd = new AddUser();for (int x = 0; x this.MdiChildren.Length; x+) Form tempChild = (Form)this.MdiChildrenx; tempChild.Close();myadd.WindowState = FormWindowState.Normal; myadd.Show(); myadd.MdiParent = this;【清空系统访问量】,当用户点击该按钮时系统会与数据库连接,如果用户确定清空,系统就会清空数据库中表visted中的记录。由于代码实现比较简单,这里就不再一一赘述。4.5 专业管理模块专业管理模块主要用于对研究生专业的管理,主要包括添加专业和浏览专业两功能,其中在浏览专业界面中可对所有专业进行修改、删除等操作。本模块仅对系统管理员开放。4.5.1 用户界面设计图4-9 专业管理-浏览专业界面图4-10 专业管理-添加专业界面图4-11 修改专业界面4.5.2 编写代码本小节介绍专业管理模块,本模块采用父子窗体设计,专业管理界面为父窗体,浏览专业和添加专业分别为两个子窗体。【添加专业】,当用户单击该按钮时会弹出添加专业的界面,在该界面中,如果用户信息填写完整,当点击【提交】时,系统会判断该专业是否已经存在,如果存在则添加成功,否则会提示该专业已存在。所以在提交按钮的事件中添加如下代码:string str = select * from majorinfo where MName=+txtMajor.Text.Trim()+;DataBase db = new DataBase();DataSet ds = db.GetDataFromDB(str);if (ds != null) MessageBox.Show(该专业已存在, 提示);elseif (MessageBox.Show(确认提交吗?, 增设新专业, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.Yes) string sql = insert into majorinfo (MName,MRemark) values( + txtMajor.Text.Trim() + , + txtMajorremark.Text.Trim() + );db.UpdateDB(sql);MessageBox.Show(提交成功!);txtMajor.Text = ;txtMajorremark.Text = ;下面介绍浏览专业界面的功能实现。由于在浏览专业子窗体打开时就需要将要查询的信息显示到DataGridView控件中,这可以通过与数据库中的数据连接实现。【修改】,当单击该按钮时系统会弹出修改专业窗体界面,并且专业信息会自动填充到该窗体中。由于代码实现比较简单,这里不再详细叙述。【删除】,当用户选中某一条记录时,单击该按钮,就会删除该记录,在按钮事件中添加代码如下:int n = dgrdMajor.CurrentCell.RowIndex;if (MessageBox.Show(确认删除吗?, 删除删除专业, MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2) = DialogResult.Yes) string sqlstr = delete from majorinfo where MName= + dgrdMajor0, n.Value.ToString() + ; DataBase db = new DataBase();bool b = db.UpdateDB(sqlstr);if (b = true) MessageBox.Show(删除专业成功, 提示); Majorshow_Load(this, e); 【更新】按钮,当用户单击该按钮时,系统会及时更新dgrdMajor表中的数据,可以通过再次查询数据库中的数据,实现该功能。下面介绍修改专业的功能实现。当单击修改专业窗体中【提交】按钮时,如果用户信息填写完整,系统会判断该专业是否存在,不存在则修改成功,存在的话则会提示专业发生重复,在提交按钮的事件添加如下代码:DataBase db = new DataBase();DataSet ds;string str = select * from majorinfo where MName= + txtMName.Text.Trim() + and MID + txtMID.Text.Trim();ds = db.GetDataFromDB(str);if (ds != null) MessageBox.Show(专业名称发生重复!, 提示); else if (MessageBox.Show(确认修改吗?, 修改专业, MessageBoxButtons.YesNo, MessageBoxIcon.Question,MessageBoxDefaultButton.Button2) = DialogResult.Yes) string sql = update majorinfo set MName= + txtMName.Text.Trim() + ,MRemark= + txtRemark.Text.Trim() + where MID= + Convert.ToInt64(txtMID.Text) + ; bool b = db.UpdateDB(sql); if (b = true) MessageBox.Show(修改成功!, 提示); this.Close(); 4.6 课程管理模块课程管理模块主要用于对课程的管理,主要包括添加课程和浏览课程两功能,其中在浏览课程界面中可对所有课程进行修改、删除、更新等操作。本模块只有系统管理员和普通管理员可见,不向教师开放。4.6.1 用户界面设计图4-12 课程管理-添加课程界面图4-13 课程管理-浏览课程界面4.6.2 编写代码本小节介绍课程管理模块,本模块采用父子窗体设计,课程管理界面为父窗体,浏览课程和添加课程分别为两个子窗体。【添加课程】,当用户单击该按钮时会弹出添加课程的界面,在该界面中,如果用户信息填写完整,当点击【提交】时,系统会判断该课程是否已经存在,如果存在则添加成功,否则会提示该课程已存在。此部分的功能代码与专业管理中相似,不再详细叙述。【浏览课程】,当用户点击该按钮时会弹出浏览课程窗体,并且窗体载入时所有专业将以树的形式显示在treeview控件中,所以在窗体load事件中添加如下代码: string str = select MName from majorinfo; ds = db.GetDataFromDB(str); for (int i = 0; i ds.Tables0.Rows.Count; i+) string s = ds.Tables0.Rowsi.ItemArray0.ToString(); treMajor.Nodes.Add(s); 由于当单击树中的专业后会在表格中显示相应专业的课程,在树的AfterSelect的事件中添加代码如下:DataBase db = new DataBase();DataSet ds;string sql = select CName as 课程名称,CDate as 学时,CNum as 学分,MName as 专业名称,CRemark as 课程描述,CID as 课程编号 from courseinfo where MName= + e.Node.Text.ToString() + ;ds = db.GetDataFromDB(sql);dgrdCourse.DataSource = db.dataSet.Tables0;【修改】,当单击该按钮时系统会弹出修改课程窗体界面,并且课程信息会自动填充到该窗体中,然后在该窗体进行修改信息。由于代码实现比较简单,这里不再详细叙述。【删除】,当用户选中某一条记录时,单击该按钮,就会删除该记录,此按钮的事件代码与专业管理中删除按钮的代码相似,不再详细叙述。【更新】,当用户单击该按钮时,系统会及时更新dgrdCourse表中的数据,可以通过再次查询数据库中的数据,实现该功能。4.6 研究生管理模块研究生管理模块主要用于对所有研究生各种在校信息的管理,包括研究生信息浏览和添加信息两大功能,其中研究生信息浏览界面内可对所有信息进行修改、删除等操作。本模块对系统管理员和普通管理员开放。4.6.1 用户界面设计图4-14 研究生管理-添加学生界面图4-15 研究生管理-浏览学生界面4.6.2 编写代码本小节介绍研究生管理浏览信息模块,本模块采用父子窗体设计,研究生管理界面为父窗体,浏览信息和添加信息分别为两个子窗体。【添加学生信息】,当用户单击该按钮时会弹出添加学生信息的界面,在该界面中,如果用户信息填写完整,当点击【提交】时,系统会判断该生是否已经存在,如果存在则添加成功,否则会提示该生已存在。此部分的功能代码与专业管理中相似,不再详细叙述。【浏览信息】,当用户点击该按钮时会弹出浏览信息窗体,并且窗体载入时所有专业将以树的形式显示在treeview控件中,所以在窗体load事件中添加如下代码:string str = select MName from majorinfo; ds = db.GetDataFromDB(str); for (int i = 0; i ds.Tables0.Rows.Count; i+) string s = ds.Tables0.Rowsi.ItemArray0.ToString(); treMajor.Nodes.Add(s); 由于当单击树中的专业后会在表格中显示相应专业的学生,在树的AfterSelect的事件中添加代码如下:db = new DataBase();string sql = select SID as 学号, SName as 姓名,SSex as 性别,SNum as 身份证号, MName as 专业名称,SBirth as 出生日期, + (select TName from teacherinfo where studentinfo.TID = teacherinfo.TID) as 导师姓名,SRemark as 备注 + from studentinfo where MName= + e.Node.Text.ToString() + ; ds = db.GetDataFromDB(sql); dgrdStudent.DataSource = db.dataSet.Tables0;【修改】,当单击该按钮时系统会弹出修改学生窗体界面,并且学生信息会自动填充到该窗体中,然后用户可以在该窗体进行修改信息。由于代码实现比较简单,这里不再详细叙述。【删除】,当用户选中某一条记录时,单击该按钮,就会删除该记录,此按钮的事件代码与专业管理中删除按钮的代码相似,不再详细叙述。【更新】,当用户单击该按钮时,系统会及时更新dgrdStudent表中的数据,可以通过再次查询数据库中的数据,实现该功能。4.7 成绩管理模块 成绩管理模块主要用于对所有学生成绩的管理,包括成绩浏览和添加成绩两大功能,其中成绩浏览界面内可对所有成绩进行修改、删除等操作。本模块对所有用户开放。4.7.1 用户界面设计图4-16 成绩管理-添加成绩界面图4-17 成绩管理-浏览成绩界面4.7.2 编写代码小节介绍成绩管理浏览成绩模块,本模块采用父子窗体设计,成绩管理界面为父窗体浏览成绩和添加成绩分别为两个子窗体。【添加成绩】,当用户单击该按钮时会弹出添加学生成绩的界面,在该界面中,如果用户信息填写完整,当点击【提交】时,系统会判断学生的这科成绩是否已经存在,如果不存在则添加成功,否则会提示。在提交按钮的事件中添加如下代码:string str = select * from scoreinfo where SID= + cmbName.SelectedValue.ToString().Trim() + and CName= + cmbCourse.Text.Trim() + ;DataBase db = new DataBase();DataSet ds= db.GetDataFromDB(str);if (ds != null)MessageBox.Show(该学生的该科成绩已存在,请核对!, 提示);elseif (MessageBox.Show(确认添加吗?, 添加成绩, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.Yes)str = insert into scoreinfo (SID,CName,Score) values ( + cmbName.SelectedValue.ToString().Trim() + , + cmbCourse.Text.Trim() + , + txtMark.Text.Trim() + );bool b = db.UpdateDB(str); if (b = true)MessageBox.Show(成绩添加成功!, 提示);txtMark.Text = ; 【浏览成绩】,当用户点击该按钮时会弹出浏览成绩窗体,并且窗体载入时所有专业和课程将以树的形式显示在treeview控件中,所以在窗体load事件中添加如下代码:DataBase db1 = new DataBase();DataBase db2 = new DataBase();OleDbDataReader rd1, rd2;string sql;sql = select MName from majorinfo; string connstr = Provider=Micros

温馨提示

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

评论

0/150

提交评论