项目实训学生信息管理系统

上传人:仙*** 文档编号:58965671 上传时间:2022-03-01 格式:DOC 页数:84 大小:1.49MB
返回 下载 相关 举报
项目实训学生信息管理系统_第1页
第1页 / 共84页
项目实训学生信息管理系统_第2页
第2页 / 共84页
项目实训学生信息管理系统_第3页
第3页 / 共84页
点击查看更多>>
资源描述
项目实训学生信息管理系统设计与实现前言:项目概述学生信息管理系统介绍项目名称学生信息管理系统代码量3000行项目简介该系统可以帮助教辅人员进行学生基本信息的日常管理和维护;进行学生选课模拟以及重要数据备份等功能。项目目的 掌握WinForm图形用户界面开发技术 掌握ADO.NET数据库访问技术涉及的主要技术WinForm、ADO.NET、SQL Server数据库环境Microsoft SQL Server 2000编程环境Visual Studio 2005项目特点 基于.NET采用C#语言开发 项目属于C/S结构程序技术重点 WinForm窗体主要控件的应用 数据库各类对象的应用,例如:存储过程、触发器等技术难点ADO.NET数据库访问技术1 项目需求以及分析设计1.1 项目需求分析随着学校规模的不断扩大,每个院系的专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而很多高校的学生信息管理工作仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低。因此,迫切需要开发学生信息管理系统来提高管理工作的效率。经过详细调研,我们确定了一个简易的学生信息管理系统的基本需求。 需要进行身份认证登录系统只允许合法用户进行登陆操作,并且该系统主要面向教学管理人员提供服务(例如教学秘书、辅导员等)。合法用户登陆后可以进行系统的主要功能操作。 数据查询服务系统需要为服务对象提供两种服务:一是进行学生基本信息的浏览;二是进行学生成绩信息查询服务。 数据添加服务系统根据需要可以添加学生基本信息以及添加学生的选课信息等操作。 数据更新服务系统根据需要可以更新学生的基本信息。 数据删除服务系统根据需要可以删除学生的基本信息,但是要求备份删除学生的所有信息。 系统扩展服务本项目限于篇幅等,在后面主要描述并实现了系统登录、学生基本信息浏览、成绩信息查询、学生基本信息的添加、更新和删除以及学生选课的功能。有关其他实体信息的管理,例如:成绩信息、课程信息等维护功能没有实现。但是大家完全可以根据后面系统提供的框架来扩展系统的其他功能。此外,根据需要,我们采用基于C/S结构来开发学生信息管理系统。1.2 项目功能描述根据需求分析,学生信息管理系统为用户提供的功能主要分为以下几类:系统管理服务:系统系统登录、注销以及系统退出功能。数据查询和统计服务:学生基本信息浏览和查询、学生成绩信息查询等功能。数据添加服务:学生基本信息添加、学生选课、其他可以扩展的功能(院系信息添加、课程信息添加、成绩信息添加、管理员账户信息添加等未实现)。数据更新服务:学生基本信息更新、其他可以扩展的功能(院系信息更新、课程信息更新、成绩信息更新、管理员密码修改功能等未实现)。数据删除服务:学生基本信息删除、其他可以扩展的功能(院系信息删除、课程信息删除、成绩信息删除、管理员删除等功能未实现)。系统介绍服务:系统基本信息介绍、系统使用帮助(未实现)等。根据以上系统功能描述,绘制学生信息管理系统的功能模块划分如图14.1.2-1所示。系统登录系统管理注销退出学生基本信息浏览学生成绩信息查询其他功能扩展学生基本信息添加学生选课其他功能扩展学生基本信息更新其他功能扩展学生基本信息删除其他功能扩展关于本系统其他功能扩展数据查询和统计数据添加数据更新数据删除帮助学 生 信 息 管 理 系 统图1.2-1:“学生信息管理系统”功能模块图1.3 数据库设计本系统后台数据库采用的是SQL Server 2000,根据系统的功能描述以及系统的详细设计,学生成绩信息管理系统中各种数据信息之间的关系如图1.3-1所示。图1.3-1:“学生成绩信息管理系统”数据库关系图下面针对图1.3-1中的数据库基本表的具体设计进行详细介绍。表名:admin(管理员表),如表1.3-1所示。字段名称数据类型字段说明字段属性userNameVarchar(20)用户名主键passwordVarchar(20)密码限制最低6位,不能为空表1.3-1:管理员表设计说明表名:Dept(院系表),如表1.3-2所示。字段名称数据类型字段说明字段属性deptIDChar(4)院系编号主键deptNameNvarchar(30)院系名称不许为空且唯一phoneVarchar(12)联系电话表1.3-2:院系表设计说明表名:stu(学生表),如表1.3-3所示。字段名称数据类型字段说明字段属性stuIDChar(12)学号主键stuNameNvarchar(20)姓名不许为空stuSexNchar(1)性别只能输入:男、女stuBirthDatetime出生日期要求年龄不能大于30岁stuPoliticTinyint政治面貌只能输入1、2、3(其中1表示党员,2表示团员,3表示其他)stuDeptChar(4)所属院系参照院系表院系编号取值stuResumeNtext简历stuPhotoImage照片stuPcardChar(18)身份证编号表1.3-3:学生表设计说明表名:course(课程表),如表1.3-4所示。字段名称数据类型字段说明字段属性courseIDChar(6)课程编号主键courseNameNvarchar(30)课程名称不许为空,唯一CreditTinyint学分其值不能大于5courseTimeVarchar(30)上课时间stuLimitedTinyint限选人数默认值:250stuPreSelectTinyint已选人数默认值:0,并且不能大于stuLimited表1.3-4:课程表设计说明表名:grade(成绩表),如表1.3-5所示。字段名称数据类型字段说明字段属性stuIDChar(12)学号参照学生表学号字段取值courseIDChar(6)课程编号参照课程表课程编号字段取值gradeDecimal(5,2)成绩成绩必须介于0和100之间说明:stuID和courseID联合主键表1.3-5:成绩表设计说明2 项目详细设计以及功能实现本章主要任务是从实际应用出发,使学生能够掌握SQL Server 等大型数据库技术,掌握C#+SQL Server等大型数据库软件进行大型数据库桌面应用程序开发的基本过程和基本方法,并能够运用C#进行简单的办公自动化系统编程。在进行项目详细设计之前,首先创建一个名为StuInfoManage的windows应用程序项目。2.1 数据库通用访问类的创建考虑到整个项目中多个窗体的很多位置都需要涉及到数据库的访问操作,所以我们将数据库操作频繁使用的部分代码抽取出来,组合而成数据库访问类,从而避免重复编写相同代码的工作。常见的数据库访问操作主要有:更新操作(包括插入数据、修改数据和删除数据)、查询操作(指直接执行SQL语句进行数据库操作)、存储过程的执行操作(主要包括返回结果集的存储过程以及使用返回值的存储过程)等。在StuInfoManage项目中进行以下操作: 添加一个类:将其中创建的Class1.cs重命名为SqlHelper.cs。 在该类中添加如下代码:public class abstract class SqlHelper /获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改 public static readonly string ConnectionString = server = .;database=stuInfoManage;Integrated Security = true; / 执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。 public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString) /通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); /清空SqlCommand中的参数列表 cmd.Parameters.Clear(); return val; / 执行一条返回SqlDataReader的SqlCommand命令,通过专用的连接字符串。 public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); try PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; catch conn.Close(); throw; / 执行一条返回DataSet的SqlCommand命令,通过专用的连接字符串。 public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter commandParameters) SqlCommand cmd = new SqlCommand(); using (SqlConnection cn = new SqlConnection(connectionString) cn.Open(); PrepareCommand(cmd, cn, (SqlTransaction)null, commandType, commandText, commandParameters); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); cmd.Parameters.Clear(); return ds; / 为执行命令准备参数 private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter cmdParms) /判断数据库连接状态 if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; /判断是否需要事物处理 if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); /* * 功能:调用存储过程,并返回存储过程返回值的通用方法 * 要执行的存储过程的名称 * 要执行的存储过程中参数的集合 * 区分是查询(1)操作还是更新(2)操作 * 返回存储过程的返回值 */ public int ProcReturnValue(string procName, SqlParameter cmdparam,int DataOpType) SqlConnection sqlconn=new SqlConnection(ConnectionString); try if (sqlconn.State != ConnectionState.Open) sqlconn.Open(); SqlCommand sqlcmd = new SqlCommand(); sqlcmd.Connection = sqlconn; sqlcmd.CommandText = procName; sqlcmd.CommandType = CommandType.StoredProcedure; if (cmdparam != null) foreach (SqlParameter param in cmdparam) sqlcmd.Parameters.Add(param); sqlcmd.Parameters.Add(new SqlParameter(ReturnValue,SqlDbType.TinyInt); sqlcmd.ParametersReturnValue.Direction = ParameterDirection.ReturnValue; if (DataOpType = 1) sqlcmd.ExecuteScalar(); if(DataOpType = 2) sqlcmd.ExecuteNonQuery(); return Convert.ToByte(sqlcmd.ParametersReturnValue.Value); catch throw; finally sqlconn.Close(); 至此,数据库通用访问类创建完毕。我们可以用此类完成几乎所有的数据库操作。2.2 系统主界面设计与功能实现(1)界面设计的基本要求 界面设计要完整的体现用户的功能需求,并且美观大方。 界面设计的交互操作过程符合用户的习惯性工作过程。(2)系统主界面设计在stuInfoManage项目中将Form1.cs重命名为MainForm.cs,并参照表格2.2-1的说明设置MainForm窗体的属性。属性名设置IsMdiContainerTrueText学生信息管理系统StartPositionCenterScreenWindowStateMaximized表格2.2-1:主窗体主要参数设置(3)系统菜单设计根据需求,系统需要在主窗体上创建一个菜单系统来引导用户的操作,至于菜单系统中的各级菜单显示字符以及命名参见表格2.2-2说明。主菜单子菜单命名系统管理SystemManageMenuItem系统登陆LoginInMenuItem注销LoginOutMenuItem退出SystemExitMenuItem数据查询DataQueryMenuItem学生基本信息浏览StuBasicInfoQueryMenuItem学生成绩信息查询StuGradeInfoQueryMenuItem课程成绩信息查询CourseGradeQueryMenuItem数据添加DataAddMenuItem学生基本信息添加StuBasicInfoInsertMenuItem数据更新DataUpdateMenuItem学生基本信息更新StuBasicInfoUpdateMenuItem数据删除DataDeleteMenuItem学生基本信息删除StuBasicInfoDeleteMenuItem帮助HelpMenuItem关于本系统AboutSystemMenuItem表格: 2.2-2 菜单系统主要参数设置(4)系统菜单功能初始状态的设定由于该系统需要合法用户登陆成功后才能操作相应的系统主要功能,所以系统的主要功能的初始状态是不可用的。此外,当系统登录成功后需要打开系统主要功能锁定。为了实现该功能以及方便以后操作,首先在MainForm类中添加以下两个私有方法:/将系统主要功能调用的菜单锁定的方法private void MenuStatusOFF()DataQueryMenuItem.Enabled = false;DataAddMenuItem.Enabled = false;DataUpdateMenuItem.Enabled = false;DataDeleteMenuItem.Enabled = false; /打开系统主要功能锁定状态的方法private void MenuStatusOn()DataQueryMenuItem.Enabled = true;DataAddMenuItem.Enabled = true;DataUpdateMenuItem.Enabled = true;DataDeleteMenuItem.Enabled = true;然后,双击MainForm窗体类的Load事件,在该事件中添加如下代码:MenuStatusOFF();(5)“注销”功能的实现功能:将系统主要功能设置为锁定状态,以方便其他用户登陆使用。具体操作:选中“注销”菜单,在注销菜单的Click事件中添加如下代码。MenuStatusOFF();(6)“退出”功能的实现当系统退出时,需要提示是否真的退出等提示选项等,实现该功能在MainForm窗体类中进行如下操作: 在“退出”菜单的Click事件中添加如下代码:this.Close(); 在MainForm窗体类的FormClosing事件中添加如下代码:DialogResult mgr = MessageBox.Show(您确定要退出学生信息管理系统吗?, 信息提示, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);if (mgr = DialogResult.Cancel)e.Cancel = true;至此,系统主界面以及菜单系统的主要设计任务已经完毕。2.3 登录窗体的设计与功能实现(1)功能描述该步骤要实现两个功能:1、点击“系统管理”主菜单下“系统登录”功能选项,打开“系统登陆”窗体;在该窗体处于打开状态时,我们不能操作主界面包括系统菜单的所有功能,除非关闭该窗体以后,才能继续操作;2、系统启动完成后,系统主要功能处于不可用状态,当登陆成功后,打开功能锁定。在本案例中,解决第一个问题的方法是使用模式对话框,解决第二个问题的方法是在登陆窗体中设置一个“系统菜单状态”变量(SysMenuStatus),通过该变量的真假来判断是否打开系统的功能锁定。(2)流程图针对功能描述,我们绘制系统登录功能的操作流程图如图2.3-1所示。启动主窗体主菜单:系统管理子菜单:系统登陆菜单输入用户名和密码信息提示数据验证提示登录成功信息,打开功能菜单锁定并结束登陆成功失败图2.3-1:“系统登录”功能实现流程图(3)数据库设计本窗体主要功能的实现所涉及的用户登陆合法性验证采用带返回值的存储过程来实现。具体操作过程为:在SQLServer查询分析器中输入以下代码后并运行,创建存储过程LoginJudge,用于判断登陆用户的合法性验证。Use stuInfoManageIf exists(select * from sysobjects where name = LoginJudge and type = P)Drop procedure LoginJudgegocreate procedure LoginJudge (userName nvarchar(100),passWord varchar(100)as if not exists(select * from admin where userName = userName) return 1 - 表示不存在该用户 else begin if not exists(select * from admin where userName = userName and password=passWord ) return 2 -表示密码错误 else return 3 -表示登陆成功 endGO代码输入完毕后点击运行按钮,生成LoginJudge存储过程。(4)界面设计首先,在stuInfoManage项目中添加一个Windows窗体,将其窗体类名改为:SystemLoginForm,设置该窗体的属性Text为“系统登录”,并添加一个公共数据成员:public Boolean SysMenuStatus = false; 其次,在该“系统登录”窗体上添加必要控件并设置相关属性,具体设置参照表格14.2.3-1说明。控件类型命名属性Lable1采用系统默认Text:系统登陆Lable2采用系统默认Text:用户名:Lable3采用系统默认Text:密码:ComboBoxUserNameComboBox无TextBoxPasswordTextBoxPasswordChar:*ButtonLoginButtonText:登陆ButtonResetButtonText:重置ButtonExitButtonText:退出表格14.2.3-1:“系统登录”窗体上面控件的主要属性设置表格其他显示样式以及效果可以根据实际情况具体调节,例如字体的大小和颜色等。具体设计效果可以参照图2.3-2。图2.3-2:“系统登录”窗体设计效果图(5)代码实现5.1 菜单功能调用的实现首先,在系统主界面类MainForm类中添加一个私有数据成员,该成员为系统登陆窗体的一个实例,即在MainForm类中添加如下代码:SystemLoginForm LoginForm = new SystemLoginForm();其次,双击“系统登陆”菜单,在“系统登陆”菜单的Click事件中添加以下代码:/判断该对象是否存在,如果不存在,就创建它if (LoginForm.IsDisposed)LoginForm = new SystemLoginForm();/以模式对话框的形式显示LoginForm窗体LoginForm.ShowDialog();/登陆窗体运行完毕后,判断登陆窗体的属性SysMenuStatus的取值/如果登陆窗体中系统菜单状态变量的值为真,打开系统菜单主要功能的锁定状态if (LoginForm.SysMenuStatus = true)MenuStatusOn();至此,登录窗体的功能调用已经实现。5.2 “登陆窗体”相应功能的实现 “用户名”组合框的数据初始化系统界面启动后,自动加载数据库中合法的管理员的用户名,在用户名组合框中列示以便选择,当然也允许用户自行输入个人的用户名。实现该功能需要在SystemLoginForm窗体类的Load事件中添加以下代码,为UserNameComboBox数据进行初始化操作: string sqlstr = select userName from admin; DataSet userNameDS = SqlHelper.ExecuteDataset(SqlHelper.ConnectionString,CommandType.Text,sqlstr); UserNameComboBox.DataSource = userNameDS.Tables0; UserNameComboBox.DisplayMember = userName; “系统登陆”窗体的初始化 我们在启动系统登录窗体后,要使各个控件处于数据选择或输入状态。要实现该功能,首先,我们需要在SystemLoginForm窗体类中添加私有方法用于控件初始状态设定:private void ComponentReset()UserNameComboBox.Text = ;PasswordTextBox.Text = ;UserNameComboBox.Focus();然后在SystemLoginForm窗体的载入事件中添加该方法的调用:ComponentReset(); “重置”按钮功能的实现重置功能主要实现清空已经输入或选择的数据,以便用户重新输入。完成此功能,需要在“重置”按钮的Click事件中添加以下代码实现控件状态重置:ComponentReset(); “退出”按钮功能的实现在“退出”按钮的Click事件中添加以下代码:this.Close(); “登陆”按钮功能的实现点击登陆按钮后,首先要根据需要判断用户名和密码是否非空,密码长度是否大于6位。如果违反这些基本条件,直接给出相应提示信息。如果具备这些基本条件,则调用存储过程LoginJudge判断用户的合法性,并根据返回值进行应有的操作和相应的提示信息。实现该功能,需要在“登陆”按钮的Click事件中添加如下代码:private void LoginButton_Click(object sender, EventArgs e)string userName = UserNameComboBox.Text.Trim();string passWord = PasswordTextBox.Text.Trim();if (userName.Length = 0)MessageBox.Show(用户名不能为空!请重新输入!, 信息提示, MessageBoxButtons.OK,MessageBoxIcon.Warning);UserNameComboBox.Focus();elseif (passWord.Length = 0)MessageBox.Show(密码不能为空!请重新输入!,信息提示, MessageBoxButtons.OK,MessageBoxIcon.Warning);PasswordTextBox.Text = ;PasswordTextBox.Focus();else if (passWord.Length 6)MessageBox.Show(密码长度不能短于6位,请重新输入!, 信息提示, MessageBoxButtons.OK,MessageBoxIcon.Warning);PasswordTextBox.Text = ;PasswordTextBox.Focus();else SqlParameter cmdparam = new SqlParameternew SqlParameter(userName,userName),new SqlParameter(passWord,passWord);int loginFlag = SqlHelper.ProcReturnValue(LoginJudge, cmdparam,1);switch (loginFlag) case 1: MessageBox.Show(不存在该用户,请重新输入或者选择你要登陆的用户名!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); ComponentReset(); break; case 2: MessageBox.Show(用户名存在,但密码输入密码错误!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); PasswordTextBox.Clear(); PasswordTextBox.Focus(); break; case 3: MessageBox.Show(恭喜您,登陆成功!, 信息提示, MessageBoxButtons.OK,MessageBoxIcon.Information); SysMenuStatus = true; this.Close(); break; 至此,“系统登陆”功能基本实现。2.4 学生基本信息浏览窗体的设计与功能实现(1)功能描述本步骤主要功能是逐个浏览数据库中保存的学生基本信息。该功能窗体启动后列示第一个学生的基本信息,如果不存在则给出相应提示。此后可以根据界面上“第一条”、“上一条”、“下一条”、“最后一条”导航按钮来浏览学生基本信息的数据。(2)数据库设计根据需求描述,我们在该窗体上浏览的学生基本信息包括:学号、姓名、性别、政治面貌、出生日期、所在院系名称、身份证编号、简历和照片等信息。该功能的实现计划从视图获取我们需要的数据。根据分析我们需要在数据库中创建一个用于查询以上学生基本信息数据的视图:stuBasicInfoView(3)界面设计首先在stuInfoManage项目中添加一个Windows窗体,将窗体类名修改为:StuBasicInfoQueryForm,设置该窗体的属性Text为“学生基本信息浏览”,并在该Windows窗体上添加以下控件并设置属性,具体的控件及其主要属性设置可参照表2.4-1说明。控件类型控件名称控件主要属性设置Label系统默认Text:学生基本信息浏览Label系统默认Text:学号:Label系统默认Text:姓名:Label系统默认Text:性别:Label系统默认Text:政治面貌:Label系统默认Text:出生日期:Label系统默认Text:院系名称:Label系统默认Text:身份证编号Panel系统默认BorderStyle:Fixed3DPanel系统默认BorderStyle:Fixed3DPanel系统默认BorderStyle:Fixed3DRatioButtonMaleRatioButtonText:男RatioButtonFemaleRadioButtonText:女RatioButtonDYRatioButtonText:党员RatioButtonTYRadioButtonText:团员RatioButtonOtherRatioButtonText:其他PictureBoxStuPhotoPictureBoxBorderStyle:Fixed3DTextStuIDTextBox无TextStuNameTextBox无TextStuBirthTextBox无TextDeptNameTextBox无TextStuCardTextBox无TextStuResumeTextBoxMultiLine:trueButtonFirstRecorButtonText:第一条ButtonPriorRecordButtonText:上一条ButtonNextRecordButtonText:下一条ButtonLastRecordButtonText:最后一条表2.4-1:“学生基本信息浏览”窗体的控件及其主要属性设置说明注意:性别和政治面貌的单选按钮必须按类别放在相应的Panel上面,否则单选按钮的功能可能不能表达我们的期望;为了界面美观,关于颜色和字体大小的设置大家根据实际情况进行设置;我们必须按意义将相应的控件进行排列(例如学号标签和学号文本框要对应),否则导致意义不明确。具体界面设计效果可参照图2.4-1。图14.2.4-1:“学生基本信息浏览”设计效果图(4)代码实现4.1 菜单功能调用的实现程序中所有功能子窗体的调用将呈现MDI效果。为了实现MDI效果,首先在MainForm窗体类中添加StuBasicInfoQueryForm窗体类的一个实例。StuBasicInfoQueryForm BasicInfoQueryForm = new StuBasicInfoQueryForm();然后,在菜单“学生基本信息浏览”的Click事件中添加功能调用if (BasicInfoQueryForm.IsDisposed) BasicInfoQueryForm = new StuBasicInfoQueryForm();BasicInfoQueryForm.MdiParent = this;BasicInfoQueryForm.Show();BasicInfoQueryForm.Focus();4.2 “学生基本信息浏览窗体”功能的实现 窗体的初始化工作窗体中四个导航按钮控件都要从结果集中读取学生的基本信息,并需要确定正在操作的当前学生的具体位置。为此,我们首先定义两个私有数据成员用于保存该窗体运行过程中的数据集合和当前记录的位置。具体操作为:在StuBasicInfoQueryForm窗体类中添加以下代码。DataSet StuBasicInfoDS = new DataSet(); / 保存该窗体涉及的数据集 int currentRecord = 0; / 保存当前操作的记录位置其次,我们需要初始化窗体数据查询结果集以及设置界面打开状态。第一步,创建一个通用的界面数据绑定的私有方法,该方法根据查询结果集中学生的具体位置,在窗体的相应控件上展示该学生的详细信息。具体操作即在StuBasicInfoQueryForm类中添加以下代码:private void CoverDataBind(int position) DataRow dr = StuBasicInfoDS.Tables0.Rowsposition; StuIDTextBox.Text = drstuID.ToString(); StuNameTextBox.Text = drstuName.ToString(); StuBirthTextBox.Text = drstuBirth.ToString(); DeptNameTextBox.Text = drdeptName.ToString(); StuCardTextBox.Text = drstuPcard.ToString(); StuResumeTextBox.Text = drstuResume.ToString(); if (drstuSex.ToString().Equals(男) MaleRatioButton.Enabled = true; MaleRatioButton.Checked = true; FemaleRadioButton.Enabled = false; else MaleRatioButton.Enabled = false; FemaleRadioButton.Enabled = true; FemaleRadioButton.Checked = true; switch(drstuPolitic.ToString() case 1: DYRatioButton.Enabled = true; DYRatioButton.Checked = true; TYRadioButton.Enabled = false; OtherRatioButton.Enabled = false; break; case 2: DYRatioButton.Enabled = false; OtherRatioButton.Enabled = false; TYRadioButton.Enabled = true ; TYRadioButton.Checked = true ; break; case 3: OtherRatioButton.Enabled = true; OtherRatioButton.Checked = true; DYRatioButton.Enabled = false; TYRadioButton.Enabled = false; break; /图片数据的显示 try byte PhotoBuffer = (byte)drstuPhoto; Stream Photo = new MemoryStream(PhotoBuffer); Image PhotoImage = Image.FromStream(Photo, true); StuPhotoPictureBox.Image = PhotoImage; Photo.Close(); catch StuPhotoPictureBox.Image = null;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!