绪论
1.1 实现内容
企业的工资管理是公司管理的一个重要内容。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分。但考虑到学生的开发时间,本次设计主要阐述员工工资管理系统主要是以企业员工工资情况为对象而开发的。涉及系统比较小,有利于我们单独编写。其系统的设计主要包括数据库的设计、维护和应用界面的设计与后台数据库的连接。经分析采用Microsoft 公司开发的Visual Basic.NET为开发工具,Microsoft SQL sever 2005为后台数据库。Visual Basic (简称VB)是由Microsoft公司推出的在Windows操作平台下最迅速、最简捷的应用开发工具之一。它引入了面向对象的程序设计思想和“控件”的概念,使得大量已经编好的Visual Basic 程序可以直接拿来使用。同时VB具有简单、易学的特点,是大多数初学者最理想的编程语言,也是专业人员得心应手的开发工具
1.2开发环境
本软件使用Microsoft SQL Server2005Microsoft Visual Studio 2005进行编写。数据库技术的产生与发展源于对于数据的组织和管理。数据库技术是数据管理的技术,它随着数据管理任务的需要而产生于20世纪60年代中期。这是一门综合性技术,涉及操作系统,数据结构,算法设计和程序设计等知识。数据库技术的基本思想是对数据实行集中,统一,独立的管理,用户可以最大限度的共享数据资源。
数据库系统实际上是一个应用系统,它是在计算机硬,软件系统支持下,由用户,数据库管理系统,存储在存储设备上的数据和数据库应用程序构成的数据处理系统。数据库系统是由数据,数据库管理系统,应用程序,用户组成。
数据库的特点:1.实现数据共享 2.实现数据独立3.减少了数据冗余度 4.避免了数据不一致性5.加强了对数据的保护。
    Microsoft Visual Studio 2005软件可以使界面干净简洁,让使用者一目了然,代码简单易懂,既继承了Visual Basic 6.0语言易学易用的特点,同时又引入了基于.NET框架的程序设计方法和面向对象的程序设计,能快捷、方便地开发图形设计、图像处理和数据库技术等应用程序。
此次工资管理系统结合VB.NETSQL Server 2005数据库编写而成的,有效地解决了早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,此次工资管理系统可以大大减少企业在维护上面的费用。
2 需求分析
2.1开发背景
随着我国市场经济的快速发展和信息化水平的不断提高,如何利用先进的管理手段,提高企业工资管理的水平,是当今社会所面临的一个课题。提高企业的管理水平,必须全方位地提高企业的管理意识。只有高标准、高质量的管理才能满足企业的发展和需求。面对信息时代的挑战,利用高科技手段来提高工资管理无疑是一条行之有效的途径。在某种意义上,信息与科技在企业管理与现代化建设中显现出越来越重要的地位。工资管理方面的信息化与科学化,已成为现代化生活水平步入高台阶的重要标志。工资管理既是企业劳动人事管理的重要方面,同时也是企业财务管理的重要方面,因此它是一项琐碎,复杂而又要求细致的工作。
不同的企业有着不同的人事制度,财务制度,也就决定了不同的企业具有不同的工资管理制度,本篇论文将按照一般企业所采用的工资计算公式:根据员工的职务工资来确定基本工资,根据加班情况发放津贴,根据各项报销费用同时扣除其它费用来计算一个员工的当月工资。
2.2开发目的
工资管理广泛应用于各行各业,它是公司、企业信息化工程中必不可少的一个环节,所以学习
制作通用的工资管理系统很有必要。本文根据实际需求,制作了一个简单、易用而且适用面比较广的工资管理系统,其界面友好、功能丰富而不繁杂,并且程序的设计都基于面向对象的思想,且条理清晰,方便了各企事业单位或机关部门根据自己的实际修改、增强系统功能。
利用计算机实现自动的理势在必行。对于工资管理来说,利用计算机支持,高效率完成工资数据处理,数据查询,打印管理的日常事务,是适应现代管理制度要求、推动劳动型管理走向科学化、规范化管理的必要条件;而工资管理是一项琐碎、复杂而又十分细致的工作,员工基本工资的管理,数据统计,查询等管理,一般不允许出错,如果实行手工操作,须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资工作的管理,不仅能够保证各项信息准确无误、快速输出,同时计算机具有手工管理所无法比拟的优点.例如:检索迅速、查方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工资管理的效率,也是科学化、正规化管理,与世界接轨。
2.3数据需求
需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。抽象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需求。所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能什么事情,完成什么样的功能,达到什么性能。此次课程设计的使用者是企业的员工,主要是针对系统的管理员。其进行的操作就是对公司员工、部门等一些方面改动的改善。由此对员工需求分析如下。
2.3工资表
名称
数据类型
大小
默认值
主键
员工编号
char
8
不可以
姓名
char
8
不可以
数据库管理员工资性别
char
2
可以
“男”
名称
数据类型
大小
默认值
主键
部门编号
char
4
不可以
部门名称
char
20
可以
部门负责人
char
8
可以
部门人数
int
4
可以
名称
数据类型
大小
默认值
主键
工资级别
char
2
可以
工资金额
numeric
5(8,2)
不可以
岗位工资
名称
数据类型
大小
默认值
主键
工资级别
char
2
可以
工资金额
numeric
5(8,2)
不可以
工资信息
名称
数据类型
大小
默认值
主键、外键
员工编号
char
8
不可以
实发工资
numeric
5(8,2)
可以
2.4功能需求
    企业工资管理系统的主要任务是用计算机对各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能:
