1、 VB 工资管理系统 (一)结束语本软件的设计目的是服务于企事业单位财务部门工资发放管理的需要提供方便和帮助。通过这几个月的毕业设计,我学到很多以前没有学到的 visual basic 开发技术,在软件工程学上更是取得了很大的进步。经过大量的测试和试用,作者深信本软件达到了方便和实用的设计目的,并在软件界面和易用实用等方面有着独到之处。虽然软件基本达到设计要求并且达到同行的先进水平,但由于作者水平有限,软件存在 bug 也是在所难免的 ,您的意见和建议将极大的帮助我改进并完善软件。真诚的希望你的参与。摘 要工资管理系统用计算机管理企事业单位员工工资发放的一种计算机应用技术的创新,在计算机还未普
2、及之前企事业单位的员工工资发放都是由财务管理人员来承担操作的.现在一般的企业都采用了信息化管理的方式即采用计算机作为工具的电子信息化的员工工资计算发放进行更有效的财务管理。工资管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,我们使用 MICROSOFT 公司的 VISUAL BASIC 开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然
3、后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。关键字:物资管理信息系统,MIS,visual basic ,数据库引言课题背景工资管理系统用计算机管理企事业单位员工工资发放的一种计算机应用技术的创新,在计算机还未普及之前企事业单位的员工工资发放都是由财务管理人员来承担操作的.现在一般的企业都采用了信息化管理的方式即采用计算机作为工具的电子信息化的员工工资计算发放进行更有效的财务管理。工资管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要
4、求应用程序功能完备,易使用等特点。系统简介本系统服务于企事业单位财务部门,负责管理本部门员工的财务工资信息.主要由以下几大功能模块构成:一:数据录入(录入部门,录固定向)二:数据整理(改固定项,改流动项,人员管理,部门管理)三:打印报表(打工资条,打工资表,打汇总表,提款方案)四:系统维护(系统初始,系统备份,数据恢复,权限管理,设置背景)五:退出系统1. 3 开发工具简介Visual Basic 6.0 是 Micrsoft 公司出品的开发工具,Visual Basic 是一种可视化的,面向对象的 ove 事件:当命令按钮上移动鼠标时发生。MouseUp 事件:当在命令按钮上释放鼠标按钮时发
5、生。标签框类的控件类的控件:Caption 属性:在应用程序界面上加入说明。Autosize 属性:决定控件是否自动改变大小以显示其全部内容。Backstyle 属性:用以指示标签是否透明.Bordstyle 属性:用以设定控件是否有边框。文本框类的控件:Text 属性:通过像 text 属性赋值的方法来改变该属性的值。Maxlength 属性:该属性设定在文本框控件中能够输入的最大字符数。Multline 属性:该属性设定 text 字符串中是否接受换行符。Scrollbars 属性:该属性决定是否为文本框加滚动条。Passent 属性:设定控件中的文本对其方式Appearance 属性:设
6、定一个对象在运行时是否可以 3D 效果显示。BackColor 属性:设置返回背景色BorderStyle 属性:设置对象的边框样式DataField 属性:设定数据使用者将被绑定到的字段名DataFormat 属性:设定 DataFormat 对象,用于数据绑定DataMember 属性:从数据供应程序提供的几个数据成员中返回/设定一个特定的数据成员DataSource 属性:设定控件绑定的一个数据源DragIcon 属性:设定图标,它将在拖放操作中作为指针显示DragMode 模式:设定一个值,确定在拖放操作中所用方式Enabled 属性:设置/返回运行时 TextBox 是否相应用户事件
7、Font 属性:设置 /返回字体属性ForeColor 属性:设置/返回文本的前景色Height 属性:设置 /返回 TextBox 的高度IMEMode 属性:设置/返回数值用来确定输入方法编辑器的状态Index 属性:设置/返回唯一的标识控件数组中该控件的编号Left 属性:设置/返回 TextBox 控件的水平位置Locked 属性:设置/返回 TextBox 中文本是否可编辑LinkItem 属性:设置/返回 DDE 与另一个应用程序会话时,传给接受端的数据MaxLength 属性:设置/返回一个值,指定在 TextBox 控件中能够输入的字符最大值MouseIcon 属性:设置/ 返
8、回自定义鼠标的图标Top 属性:设置/返回 TextBox 控件的垂直位置Tag 属性:存储过程所需的附加数据文本框类的事件:Change 事件:当改变文本框内容时发生Click 事件:鼠标单击控件时发生DblClick 事件:用鼠标左键双击控件时发生DragDrop 事件:在一个完整的拖放动作完成或使用 Drag 方法,并将其 Action 参数设置为 2 时发生DragOver 事件:在拖放操作正在进行时发生GotFocus 事件:当一个命令按钮获得焦点时发生LinkClose 事件:当一个 DDE 对话结束时发生LinkError 事件:当一个 DDE 对话框过程中出现错误时,该事件发生
9、KeyDoent 属性:决定单选按钮的标题在控件上的位置。Enable 属性:该控件为灰色时为 false,表示运行时不可用。Index 属性:属性值表示为单选按钮组成的控件中某个按钮的索引值。Tabindex 属性:建立控件时,vb 自动为其分配一个 tabindex 值,利用 tab 键可以在控件之间切换焦点。Value 属性:反映控件状态的属性 ,返回 true 表示已选择了该按钮。Appearance 属性:设置/返回一个对象在运行时是否以 3D 效果显示。BackColor 属性:设置/返回背景色。Container 属性:设置/返回 Form 上的控件属性。DataField 属性
10、:设置/返回数据使用者将被绑定到的字段名。DataFormat 属性:设置/返回 DataFormat 对象,一个绑定对象将附加到它。DisabledPicture 属性:设置/返回一个对图像的引用,该图片在控件无效时显示在控件中。Doe 属性:设置 /返回控件中显示文本所用的字体大小。FontSize 属性:设置 /返回控件中显示文本所用的字体大小Height 属性:设置/返回控件的高度。MaskColor 属性:设置/返回一个在控件的图片中作为掩码的颜色。MousePointer 属性:设置/返回一个值,该值指示在运行时当鼠标移动到对象上时显示的指针类型。单选按钮类的常用事件:Click
11、事件:鼠标单击控件时发生。DbClick 事件: 当在一个对象上按下和释放鼠标按钮并再次按下和释放按钮时,该事件发生。DragDrop 事件:在一个完整的拖放动作或使用 Drag 方法,并将其 Action 参数设置位 2 时,该事件发生。DragOver 事件: 在拖放操作正在进行时发生。GotFocus 事件: 当获的对象焦点时发生。LostFocus 事件:当对象失去焦点时发生。KeyDo 控件上的容器。DataChangeed 属性:设置/返回一个值,指出被绑定的控件中的数据已经被某进程修改。DataField 属性:设置或返回数据使用者将被绑定到的字段名。DataFormat 属性:
12、设置或返回 DataFormat 对象,用于数据绑定。Datasource 属性:设置或返回控件绑定的一个数据源。DisabledPicture 属性:设置或返回一个对图片的引用,该图片在控件无效时显示在控件中。Doe 属性:设置或返回控件的标识名。Value 属性:设置或返回控件的状态。复选按钮类的控件的基本事件:Click 事件:鼠标单击控件时发生。DragDrop 事件:在一个完整的拖放动作完成或使用 Drag 方法,并将其 Action 参数设置为 2 时发生。DragOver 事件:在拖放操作正在进行时发生。GotFocus 事件:在对象获的焦点时发生。,OLECompleteDra
13、g 事件:当源部件被放到目标时发生,并通知源部件拖放操作被执行或取消。OLEDragDrag 事件:当源部件决定放操作能发生,却源部件被放到目标部件时,此事件发生。框架类的控件:1) List 属性:列表框控件的表项是使用数组的方式保存,数组的每一个元素存储列表控件的一个表项Listcount 属性:控件列表部分项目的个数。Mutselect 属性:可以设置列表框为单选或允许多选属性.Selectd 属性:标示一个数组,数组各元素为:Selected(0),selected(1)滚动条类的控件:Value 属性:滚动条上滑块所在位置由 value 值所决定。Max 和 min 属性:对 val
14、ue 值的最大,最小进行限制。Largechange 属性:用户点击滚动条与键头之间的区域时,value 的改变量。4) OnClick 事件:用来添加按钮的单击事件所执行的程序代码。定时器类类的控件:Interval 属性:表示定时的时间间隔,以毫秒为单位。Enable 属性:为 true 时(缺省值),激活定时器开始计时;为 false 时处于休眠状态.Visual basic6.0 连接数据库的主要方式以下几种方式:一是:用data 控件进行数据库链接 ,二是利用 adodc(ADO Data Control)进行数据库链接 。三是: 利用 DataEnvironment 进行数据库链接
15、.四是利用 ADO(ActiveX Data Objects)进行编程:现在我们来大致对这几种技术应用介绍:用 data 控件进行数据库链接.第一步:给窗体添加一个 Data 控件。第二步:用 Access 建立一个名为 Pad 的数据库,在库中建立一个表 Myset,给表添加四个字段:backcolor(数据),forecolor(文本),fontname(文本),fontsize(文本)。注意:请将库文件存入程序所在目录。 如果你的机器没安装有 Access,可通过 VB 建库。利用 adodc(ADO Data Control) 进行数据库链接:使用 adodata 控件访问数据库可以完
16、全不用编写代码,只需要通过简单的设置和操作其属性就可以实现与数据库的连接,通过绑定数据感知控件,就能提供一个访问数据库的界面,用来实现对数据库的浏览,贴加,删除,修改等操作.利用 DAO 对数据库进行操纵:在 visual basic 中提供了两种与 jet 数据引擎接口的方法 :data 控件与数据访问对象(DAO)DAO 是 database object 的英文缩写,要访问数据库一方面数据库要提供访问接口,另一方面要在编程环境中有对数据库的支持.DAO 模型是设计关系数据库系统结构的对象类的集合.他们提供了管理关系型数据库系统所需要的全部操作属性和方法,这其中包括建立数据库,定义表,字段
17、和建立表间关系,定位和查询数据库等.关系数据库介绍:关系数据库是目前各类数据库中最重要、最流行的数据库,他应用数学方法来处理数据库数据,是目前使用最广泛的数据库系统。20 世纪 70 年代以后开发的数据库管理系统产品几乎都是基于关系的。在数据库发展的历史上,最重要的成就就是关系模型。 关系数据库系统与非关系数据库系统的区别是:关系系统只有“表“ 这一种数据结构;而非关系数据库系统还有其他数据结构,对这些数据结构有其他的操作。结构化查询语言 SQL(Structured Query Language)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、
18、功能极强的关系数据库语言。目前已成为关系数据库的标准语言MicrosoftAccess 介绍:使用 MicrosoftAccess,可以在单一的数据库文件中管理所有的信息。在这个文件中,用户可以将自己的数据分别保存在各自独立的存储空间中,这些空间称作表;可以使用联机窗体来查看、添加及更新表中的数据;使用查询来查找并检索所要的数据;也可以使用报表以特定的版面布置来分析及打印数据。 如果要保存数据,请为每一种类型的信息创建一个表。如果要从查询、窗体或报表中的多个表中将数据合并在一起,就要定义各个表之间的关系。 如果要搜索并检索符合指定条件的数据,包括来自多个表中的数据,就要创建查询。查询的同时也可
19、以更新或删除多条记录,并对数据执行内嵌或自定义的计算。 如果要简单地直接在某个表中查看、输入及更改数据,请创建一个窗体。在打开一个窗体时,MicrosoftAccess 将从一个或多个表中检索数据,并使用用户在“窗体向导” 选择的版面布局或所创建的版面布局,将窗体显示在屏幕上。 如果要分析数据或将数据以特定的方式打印出来,请创建一个报表。例如,可以打印一份将数据分组并计算数据总和的报表,也可以打印另一份带有各种数据格式的打印邮件标签的报表。系统的分析系统开发的目标和思想本系统开发目标是服务于企事业单位财务管理人员,方便工作人员,收集员工工资信息,发布工资发放信息,对本单位部门员工工资分类管理等
20、.同时力求做到界面人性化,功能齐全,数据存储安全.系统的可行性分析技术上:本系统采用 visual basic 6.0 与微软的 access 作为数据库,技术上开发难度一般.经济上:本系统服务于企事业单位财务管理人员,提高了工作人员办事效率,节省了开支.所以具有经济上的可行性.社会上:本系统同时也方便了企业管理人员者,以及员工.所以具有社会可行性.系统的设计31 系统的功能结构设计32 系统的数据库设计1:部门表:2:工资信息表:3:用户登陆表:界面设计与代码设计1:登陆界面设计登陆界面代码设计:Private Sub Command1_Click()If Trim(Text3.Text)
21、= Data1.Recordset.Fields(2) Thenczy = Data1.Recordset.Fields(1)bz = Text1.TextUnload Megzglxt.Shomand2_Click()EndEnd SubPrivate Sub Form_Load()Data1.DatabaseName = App.Path + “gzglxt.mdb”Data1.RecordSource = “mmk”Data1.RefreshEnd SubPrivate Sub Text1_Change()If Len(Text1.Text) = 2 ThenData1.Recordse
22、t.FindFirst “czydm=“ + “ + Text1.Text + “If Data1.Recordset.NoMatch = True ThenMsgBox “操作员代码不存在,请核对后再输入!”Text1.Text = “Text1.SetFocusElseText2.Text = Data1.Recordset.Fields(1)Text3.SetFocusEnd IfEnd IfEnd SubPrivate Sub Text3_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenCommand1.SetFocusEnd IfE
23、nd Sub2.数据恢复界面:数据恢复代码设计:Private Sub Command1_Click()Data1.Recordset.MoveFirstCall disp4End SubSub disp4()Text1.Text = Data1.Recordset.Fields(0)Text2.Text = Data1.Recordset.Fields(1)Text3.Text = Data1.Recordset.Fields(2)End SubPrivate Sub Command10_Click()Command1.Enabled = TrueCommand2.Enabled = Tru
24、eCommand3.Enabled = TrueCommand4.Enabled = TrueCommand5.Enabled = TrueCommand6.Enabled = TrueCommand7.Enabled = TrueCommand8.Enabled = TrueCommand9.Enabled = FalseCommand1.SetFocusCall disp4End SubPrivate Sub Command2_Click()If Data1.Recordset.BOF = False Then Data1.Recordset.MovePreviousIf Data1.Re
25、cordset.BOF = True Then Data1.Recordset.MoveNextCall disp4End SubPrivate Sub Command3_Click()If Data1.Recordset.EOF = False Then Data1.Recordset.MoveNextIf Data1.Recordset.EOF = True Then Data1.Recordset.MovePreviousCall disp4End SubPrivate Sub Command4_Click()Data1.Recordset.MoveLastCall disp4End S
26、ubPrivate Sub Command5_Click()dm = InputBox(“请输入您要查找的操作员的代码”)Data1.Recordset.FindFirst “czydm=“ + “ + dm + “If Data1.Recordset.NoMatch = True ThenMsgBox “查无此操作员”Exit SubElseCall disp4End IfEnd SubPrivate Sub Command6_Click()Command1.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = FalseComm
27、and4.Enabled = FalseCommand5.Enabled = FalseCommand6.Enabled = FalseCommand7.Enabled = FalseCommand8.Enabled = FalseCommand9.Enabled = TrueCommand10.Enabled = TrueText1.Locked = FalseText2.Locked = FalseText3.Locked = FalseText1.SetFocusbz1 = 111End SubPrivate Sub Command7_Click()Command1.Enabled =
28、FalseCommand2.Enabled = FalseCommand3.Enabled = FalseCommand4.Enabled = FalseCommand5.Enabled = FalseCommand6.Enabled = FalseCommand7.Enabled = FalseCommand8.Enabled = FalseCommand9.Enabled = TrueCommand10.Enabled = TrueText1.Locked = FalseText2.Locked = FalseText3.Locked = FalseText1.Text = “Text2.
29、Text = “Text3.Text = “Text1.SetFocusbz1 = 222End SubPrivate Sub Command8_Click()k = MsgBox(“您确认要删除名称为:” Text2.Text “的操作员吗?”, vbYesNo + 32)If k = 6 ThenIf Text1.Text “00” ThenData1.Recordset.DeleteData1.RefreshCall disp4ElseMsgBox “管理员记录不能删除”Exit SubEnd IfElseCall disp4End IfEnd SubPrivate Sub Comman
30、d9_Click()If bz1 = 111 ThenData1.Recordset.EditData1.Recordset.Fields(0) = Text1.TextData1.Recordset.Fields(1) = Text2.TextData1.Recordset.Fields(2) = Text3.TextData1.Recordset.UpdateEnd IfIf bz1 = 222 ThenData1.Recordset.FindFirst “czydm=“ + “ + Text1.Text + “If Data1.Recordset.NoMatch = False Then
31、MsgBox “操作员代码重复,请重新输入”Exit SubElseData1.Recordset.AddNemand1.Enabled = TrueCommand2.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = TrueCommand5.Enabled = TrueCommand6.Enabled = TrueCommand7.Enabled = TrueCommand8.Enabled = TrueCommand9.Enabled = FalseCommand1.SetFocusData1.RefreshEnd SubPri
32、vate Sub Form_Activate()Text1.Locked = TrueText2.Locked = TrueText3.Locked = TrueCommand1.SetFocusCall disp4Command9.Enabled = FalseEnd SubPrivate Sub Form_Load()Me.Top = 600Me.Left = 1100Data1.DatabaseName = App.Path + “gzglxt.mdb”Data1.RecordSource = “mmk”Data1.RefreshEnd Sub3 主界面设计:主界面代码设计:Privat
33、e Sub bmgl_Click()Form6.Sho7.Sho3.Sho4.Sho2.Sho_Click()Form1.Sho_Activate()sb1.Panels(2).Text = “操作员:” + czyIf bz 0 And bz 0 Thenggdx.Enabled = Falselgdx.Enabled = Falseqxgl.Enabled = FalseEnd IfEnd SubPrivate Sub qxgl_Click()Form11.Sho5.Sho9.Sho10.Shoe = “Cd1.Shoe)End SubPrivate Sub tcxt_Click()End
34、End SubPrivate Sub Timer1_Timer()sb1.Panels(5).Text = “日期:” Date “ 时间:” Time()End SubPrivate Sub tkfa_Click()MsgBox “此模块为选做模块,如果需要使用此模块的功能,请与作者联系”End SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.IndexCase 1Form1.Sho2.Sho3.Sho4.Sho5.Sho6.Sho7.Sho8.Sho9.Sho10.Sho11.Sho8.ShowEnd Sub