首页 VB.NET制作工资管理系统(SQL_Server版)

VB.NET制作工资管理系统(SQL_Server版)

举报
开通vip

VB.NET制作工资管理系统(SQL_Server版) ※ 1 ※ 在 VB.NET 下制作工资管理系统(SQL Server 版) 内容提要:本文介绍了如何在 VB.NET 下用 ADO.NET 和 SQL Server 2000 制作工资管理系统, 充分运用了 VB.NET 的数据绑定的功能,大大减少代码的编写,通过游标移动机制实现用文本框和 网格控件同步显示数据库中的数据。 关键字:VB.NET、工资管理系统、SQL Server 引言:工资管理广泛应用于各行各业,它是公司、企业信息化工程中必不可少的一个环节,所 以学习制作通用的工资管理系统...

VB.NET制作工资管理系统(SQL_Server版)
※ 1 ※ 在 VB.NET 下制作工资管理系统(SQL Server 版) 内容提要:本文介绍了如何在 VB.NET 下用 ADO.NET 和 SQL Server 2000 制作工资管理系统, 充分运用了 VB.NET 的数据绑定的功能,大大减少代码的编写,通过游标移动机制实现用文本框和 网格控件同步显示数据库中的数据。 关键字:VB.NET、工资管理系统、SQL Server 引言:工资管理广泛应用于各行各业,它是公司、企业信息化 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 中必不可少的一个环节,所 以学习制作通用的工资管理系统很有必要。本文根据实际需求,制作了一个简单、易用而且适用面 比较广的工资管理系统,其界面友好、功能丰富而不繁杂,并且程序的设计都基于面向对象的思想, 且条理清晰,方便了各企事业单位或机关部门根据自己的实际修改、增强系统功能。 正文: 1 简介 工资管理广泛应用于各行各业,它是公司、企业信息化工程中必不可少的一个环节,所以学习 制作通用的工资管理系统很有必要。本文根据实际需求,制作了一个简单、易用而且适用面比较广 的工资管理系统,其界面友好、功能丰富而不繁杂,并且程序的设计都基于面向对象的思想,且条 理清晰,方便了各企事业单位或机关部门根据自己的实际修改、增强系统功能。 本系统采用文本框和网格控件同步显示数据的方式,让用户更清晰地从界面了解重要的信息, 也可以让用户快速查看数据,并可以对记录进行添加、删除和修改,还可以根据工号查找历史记录。 2 设计数据库 2.1 新建数据库 打开 SQL Server 2000 的“企业管理器”,新建一个数据库,取名为“工资管理系统”。如图 1 所示。 图 1 2.2 建立数据表 打开“工资管理系统”数据库,右键单击 ,选择 。 表的设计如图 2 所示,把“工号”字段设为主键。 图 2 ※ 2 ※ 选择“总额”字段,把这段设计成计算列。在公式处输入“[基本工资] + [加班费] + [奖金] + [津 贴]”,如图 3 所示。 图 3 被设为计算行上的数据不能通过编程进行修改,所以后面程序设计时,把显示“总额”的项设 为“只读”。 保存表,并取名为“工资表”。 3 建立程序 本节介绍如何新建程序,如何进行界面设计和数据绑定。 3.1 新建程序 打开 VS.NET,新建一个项目,选择 ,在右边的“模块”窗口选择“Windows 应用程序”并取名为“工资管理系统”。如图 4 所示。 图 4 3.2 界面设计 使用 控件、 控件、 控件和 控件进行窗体的设计,如图 5 所示。 TextBox控件 Textbox控件 Button控件 DataGrid控件 图 5 下面介绍控件的属性设置。如表 1 所示列出了 控件、 控件的属性设置。 ※ 3 ※ 表 1 Label 控件和 TextBox 控件的属性设置 控件类型 原(Name)属性 (Name)属性 Text 属性 ReadOnly 属性 Label Label1 Label1 工号: ——— TextBox TextBox1 TextBox1 (空) False Label Label2 Label2 姓名: ——— TextBox TextBox2 TextBox2 (空) False Label Label3 Label3 性别: ——— TextBox TextBox3 TextBox3 (空) False Label Label4 Label4 基本工资: ——— TextBox TextBox4 TextBox4 (空) False Label Label5 Label5 加班费: ——— TextBox TextBox5 TextBox5 (空) False Label Label6 Label6 奖金: ——— TextBox TextBox6 TextBox6 (空) False Label Label7 Label7 津贴: ——— TextBox TextBox7 TextBox7 (空) False Label Label8 Label8 总额: ——— TextBox TextBox8 TextBox8 (空) True Label Label9 Label9 备注: ——— TextBox TextBox9 TextBox9 (空) False Label Label10 Label10 请输入员工工号: ——— TextBox TextBox10 TxtFind (空) False TextBox TextBox11 TxtLocation (空) True 补充:“TextBox11”控件的 属性选择“Center”, 属性选择“None”。 表 2 给出了 控件的属性设置。 表 2 Button 控件的属性设置 原(Name)属性 (Name)属性 Text 属性 原(Name)属性 (Name)属性 Text 属性 Button1 BtTop |< Button2 BtPrev << Button3 BtNext >> Button4 BtLast >| Button5 BtFind 查找 Button6 BtView 加载数据 Button7 BtAdd 添加 Button8 BtDelete 删除 Button9 BtUpdate 更新 Button10 BtCancel 取消 Button11 BtExit 退出 “DataGrid1”控件:打开“DataGrid1”控件的窗性窗口,把 属性选择为“Top”、“Bottom”、 “Left”、“Right”四个方向如图 6 所示。改变 属性的默认属性,让控件显示数据 时出现交替色。 属性改为“True”。其他属性可以根据开发者的个人爱好进行设置。 图 6 3.3 数据绑定 (1)从工具箱的“数据”部分选择 控件在窗体上拖放,进入“数据适配器配置向 导”。单击 ,选择数据连接,单击 按钮打开“数据连接属性”窗口,在 输 入 服 务 器 名 称 ( 本 机 名 ), 在 中 选 择 (如果您没有在SQL登录的安全性中设置为“SQL Sever和Windows(S)” 则不能选择此项),在 输入“sa”同时选中 复选框,在 的 ※ 4 ※ 下拉框中选择“工资管理系统”再单击 ,如果连接成功则显示如图7所示。 图 7 ( 2 )单击 按钮关闭对话框,单击 进入 对话框,选择 单击 。单击 按钮,打开如图8所示的对话框。 (3)单击 按钮添加“工资表”,再单击 按钮关闭对话框,然后在“查询生成器”对 话框选择 ,单击 关闭对话框。最后单击 按钮完成向导。 (4)右键选择添加的 控件,选择 添加一个数据集,如图9所示。 图 8 图 9 (5)选择 在右边的文本框输入“ds”。单击 按钮关闭对话框,这样添加了一个名为 “Ds1”的数据集。 (6)打开“DataGrid1”控件的属性窗口,在 属性中选择“Ds1”,在 属性中选 择“工资表”。如图10所示。 (7)打开“TextBox1”控件的属性窗口,打开 属性的树型节点,在 属性中选择 “Ds1”数据集的“工资表”的“工号”字段,如图11所示。 图 10 图 11 与上述方法一样,按次序把“TextBox2”到“TextBox9”控件绑定在“工资表”上,绑定的字 段名与对应的 控件的 属性相同。 ※ 5 ※ 3.4 代码编写 前面已经介绍了如何为控件绑定数据,下面为程序添加代码: (1)首先建立一个 TxtLocationChange 过程,用作显示当前活动行所在总行数据的位置,代码 如下: Private Sub TxtLocationChange() '中间指示位置变化的文本内容的变化 Me.TxtLocation.Text = (((Me.BindingContext(Ds1, "工资表").Position + 1).ToString + " 的 ") _ + Me.BindingContext(Ds1, "工资表").Count.ToString) End Sub (2)当用户单击“添加”按钮时,想让其他按钮不可用,防止用户误操作。因此建立一个 BtEnabled 过程,以一个布尔变量为参数,代码如下: Private Sub BtEnabled(ByVal bool As Boolean) '把一个布尔型的参数作为按钮的属性 BtView.Enabled = bool BtDelete.Enabled = bool BtUpdate.Enabled = bool BtPrev.Enabled = bool BtLast.Enabled = bool BtNext.Enabled = bool BtTop.Enabled = bool BtFind.Enabled = bool End Sub (3)单击“加载数据”按钮后在 控件和 控件显示数据,双击“加载数据”按钮 打开代码编辑窗口,在 BtView_Click 过程中添加代码,具体代码如下: Private Sub BtView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtView.Click Try '设定查询语句 SqlDataAdapter1.SelectCommand.CommandText = "select * from 工资表" Ds1.Clear() '清空数据集 SqlDataAdapter1.Fill(Ds1) '填充数据 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行 Me.TxtLocationChange() '指示当前活动行的位置 Catch ex As Exception MsgBox(ex.Message) End Try End Sub (4)“添加”按钮,前面已经把控件绑定在数据集上,第一次单击此按钮时用 BindingContext 属性的 AddNew()方法添加一行新行,调用 BtEnabled 过程,用“False”作参数,使其他按钮不可用。 当用户输入数据后再一次单击此按钮,再用 BindingContext 属性的 EndCurrentEdit()方法把数据返回 数据集,然后用 SqlDataAdapter1.Update()方法把数据返回数据源,再调用 BtEnabled 过程,用“True” 作参数,使其他按钮可用。最后调用 TxtLocationChange()过程来显示当前活动的数据行,同时在 控件选择当前活动行。双击“添加”按钮,在“BtAdd_Click”过程中添加代码,具体代码 如下: Private Sub BtAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtAdd.Click Try If BtAdd.Text = "添加" Then '判断是否第一次按下按钮 Me.BindingContext(Ds1, "工资表").AddNew() '增加一行新行 BtAdd.Text = "确定" Me.BtEnabled(False) '将其他按钮设为不可用,防止用户误操作 Else If BtAdd.Text <> "确定" Then '用户第二次按下按钮 ※ 6 ※ Exit Sub End If Me.BindingContext(Ds1, "工资表").EndCurrentEdit() '把数据返回数据集 SqlDataAdapter1.Update(Ds1.工资表) '更新数据集,调用添加语句 MsgBox("添加成功!") BtAdd.Text = "添加" Me.BtEnabled(True) '把按钮设为可用 Me.TxtLocationChange() '指示当前活动行的位置 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择活动行 End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub (5)“删除”按钮,单击此按钮实现把当前活动行删除,再调用 TxtLocationChange()过程来显 示当前活动的数据行,同时在 控件选择当前活动行。双击“删除”按钮,在 BtDelete_Click 过程中添加以下代码,具体代码如下: Private Sub BtDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtDelete.Click Try '确定是否要删除数据 If MsgBox("真的要删除此记录?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then '删除数据集中当前的活动行 Ds1.工资表.Rows(Me.BindingContext(Ds1, "工资表").Position).Delete() SqlDataAdapter1.Update(Ds1) '更新数据集,调用删除语句 Me.TxtLocationChange() '指示当前活动行的位置 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行 End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub (6)“更新”按钮,单击此按钮把所有数据返回数据集,如果检查到有数据修改过就更新数据, 否则退出,双击“更新”按钮,在 BtUpdate_Click 过程中添加代码,具体代码如下: Private Sub BtUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtUpdate.Click Try Me.BindingContext(Ds1, "工资表").EndCurrentEdit() '把数据返回数据集 If Ds1.HasChanges(DataRowState.Modified) Then '判断是否有更改 '更新数据库,使数据集上经过修改的数据生效于数据库。调用更新语句 SqlDataAdapter1.Update(Ds1) MsgBox("更改成功!") End If Catch End Try End Sub “取消”按钮,如果用户第一次单击“添加”按钮,但是又改变主意不再添加则可以单击此按 钮,调用 BindingContext 属性的 CancelCurrentEdit()方法取消添加新行,然后将“添加”按钮的 属性改为“添加”,同时调用 BtEnabled 过程,用“True”作参数,把不可用的按钮为可用。双击“添 加”按钮,在 BtCancel_Click 过程添加代码,具体代码如下: Private Sub BtCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtCancel.Click Me.BindingContext(Ds1, "工资表").CancelCurrentEdit() '取消添加新行 BtAdd.Text = "添加" ※ 7 ※ Me.BtEnabled(True) '将部分按钮设为可用 End Sub “退出”按钮,单击此按钮程序退出,双击“退出”按钮,在 BtExit_Click 过程添加代码,具 体代码如下: Private Sub BtExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtExit.Click Application.Exit() End Sub (7)“查找”按钮,单击此按钮,首先判断查找内容是否为空,如果为空则退出过程,再将带 条件的查询语句赋给“SqlDataAdapter1”控件的 SelectCommand 属性,最后再显示数据,双击“查 找”按钮,在 BtFind_Click 过程中添加代码,具体代码如下: Private Sub BtFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtFind.Click Try If Trim(TxtFind.Text) = "" Then '判断查找内容是否为空,如是为空退出 Exit Sub End If '设定查询语句 SqlDataAdapter1.SelectCommand.CommandText = "select * from 工资表 where 工号 like '" & TxtFind.Text & "%'" Ds1.Clear() SqlDataAdapter1.Fill(Ds1) '填充数据 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行 Me.TxtLocationChange() '指示当前活动行的位置 Catch End Try End Sub (8)“>>”(BtNext)按钮,单击此按钮的作用是将活动行指向下一行数据,首先判断是否有 数据可操作,如果没有则退出。取得数据的总行数,判断当前的活动行是否是最后一行,如果不是 最后一行,则将活动行指向下一行,然后调用 TxtLocationChange()过程来显示当前活动的数据行, 同时取消原来的“DataGrid1”选择,再选择下一行。双击“BtNext”按钮,在 BtNext_Click 过程中 添加代码,具体代码如下: Private Sub BtNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtNext.Click If Me.BindingContext(Ds1, "工资表").Count = 0 Then '判断是否有对象,没有则退出 Exit Sub End If Dim i As Integer '获取数据行的总数 i = Me.BindingContext(Ds1, "工资表").Count - 1 '列的数据总长度 If Me.BindingContext(Ds1, "工资表").Position < i Then '判断是否已经是最后一行 Me.BindingContext(Ds1, "工资表").Position += 1 '指向当前位置的下一行 Me.TxtLocationChange() '指示当前活动行的位置 End If DataGrid1.UnSelect(DataGrid1.CurrentRowIndex - 1) '取消原来活动行的选择 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行,使之加亮显示 End Sub (9)“>|”(BtLast)按钮,单击此按钮的作用是将活动行指向最后一行数据,首先判断是否有 数据可操作,如果没有则退出,然后就把活动行指向最后一行,双击“BtLast”按钮,在 BtLast_Click 过程中添加代码,具体代码如下: Private Sub BtLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtLast.Click If Me.BindingContext(Ds1, "工资表").Count = 0 Then '判断是否有对象,没有则退出 ※ 8 ※ Exit Sub End If Me.DataGrid1.UnSelect(DataGrid1.CurrentRowIndex) '取消原来活动行的选择 '指定活动行为最后一行 Me.BindingContext(Ds1, "工资表").Position = Me.BindingContext(Ds1, "工资表").Count - 1 Me.TxtLocationChange() '指示当前活动行的位置 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行 End Sub (10)“<<”(BtPrev)按钮,单击此按钮首先判断是否有数据可操作,如果没有则退出。判断 当前的活动行是否在第一行,如果不是第一行,则将活动行指向上一行,双击“BtPrev”按钮,在 BtPrev_Click 过程中添加代码,具体代码如下: Private Sub BtPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtPrev.Click If Me.BindingContext(Ds1, "工资表").Count = 0 Then '判断是否有对象,没有则退出 Exit Sub End If If Me.BindingContext(Ds1, "工资表").Position > 0 Then '判断是否在第一行 '指向上一行 Me.BindingContext(Ds1, " 工 资 表 ").Position = (Me.BindingContext(Ds1, " 工 资 表 ").Position - 1) Me.TxtLocationChange() '指示当前活动行的位置 End If DataGrid1.UnSelect(DataGrid1.CurrentRowIndex + 1) '取消原来活动行的选择 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行 End Sub (11)“ |<”(BtTop)按钮,单击此按钮,首先判断是否有数据可操作,如果没有则退出,然后 将活动行指向第一行,双击“BtTop”按钮,在 BtTop_Click 过程添加代码,具体代码如下: Private Sub BtTop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtTop.Click If Me.BindingContext(Ds1, "工资表").Count = 0 Then '判断是否有对象,没有则退出 Exit Sub End If Me.DataGrid1.UnSelect(DataGrid1.CurrentRowIndex) '取消原来活动行的选择 Me.BindingContext(Ds1, "工资表").Position = 0 '指定活动行为第一行 Me.TxtLocationChange() '指示当前活动行的位置 Me.DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行 End Sub “DataGrid1”的 MouseUp 事件,当鼠标单击“DataGrid1”控件的数据行,当前的活动行也指 向了单击的数据行,文本框的内容也同步改变,程序只需做的工作是选择当前的活动行和显示活动 行的位置。 在代码编辑窗口的“类名”下拉框选择“DataGrid1”,在“方法名称”下拉框选择“MouseUp”, 在 DataGrid1_MouseUp 过程中添加代码,具体代码如下: Private Sub DataGrid1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseUp Try DataGrid1.Select(DataGrid1.CurrentRowIndex) '选择当前活动行 Me.TxtLocationChange() '指示当前活动行的位置 Catch If Err.Number = 9 Then ※ 9 ※ MsgBox("表中没有数据") End If End Try End Sub 4 运行结果 (1)按 F5 运行,单击“加载数据”按钮查看数据,并用鼠标或者键盘选中其中的一行,可以 看到,选中的数据行加亮显示,行中对应的数据显示在文本框上,如图 12 所示。 图 12 (2)添加记录,在文本框输入数据后,单击“确定”按钮,可以看到一条数据新增到数据库, 并显示在网格控件上的效果,如图 13 所示。 (3)删除记录,选中网格控件中的某一行数据后,单击“删除”按钮,就可以进行相关操作, 如图 14 所示。 图 13 图 14 (4)更改数据,首先选中网格控件中的某一行数据,并在文本框中修改改行的某些记录,当确 认修改无误之后,就单击“更新”按钮,这时候数据库中的数据得到了更新,如图 15 所示。 (5)查找记录,程序中实现了模糊查找,可以根据输入的员工号进行模糊查找,查找结果显示 在网格控件和文本框上,如图 16 所示。 图 15 图 16 在VB.NET下制作工资管理系统(SQL Server版) 1 简介 2 设计数据库 2.1 新建数据库 2.2 建立数据表 3 建立程序 3.1 新建程序 3.2 界面设计 3.3 数据绑定 3.4 代码编写 4 运行结果
本文档为【VB.NET制作工资管理系统(SQL_Server版)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_443178
暂无简介~
格式:pdf
大小:346KB
软件:PDF阅读器
页数:9
分类:互联网
上传时间:2010-02-21
浏览量:34