(1) 对单位人员的变动进行处理。一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。
(2) 对职工的工资进行计算、修改。可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算基本工资、岗位工资、水电费及实发金额等。
(3) 查询统计功能。要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某个部门所有的员工的工资信息。
4)对用户管理功能。一个系统的应用有管理员和普通用户,他们对系统的权限受到限制。
3 系统设计
3.1总体设计
3.1.1用户登录模块
登录模块是所有用户进入工资管理系统的唯一途径,除了确定用户类型以外,还要注意用户登录的密码是否与后台数据库的一致,如果不一致则会弹出图4.2所示的提示信息。用户在登录模块出现的所有情况我都予以考虑了。在用户登录时根据判断用户的权限,在模块中有“If power <> "管理员" Then  frm_main.set.Enabled = False  frm_main.defend = False”的代码,此项决定了主界面的操作模块。
在调试所有登录情况都成功后,我想到了一种恶意登录此系统的情况,因此我设置了“try_times”来限制用户的强制登录
3.1.2用户管理设计
在添加用户模块中,我仿造了一般填写信息时的方法设计了“确认密码”操作,如果在操作错误时候会弹出如图6.1所示的提示信息,点击确定后,鼠标自动停在密码文本框中,用户不需要再次输入用户名,在此说明一下,在我做的系统中几乎所有的错误转移都有如上的提示和获得焦点的操作。
删除用户模块中,在用户点击了确定按钮以后,会有如图4.8所示的对话框,为用户删除考虑了情况。
3.1.3信息管理设计
这个部门主要由部门信息和员工信息组成,发放工资是对员工工资的管理,部门信息的设置和员工信息设置基本相同。
员工信息中引用了“DTPicker”控件,默认的日期为登录的日期,用户可以点击直接更改日期,增强了程序的完整性。还有值得一提的是在员工信息录入的时候,由于后台数据库“性别”设置默认为“男”,因此我设置了默认为“男”的操作,具体看代码中叙述。如果用户没有完成信息的录入却点击了“确定”按钮后,会出现如图6.2的对话框。如果用户在使用添加按钮时,输入了一个已经存在的员工编号,根据主键的不可重复性,员工信息不能插入后台数据库,则会弹出如图6.3所示的对话框。
 
              图6.1 提示信息              6.3 添加存在情况
