公司员工工资管理系统课程设计(一)可行性分析1.1项目背景及意义:随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的工资管理系统对员工工资等进行系统的管理,很难实现企业高效运转。意义:(1)本系统提供了基本的人员信息管理,同时对员工的基本工资、浮动工资和工资发放进行系统管理,同时配以查询、修改、删除、添加功能,以便能真正适用于各类中小企业及事业单位。经过自己认真的思考和同学的讨论使我对该类管理系统有了进一步的认识,同时也可以应用平时学习中所学到的东西。1.2可行性研究报告及信息系统目标:员工工资管理系统的主要目的是利用计算机对员工的各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能:对单位人员的变动进行处理。一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。对职工的工资进行计算、修改。可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算基本工资、岗位工资、水电费及实发金额等。查询统计功能。要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某个部门所有的员工的工资信息。(二)系统分析部分2.1系统功能模块图公司工资管理系统员工奖惩管理工资资料处理员工资料管理工资发放查询工资发放管理打印工资单清空工资资按职员ID查询按姓名查询按月份查询员工奖励管理员工惩罚管理2.2系统流程图2.3系统详细设计说明①员工基本资料管理表[yuangong]的创建;②员工奖励管理表的创建;③员工惩罚管理表的创建;④工资发放查询表的创建各表资料如截图所示:2.4数据库概念结构设计数据库概念设计是整个数据库设计的关键。根据用户需求设计数据库的概念,数据模型。我们首先要将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构,这种信息结构不是DBMS支持的数据模型,而是概念级模型。然后再把概念模型转换为具体机器上DBMS支持的数据模型。是否清空工资资料按姓名查询按月份查询按职员ID查询发放员工工资打印工资单是否发放工资员工基本工资员工奖励管理员工惩罚管理概念模型是对现实世界的抽象和概括。它真实,充分地反映了现实世界中的事物和事物之间的联系,能满足用户对数据的处理要求。由于其简洁、明晰、独立于机器,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作。概念模型易于变动,还很容易向各种数据模型转换。概念模型的基本概念涉及的主要有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完整性约束:基本表[员工]字段类型长度格式约束员工编号文本250主码姓名文本250性别文本250年龄文本250所属部门号文本250外码职业文本250基本表[科室]字段类型长度格式约束部门编号文本250主码部门名称文本250基本表[工资]字段类型长度格式约束日期文本250主码员工编号文本250外码基本工资数字(整型)福利补贴数字(整型)奖金工资数字(整型)失业保险数字(整型)住房公积金数字(整型)2.6数据字典绘制数据流图以后,只是对数据处理和彼此之间的联系进行了说明,为了进一步明确数据的详细内容和数据加工过程,应将数据流图中的各元素作出详细的定义和说明,以便于此后系统设计的进行。数据字典描述的主要内容有:数据项、数据流、数据存储、数据处理、外部实体。数据流程图配以数据词典,就可以从图形和文字两个方面对系统的逻辑模型进行描述,从而形成一个完整的说明。在系统分析中会产生大量的数据词典,以下将以图表形式分别列出系统中代表性的数据流、数据元素、数据存储和外部实体以及所有的加工处理。条目名称编号说明来源去向组成存取方式数据项职工号F1每位员工一个编号D1D5部门编号、顺序号键入数据流员工和变动信息F1员工都有详细的资料“人事部”外部实体P1职工号,姓名,性别,职位,学历,联系电话,身份证号码,入职时间,离职时间键入数据存储劳务奖金表D4存储每个员工的奖金P3P4职工号月份奖金(近似长度分别为:6、4、12(字节))主关键字:职工号辅关键字:月份自动存储组织:二维表数据处理员工资料管理P1对员工资料进行管理F1员工和变动信息D1D6职工号,姓名,性别,键入数据基本P2生成员工F2D2职工号,在职自动处理工资管理基本工资表时间,基本工资数据处理员工考勤管理P3生成考勤汇总表F3D3职工号,迟到,旷工,请假键入数据处理奖金管理P4生成员工劳务奖金表F4、D3D4职工号,奖励项目,金额,月份键入数据处理工资汇总P5计算员工工资。是最重要的部分D1、D2、D3、D4F5F6实发工资,汇总表,工资单自动外部实体员工工资汇总后,生成工资单给员工F5职工号,月份,工资单号键入外部实体人事部录入改变员工的基本信息及员工的考核情况D1、D3P5P4P1部门编号,员工号,考核键入外部财务计算发放P5F5员工号,各工自动实体部员工的工资F7资2.7问题及解决方法问题及其解决方案:1、在概念结构设计中遇到了结构冲突,导致系统错误。在经过根据应用的语义对实体联系的类型进行综合、调整后得以解决。2、在逻辑结构设计中,由于没有理清概念结构设计中的各实体间的相互联系导致逻辑结构一度无法建立。在经过赵老师的指点后,终于找到了问题的所在。顺利的完成了逻辑结构设计。3、查询嵌套的实现和计算工资这个环节也遇到了很大的困难,这一切都源自对操作环境的不熟悉,所以我们尽量使我们的应用程序简单化,重点放在基本功能的实现上,没有追求一些高难度的应用编写。6.2系统中中可以改进的地方说明:功能不是很全面,可是适当添加一些功能使程序更加完善.例如可添加员工参加工作的时间,工龄等使员工信息更加系统全面。(三)系统详细设计说明3.1创建数据库本次设计中的表一律是通过手工自己创建。①员工基本资料管理表[yuangong]的创建;②员工奖励管理表的创建;③员工惩罚管理表的创建;④工资发放查询表的创建此时生成的界面如下图:3.2设计数据表关系3.3建立数据库窗体:使用窗体向导的方法依次添加“职员信息管理”窗体和“职员信息管理”子窗体此处添加子窗体代码为:PrivateSubForm_Current()OnErrorGoToErr_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:ExitSubErr_Form_Current:MsgBoxErr.DescriptionResumeExit_Form_CurrentEndSub运行后界面为:窗体及子窗体调整后如下图所示:3.4实现新建职员功能,代码添加为:PrivateSub新建职员_Click()OnErrorGoToErr_新建职员_Click'把窗体中所有控件都置空Me![职员ID]=NullMe![部门ID]=NullMe![职务]=NullMe![工资]=NullMe![姓名]=NullMe![性别]=NullMe![身份证ID]=NullMe![备注]=NullExit_新建职员_Click:ExitSubErr_新建职员_Click:MsgBoxErr.DescriptionResumeExit_新建职员_ClickEndSub运行后界面如下图所示:3.5实现添加职员功能,添加代码为:PrivateSub添加职员_Click()OnErrorGoToErr_添加职员_clickDimSTempAsStringIfIsNull(Me![职员ID])=TrueThenMsgBox请输入职员ID它不能为空!,vbOKOnly,输入职员IDMe![职员ID].SetFocusElseIfIsNull(Me![部门ID])=TrueThenMsgBox请输入部门ID它不能为空!,vbOKOnly,输入部门IDMe![部门ID].SetFocusElseIfIsNull(Me![职务])=TrueThenMsgBox请输入职务它不能为空!,vbOKOnly,输入职务Me![职务].SetFocusElseIfIsNull(Me![工资])=TrueThenMsgBox请输入工资它不能为空!,vbOKOnly,输入工资Me![工资].SetFocusElseIfIsNull(Me![姓名])=TrueThenMsgBox请输入姓名它不能为空!,vbOKOnly,输入姓名Me![姓名].SetFocusElseIfIsNull(Me![性别])=TrueThenMsgBox请输入性别它不能为空!,vbOKOnly,输入性别Me![性别].SetFocusElseIfIsNull(Me![身份证ID])=TrueThenMsgBox请输入身份证ID它不能为空!,vbOKOnly,输入身份证IDMe![身份证ID].SetFocusElseIfIsNull(Me![备注])=Tr