人事工资管理系统数据库设计文档格式.docx
《人事工资管理系统数据库设计文档格式.docx》由会员分享,可在线阅读,更多相关《人事工资管理系统数据库设计文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
选择适合公司应用规模和层次的技术,需求操作平台充分考虑其性价比和适用性,网络管理简单方便、可维护性强,以降低系统管理、运行、维护和升级费用,增强可使用性。
D.规范、开放:
坚持开放性和标准化原则,采用的各种系统平台、协议、技术、开发工具、应用系统是开放的、标准化的和可维护的。
3运行环境规划
选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;
另一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都非常容易,而且性能优越。
A.开发工具与语言:
visualbasic
B.中文版硬件环境:
CPU型号为PentiumⅢ以上,内存128M以上。
C.系统环境:
Linux及Windows98以上系统均可。
D.DBMS开发工具:
MSSQLServer2005
4需求分析说明
功能需求描述
A.员工基本信息模块
员工基本信息模块具有员工信息输入、员工增删、员工信息查询三个功能,员工基本信息包括员工号、员工姓名、员工性别、所在职位、具体职称、工龄和工资等级等信息。
员工增删实现了对数据库中员工信息的增加和删除。
员工可以通过员工号或员工姓名对员工信息进行查询。
B.工资结构设置模块
根据该公司的工资管理实际情况,本系统将工资结构分为职位工资、职称工资、工龄工资、其他工资四部分。
该模块可以对这四个工资类型设置工资等级,并对每个等级设置工资标准。
C.工资汇总模块
用户在员工信息管理模块对该员工的工资等级进行输入以后,在工资汇总模块会自动对员工工资进行汇总。
用户可以打印出工资汇总表,打印之前可以通过打印预览功能进行打预览。
以下便是该系统的功能模块示意图:
图人事工资管理系统功能模块结构图
数据库设计
数据库介绍
所谓数据库(Database)就是指按一定组织方式存储在一起的,相互有关的若干个数据的结合,数据库管理系统(databaseManagementSystem)就是一种操纵和管理数据库的大型软件,简称DBMS,他们建立在操作系统的基础上,对数据库进行统一的管理和控制,其功能包括数据库定义,数据库管理,数据库建立和维护,与操作系统通讯等。
DBMS通常由数据字典,数据描述语言及其编译程序,数据操纵(查询)语言及其编译程序,数据库管理例行程序等部分组成。
关系数据库是以关系模型为基础的数据库,是数据表、记录、字段之间的关系将这些表联系在一起,关系数据库提供了成为结构化查询语句(SQL)标准接口,该接口允许使用多种数据库工具和产品,关系数据库是目前最流行的数据库。
在VFP中数据库是一个逻辑概念,通过一组系统文件将相互关联的数据表及其数据库对象组织起来,成为扩展名为.dbc的数据库文件、扩展名为.dtc的数据库备注文件和扩展名为.dcx的数据库索引文件,三个文件一般不能直接使用,而是交由VFP数据库统一管理。
VFP把.dbf文件称为表文件,一个库可以容纳多个表,通过库我们明确各表之间的相互关系,使表文件不在彼此孤立,而成为相互关联的数据集合。
数据流图
根据对工资管理工作的调查和用户需求分析,该系统的数据流图如图所示:
图系统的数据流图
数据字典分析
该软件的数据库由下述五张数据表组成:
A.员工信息表:
B.职位工资设置表:
C.职称工资设置表:
D.工龄工资设置表:
E.其他工资设置表:
字段
字段名
类型
宽度
说明
1
员工号
字符型
3
数字
2
员工姓名
10
小于等于5个汉字
员工性别
“男”或“女”
4
职位名称
14
小于等于7个汉字
5
工龄
数值型
1~99之间
6
工资等级
表4.1员工信息表:
工资标准
1~9999之间
表4.2职位工资设置表:
职称名称
表4.3职称工资设置表:
工龄等级
表4.4工龄工资设置表:
备注
任意字符
表4.5其他工资:
5概念结构设计
说明本数据库将反映的现实世界中的实体、属性和它们之间的关系等的原始数据形式,包括各数据项、记录、表的标识符、定义、类型、度量单位和值域,建立本数据库的每一幅用户视图和全局视图(E-R图,可以用基本E-R图扩展E-R图或类图)。
n
1
图E-R图
将概念结构映射为数据库全局逻辑结构(关系模型),包括所确定的关键字和属性、重新确定的记录结构和所建立的各个表文件之间的相互关系。
员工(员工编号,姓名,职务,职称,受聘时间,所属部门)
部门(部门编号,部门名称)
职务工资(职务,工资)
职称工资(职称,工资)
受聘时间工资(受聘时间,工资)
扣款工资(员工编号,扣款金额)
6系统的功能实现
数据库的连接:
利用控件Adodc连接
在Adodc控件中,设置ConnectStringProvider=”;
IntegratedSecurity=SSPI;
PersistSecurityInfo=False;
InitialCatalog=ManageSystem”,然后再设置CommandType为8–adCmdUnknown,数据源定为SQL查询语句,语句内容根据不同需要而更改。
图设定ConnectString属性
当然,可以手工输入,也可以利用“生成”让VB自动给出语句。
图设定RecordSource属性
A.连接数据库核心语句:
=”;
InitialCatalog=ManageSystem”
=SQL查询语句
断开数据库核心语句:
利用ADODB对象作为SQL连接接口
由于在程序中使用瞬间连接数据库比长期连接数据库高效,而且在本程序中大量使用,因而新增了模块Module1,自定义了SqlConnect函数作为连接,SqlDisConnect函数来断开连接,方便编写程序,提高代码使用率,提高开发效率和运行效率。
SetAdo_Conn=New
SetAdo_RS=New
str_CS="
Provider=;
InitialCatalog=ManageSystem"
str_RS=SQL查询语句
SqlConnectAdo_Conn,Ado_RS,str_CS,str_RS
其中模块中定义了SqlConnect函数:
PublicSubSqlConnect(ByValAdo_ConnectionAs,_
ByValAdo_RecordsetAs,_
Ado_ConnectionStringAsString,_
Ado_RecordSourceAsString)
=Ado_ConnectionString
=30
Ado_RecordSource,Ado_Connection
EndSub
B.断开数据库核心语句:
SqlDisConnectAdo_RS
其中模块中定义了SqlDisConnect函数:
PublicSubSqlDisConnect(ByValAdoRecordsetAs
IfThen
数据的查询
利用表格方式对SQL数据进行查询
利用连接数据库的方法,返回一个RecordSet集合。
通过MSHFlexGrid控件、DataGrid控件等控件对集合作表格方式的输出。
使用Adodc控件时,可以通过属性的设定,把MSHFlexGrid控件、DataGrid1控件捆绑在Adodc控件上。
图对用Adodc控件捆绑
当使用ADODB对象时,可以通过Set语句对进行赋ADODB对象的Recordset值。
但是DataGrid1则不能。
利用字符窜方式对SQL数据进行查询
通过对RecordSet集合的提取,把元组中的属性值赋给TextBox等控件控件,让其输出。
核心代码:
"
工号='
1234"
="
工号"
).Value
="
姓名"
.
对查询所得到的集合作出判空:
方法有多种:
(设Ado_RS为Recordset)
A、利用EOF和BOF两个属性进行判断:
If=FalseAnd=FalseThen
集合不为空
Else
集合为空
EndIf
B、利用Recordset的RecordCount属性判断:
If>
0Then
C、利用DataGrid的ApproxCount属性来判断:
判断条件会因表格的自定义显示而有所不同
0Then
D、利用MSHFlexGrid的Rows属性判断:
IfMSHFlexGrid1.Rows>
1Then
查询特定元组
对于特定元组,由于主码的唯一性,所以当对主码作准确查询时,所得的表只有两种情况:
只有一条元组或者什么都没有。
通过的方法,可以对集合判空。
如果为空,则认为特定元组不存在,,查询失败;
如果返回一条元组,则指针肯定是指向该元组,可以马上对数据进行读取。
SetAdo_Conn=New
SetAdo_RS=New
str_CS="
Persist
SecurityInfo=False;
str_RS="
select*fromBaseTablewhereBID='
"
&
Trim&
"
'
SqlConnectAdo_Conn,Ado_RS,str_CS,str_RS
'
检测帐号是否存在
If=FalseThen'
如果帐号存在
IfTrim("
BID"
))=TrimAndTrim
("
BPassword"
))=TrimThen
还有一种方法,利用Find方法进行查找,如果找到则指针指向该元组。
如找不到则返回错误。
因此利用捕获错误的方法也可以得到效果。
第三种,利用MSHFlexGrid控件、DataGrid控件等,均可以利用控件内部的属性和方法进行查询。
数据的修改
A.利用嵌入SQL语句。
首先使用ADODB对象连接的方法,利用.
Execute直接嵌套运行SQL语句对数据进行修改。
核心语句:
“updata表名set某属性=XX”
B.此外还可以利用ADO接口提供的Fields属性对数据进行修改。
"
)=
所属部门"
职位"
C.利用DataGrid控件对数据库进行强行修改。
只需要连接好数据库,然后对DataGrid进行捆绑,而且DataGrid的AllowUpdate等属性设为True就可以通过界面直接修改。
数据的删除
基本方法跟一样。
A.使用SQL嵌套语句删除数据。
“deletefrom表名where某属性=XX”
核心语句:
数据的添加
A.使用SQL嵌套语句增加数据。
“insertinto表名values(某属性=XX)”
权限的分配
读取BaseTable(员工基本表)里面的BPosition(职位)。
通过对其的判断,来选择其他更多的步骤。
SelectCaseTrim("
BPosition"
))'
检测权限
Case"
总裁"
…………
Case"
人事经理"
经理"
维护部员工"
员工"
…………
EndSelect
7心得体会
随着我国成功加入WTO及信息化浪潮的日益临近,企业在激烈的市场竞争环境下求得生存,就必须有效地利用人才、时间、信息结合的优势。
因此,如何使企业及时掌握本企业人才的各种信息、第一时间处理好随时变化的工资管理问题,建立一套符合企业实际的工资管理系统就显得尤为重要。
在本项目的软件开发的过程中,我全面实践一个面向数据库的应用系统的开发过程,学习很多有关的知识。
这样的项目对我们学过的数据结构,程序设计,数据库,软件工程,等课程是一个综合性很高的实践。
一些以前没有学得很杂实的课程内容,由于需要在实践中运行,刚开始我也感到头痛。
但回过头来再去看教课书,经历着一段时间的实践,对于这些知识点有关的背景,概念和解决方案理解得更透彻了,学习起来也越来越有兴趣,越来越轻松。
另外我还充分体会了从事软件开发工作需要特别谨慎认真地态度和作风,一点都不能马虎。
每个细微的细节都必须十分注意,如果考不认真思考决策,就会出现或大或小的错误。
如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时会推倒很多前面做的工作重来。
有时候,我自己觉得我写的程序非常正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间没有一点进展。
这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙才向专家请教。
尽管向专家请教解决问题比较快,自己钻研花的时间较多,但我强迫自己独立思考对其噢的学习提高帮助非常大。
在开始编写程序的时候,我看到别人的软件功能非常的详细,而且界面非常漂亮,总是希望自己的软件也非常的完善,但是,经过近几年的学习,发现编一个优秀软件不是一蹴而就的事情,需要长时间的积累和经验。
我认清自己的能力后,特别注意在工作的过程中不贪图大而全,而是根据自己的能力制订适当的目标。
在反反复复的学习和不耻下问之下,我的辛勤努力有了回报,终于作出一个简单的软件,虽然这个软件功能非常简单,而且我想,在实际运用中,还有些不足,因为工资的的内容非常丰富,我涉及到的仅仅是工资管理的一部分简单内容,离实际的客户需求肯定还有差距。
例如工资管理和人事管理,考勤管理以及财务账表的关联考虑得还不完善。
最好是这几部分的数据可以相互转化利用,不需要重复录入,针对工资管理,还应该建立一个有普遍意义的模型,这样对用户来讲,就比较容易通过修改有关管理制度来适应我们开发的软件。
8参考文献
《数据库系统简明教程》王珊高等教育出版社
《数据库系统概论》杨开英武汉理工大学出版社
《数据库系统概论(第三版)》萨师宣王珊高等教育出版社
《AFirstCourseinDatabaseSystems》JeffreyD.UllmanJenniferWidom.清华大学出版社
《Visualfoxpro数据库开发关键技术与实例应用》周桓张雨王国辉人民邮电出版社