发放工资主要是对企业已有员工的工资设置,提供了添加、修改和删除操作。添加操作和修改操作都在一个对话框中进行,根据数据库数据参照完整性,其中基本工资和岗位工资必须是已经存在的级别,其文本框被设置为“只读”属性,用户不可自动输入信息。
3.1.4查询设计
查询工资时主要考虑 用户的权限问题,主要在登录模块中用全局变量记录了用户的权限,在用户点击确定以后系统会统计权限,分配给用户正确的查询工资的方法。
3.2系统总体设计
此次工资管理系统共分为若干模块,我以图片进行展示。这是系统总体设计
系统总体设计图
开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,实现企业工资信息管理的系统化、规范化和自动化。实现企业高效、科学、现代化的员工管理。系统最终实现的主要功能如下。
企业工资信息设置部分:包括设置员工的基本工资和其他项目的金额,如水电费。
企业信息管理部分:包括员工信息、部门信息和发放工资(工资信息)。
企业员工查询部分:包括按员工查询和按部门查询。
系统部分:包括添加用户、修改用户信息。
    用户在使用一个系统时,必须先登录操作界面,在操作完成后然后再退出,其操作如图。
                        注销
系统流程图
操作员进入管理系统的身份不同,所获得的权限也不同,普通用户只可以查询自己的工资情况,而且部门对自己的所有信息进行更改。
用户操作模块
说明:管理员可以对所有模块进行操作,普通用户只可以进行查询员工工资的权限。
             
用户的功能                            设置功能
        企业信息操作功能                                  查询工资的方式
说明:在各个子模块操作时用户同时在实现更改的时候在对话框上的网格看到后台数据库最新的动态。
各个模块简介:
登录模块:主要完成用户的登录信息核对并进入主界面。
用户管理模块:主要完成对用户信息的添加、修改和删除功能。
信息设置模块:主要对企业内部员工和部门的管理。
工资查询模块:主要完成对员工工资的查询。
4 详细设计
这是此次工资管理系统的具体流程图。
此图也包括了系统的各个模块。
5系统的具体实现
5.1登录界面
通过“登录按钮”进行身份识别,以及下一步的操作
代码具体如下:
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            If TextBox1.Text = "" Then
                MsgBox("输入不能为空!", MsgBoxStyle.Information)
            Else
                Dim connectionstring As String = "Data Source=B1UP2DU3IM1I2WX\MENGMINGYANG;Initial Catalog=GONGZIGUANLI;Integrated Security=True"
                Dim querystring As String = "Select * From denglu where 用户='" & TextBox1.Text & "' and 密码='" & TextBox2.Text & "'"
                Dim conn As New SqlClient.SqlConnection(connectionstring)
                conn.Open()
                Dim cmd As New SqlClient.SqlCommand(querystring, conn)
                Dim reader1 As SqlClient.SqlDataReader
                reader1 = cmd.ExecuteReader()
                If reader1.Read() = False Then
                    conn.Close()
                    MsgBox("登录失败", MsgBoxStyle.Critical, "登录失败")
                Else
                    conn.Close()
                    Form2.Show()
                    Me.Hide()
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End
    End Sub
