本科课程报告--数据库--2010电气(含有vb源代码).doc_第1页
本科课程报告--数据库--2010电气(含有vb源代码).doc_第2页
本科课程报告--数据库--2010电气(含有vb源代码).doc_第3页
本科课程报告--数据库--2010电气(含有vb源代码).doc_第4页
本科课程报告--数据库--2010电气(含有vb源代码).doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

本科课程报告工资管理系统刘付渝杰201030530110教师 毕敏娜报告提交日期2013年5月 23 日目 录1 工资管理系统概述 12 需求分析 23 概念模型 34 数据模型 45 基于VB平台的设计 75.1 “登录模块”详细设计 75.2 “主窗体”模块详细设计 105.3 各项子模块详细设计 13 6 总结 44参考文献 451 工资管理系统概述 1.1 数据库管理系统数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。Microsoft SQL Server就是一种关系型数据库管理系统。关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,每个关系实际上是一张二维表格。关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。SQL语言是关系型数据库的标准化语言,已得到了广泛的应用。1.2 企业工资管理系统企业工资管理是一项琐碎、复杂而又十分细致的工作,一般不允许发生差错。最初的工资统计和发放都是使用人工方式处理,工作量大的时候,出现错误的机率也随之升高,不仅花费财务人员大量的时间,而且往往由于抄写不慎,或者由于计算的疏忽,出现工资发放错误的现象。同时工资的发放具有较强的时间限制,必须严格按照单位规定的时间完成计算和发放工作。正是企业工资管理的这种重复性、规律性、时间性,使得企业工资管理计算机化成为可能。企业工资管理系统就是使用电脑代替大量的人工统计和计算,完成众多企业工资信息的处理,同时使用电脑还可以安全地、完整地保存大量的企业工资记录。2 需求分析需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。抽象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需求。所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能什么事情,完成什么样的功能,达到什么性能。通常需求分为两种类型:一种是功能性需求,一种是非功能性需求,这一点也需要有一种清楚的认识。功能性需求是指需要计算机系统解决的问题,也就是对数据的处理要求,这是一类最主要的需求。非功能性需求是指实际使用环境所要求的需求,往往是一些限制要求,例如:性能要求,可靠性要求,安全保密要求,等等。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。早期工资管理多采取纸质材料和具有较强的时间限制。基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。企业工资管理系统是典型的信息管理系统(MIS),前台程序开发工具采用微软的VB6,后台数据库采用Microsoft SQL Server数据库。VB6是一种面向对象的开发工具,具有组件丰富、语言简单、功能强大的优点。 Microsoft SQL Server数据库具有与VB6无缝连接、操作简单、易于使用的优点。运行结果证明,本企业工资管理系统极大提高了工作效率,节省了人力和物力,能满足企业财务管理、员工工资发放的需要。3 概念模型根据系统的实现目标,系统功能模块图如图3.1所示:工资管理系统系统管理部分企业人员信息管理企业工资信息管理修改密码录入人员信息查询人员信息修改人员信息工资修改工资查询退出系统工资删除添加管理员工资录入图3.1 系统功能模块在这次系统开发中我主要完成的部分是工资管理和设置方面。开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,实现企业工资信息管理的系统化、规范化和自动化。能够和认识管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。系统最终实现的主要功能如下:企业人员信息管理部分:包括设置员工的基本工资和其他项目的金额,如奖金等。并且负责设置员工工资的计算公式。工资信息设置修改人员信息查询人员信息录入人员信息图3.2 人员信息管理模块企业工资信息管理部分:包括统计出勤、计算工资、查询工资和导出工资表。工资信息管理工资删除工资查询工资录入工资修改图3.3 工资信息管理模块系统部分:包括添加用户和修改密码。系统管理退出系统修改密码添加管理员图3.4 系统模块4 数据模型数据库是信息管理系统的后台,存储着所有的信息,在信息管理系统中有着很重要的地位。数据库设计的好与坏,直接影响到这个系统的运行效率。良好的数据库设计,可以提高数据信息的存储效率,确保数据信息的完整性和一致性。针对企业工资信息管理系统的需求,通过对员工工资计算过程的内容分析,为本系统设计如下的数据项和数据结构:用户基本信息:包括序号,用户名称,密码。密码用户基本信息序号用户名称图4.1 基本工资实体E-r图人员基本信息:包括序号,姓名,职务等。人员基本信息序号姓名职务图4.2 其他项目实体E-R图工资基本信息:包括序号,姓名,月份,工资,奖金和补助等。年份补助奖金工资基本信息序号姓名月份工资图4.3计算公式实体E-R图启动Microsoft SQL Server,创建新的数据库,命名为工资管理系统,数据库中表的设置如下图所示。系统管理表如图4.4所示图4.4 工资信息表如图4.5所示图4.5人员信息表如图4.6所示 图4.65 基于VB平台的设计5.1 “登录模块”详细设计1、实现目标:登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是管理员还是普通用户,进入后将面对的是主界面,从而进行相关的操作。登录的界面主要由用户名和密码的信息,确定和取消的按钮组成。通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。 2、界面:图5.1 用户登陆界面登陆界面程序流程图如下:输入用户名密码开始用户名密码是否正确进入系统密码错误是否图5.2 登陆程序流程图3、程序说明:Option ExplicitDim cnt As Integer 记录确定次数Private Sub Command1_Click()Dim sql As StringDim rs_login As New ADODB.RecordsetIf Trim(txtuser.Text) = Then 判断输入的用户名是否为空 MsgBox 没有这个用户, vbOKOnly + vbExclamation, txtuser.SetFocusElse sql = select * from 系统管理 where 用户名= & txtuser.Text & rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox 没有这个用户, vbOKOnly + vbExclamation, txtuser.SetFocus Else 检验密码是否正确 If Trim(rs_login.Fields(1) = Trim(txtpwd.Text) Then userID = txtuser.Text rs_login.Close Unload Me Form1.Show Else MsgBox 密码不正确, vbOKOnly + vbExclamation, txtpwd.SetFocus End If End IfEnd Ifcnt = cnt + 1If cnt = 3 Then Unload MeEnd IfExit SubEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim connectionstring As Stringconnectionstring = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=工资管理系统;Data Source=SDWM-20130406JIconnectionstring = provider=Microsoft.Jet.oledb.4.0; &_ data source=book.mdbconn.Open connectionstringcnt = 0End Sub52 “主窗体”模块详细设计1实现目标:在这个项目中,选择使用多文档界面。使用这个窗体的好处是可以使程序更加有条理。对于一个多任务的应用程序,使用多文档窗体还可以减少占用的系统资源。2、界面及目标实现过程:主窗体设计的界面是用菜单编辑器做的,主要由系统管理、工资管理、人员管理这三个大模块组成。主窗体是进行相关操作的主界面。在这几个里,管理员有所有的权利进行各种操作。图5.3 工资管理系统界面3、程序说明:Private Sub add_admin_Click()frmadduser.ShowEnd SubPrivate Sub rylr_Click()frmrylr.ShowEnd SubPrivate Sub Form_Load()End SubPrivate Sub gyrj_Click()frmAbout.ShowEnd SubPrivate Sub change_pwd_Click()frmchangepwd.ShowEnd SubPrivate Sub del_book_info_Click()frmmodifybookinfo.ShowEnd SubPrivate Sub gzlr_Click()frmgzlr.ShowEnd SubPrivate Sub gzcx_Click()frmgzcx.ShowEnd SubPrivate Sub gzxg_Click()frmgzxg.ShowEnd SubPrivate Sub exit_sys_Click()EndEnd SubPrivate Sub rycx_Click()frmrycx.ShowEnd Sub5.各项子模块详细设计5.3.1 “工资录入”窗体设计1、实现目标:选择“工资管理”“工资录入”菜单录入员工的基本工资信息。2、界面图5.4 设置基本工资界面3、程序说明:Option ExplicitPrivate Sub Combo1_Change()End SubPrivate Sub Command1_Click()Dim rs_addbook As New ADODB.RecordsetDim rs_addbook1 As New ADODB.RecordsetDim sql As StringIf Trim(Text7.Text) = Then MsgBox 请输入月份,序号,姓名,工资,奖金,补助,年份!, vbOKOnly + vbExclamation, Text7.SetFocus Exit SubEnd IfIf Trim(Text1.Text) = Then MsgBox 请输入月份,序号,姓名,工资,奖金,补助,年份!, vbOKOnly + vbExclamation, Text1.SetFocus Exit SubEnd IfIf Trim(Text2.Text) = Then MsgBox 请输入月份,序号,姓名,工资,奖金,补助,年份!, vbOKOnly + vbExclamation, Text2.SetFocus Exit Sub End IfIf Trim(Text3.Text) = Then MsgBox 请输入月份,序号,姓名,工资,奖金,补助,年份!, vbOKOnly + vbExclamation, Text3.SetFocus Exit Sub End IfIf Trim(Text4.Text) = Then MsgBox 请输入月份,序号,姓名,工资,奖金,补助,年份!, vbOKOnly + vbExclamation, Text4.SetFocus Exit Sub End IfIf Trim(Text5.Text) = Then MsgBox 请输入月份,序号,姓名,工资,奖金,补助,年份!, vbOKOnly + vbExclamation, Text5.SetFocus Exit Sub End If If Trim(Text6.Text) = Then MsgBox 请输入月份,年份,序号,姓名,工资,奖金,补助,年份!, vbOKOnly + vbExclamation, Text6.SetFocus Exit Sub End If sql = select * from 人员信息 where 序号= & Text1.Text & and 人员姓名= & Text2.Text & rs_addbook.Open sql, conn, adOpenKeyset, adLockPessimisticIf Not rs_addbook.EOF Thensql = select * from 工资信息 rs_addbook1.Open sql, conn, adOpenKeyset, adLockPessimistic rs_addbook1.AddNew rs_addbook1.Fields(0) = Trim(Text1.Text) rs_addbook1.Fields(1) = Trim(Text2.Text) rs_addbook1.Fields(2) = Trim(Text7.Text) rs_addbook1.Fields(3) = Trim(Text3.Text) rs_addbook1.Fields(4) = Trim(Text4.Text) rs_addbook1.Fields(5) = Trim(Text5.Text) rs_addbook1.Fields(6) = Trim(Text6.Text) rs_addbook1.Update MsgBox 工资录入成功!, vbOKOnly, rs_addbook1.Close Else MsgBox 职员不存在!, vbOKOnly + vbExclamation, Text1.SetFocus Text1.Text = rs_addbook.Close Exit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()End Sub3.3.2 “工资查询及修改”窗体设计1、实现目标:选择“工资管理”“工资查询及修改”菜单,可查询工资信息,修改工资信息和删除工资信息2、界面图5.5工资查询,修改及删除3、程序说明:Option ExplicitDim panduan As StringDim rs_addbook1 As New ADODB.RecordsetDim rs_book As New ADODB.RecordsetDim rs_addbook As New ADODB.RecordsetDim sql As StringPrivate Sub Command1_Click()Dim rs_findbook As New ADODB.RecordsetDim sql As StringIf Check1.Value = vbChecked Then sql = 序号 = & Trim(Text1.Text & ) & End IfIf Check2.Value = vbChecked Then If Trim(sql) = Then sql = 姓名= & Trim(Text5.Text) & Else sql = sql & and 姓名= & Trim(Text5.Text) & End IfEnd IfIf Check3.Value = vbChecked Then If Trim(sql) = Then sql = 月份= & Trim(Text2.Text & ) & Else sql = sql & and 月份= & Trim(Text2.Text & ) & End IfEnd IfIf Check4.Value = vbChecked Then sql = 工资 = & Trim(Text3.Text & ) & End IfIf Check5.Value = vbChecked Then If Trim(sql) = Then sql = 年份= & Trim(Text4.Text & ) & Else sql = sql & and 年份= & Trim(Text4.Text & ) & End IfEnd IfIf Trim(sql) = Then MsgBox 请选择查询方式!, vbOKOnly + vbExclamation Exit SubEnd Ifsql = select * from 工资信息 where & sqlrs_findbook.CursorLocation = adUseClientrs_findbook.Open sql, conn, adOpenKeyset, adLockPessimisticDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_findbookbook_num = DataGrid1.Columns(0).CellValue(DataGrid1.Bookmark)panduan = DataGrid1.Columns(7).CellValue(DataGrid1.Bookmark)rs_findbook.CloseEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub cmdcancel_Click() rs_book.CancelUpdate DataGrid1.Refresh DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = False cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = FalseEnd SubPrivate Sub cmddel_Click()Dim answer As StringOn Error GoTo delerroranswer = MsgBox(确定要删除吗?, vbYesNo, )If answer = vbYes Then DataGrid1.AllowDelete = True rs_book.Delete rs_book.Update DataGrid1.Refresh MsgBox 成功删除!, vbOKOnly + vbExclamation, DataGrid1.AllowDelete = FalseElse Exit SubEnd Ifdelerror:If Err.Number 0 Then MsgBox Err.DescriptionEnd IfEnd SubPrivate Sub cmdmodify_Click()Dim answer As StringOn Error GoTo cmdmodifycmddel.Enabled = Falsecmdmodify.Enabled = Falsecmdupdate.Enabled = Truecmdcancel.Enabled = TrueDataGrid1.AllowUpdate = Truecmdmodify:If Err.Number 0 Then MsgBox Err.DescriptionEnd IfEnd SubPrivate Sub cmdupdate_Click()Dim rs_addbook1 As New ADODB.RecordsetDim rs_addbook As New ADODB.RecordsetDim sql As StringIf Not IsNull(DataGrid1.Bookmark) Then rs_book.UpdateEnd Ifsql = select * from 工资信息 where 序号= & Text1.Text & and 姓名= & Text2.Text & rs_addbook.Open sql, conn, adOpenKeyset, adLockPessimisticIf Not rs_addbook.EOF Thensql = select * from 工资信息 where 序号= & Text1.Text & and 姓名= & Text2.Text & rs_addbook.Open sql, conn, adOpenKeyset, adLockPessimisticrs_addbook.Update cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False DataGrid1.AllowUpdate = False MsgBox 修改成功!, vbOKOnly + vbExclamation, Else cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False DataGrid1.AllowUpdate = False MsgBox 修改成功!, vbOKOnly + vbExclamation, rs_addbook.Close Exit Sub End If End SubPrivate Sub Form_Load()Dim sql As StringOn Error GoTo loaderrorsql = select * from 工资信息rs_book.CursorLocation = adUseClientrs_book.Open sql, conn, adOpenKeyset, adLockPessimistic 打开数据库cmdupdate.Enabled = False设定datagrid控件属性DataGrid1.AllowAddNew = False 不可增加DataGrid1.AllowDelete = False 不可删除DataGrid1.AllowUpdate = FalseIf userpow = guest Then 权限相关 Frame2.Enabled = FalseEnd IfSet DataGrid1.DataSource = rs_bookcmdcancel.Enabled = FalseExit Subloaderror: MsgBox Err.DescriptionEnd SubPrivate Sub Form_Unload(Cancel As Integer)Set DataGrid1.DataSource = Nothingsql = select * from 工资信息 where 序号= & Text1.Text & and 姓名= & Text2.Text & rs_addbook.Open sql, conn, adOpenKeyset, adLockPessimistic rs_addbook.CloseEnd SubPrivate Sub Command3_Click()If Trim(book_num) = Then MsgBox 请选择要修改的记录!, vbOKOnly + vbExclamation Exit SubEnd Iffrmgzxg.ShowEnd SubPrivate Sub Command4_Click()End SubPrivate Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)book_num = DataGrid1.Columns(0).CellText(DataGrid1.Bookmark)panduan = DataGrid1.Columns(1).CellText(DataGrid1.Bookmark)End SubPrivate Sub VScroll1_Change()End Sub5.3.3 “关于软件”窗体设计1、实现目标:选择“工资管理”“关于软件”菜单,在这个窗体中显示系统信息。2、界面及主要控件列表图5.6 计算公式界面3、程序说明:Option Explicit 注册表关键字安全选项.Const READ_CONTROL = &H20000Const KEY_QUERY_VALUE = &H1Const KEY_SET_VALUE = &H2Const KEY_CREATE_SUB_KEY = &H4Const KEY_ENUMERATE_SUB_KEYS = &H8Const KEY_NOTIFY = &H10Const KEY_CREATE_LINK = &H20Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _ KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _ KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL 注册表关键字 ROOT 类型.Const HKEY_LOCAL_MACHINE = &H80000002Const ERROR_SUCCESS = 0Const REG_SZ = 1 独立的空的终结字符串Const REG_DWORD = 4 32位数字Const gREGKEYSYSINFOLOC = SOFTWAREMicrosoftShared Tools LocationConst gREGVALSYSINFOLOC = MSINFOConst gREGKEYSYSINFO = SOFTWAREMicrosoftShared ToolsMSINFOConst gREGVALSYSINFO = PATHPrivate Declare Function RegOpenKeyEx Lib advapi32 Alias RegOpenKeyExA (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As LongPrivate Declare Function RegQueryValueEx Lib advapi32 Alias RegQueryValueExA (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As LongPrivate Declare Function RegCloseKey Lib advapi32 (ByVal hKey As Long) As LongPrivate Sub cmdSysInfo_Click() Call StartSysInfoEnd SubPrivate Sub cmdOK_Click() Unload MeEnd SubPrivate Sub Form_Load() Me.Caption = 关于 & App.Title lblVersion.Caption = 版本 & App.Major & . & App.Minor & . & App.Revision lblTitle.Caption = App.TitleEnd SubPublic Sub StartSysInfo() On Error GoTo SysInfoErr Dim rc As Long Dim SysInfoPath As String 试图从注册表中获得系统信息程序的路径及名称. If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then 试图仅从注册表中获得系统信息程序的路径. ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then 已知32位文件版本的有效位置 If (Dir(SysInfoPath & MSINFO32.EXE) ) Then SysInfoPath = SysInfoPath & MSINFO32.EXE 错误 - 文件不能被找到. Else GoTo SysInfoErr End If 错误 - 注册表相应条目不能被找到. Else GoTo SysInfoErr End If Call Shell(SysInfoPath, vbNormalFocus) Exit SubSysInfoErr: MsgBox 此时系统信息不可用, vbOKOnlyEnd SubPublic Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean Dim i As Long 循环计数器 Dim rc As Long 返回代码 Dim hKey As Long 打开的注册表关键字句柄 Dim hDepth As Long Dim KeyValType As Long 注册表关键字数据类型 Dim tmpVal As String 注册表关键字值的临时存储器 Dim KeyValSize As Long 注册表关键自变量的尺寸 - 打开 HKEY_LOCAL_MACHINE. 下的 RegKey - rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) 打开注册表关键字 If (rc ERROR_SUCCESS) Then GoTo GetKeyError 处理错误. tmpVal = String$(1024, 0) 分配变量空间 KeyValSize = 1024 标记变量尺寸 - 检索注册表关键字的值. - rc = RegQueryValueEx(hKey, SubKeyRef, 0, _ KeyValType, tmpVal, KeyValSize) 获得/创建关键字值 If (rc ERROR_SUCCESS) Then GoTo GetKeyError 处理错误 If (Asc(Mid(tmpVal, KeyValSize, 1) = 0) Then Win95 外接程序空终结字符串. tmpVa

温馨提示

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

最新文档

评论

0/150

提交评论