公司员工工资管理系统课程设计(一)可行性分析1.1项目背景及意义:随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。
建设一个科学高效的信息管理系统是解决这一问题的必由之路。
企业部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。
工资管理作为企业部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的工资管理系统对员工工资等进行系统的管理,很难实现企业高效运转。
意义:(1)本系统提供了基本的人员信息管理,同时对员工的基本工资、浮动工资和工资发放进行系统管理,同时配以查询、修改、删除、添加功能,以便能真正适用于各类中小企业及事业单位。
经过自己认真的思考和同学的讨论使我对该类管理系统有了进一步的认识,同时也可以应用平时学习中所学到的东西。
1.2可行性研究报告及信息系统目标:员工工资管理系统的主要目的是利用计算机对员工的各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。
企业工资管理系统主要有以下几大功能:对单位人员的变动进行处理。
一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位部调动。
因此,设计系统是应考虑到这些情况。
对职工的工资进行计算、修改。
可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算基本工资、岗位工资、水电费及实发金额等。
查询统计功能。
要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某个部门所有的员工的工资信息。
(二)系统分析部分2.1系统功能模块图2.3系统详细设计说明①员工基本资料管理表[yuangong]的创建;②员工奖励管理表的创建;③员工惩罚管理表的创建;④工资发放查询表的创建各表资料如截图所示:2.4数据库概念结构设计数据库概念设计是整个数据库设计的关键。
根据用户需求设计数据库的概念,数据模型。
我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级模型。
然后再把概念模型转换为具体机器上DBMS支持的数据模型。
概念模型是对现实世界的抽象和概括。
它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。
由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。
概念模型易于变动,还很容易向各种数据模型转换。
概念模型的基本概念涉及的主要有7个,分别为实体、属性、码、域、实体型、实体集、联系。
E-R图是概念模型最常用的表示方法,在E-R图中:1)用长方形表示实体型,在框写上实体名。
2)用菱形表示实体间的联系,菱形框写上联系名,用无向边把菱形分别与有关实体相连,在无向边旁标上联系的类型。
若实体间的联系也具有属性,则把属性和菱形也用无向边连上。
员工实体——关系图(图1)部门实体——关系图(图2)工资实体——关系图(图3)部门——员工实体关系图(图4)2.5数据库逻辑结构设计根据上述概念模型设计得出的E—R图,我们可以得出系统中涉及的主要实体有3个,其结构如下:1、员工(职工号,、性别、年龄、单位和职业)2、部门(部门编号,部门名称)3、工资(职工号,日期,基本工资,奖励工资,福利补贴,住房公积金,失业保险)2.5.1 实体间的联系工资管理系统中实体之间有6个联系,其关系如下:1、具有1关系:员工和奖金的关系是1:N,N个职位相同的员工具有相同的奖金基数。
2、工薪关系:员工和工资单的关系是1:N,每个员工每个月都有一工资单。
3、属于关系:员工和部门的关系是N:1,一个部门可以有多个员工。
4、聘用关系:员工和职务的关系是N:1,一个职务可以聘用多个员工。
5、设置关系:部门和职务的关系是M:N,一个部门可以设置多个职务,相同的职务也可以设置在多个部门。
根据以上逻辑结构分析我们可以知道:一个部门有多个员工,每个员工都有工资,工资又由基本工资等组成,其关系模式为:表、视图汇总2.5.2 完整性约束:基本表[员工]基本表[科室]基本表[工资]2.6数据字典绘制数据流图以后,只是对数据处理和彼此之间的联系进行了说明,为了进一步明确数据的详细容和数据加工过程,应将数据流图中的各元素作出详细的定义和说明,以便于此后系统设计的进行。
数据字典描述的主要容有:数据项、数据流、数据存储、数据处理、外部实体。
数据流程图配以数据词典,就可以从图形和文字两个方面对系统的逻辑模型进行描述,从而形成一个完整的说明。
在系统分析中会产生大量的数据词典,以下将以图表形式分别列出系统中代表性的数据流、数据元素、数据存储和外部实体以及所有的加工处理。
2.7问题及解决方法问题及其解决方案:1、在概念结构设计中遇到了结构冲突,导致系统错误。
在经过根据应用的语义对实体联系的类型进行综合、调整后得以解决。
2、在逻辑结构设计中,由于没有理清概念结构设计中的各实体间的相互联系导致逻辑结构一度无法建立。
在经过老师的指点后,终于找到了问题的所在。
顺利的完成了逻辑结构设计。
3、查询嵌套的实现和计算工资这个环节也遇到了很大的困难,这一切都源自对操作环境的不熟悉,所以我们尽量使我们的应用程序简单化,重点放在基本功能的实现上,没有追求一些高难度的应用编写。
6.2系统中中可以改进的地方说明:功能不是很全面,可是适当添加一些功能使程序更加完善. 例如可添加员工参加工作的时间,工龄等使员工信息更加系统全面。
(三)系统详细设计说明3.1 创建数据库本次设计中的表一律是通过手工自己创建。
①员工基本资料管理表[yuangong]的创建;②员工奖励管理表的创建;③员工惩罚管理表的创建;④工资发放查询表的创建此时生成的界面如下图:3.2设计数据表关系3.3建立数据库窗体:使用窗体向导的方法依次添加“职员信息管理”窗体和“职员信息管理”子窗体此处添加子窗体代码为:Private Sub Form_Current()On Error GoTo Err_Form_CurrentForms![员工基本资料管理]![职员ID] = Me![职员ID] Forms![员工基本资料管理]![部门ID] = Me![部门ID] Forms![员工基本资料管理]![职务] = Me![职务] Forms![员工基本资料管理]![工资] = Me![工资] Forms![员工基本资料管理]![] = Me![]Forms![员工基本资料管理]![性别] = Me![性别] Forms![员工基本资料管理]![ID] = Me![ID]Forms![员工基本资料管理]![备注] = Me![备注]Exit_Form_Current:Exit SubErr_Form_Current:MsgBox Err.DescriptionResume Exit_Form_CurrentEnd Sub运行后界面为:窗体及子窗体调整后如下图所示:3.4实现新建职员功能,代码添加为:Private Sub 新建职员_Click()On Error GoTo Err_新建职员_Click'把窗体中所有控件都置空Me![职员ID] = NullMe![部门ID] = NullMe![职务] = NullMe![工资] = NullMe![] = NullMe![性别] = NullMe![ID] = NullMe![备注] = NullExit_新建职员_Click:Exit SubErr_新建职员_Click:MsgBox Err.DescriptionResume Exit_新建职员_ClickEnd Sub运行后界面如下图所示:3.5实现添加职员功能,添加代码为:Private Sub 添加职员_Click()On Error GoTo Err_添加职员_clickDim STemp As StringIf IsNull(Me![职员ID]) = True ThenMsgBox "请输入职员ID 它不能为空!", vbOKOnly, "输入职员ID" Me![职员ID].SetFocusElseIf IsNull(Me![部门ID]) = True ThenMsgBox "请输入部门ID 它不能为空!", vbOKOnly, "输入部门ID" Me![部门ID].SetFocusElseIf IsNull(Me![职务]) = True ThenMsgBox "请输入职务它不能为空!", vbOKOnly, "输入职务"Me![职务].SetFocusElseIf IsNull(Me![工资]) = True ThenMsgBox "请输入工资它不能为空!", vbOKOnly, "输入工资"Me![工资].SetFocusElseIf IsNull(Me![]) = True ThenMsgBox "请输入它不能为空!", vbOKOnly, "输入"Me![].SetFocusElseIf IsNull(Me![性别]) = True ThenMsgBox "请输入性别它不能为空!", vbOKOnly, "输入性别"Me![性别].SetFocusElseIf IsNull(Me![ID]) = True ThenMsgBox "请输入 ID 它不能为空!", vbOKOnly, "输入ID"Me![ID].SetFocusElseIf IsNull(Me![备注]) = True ThenMsgBox "请输入备注它不能为空!", vbOKOnly, "输入备注"Me![备注].SetFocusElseSTemp = "INSERT INTO 员工基本资料管理"STemp = STemp & "( 职员ID,部门ID,职务,工资,,性别,ID,备注)"STemp = STemp & "VALUES('" & Me![职员ID] & "','" & Me![部门ID] & "','" & Me![职务] & "','" & Me![工资] & "','" & Me![] & "','" & Me![性别] & "','" & Me![ID] & "','" & Me![备注] & "')"DoCmd.RunSQL STempMe![员工基本资料管理子窗体].RequeryEnd IfExit_添加职员_Click:Exit SubErr_添加职员_click:MsgBox Err.DescriptionResume Exit_添加职员_ClickEnd Sub运行后界面为下图所示:3.6实现修改职员功能,代码如下:Private Sub 修改职员_Click()On Error GoTo Err_修改职员_ClickDim i As IntegerDim STemp As StringDim Rs As New ADODB.RecordsetSTemp = "Select*From 员工基本资料管理"Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimisticIf IsNull(Me![职员ID]) = True ThenMsgBox "请输入职员ID 它不能为空!", vbOKOnly, "输入职员ID"Me![职员ID].SetFocusElseIf IsNull(Me![部门ID]) = True ThenMsgBox "请输入部门ID 它不能为空!", vbOKOnly, "输入部门ID"Me![部门ID].SetFocusElseIf IsNull(Me![职务]) = True ThenMsgBox "请输入职务它不能为空!", vbOKOnly, "输入职务"Me![职务].SetFocusElseIf IsNull(Me![工资]) = True ThenMsgBox "请输入工资它不能为空!", vbOKOnly, "输入工资"Me![工资].SetFocusElseIf IsNull(Me![]) = True ThenMsgBox "请输入它不能为空!", vbOKOnly, "输入"Me![].SetFocusElseIf IsNull(Me![性别]) = True ThenMsgBox "请输入性别它不能为空!", vbOKOnly, "输入性别"Me![性别].SetFocusElseIf IsNull(Me![ID]) = True ThenMsgBox "请输入 ID 它不能为空!", vbOKOnly, "输入ID"Me![ID].SetFocusElseIf IsNull(Me![备注]) = True ThenMsgBox "请输入备注它不能为空!", vbOKOnly, "备注"Me![备注].SetFocusElseRs.MoveFirstFor i = 1 To Rs.RecordCountIf Rs("职员ID") = Me![职员ID] ThenRs("部门ID") = Me![部门ID]Rs("职务") = Me![职务]Rs("工资") = Me![工资]Rs("") = Me![]Rs("性别") = Me![性别]Rs("ID") = Me![ID]Rs("备注") = Me![备注]Rs.UpdateMsgBox "职员信息修改完成!", vbOKOnly, "修改完成"Exit SubElseRs.MoveNextEnd IfNext iEnd IfMe![员工基本资料管理子窗体].RequerySet Rs = NothingExit_修改职员_Click:Exit SubErr_修改职员_Click:MsgBox Err.DescriptionResume Exit_修改职员_ClickEnd Sub运行后界面如下:3.7实现删除职员功能,代码如下:Private Sub 删除职员_Click()On Error GoTo Err_删除职员_ClickDim STemp As StringDim i As IntegerDim Rs As ADODB.RecordsetSet Rs = New ADODB.RecordsetSTemp = "select*from 员工基本资料管理"Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic Rs.MoveFirstFor i = 1 To Rs.RecordCountIf Rs("职员ID") = Me![员工基本资料管理子窗体]![职员ID] ThenRs.Deletei = Rs.RecordCount + 1ElseRs.MoveNextEnd IfNext iMsgBox "该职员档案记录已经删除!", vbOKOnly, "删除完成"Me![员工基本资料管理子窗体].RequerySet Rs = NothingExit_删除职员_Click:Exit SubErr_删除职员_Click:MsgBox Err.DescriptionResume Exit_删除职员_ClickEnd Sub运行后界面为:至此,职员信息管理窗体建立完毕,窗体完整界面如下图所示:(四)系统实施部分4.1试运行结果:4.2 技术说明书、使用说明书和维护说明书略(五)总结1、体会此次课程设计给我的体会有以下几点:一、看似简单,其实不然以前没有过课程设计的经验,作为第一次课程设计课,我抱着试试看的态度去写,一开始看了只有这么几个模块是心里挺高兴的,但是当我真真正正地去把一个操作写成功时,很多意想不到的情况发生了。