End Class
在该界面内,用户如果是本公司的员工,那么关于该用户的登录信息和工资信息
已经存在数据表中,所以肯定有登陆的用户名和密码。这个时候只要在用户和密码后的文本
输入个人的用户名和密码便可登陆进入Form2界面,进行工资的增、删、改、查。继续使用Label控件,Text Box控件、Button按钮创建如下界面:
5.2主界面
代码具体如下:
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form1.Show()
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form3.Show()
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Then
            MsgBox("错误,请检查", MsgBoxStyle.Information)
        Else
            Try
                Dim objconn As New SqlClient.SqlConnection()
                Dim objcomm As New SqlClient.SqlCommand()
                Dim objda As New SqlClient.SqlDataAdapter()
                Dim objds As New DataSet()
                Dim tx1 As String = TextBox1.Text
                Dim tx2 As String = TextBox2.Text
                Dim tx3 As String = TextBox3.Text
                Dim tx4 As String = TextBox4.Text
                Dim tx5 As String = TextBox5.Text
                objconn.ConnectionString = "Data Source=B1UP2DU3IM1I2WX\MENGMINGYANG;Initial Catalog=GONGZIGUANLI;Integrated Security=True "
                objconn.Open()
                objcomm.CommandText = "delete  gongzi where 员工号='" & TextBox1.Text & "'"
                objcomm.Connection = objconn
                objda.SelectCommand = objcomm
                objcomm.ExecuteNonQuery()
                objconn.Close()
                MsgBox("删除成功", MsgBoxStyle.Information)
                TextBox1.Text = ""
                TextBox2.Text = ""
                TextBox3.Text = ""
                TextBox4.Text = ""
                TextBox5.Text = ""
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If
    End Sub
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Then
            MsgBox("错误,请检查", MsgBoxStyle.Information)
        Else
            Try
                Dim objconn As New SqlClient.SqlConnection()
                Dim objcomm As New SqlClient.SqlCommand()
                Dim objda As New SqlClient.SqlDataAdapter()
                Dim objds As New DataSet()
                objconn.ConnectionString = "Data Source=B1UP2DU3IM1I2WX\MENGMINGYANG;Initial Catalog=GONGZIGUANLI;Integrated Security=True "
                objconn.Open()
                objcomm.CommandText = "update gongzi set 员工号='" & TextBox1.Text & "'," & "姓名='" & TextBox2.Text & "'," & "基本工资='" & TextBox3.Text & "',奖金='" & TextBox4.Text & "',津贴='" & TextBox5.Text & "'"
                objcomm.Connection = objconn
                objda.SelectCommand = objcomm
                objcomm.ExecuteNonQuery()
                objconn.Close()
                MsgBox("修改成功")
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Information)
            End Try
        End If
    End Sub
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Then
            MsgBox("错误,请检查", MsgBoxStyle.Information)
        Else
            Try
                Dim objconn As New SqlClient.SqlConnection()
                Dim objcomm As New SqlClient.SqlCommand()
                Dim objda As New SqlClient.SqlDataAdapter()
                Dim objds As New DataSet()
                Dim tx1 As String = TextBox1.Text
                Dim tx2 As String = TextBox2.Text
                Dim tx3 As String = TextBox3.Text
                Dim tx4 As String = TextBox4.Text
                Dim tx5 As String = TextBox5.Text
                objconn.ConnectionString = "Data Source=B1UP2DU3IM1I2WX\MENGMINGYANG;Initial Catalog=GONGZIGUANLI;Integrated Security=True"
                objconn.Open()
                objcomm.CommandText = "insert into gongzi values('" & tx1 & "'" & "," & "'" & tx2 & "','" & tx3 & "','" & tx4 & "','" & tx5 & "')"
                objcomm.Connection = objconn
                objda.SelectCommand = objcomm
                objcomm.ExecuteNonQuery()
                objconn.Close()
                MsgBox("添加成功", MsgBoxStyle.Information)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If
    End Sub
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Try
            Dim connectionstring As String = "Data Source=B1UP2DU3IM1I2WX\MENGMINGYANG;Initial Catalog=GONGZIGUANLI;Integrated Security=True"
            Dim querystring As String = "Select * From gongzi where 员工号=" + "'" & TextBox1.Text + "'"
            Dim conn As New SqlClient.SqlConnection(connectionstring)
            If TextBox1.Text = "" Then
                MsgBox("输入不能为空!", MsgBoxStyle.Information)
            Else
                conn.Open()
                Dim cmd1 As New SqlClient.SqlCommand(querystring, conn)
                Dim reader1 As SqlClient.SqlDataReader
                reader1 = cmd1.ExecuteReader()
                Dim num1 As Integer = 0
                While (reader1.Read())
                    TextBox2.Text = reader1.GetValue(0)
                    TextBox3.Text = reader1.GetValue(1)
                    TextBox4.Text = reader1.GetValue(2)
                    TextBox5.Text = reader1.GetValue(3)
                   
                    num1 = num1 + 1
                End While
                If num1 = 0 Then
                    MsgBox("没有符合要求的数据,请重新输入查询条件!", MsgBoxStyle.Information)
                    TextBox1.Text = ""
                    TextBox2.Text = ""
                    TextBox3.Text = ""
                    TextBox4.Text = ""
                    TextBox5.Text = ""
                 
                    TextBox1.Text = ""
                End If
                reader1.Close()
                conn.Close()
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class
5.3注册界面
Public Class Form3
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Then
            MsgBox("错误,请检查", MsgBoxStyle.Information)
        Else
           
