《人事工资管理系统数据库设计.doc》由会员分享,可在线阅读,更多相关《人事工资管理系统数据库设计.doc(14页珍藏版)》请在三一办公上搜索。
1、人事工资管理系统1问题描述1.1设计目的本系统的设计目标是能够对该公司的员工的基本信息和工资信息进行添加和修改,根据个人信息将工资分为职务工资,职称工资和其他工资。能够调整工资标准和员工信息,也能够调整其他工资项目,根据需要对教职员工基本信息和工资信息的查询,系统应该包括系统用户数据的添加,修改和删除。系统应该具有简单,易用,小巧,经典的特色,应该能够对高校工资管理进行优化,使其系统化,高效化,智能化。并保证工资管理的准确性,简易性,为公司财务人员提供便利。1.2设计背景随着市场经济的快速发展,公司规模越来越大,员工的数量也越来越多,员工工资管理更加的复杂,而工资管理是一项琐碎、复杂而又十分细
2、致的工作,工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理,同时计算机具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事工资资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。这就对人事工资管理提出了新的要求,用计算机管理系统来管理高校工资已经成为目前的趋势,使
3、用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范数据管理行为,从而提高了管理效率和水平。人事工资管理系统便是以计算机为工具,通过对工资管理所需的信息管理,不仅把管理人员从繁琐的数据计算处理中解脱出来,而且优化了管理体系,使其高效化,简易化,智能化,也提高了透明度和互动性。2系统目标和建设原则2.1系统目标某公司决定建立“工资管理系统”,以取代单一的人工管理。根据人员基本情况表中的职位、职称及工龄长短,决定工资表中的基本工资和岗位津贴的具体数值。根据各部门上报的扣款表的内容决定工资表中扣款项的金额。按月汇总工资表。2.2建设原则根据我们确
4、定的工资数据库的设计思想,我们提出我建设原则如下:A高可靠性:该系统是该公司进行工资管理、员工信息管理、日常行政管理和奖惩管理的基础设施,要求有很高的可靠性,以此建立起稳定、实用的应用环境,因此系统方案设计就以高可靠性为首要原则。B安全性:系统平台和系统平台数据的安对网络系统应严格地管理,并通过防火墙和有效设置权限等方法加强系统平台和数据的安全。C实用性:选择适合公司应用规模和层次的技术,需求操作平台充分考虑其性价比和适用性,网络管理简单方便、可维护性强,以降低系统管理、运行、维护和升级费用,增强可使用性。D规范、开放:坚持开放性和标准化原则,采用的各种系统平台、协议、技术、开发工具、应用系统
5、是开放的、标准化的和可维护的。3运行环境规划 选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;另一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都非常容易,而且性能优越。A开发工具与语言:visual basic 6.0B中文版硬件环境:CPU型号为Pentium 以上,内存128M以上。 C系统环境:Linux及Windows98以上系统均可。 DDBMS开发工具:MS SQL Server 20054需求分析说明4.1功能需求描述A员工基本信息模块员工基本信息模块具有员工信息输入、员工增删、员工信息查询三个
6、功能,员工基本信息包括员工号、员工姓名、员工性别、所在职位、具体职称、工龄和工资等级等信息。员工增删实现了对数据库中员工信息的增加和删除。员工可以通过员工号或员工姓名对员工信息进行查询。B工资结构设置模块根据该公司的工资管理实际情况,本系统将工资结构分为职位工资、职称工资、工龄工资、其他工资四部分。该模块可以对这四个工资类型设置工资等级,并对每个等级设置工资标准。C工资汇总模块用户在员工信息管理模块对该员工的工资等级进行输入以后,在工资汇总模块会自动对员工工资进行汇总。用户可以打印出工资汇总表,打印之前可以通过打印预览功能进行打预览。以下便是该系统的功能模块示意图:用户数据添加系统用户管理用户
7、数据修改 用户数据查询员工信息添加员工信息修改员工信息管理员工信息删除高校工资管理系统工资标准设立工龄工资标准设立职位工资标准设立职称工资标准设立其他工资标准设立工资创建工资修改工资信息管理工资结算工资统计 图4.2人事工资管理系统功能模块结构图4.3数据库设计4.3.1数据库介绍所谓数据库(Database)就是指按一定组织方式存储在一起的,相互有关的若干个数据的结合,数据库管理系统(database Management System)就是一种操纵和管理数据库的大型软件,简称DBMS,他们建立在操作系统的基础上,对数据库进行统一的管理和控制,其功能包括数据库定义,数据库管理,数据库建立和维
8、护,与操作系统通讯等。DBMS通常由数据字典,数据描述语言及其编译程序,数据操纵(查询)语言及其编译程序,数据库管理例行程序等部分组成。关系数据库是以关系模型为基础的数据库,是数据表、记录、字段之间的关系将这些表联系在一起,关系数据库提供了成为结构化查询语句(SQL)标准接口,该接口允许使用多种数据库工具和产品,关系数据库是目前最流行的数据库。在VFP中数据库是一个逻辑概念,通过一组系统文件将相互关联的数据表及其数据库对象组织起来,成为扩展名为.dbc的数据库文件、扩展名为.dtc的数据库备注文件和扩展名为.dcx的数据库索引文件,三个文件一般不能直接使用,而是交由VFP数据库统一管理。VFP
9、把.dbf文件称为表文件,一个库可以容纳多个表,通过库我们明确各表之间的相互关系,使表文件不在彼此孤立,而成为相互关联的数据集合。4.3.2数据流图根据对工资管理工作的调查和用户需求分析,该系统的数据流图如图4.2所示:其他工资设定工龄工资设定职称工资设定图4.2系统的数据流图员工工资汇总员工信息设定工资标准设定职位工资设定4.3.3数据字典分析该软件的数据库由下述五张数据表组成:A员工信息表:Personnel.dbfB职位工资设置表:course.dbfC职称工资设置表:rank.dbfD工龄工资设置表: time.dbfE其他工资设置表:rank.dbf字段字段名类型宽度说明1员工号字符
10、型3数字2员工姓名字符型10小于等于5个汉字3员工性别字符型2“男”或“女”4职位名称字符型14小于等于7个汉字5工龄数值型2199之间6工资等级数值型2199之间表4. 1员工信息表:Personnel.dbf字段字段名类型宽度说明1工资等级数值型2199之间2工资标准数值型419999之间表4. 2职位工资设置表:course.dbf字段字段名类型宽度说明1职称名称字符型14小于等于7个汉字2工资标准数值型419999之间表4. 3职称工资设置表:rank.dbf字段字段名类型宽度说明1工龄等级数值型2199之间2工资标准数值型419999之间表4. 4工龄工资设置表:time.dbf字段
11、字段名类型宽度说明1工资标准数值型2199之间2备注字符型10任意字符表4. 5其他工资:other.dbf5概念结构设计说明本数据库将反映的现实世界中的实体、属性和它们之间的关系等的原始数据形式,包括各数据项、记录、表的标识符、定义、类型、度量单位和值域,建立本数据库的每一幅用户视图和全局视图(E-R图,可以用基本E-R图扩展E-R图或类图)。姓名员工编号受聘时间职务所属部门职称职称工资工资职位员工职称工资职位工资 n工资拥有从属其他工资备注 1工龄工资部门工资部门名称部门编号工龄图5.1 E-R图将概念结构映射为数据库全局逻辑结构(关系模型),包括所确定的关键字和属性、重新确定的记录结构和
12、所建立的各个表文件之间的相互关系。员工(员工编号,姓名,职务,职称,受聘时间,所属部门)部门(部门编号,部门名称)职务工资(职务,工资)职称工资(职称,工资)受聘时间工资(受聘时间,工资)扣款工资(员工编号,扣款金额)6系统的功能实现6.1数据库的连接: 6.1.1利用控件Adodc连接在Adodc控件中,设置ConnectStringProvider=”SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ManageSystem”,然后再设置CommandType为8 adCmdUnk
13、nown,数据源定为SQL查询语句,语句内容根据不同需要而更改。图6.1 设定ConnectString属性当然,可以手工输入,也可以利用“生成”让VB自动给出语句。图6.2 设定RecordSource属性A连接数据库核心语句:Adodc1.ConnectStringProvider=”SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ManageSystem”Adodc1.RecordSource = SQL查询语句Adodc1.Recordset.OpenAdodc1.Refre
14、shB断开数据库核心语句:Adodc1.Recordset.Close6.2.2利用ADODB对象作为SQL连接接口由于在程序中使用瞬间连接数据库比长期连接数据库高效,而且在本程序中大量使用,因而新增了模块Module1,自定义了SqlConnect函数作为连接,SqlDisConnect函数来断开连接,方便编写程序,提高代码使用率,提高开发效率和运行效率。A连接数据库核心语句:Set Ado_Conn = New ADODB.ConnectionSet Ado_RS = New ADODB.Recordsetstr_CS = Provider=SQLOLEDB.1;Integrated Se
15、curity=SSPI;Persist Security Info=False;Initial Catalog=ManageSystemstr_RS = SQL查询语句SqlConnect Ado_Conn, Ado_RS, str_CS, str_RS其中模块中定义了SqlConnect函数: Public Sub SqlConnect(ByVal Ado_Connection As ADODB.Connection, _ ByVal Ado_Recordset As ADODB.Recordset, _ Ado_ConnectionString As String, _ Ado_Recor
16、dSource As String) Ado_Connection.ConnectionString = Ado_ConnectionString Ado_Connection.ConnectionTimeout = 30 Ado_Connection.Open Ado_Recordset.Open Ado_RecordSource, Ado_ConnectionEnd SubB断开数据库核心语句:SqlDisConnect Ado_RS其中模块中定义了SqlDisConnect函数:Public Sub SqlDisConnect(ByVal AdoRecordset As ADODB.Re
17、cordset) If AdoRecordset.State Then AdoRecordset.CloseEnd Sub6.2数据的查询6.2.1利用表格方式对SQL数据进行查询利用连接数据库的方法,返回一个RecordSet集合。通过MSHFlexGrid控件、DataGrid控件等控件对集合作表格方式的输出。使用Adodc控件时,可以通过属性的设定,把MSHFlexGrid控件、DataGrid1控件捆绑在Adodc控件上。 图6.3对用Adodc控件捆绑当使用ADODB对象时,可以通过Set语句对MSHFlexGrid.DataSourse 进行赋ADODB对象的Recordset值。
18、但是DataGrid1则不能。6.2.2利用字符窜方式对SQL数据进行查询利用连接数据库的方法,返回一个RecordSet集合。通过对RecordSet集合的提取,把元组中的属性值赋给TextBox等控件控件,让其输出。核心代码:Adodc1.Recordset.MoveFirst Adodc1.Recordset.Find 工号=1234Text1.Text = Adodc1.Recordset.Fields(工号).Value Text2.Text = Adodc1.Recordset.Fields(姓名).Value . . .6.2.3 对查询所得到的集合作出判空:方法有多种:(设Ad
19、o_RS为Recordset)A、利用EOF和BOF两个属性进行判断: If Ado_RS.BOF = False And Ado_RS.EOF = False Then 集合不为空 Else 集合为空 End If B、利用Recordset 的RecordCount属性判断: If Ado_RS.RecordCount 0 Then 集合不为空 Else 集合为空 End If C、利用DataGrid 的ApproxCount属性来判断: 判断条件会因表格的自定义显示而有所不同 If DataGrid1.ApproxCount 0 Then 集合不为空 Else 集合为空 End If
20、D、利用MSHFlexGrid的Rows属性判断: 判断条件会因表格的自定义显示而有所不同 If MSHFlexGrid1. Rows 1 Then 集合不为空 Else 集合为空 End If6.2.4查询特定元组对于特定元组,由于主码的唯一性,所以当对主码作准确查询时,所得的表只有两种情况:只有一条元组或者什么都没有。通过6.2.3的方法,可以对集合判空。如果为空,则认为特定元组不存在,查询失败;如果返回一条元组,则指针肯定是指向该元组,可以马上对数据进行读取。核心代码: Set Ado_Conn = New ADODB.Connection Set Ado_RS = New ADODB.
21、Recordset str_CS = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ManageSystem str_RS = select * from BaseTable where BID= & Trim(Text1.Text) & SqlConnect Ado_Conn, Ado_RS, str_CS, str_RS Ado_RS.RecordCount 检测帐号是否存在 If Ado_RS.EOF = False Then 如果帐号存在 If Trim(
22、Ado_RS.Fields(BID) = Trim(Text1.Text) And Trim(Ado_RS.Fields(BPassword) = Trim(Text2.Text) Then还有一种方法,利用Find方法进行查找,如果找到则指针指向该元组。如找不到则返回错误。因此利用捕获错误的方法也可以得到效果。第三种,利用MSHFlexGrid控件、DataGrid控件等,均可以利用控件内部的属性和方法进行查询。6.3数据的修改A利用嵌入SQL语句。首先使用ADODB对象连接的方法,利用ADODB.Connection.Execute直接嵌套运行SQL语句对数据进行修改。 核心语句: Ado
23、_Conn.Execute “updata 表名 set 某属性=XX”B此外还可以利用ADO接口提供的Fields属性对数据进行修改。 核心语句:Adodc1.Recordset.Find 工号= & Text3.Text & Adodc1.Recordset.Fields(姓名) = Text4.Text Adodc1.Recordset.Fields(所属部门) = Combo2.Text Adodc1.Recordset.Fields(职位) = Combo3.Text Adodc1.Recordset.Update Adodc1.RefreshC利用DataGrid控件对数据库进行强
24、行修改。只需要连接好数据库,然后对DataGrid进行捆绑,而且DataGrid的AllowUpdate等属性设为True就可以通过界面直接修改。6.4数据的删除基本方法跟6.3一样。A使用SQL嵌套语句删除数据。Ado_Conn.Execute “delete from表名 where某属性=XX”B此外还可以利用ADO接口提供的Fields属性对数据进行修改。核心语句:Adodc1.Recordset.MoveFirstAdodc1.Recordset.Find 工号= & Text3.Text & Adodc1.Recordset.DeleteAdodc1.Recordset.Updat
25、e6.5数据的添加基本方法跟6.3一样。A使用SQL嵌套语句增加数据。Ado_Conn.Execute “insert into 表名 values(某属性=XX)”B此外还可以利用ADO接口提供的Fields属性对数据进行修改。核心语句:Adodc1.Recordset.MoveFirstAdodc1.Recordset.AddItemAdodc1.Recordset.Fields(姓名) = Text4.TextAdodc1.Recordset.Fields(所属部门) = Combo2.TextAdodc1.Recordset.Fields(职位) = Combo3.TextAdodc1
26、.Recordset.UpdateAdodc1.Refresh6.6权限的分配读取BaseTable(员工基本表)里面的BPosition(职位)。通过对其的判断,来选择其他更多的步骤。核心语句:Select Case Trim(Ado_RS.Fields(BPosition) 检测权限Case 总裁 Case 人事经理 Case 经理 Case 维护部员工 Case 员工End Select7心得体会随着我国成功加入WTO及信息化浪潮的日益临近,企业在激烈的市场竞争环境下求得生存,就必须有效地利用人才、时间、信息结合的优势。因此,如何使企业及时掌握本企业人才的各种信息、第一时间处理好随时变化
27、的工资管理问题,建立一套符合企业实际的工资管理系统就显得尤为重要。在本项目的软件开发的过程中,我全面实践一个面向数据库的应用系统的开发过程,学习很多有关的知识。这样的项目对我们学过的数据结构,程序设计,数据库,软件工程,等课程是一个综合性很高的实践。一些以前没有学得很杂实的课程内容,由于需要在实践中运行,刚开始我也感到头痛。但回过头来再去看教课书,经历着一段时间的实践,对于这些知识点有关的背景,概念和解决方案理解得更透彻了,学习起来也越来越有兴趣,越来越轻松。另外我还充分体会了从事软件开发工作需要特别谨慎认真地态度和作风,一点都不能马虎。每个细微的细节都必须十分注意,如果考不认真思考决策,就会
28、出现或大或小的错误。如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时会推倒很多前面做的工作重来。有时候,我自己觉得我写的程序非常正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间没有一点进展。这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙才向专家请教。尽管向专家请教解决问题比较快,自己钻研花的时间较多,但我强迫自己独立思考对其噢的学习提高帮助非常大。在开始编写程序的时候,我看到别人的软件功能非常的详细,而且界面非常漂亮,总是希望自己的软件也非常的完善,但是,经
29、过近几年的学习,发现编一个优秀软件不是一蹴而就的事情,需要长时间的积累和经验。我认清自己的能力后,特别注意在工作的过程中不贪图大而全,而是根据自己的能力制订适当的目标。在反反复复的学习和不耻下问之下,我的辛勤努力有了回报,终于作出一个简单的软件,虽然这个软件功能非常简单,而且我想,在实际运用中,还有些不足,因为工资的的内容非常丰富,我涉及到的仅仅是工资管理的一部分简单内容,离实际的客户需求肯定还有差距。例如工资管理和人事管理,考勤管理以及财务账表的关联考虑得还不完善。最好是这几部分的数据可以相互转化利用,不需要重复录入,针对工资管理,还应该建立一个有普遍意义的模型,这样对用户来讲,就比较容易通过修改有关管理制度来适应我们开发的软件。8参考文献l 数据库系统简明教程王珊 高等教育出版社2004.9l 数据库系统概论杨开英 武汉理工大学出版社2003.1 l 数据库系统概论(第三版)萨师宣 王珊 高等教育出版社2000.2l A First Course in Database SystemsJeffrey D. Ullman Jennifer Widom.清华大学出版社1998.2Visual foxpro数据库开发关键技术与实例应用周桓 张雨 王国辉 人民邮电出版社 2004.5 信你自己罢!只有你自己是真实的,也只有你能够创造你自己l