版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目四考试管理系统Ⅳ.1任务一:“考试管理系统”各窗体设计Ⅳ.2任务二:“登录界面”窗体数据库连接操作的功能实现Ⅳ.3任务三:在AdminForm窗体中显示子窗体Ⅳ.4任务四:增加新的学员Ⅳ.5任务五:学员信息列表及修改学员信息Ⅳ.6任务六:查询学员信息Ⅳ.1任务一:“考试管理系统”各窗体设计
Ⅳ.1.1功能描述
在本例中,我们将通过使用工具箱中的文本框、按钮等控件,实现“考试管理系统”的登录界面和学员管理界面。Ⅳ.1.2各窗体设计步骤及技术要点分析
(1)打开MicrosoftVisualStudio2005,创建一个Windows应用程序,项目名称输入MySchool,位置根据自己需要选择设定,单击“确定”按钮。
(2)单击Form1,在解决方案资源管理器中将Form1.cs改为LoginForm.cs,在属性窗口修改Tex属性为“考试管理系统”,修改IsMdiContainer属性为True。
(3)在工具箱中拖放四个Label控件、两个TextBox控件、一个ComboBox和两个按钮控件到LoginForm中。在属性窗口中修改各控件的Name和Text属性,如表Ⅳ.1所示。完成界面如图Ⅳ.1所示。图Ⅳ.1登录界面
(4)在MySchool项目中添加一个Windows窗体,命名为AdminForm。在窗体中添加如表Ⅳ.2所示的控件。图Ⅳ.2AdminForm窗体界面
(5)在MySchool项目中添加一个Windows窗体,命名为StudentListForm。将窗体的Text属性设置为“学员信息列表”。在窗体中添加如表Ⅳ.3所示的控件。图Ⅳ.3StudentListForm窗体界面
(6)在MySchool项目中添加一个Windows窗体,命名为SearchStudentForm。将窗体的Text属性设置为“查找学员用户”。在窗体中添加如表Ⅳ.4所示的控件。
还需将lvStudent的Columns属性进行修改。进入ColumnHeader集合编辑器界面,如图Ⅳ.4所示,添加四列,列名分别为chLoginID、chStudentName、chStudentNO和chUserState,并将chLoginID的Text属性设置为“用户名”,chStudentName的Text属性设置为“姓名”,chStudentNO的Text属性设置为“学号”,chUserState的Text属性设置为“用户状态”。右键菜单cmsStudent包含两个ToolStripMenuItem,分别为mnuModify和mnuDelete,其Text属性分别为“修改用户状态”和“删除”。mnuModify菜单下还包含两个ToolStripMenuItem,分别为MnuActive和MnuInActive,其Text属性分别为“活动”和“非活动”。SearchStudentForm窗体界面如图Ⅳ.5所示。图Ⅳ.4ColumnHeader集合编辑器界面图Ⅳ.5SearchStudentForm窗体界面
(7)在MySchool项目中添加一个Windows窗体,命名为AddStudentForm。将窗体的Text属性设置为“创建学员用户”。在窗体中添加两个按钮,btnSave和btnClose,分别设置其Text属性为“保存”和“关闭”。添加TabControl控件,命名为tabNewStudent,并设置其TabPages属性。进入TabPage集合编辑器界面,如图Ⅳ.6所示,点击“添加”按钮,添加两个TabPage页,并将其重命名为tpRegisterInfo和tpBaseInfo,分别设置两个TabPage页的Text属性为“用户注册信息”和“用户基本信息”。在tpRegisterInfo和tpBaseInfo页面中添加控件,具体如表Ⅳ.5和表Ⅳ.6所示。AddStudentForm界面如图Ⅳ.7和图Ⅳ.8所示。图Ⅳ.6TabPage集合编辑器图Ⅳ.7用户注册信息图Ⅳ.8用户基本信息Ⅳ.2任务二:“登录界面”窗体数据库连接操作的功能实现
Ⅳ.2.1功能描述
在“登录界面”中,通过合法的用户名、密码以及身份登录数据库。Ⅳ.2.2功能代码展示及功能实现技术要点分析
(1)在SqlServer2000中创建名为“MySchool”的数据库,并创建六张数据表,其中Admin用于记录管理员信息,Class用于记录班级信息,Grade用于记录年级信息,Student用于记录学生信息,Teacher用于记录教师信息,UserState用于记录用户状态信息。具体字段设置如表Ⅳ.7所示(Teacher表与Student表类似)。
(2)在LoginForm.cs中定义一个返回值为bool类型的方法ValidateInput(),用于验证用户的输入。具体代码如下:
1privateboolValidateInput()
2{
3if(txtLoginId.Text.Trim()=="")
4{
5MessageBox.Show("请输入用户名","登录提示",MessageBoxButtons.OK,
MessageBoxIcon.Information);
6txtLoginId.Focus();
7returnfalse;
8}
9elseif(txtLoginPwd.Text.Trim()=="")
10{
11MessageBox.Show("请输入密码","登录提示",MessageBoxButtons.OK,
MessageBoxIcon.Information);
12txtLoginPwd.Focus();
13returnfalse;
14}
15elseif(cboLoginType.Text.Trim()=="")
16{
17MessageBox.Show("请选择登录类型","登录提示",MessageBoxButtons.OK,
MessageBoxIcon.Information);
18cboLoginType.Focus();
19returnfalse;
20}
21else
22{
23returntrue;
24}
25}代码分析:
1 验证用户名、密码、登录类型。
3~7 如果文本框txtLoginId的内容为空,则提示“输入用户名”,文本框txtLoginId获得焦点,并返回false。
9~13 如果txtLoginPwd的内容为空,则提示“输入密码”,文本框txtLoginPwd获得焦点,并返回false。
15~19 如果cboLoginType的内容为空,则提示“选择登录类型”,下拉框cboLoginType获得焦点,并返回false。
21~23 其它情况,返回true。
(3)在解决方案MySchool中添加一个新的类DBHelper,用于维护数据库连接字符串和Connection对象,在DBHelper.cs中引入命名空间System.Data.SqlClient。具体代码如下:
1classDBHelper
2{
3privatestaticstringconnString="DataSource=.;InitialCatalog=MySchool;IntegratedSecurity=true";
4publicstaticSqlConnectionconnection=newSqlConnection(connString);
5}代码分析:
1定义数据库帮助类DBHelper。
3定义一个公有的静态的字符串类型变量connString,用于存储数据库连接字符串。
4定义一个公有的静态的SqlConnection类型的变量connection,用于存储数据库连接。
(4)在解决方案MySchool中添加一个新的类UserHelper,用于存储登录用户信息,包括用户名和用户类型,具体代码如下所示:
1publicclassUserHelper
2{
3publicstaticstringloginId="";
4publicstaticstringloginType="";
5}
代码分析:
1定义一个UserHelper类。
3定义一个公有的静态的变量loginId,用于存储登录ID。
4定义一个公有的静态的变量loginType,用于存储登录类型。
(5)在LoginForm.cs中定义一个返回值为bool类型的方法ValidateUser(),用于判断用户名、密码和登录类型的合法性。具体代码如下:
1privateboolValidateUser(stringloginId,stringloginPwd,stringloginType,refstringmessage)
2{
3stringtableName="";
4boolresult=true;
5switch(loginType)
6{
7case"教员":
8tableName="Teacher";
9break;
10case"学员":
11tableName="Student";
12break;
13case"管理员":
14tableName="Admin";
15break;
16default:
17message="登录类型错误!";
18result=false;
19break;
20}
21stringsql=string.Format("SELECTCOUNT(*)FROM{0}WHERELoginId='{1}'
ANDLoginPwd='{2}'",
22tableName,loginId,loginPwd);
23try
24{
25SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
26DBHelper.connection.Open();
27intcount=(int)command.ExecuteScalar();
28if(count<1)
29{
30message="用户名或密码不存在!";
31result=false;
32}
33else
34{
35result=true;
36}
37}
38catch(Exceptionex)
39{
40message="操作数据库出错!";
41Console.WriteLine(ex.Message);
42result=false;
43}
44finally
45{
46DBHelper.connection.Close();
47}
48
49returnresult;
50 }代码分析:
1 验证用户名、密码和登录类型的方法。
3 定义一个字符串类型的变量tableName,用于存储要查询的数据表名。
4 定义一个布尔类型的变量result,用于存储返回值。
5~20 根据登录类型确定要查询的数据表。
21~22 定义一个字符串类型的变量sql,用于存储查询字符串。
25 创建一个SqlCommand类型的command。
26 调用DBHelper类的静态变量connection的Open()方法打开数据库连接。
27 调用command对象的ExecuteScalar()方法执行命令。
28~37对返回结果进行判断,如果合法,则返回true;如果不合法,则返回false。
46 调用DBHelper类的connection对象的Close()方法关闭数据库连接。
49 返回result。
Ⅳ.2.3知识库
1. DBHelper
DBHelper类是一个数据库帮助类,用于实现一些数据库相关操作与信息。在本项目中,DBHelper类创建了SqlConnection对象,用于建立数据库连接和存储连接字符串。
2. UserHelper
UserHelper类是一个用户帮助类,定义了两个静态变量,用于存储用户名和用户类型。Ⅳ.3任务三:在AdminForm窗体中显示子窗体
Ⅳ.3.1功能描述
在父窗体AdminForm中,显示StudentListForm、SearchStudentForm、AddStudentForm等子窗体。Ⅳ.3.2代码解析
在AdminForm窗体中,添加如下代码:
1privatevoidAdminForm_Load(objectsender,EventArgse)
2{
3this.slblAdmin.Text=this.slblAdmin.Text+"-"+UserHelper.loginId;
4}
5privatevoidAdminForm_FormClosed(objectsender,FormClosedEventArgse)
6{
7Application.Exit();
8}
9privatevoidtsmiExit_Click(objectsender,EventArgse)
10{
11DialogResultchoice;
12choice=MessageBox.Show("确定要退出吗?","退出系统",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
13if(choice==DialogResult.OK)
14{
15Application.Exit();
16}
17}
18privatevoidtsmiNewStudent_Click(objectsender,EventArgse)
19{
20AddStudentFormaddStudentForm=newAddStudentForm();
21addStudentForm.MdiParent=this;
22addStudentForm.Show();
23}
24privatevoidtsmiSearchStudent_Click(objectsender,EventArgse)
25{
26SearchStudentFormsearchStudentForm=newSearchStudentForm();
27searchStudentForm.MdiParent=this;
28searchStudentForm.Show();
29}
30privatevoidtsmiStudentList_Click(objectsender,EventArgse)
31{
32StudentListFormstudentListForm=newStudentListForm();
33studentListForm.MdiParent=this;
34studentListForm.Show();
35}代码分析:
1~4 在AdminForm_Load()方法中,将UserHelper中的loginId的值赋值给状态栏的标签。
5~8 在AdminForm_FormClosed()方法中,关闭应用程序。
9~18 在退出菜单单击事件tsmiExit_Click中,跳出提示窗口,如果选择“是”,则退出应用程序。
19~24用户单击创建用户菜单项时,出现新建学员用户窗口,并设置其为AdminForm的子窗体。
26~31点击查询学员用户菜单项时,出现查询学员用户窗口,并设置其为AdminForm的子窗体。
35~38点击学员列表菜单项时,出现学员列表窗口,并设置其为AdminForm的子窗体。
Ⅳ.4任务四:增加新的学员
Ⅳ.4.1功能描述
在AddStudentForm窗体中,增加新的学员记录。Ⅳ.4.2设计步骤及代码解析
(1)在AddStudentForm窗体中,定义一个返回值为bool类型的ValidateInput()方法,用于验证用户输入的正确性。具体代码如下:
1privateboolValidateInput()
2{
3if(txtLoginId.Text=="")
4{
5MessageBox.Show("请输入用户名","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
6txtLoginId.Focus();
7returnfalse;
8}
9if(txtLoginPwd.Text==“”)
10{
11MessageBox.Show(“请输入密码”,“输入提示”,MessageBoxButtons.OK,
MessageBoxIcon.Information);
12txtLoginPwd.Focus();
13returnfalse;
14}
15if(txtPwdAgain.Text=="")
16{
17MessageBox.Show(“请输入确认密码”,“输入提示”,MessageBoxButtons.OK,
MessageBoxIcon.Information);
18txtPwdAgain.Focus();
19returnfalse;
20}
21if(!(txtLoginPwd.Text==txtPwdAgain.Text))
22{
23MessageBox.Show(“两次输入的密码不一致”,“输入提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
24txtPwdAgain.Focus();
25returnfalse;
26}
27if(!rdoActive.Checked&&!rdoInactive.Checked){
28MessageBox.Show("请设置用户的状态","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
29rdoActive.Focus();
30returnfalse;
31}
32if(txtStudentName.Text=="")
33{
34MessageBox.Show("请输入学员姓名","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
35txtStudentName.Focus();
36returnfalse;
37}
38if(txtStudentNO.Text=="")
39{
40MessageBox.Show("请输入学号","输入提示",MessageBoxButtons.OK,
MessageBoxIcon.Information);
41txtStudentNO.Focus();
42returnfalse;
43}
44if(!rdoMale.Checked&&!rdoFemale.Checked){
45MessageBox.Show("请选择学员性别","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
46rdoMale.Focus();
47returnfalse;
48}
49if(cboClass.Text=="")
50{
51MessageBox.Show("请选择用户班级","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
52cboClass.Focus();
53returnfalse;
54}
55returntrue;
56}代码分析:
3~7 验证是否输入了用户名,如果用户名为空,则提示用户输入,文本框txtLoginId获得焦点,并返回false。
9~13 验证是否输入了密码,如果密码为空,则提示用户输入,文本框txtLoginPwd获得焦点,并返回false。
15~19 验证是否确认了密码,如果确认密码为空,则提示用户输入,文本框txtPwdAgain获得焦点,并返回false。
21~25 验证两次密码是否一致,如果不一致,则提示用户重新输入,确认密码框txtPwdAgain获得焦点,并返回false。
27~31验证是否选择了用户状态,如果未选择,则提示用户选择,单选按钮rdoActive获得焦点,返回false。
33~37 验证是否输入了学员用户姓名,如果姓名为空,则提示用户重新输入,文本框txtStudentName获得焦点,并返回false。
38~42 验证是否输入了学号,如果学号为空,则提示用户重新输入,文本框txtStudentNO获得焦点,并返回false。
44~48验证是否选择了性别,如果为选择,则提示用户选择,单选按钮rdoMale获得焦点,并返回false。
50~54验证是否选择了学员用户的班级,如果班级为空,则提示用户重新选择,下拉框cboClass获得焦点,并返回false。
55除此以外的其它情况返回true。
(2)在窗体载入的时候打开数据库连接,将MySchool中的Grade表的年级名添加到年级名下拉框中。具体实现代码如下:
1privatevoidAddStudentForm_Load(objectsender,EventArgse)
2{
3stringsql="SELECTGradeNameFROMGrade";
4SqlCommandcommand=newSqlCommand(sql,BHelper.connection);
5try
6{
7DBHelper.connection.Open();
8SqlDataReaderdataReader=command.ExecuteReader();
9
10stringgradeName="";
11while(dataReader.Read())
12{
13gradeName=(string)dataReader["GradeName"];
14cboGrade.Items.Add(gradeName);
15}
16dataReader.Close();
17}
18catch(Exceptionex)
19{
20MessageBox.Show("操作数据库出错");
21Console.WriteLine(ex.Message);
22}
23finally
24{
25DBHelper.connection.Close();
26}
27}代码分析:
3声明一个string类型的变量sql,用于存储查询年级的T-SQL语句。
4声明一个SqlCommand类型的对象command,用于执行T-SQL语句。
8打开数据库连接。
9声明一个SqlDataReader类型的变量dataReader,调用command对象的ExecuteReader()方法执行查询语句。
11声明一个string类型的变量gradeName,用于存储年级名称。
12~15 循环读出所有年级名,并添加到年级名下拉框cboGrade中。
(3)在AddStudentForm窗体中,当选择的年级发生变化时,变化班级下拉框的选项内容。具体代码如下:
1if(cboGrade.Text.Trim()!="")
2{
3intgradeId=-1;
4stringsql="SELECTGradeIdFROMGradeWHEREGradeName='"+cboGrade.Text+"'";
5SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
6SqlDataReaderdataReader;
7try
8{
9DBHelper.connection.Open();
10dataReader=command.ExecuteReader();
11if(dataReader.Read())
12{
13gradeId=(int)dataReader["GradeId"];
14}
15dataReader.Close();
16}
17catch(Exceptionex)
18{
19 MessageBox.Show("操作数据库出错");
20Console.WriteLine(ex.Message);
21}
22finally
23{
24DBHelper.connection.Close();
25}
26sql="SELECTClassNameFROMClassWHEREGradeId="+gradeId;
27command.CommandText=sql;
28try
29{
30DBHelper.connection.Open();
31dataReader=command.ExecuteReader();
32stringclassName="";
33cboClass.Items.Clear();
34while(dataReader.Read())
35{
36className=(string)dataReader["ClassName"];
37cboClass.Items.Add(className);
38}
39dataReader.Close();
40}
41catch(Exceptionex)
42{
43MessageBox.Show("操作数据库出错");
44Console.WriteLine(ex.Message);
45}
46finally
47{
48DBHelper.connection.Close();
49}
50}代码分析:
1 判断下拉框cboGrade中的内容是否为空。
3 声明一个int类型的变量gradeId,用于存储年级编号。
4 声明一个string类型的变量sql,用于存储查询年级编号的T-SQL语句。
5 声明一个SqlCommand类型的变量command。
6 声明一个SqlDataReader类型的变量dataReader。
9 打开数据库连接。
10 执行查询。
11~15 根据年级名获得年级Id。
16 关闭dataReader。
19~20 如果出现异常,则提示出错,并在控制台上显示错误信息。
24 关闭数据库连接。
26 声明一个string类型的变量,用于存储根据年级Id查询班级名称的sql语句。
27 重新制定command对象的查询语句。
30 打开数据库连接。
31 执行查询。
32 声明一个string类型的变量className。
33 清空下拉框cboClass的选项内容。
34~37 循环读出所有班级名,并添加到班级下拉框中。
39 关闭dataReader。
43~44 如果出现异常,则提示错误,并将错误信息显示在控制台。
48 关闭数据库连接。
(4)在AddStudentForm窗体中,定义一个返回值为int类型的方法GetClassId(),用于根据班级名获得班级Id。具体实现代码如下:
1privateintGetClassId()
2{
3intclassId=0;
4stringsql=string.Format("SELECTClassIDFROMClassWHEREClassName='{0}'",cboClass.Text);
5try
6{
7SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
8DBHelper.connection.Open();
9SqlDataReaderdataReader=command.ExecuteReader();
10if(dataReader.Read())
11{
12classId=(int)dataReader["ClassID"];
13}
14dataReader.Close();
15}
16catch(Exceptionex)
17{
18MessageBox.Show("操作数据库出错");
19Console.WriteLine(ex.Message);
20}
21finally
22{
23DBHelper.connection.Close();
24}
25
26}代码分析:
1 判断下拉框cboGrade的内容是否为空。
3 声明一个int类型的变量classId,用于存储班级ID。
4 根据班级名查询班级Id的T-SQL语句。
7 声明一个SqlCommand类型的对象command。
8 打开数据库连接。
9 执行查询。
10~13 读出班级Id。
14 关闭DataReader对象。
18~20 如果出现异常,则提示错误,并在控制台显示异常信息。
23 关闭数据库连接。
26 返回classId。
(5)在AddStudentForm窗体的“保存”按钮中实现增加新学员的功能。具体代码如下:
1privatevoidbtnSave_Click(objectsender,EventArgse)
2{
3if(ValidateInput())
4{
5stringloginId=txtLoginId.Text;
6stringloginPwd=txtLoginPwd.Text;
7stringuserStateId=rdoActive.Checked?(string)rdoActive.Tag:(string)rdoInactive.Tag;
8stringname=txtStudentName.Text;
9stringstudentNO=txtStudentNO.Text;
10tringphone=txtPhone.Text;
11stringemail=txtEmail.Text;
12stringsex=rdoMale.Checked?rdoMale.Text:rdoFemale.Text;
13intclassId=GetClassId();
14stringsql=string.Format("INSERTINTOStudent(LoginId,LoginPwd,UserStateId,ClassID,StudentName,Sex,Phone,StudentNO,Email)values('{0}','{1}','{2}',{3},'{4}','{5}','{6}',
'{7}','{8}')",loginId,loginPwd,userStateId,classId,name,sex,phone,studentNO,email);
15try
16{
17SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
18DBHelper.connection.Open();
19intresult=command.ExecuteNonQuery();//执行命令
20if(result<1)
21{
22MessageBox.Show("添加失败!","操作提示",MessageBoxButtons.OK,
MessageBoxIcon.Warning);
23}
24else
25{
26MessageBox.Show("添加成功!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
27this.Close();
28}
29}
30catch(Exceptionex)
31{
32MessageBox.Show("操作数据库出错!","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
33Console.WriteLine(ex.Message);
34}
35finally
36{
37DBHelper.connection.Close();
38}
39}
40}代码分析:
1 保存按钮单击事件。
3 调用之前定义验证输入的方法。
4~12 获取要插入数据库的每个字段的值。
13 调用GetClassId的方法获得班级Id。
14 构建新增学员用户的T-SQL语句。
17 创建SqlCommand类型的对象command。
18 打开数据库连接。
19 执行命令。
20~28 根据操作结果给出提示信息。Ⅳ.4.3知识库:SqlDataReader
SqlDataReader是ADO.NET中的读取类,也称为结果集,它作为一个中间容器存储数据库中读取的数据,只能向前浏览并且是只读的。
Ⅳ.5任务五:学员信息列表及修改学员信息
Ⅳ.5.1功能描述
在StudentListForm窗体中显示学生信息并修改,并根据性别进行筛选。Ⅳ5.2设计步骤及代码分析
(1)在类StudentListForm中,定义一个DataSet类型的全局变量dataset,并将其实例化,定义一个SqlDataAdapter类型的全局变量dataAdapter。具体代码如下:
DataSetdataSet=newDataSet("MySchool"); //创建DataSet对象
SqlDataAdapterdataAdapter;
//声明一个数据适配器对象
(2)在窗体加载事件中,填充数据集并显示数据。具体代码如下:
1stringsql="SELECTStudentId,LoginId,StudentName,StudentNO,Sex,Phone,Address,JobWanted
FROMStudent";
2dataAdapter=newSqlDataAdapter(sql,DBHelper.connection);
3dataAdapter.Fill(dataSet,"Student");
4dgvStudent.DataSource=dataSet.Tables["Student"];代码分析:
1查询用的SQL语句。
2创建dataAdapter对象。
3填充数据集。
4指定DataGridView数据源,显示数据。
(3)在“保存修改”按钮的Click事件中将数据提交给数据库。具体代码如下:
1privatevoidbtnUpdate_Click(objectsender,EventArgse)
2{
3DialogResultresult=MessageBox.Show("确定要保存修改吗?","操作提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
4if(result==DialogResult.OK)
5{
6SqlCommandBuilderbuilder=newSqlCommandBuilder(dataAdapter);
7dataAdapter.Update(dataSet,"Student");
8}
9}代码分析:
3提示是否进行修改。
4确认修改。
6自动生成更新数据用的命令。
7将修改后的数据提交到数据库。
(4)在“筛选”按钮的Click事件中根据性别进行筛选。执行组合SQL语句,重新填充数据集。具体代码如下:
1privatevoidbtnReFill_Click(objectsender,EventArgse)
2{
3stringsql="SELECTStudentId,LoginId,StudentName,StudentNO,Sex,Phone,Address,
JobWantedFROMStudent";
4switch(cboSex.Text)
5{
6case"男":
7sql+="WHERESex='男'";
8break;
9case"女":
10sql+="WHERESex='女'";
11break;
12default:
13break;
14}
15
16dataSet.Tables["Student"].Clear();
17dataAdapter.SelectCommand.CommandText=sql;
18dataAdapter.Fill(dataSet,"Student");
19}代码分析:
3设定基本的T-SQL语句。
4根据组合框的选择组合SQL语句。
6增加性别为男的条件。
9增加性别为女的条件。
16清空数据集中的数据表Student。
17重新指定DataAdapter对象的查询语句。
18重新填充数据集中的Student表。
(5)在“刷新”按钮的Click事件中重新填充数据集并显示。具体代码如下:
1privatevoidbtnRefresh_Click(objectsender,EventArgse)
2{
3stringsql="SELECTStudentId,LoginId,StudentName,StudentNO,Sex,Phone,Address,
JobWantedFROMStudent";
4dataSet.Tables["Student"].Clear();
5dataAdapter.SelectCommand.CommandText=sql;
6dataAdapter.Fill(dataSet,"Student");
7}代码分析:
3查询用的T-SQL语句。
4清空数据集中原来的Student表。
5设置dataAdapter对象的查询命令文本。
6重新填充数据集中的Student表。
Ⅳ.6任务六:查询学员信息
Ⅳ.6.1功能描述
在SearchStudentForm窗体中,修改符合条件的学员的状态,删除符合条件的学员记录,并将符合条件的数据显示在列表视图中。Ⅳ.6.2设计步骤及代码解析
(1)在SearchStudentForm窗体中定义方法FillListView(),用于从数据库中检索出符合条件的数据,并填充列表视图。具体代码如下:
1privatevoidFillListView()
2{
3stringloginId;
4stringstudentName;
5stringstudentNO;
6intuserStateId;
7stringuserState;
8stringsql=string.Format(
9"SELECTStudentID,LoginId,StudentNO,StudentName,UserStateIdFROMStudentWHERELoginIdlike'%{0}%'",txtLoginId.Text);
10try
11{
12SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
13DBHelper.connection.Open();
14SqlDataReaderdataReader=command.ExecuteReader();
15lvStudent.Items.Clear();
16if(!dataReader.HasRows)
17{
18MessageBox.Show("抱歉,没有您要找的用户!","结果提示",MessageBoxButtons.OK,
MessageBoxIcon.Information);
19}
20else
21{
22while(dataReader.Read())
23{
24loginId=(string)dataReader["LoginId"];
25studentName=(string)dataReader["StudentName"];
26studentNO=(string)dataReader["StudentNO"];
27userStateId=(int)dataReader["UserStateId"];
28userState=(userStateId==1)?"活动":"非活动";
29ListViewItemlviStudent=newListViewItem(loginId);
30lviStudent.Tag=(int)dataReader["StudentID"];
31lvStudent.Items.Add(lviStudent);
32lviStudent.SubItems.AddRange(newstring[]{studentName,studentNO,userState});
33}
34}
35dataReader.Close();
36}
37catch(Exceptionex)
38{
39MessageBox.Show("查询数据库出错!","提示",MessageBoxButtons.OK,
MessageBoxIcon.Error);
40Console.WriteLine(ex.Message);
41}
42finally
43{
44DBHelper.connection.Close();
45}
46}代码分析:
3~7 定义5个局部变量,分别用于存储用户名、姓名、学号、用户状态Id和用户状态。
8~9 查找学员用户的T-SQL语句。
12 构造SqlCommand对象。
13 打开数据库连接。
14 执行查询用户命令。
15 清除ListView中的所有项。
16~34 判断是否有符合条件的数据,如果结果集中没有数据行,则弹出提示窗口;否则,将查到的数据循环写到ListView中。
(2)在查找按钮单击事件中添加如下代码,用于实现检索符合条件的记录。
1privatevoidbtnSearch_Click(objectsender,EventArgse)
2{
3if(txtLoginId.Text=="")
4{
5MessageBox.Show("请输入用户名","输入提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
6txtLoginId.Focus();
7}
8else{
9FillListView();
10}
11}代码分析:
3~9判断输入的用户名是否为空,如果为空,则弹出提示窗口,并使txtLoginId文本框获得焦点;否则,调用FillView()方法,填充列表视图。
(3)在右键菜单cmsStudent的tsmiDelete菜单项单击事件中实现删除选定记录的功能。具体代码如下:
1privatevoidtsmiDelete_Click(objectsender,EventArgse)
2{
3if(lvStudent.SelectedItems.Count==0)
4{
5MessageBox.Show("您没有选择任何用户","操作提示",MessageBoxButtons.OK,
MessageBoxIcon.Information);
6}
7else
8{
9DialogResultchoice=MessageBox.Show("确定要删除该用户吗?","操作警告",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
10if(choice==DialogResult.Yes)
11{
12stringsql=string.Format("DELETEFROMStudentWHEREStudentID={0}",(int)lvStudent.SelectedItems[0].Tag);
13SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);
14intresult=0;
15try
16{
17DBHelper.connection.Open();
18result=command.ExecuteNonQuery();
19}
20catch(Exceptionex)
21{
22MessageBox.Show(ex.Message);
23
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自行车专用马鞍包市场需求与消费特点分析
- 2024年度出国派遣务工人员住宿安排合同
- 照明设备市场需求与消费特点分析
- 灯座市场发展现状调查及供需格局分析预测报告
- 2024年度版权质押合同的质押权利与质押期限
- 计量仪器市场发展预测和趋势分析
- 2024年度服装行业网络安全保障合同
- 软梯市场需求与消费特点分析
- 2024年度成都二手房产买卖合同规范格式
- 2024年度医疗机构搬迁及信息系统迁移合同
- 智能制造(智改数转)架构设计解决方案
- 航空航天用带肋十字槽-编制说明
- 2024年时事政治必考题库(轻巧夺冠)
- 在线网课知道智慧《硬核赢创新(山大)》单元测试答案
- 中班语言《金色的秋天》课件
- 高考语文复习:诗歌比较阅读
- 林业工程竣工报告
- 从偏差行为到卓越一生3.0版
- 2024护理十大安全目标
- DG-TJ08-2433A-2023 外墙保温一体化系统应用技术标准(预制混凝土反打保温外墙)
- pets5历年真题(口语)
评论
0/150
提交评论