Try
              Dim objconn As New SqlClient.SqlConnection() '定义新的数据连接
                Dim objcomm As New SqlClient.SqlCommand()  '定义新的存储过程
                Dim objda As New SqlClient.SqlDataAdapter() '定义新的数据命令和数据连接
             
Dim objds As New DataSet() '表示数据在内存中的缓存
                Dim tx1 As String = TextBox1.Text
                Dim tx2 As String = TextBox2.Text
             
                objconn.ConnectionString = "Data Source=B1UP2DU3IM1I2WX\MENGMINGYANG;Initial Catalog=GONGZIGUANLI;Integrated Security=True "
                objconn.Open()
              objcomm.CommandText = "insert into DengLu values('" & tx1 & "'" & "," & "'" & tx2 & "')"
                objcomm.Connection = objconn
                objda.SelectCommand = objcomm
                objcomm.ExecuteNonQuery()
                objconn.Close()
                MsgBox("注册成功", MsgBoxStyle.Information)
            Catch ex As Exception
                MsgBox(ex.Message & ",注册失败", MsgBoxStyle.Critical)
            End Try
        End If
    End Sub
 
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form1.Show()
    End Sub
End Class
6系统总结
6.1结束语
首先我对此次的实训老师刘昕老师认真的指导表示由衷的感谢,并表示由衷的敬意。刘昕老师上课的时候来的比我们班的学生还要早,在百忙之中又要忙着联想班的工作,一边又要忙着我们本次实训,有时同学拿着自己稿子,刘昕老师更加细致入微帮着改排版的问题,课前还为我们开发工具和相关资料,这种敬业精神堪称老师的楷模,作为软件一班的班长我代表我们所有同学像您说声“老师,您辛苦了”。
此次课程设计,期间包括自学VB.NET 教程、课程代码设计和课程设计报告的过程。这个过程给我的感触有以下几点:
看似简单,其实不然以前没有过课程设计的经验,作为第一次课程设计课,我抱着试试看的态度去写,一开始看了只有这么几个模块是心里挺高兴的,但是当我写一个完整的操作时,很多意想不到的情况发生了。有时候会为了一个操作不能调试成功而整个晚上都不能去安心做其他的作业。
冷静沉着、兢兢业业编程是一个很繁琐的过程,要考虑到很多错误转移情况,在这期间会有很多以前不曾想过的问题出现,次数多了,不免会有觉得做不下去的感觉。但是我从中发现,只要一步一步调试、静下心来看待问题,再复杂再微小的问题都会迎刃而解,当一个程序被调试出来时,那时的快乐相比与任何困难都值得的。
立足程序、回归书本写程序时觉得思路一片混乱,无意间出现的问题会不知道怎么解决。这时,需要回归书本,书本是前人总结的经验,几乎所有情况都会有解决方法。只有把书本“吃透”,在遇到问题是才会反应快。
6.2本系统的不足
在姚海军老师的《软件文档编写》上,由于我和周磊是一个小组,我们根据当今社会的发展趋势共同做出了一个《基于云计算的网上购物系统》,因此考虑到企业员工的发展趋势我们没有做到“安全”“可扩展性”“弹性数据库”等等问题,换一句话说就是我们没有做好时代对我们本系统的考验。我们要的不是“昙花一现”的系统,虽有短暂的光辉却没有永恒的意义,只能停留在历史的一个点上。
由于新兴的东西很多很多,我们的系统没有设计到安全管理模块,以及可扩展模块。我们会把云计算加入到我们这次“企业员工工资管理系统”如果时间会允许我们选择GOOGLE公司的big table作为此系统的数据库,这样可以提高运算速度,有利于维护数据的安全性。让云计算也运用在我们的系统之中,这样不仅仅能够解决系统的扩展的问题,更重要的是可以解决了资源的使用率的问题,环保且绿。

7参考文献
[1].张蓓编. ASP通用模块及典型系统开发,北京:人民邮电出版社  20061 
[2].张建东《VB.NET                        西安电子科技大学20076
[3]尉蓬博《数据库设计与应用》              西安电子科技大学20094
[4]张为民《云计算》                        科学出版社      20086

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。