人事管理系统附程序设计和数据库设计资料.docx
《人事管理系统附程序设计和数据库设计资料.docx》由会员分享,可在线阅读,更多相关《人事管理系统附程序设计和数据库设计资料.docx(22页珍藏版)》请在冰点文库上搜索。
人事管理系统附程序设计和数据库设计资料
人事管理系统(附程序设计和数据库设计)
人事管理系统
摘要
SQLServer数据库课程设计主要涉及的数据库相关知识有SQLServer2000、E-R图、表结构设计、VisualBasic.NET等。
设计中将人事管理系统用E-R图来表示,使得各部分的关系简洁明了,清晰可见,也使得设计过程简单得多。
表结构设计是将E-R图中的各实体、属性等的关系具体化,具备了各种数据库所该有的各个具体数据信息和要求。
正确使用SQLServer2000的语句、语法和结构方便了程序设计及对于某些复杂数据的访问。
借助VisualBasic.NET软件完成这一系列的工作。
使用SQLServer数据库软件完成表的建立等工作。
一、系统需求分析
该人事管理系统的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能够充分满足各种信息的输出和输入。
收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
一直以来人们使用传统人工的方式管理员工档案,这种管理方式存在着许多缺点,譬如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
人事管理信息系统的出现轻而易举的解决了传统管理人员档案的方法的缺点。
伴随着人事管理信息系统的广泛应用,它已经成为了任何一家企业公司都不可缺少的组成部分,它的存在使得管理者更容易了解自己公司的员工,便于分配人员,易于进行调整。
所以人事管理信息系统能够为管理人员提供充足的信息和快捷的查询手段。
二、系统总体设计
1.概述
一个正常运作的公司必定有一个健全的人事管理系统,来管理员工的信息,包括员工的编号、姓名、性别、工龄、工资以及奖惩情况。
除了这些基本的用处外,此系统还提供员工信息更改或删除等的功能,使公司的人事管理方便快捷而又清晰。
面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效地程序结构支持各种数据操作的执行。
我们现在介绍的这个人事管理系统是一个非常通用的管理系统。
它讲述如何建立一个公司人事管理系统。
他可以将关于的一切员工信息记录在案,并且对其进行输入、修改、查询,大大提高了公司员工管理的工作效率。
2.业务分析
针对一般人事管理系统的需求,通过对人事管理过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:
基本信息包括:
人员基本信息:
编号、姓名、性别、出生日期、参加工作日期住址、电话等;来本单位的日期及来自的单位;职称及评定的时间和工资级别;职工的奖惩登录。
工资的确定:
基本工资与职称和级别有关;职务补助、房补由职称决定;工龄津贴由工龄决定;洗理费由性别决定;另有每人奖金不同。
查询员工的各项基本信息。
查询每个职工的详细工资清单。
用户管理:
信息录入、工资计算的工作人员及普通职工查询自己的信息。
其中系统的整体功能可参考如下的整体功能模块图:
图2-2整体功能模块图
3.功能设计
系统开发的整体任务是实现各种信息的系统化、规范化和自动化。
系统功能分析是在系统开发的总体任务的基础上完成的。
本人事管理系统需要完成的功能主要有:
职工信息的修改、更新和删除,包括职称、工资、工龄等的变化;
工龄信息的变更会使工龄年数和工龄津贴的数据随之发生变化;
奖惩会根据具体信息的输入而有所变化。
此系统的功能具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能够充分满足各种信息的输出和输入。
收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
根据以上信息按照结构化程序设计的要求,得到如图2-1所示我负责部分的功能模块图。
图2-1功能模块图(部分)
4.概念结构设计
人事管理系统概念设计产生的基本E-R模型如图2-4所示。
图2-3人事管理系统基本E-R图
5.逻辑结构设计
在逻辑结构设计中主要就是把概念结构设计阶段产生的系统基本E-R图转化为具体的DBMS所支持的数据模型。
在该管理系统中,我们采用关系模型来进行分析和设计,将实体、实体的属性和实体之间的联系在遵循转化原则的前提下进行转化,并标出主键。
其中,各实体的属性如下所示:
职工(编号,姓名,性别,出生日期,参加工作,住址,电话,来自本单位的时间,职称名,评定时间,工龄年数)
工龄(工龄津贴,工龄年数)
洗理费(性别,金额)
奖惩(编号,金额,内容)
职称表(职称名,工资级别,基本工资,职务补助,房补)
管理员(登录账号,密码)
6.物理结构设计
职工表的创建语句如下:
CREATETABLE[职工表](
[编号][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[姓名][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[性别][char](10)COLLATEChinese_PRC_CI_ASNULL,
[出生日期][datetime]NULL,
[参加工作日期][datetime]NULL,
[住址][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[电话][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[来自本单位的时间][datetime]NULL,
[职称名][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[评定时间][datetime]NULL,
[工龄年数][int]NULL,
[编号1][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
CONSTRAINT[PK_职工表]PRIMARYKEYCLUSTERED
(
[编号]
)ON[PRIMARY],
CONSTRAINT[FK_职工表_工龄表]FOREIGNKEY
(
[工龄年数]
)REFERENCES[工龄表](
[工龄年数]
),
CONSTRAINT[FK_职工表_洗理费]FOREIGNKEY
(
[性别]
)REFERENCES[洗理费](
[性别]
),
CONSTRAINT[FK_职工表_职称表]FOREIGNKEY
(
[职称名]
)REFERENCES[职称表](
[职称名]
)
)ON[PRIMARY]
GO
职称表的创建语句如下:
CREATETABLE[职称表](
[职称名][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[工资级别][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[基本工资][money]NULL,
[职务补助][money]NULL,
[房补][money]NULL,
CONSTRAINT[PK_职称表]PRIMARYKEYCLUSTERED
(
[职称名]
)ON[PRIMARY]
)ON[PRIMARY]
GO
管理员表的创建:
CREATETABLE[管理员表](
[登录账号][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[密码][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
CONSTRAINT[PK_管理员表]PRIMARYKEYCLUSTERED
(
[登录账号]
)ON[PRIMARY]
)ON[PRIMARY]
GO
工龄表的创建语句如下:
CREATETABLE[工龄表](
[工龄年数][int]NOTNULL,
[工龄津贴][money]NULL,
CONSTRAINT[PK_工龄表]PRIMARYKEYCLUSTERED
(
[工龄年数]
)ON[PRIMARY]
)ON[PRIMARY]
GO
奖惩表的创建语句如下:
CREATETABLE[奖惩](
[编号1][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[金额][money]NULL,
[内容][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
CONSTRAINT[PK_奖惩]PRIMARYKEYCLUSTERED
(
[编号1]
)ON[PRIMARY],
CONSTRAINT[FK_奖惩_职工表]FOREIGNKEY
(
[编号1]
)REFERENCES[职工表](
[编号]
)
)ON[PRIMARY]
GO
洗理费表的创建语句如下:
CREATETABLE[洗理费](
[性别][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[金额][money]NULL,
CONSTRAINT[PK_洗理费]PRIMARYKEYCLUSTERED
(
[性别]
)ON[PRIMARY]
)ON[PRIMARY]
GO
三、数据库表结构设计
根据数据库的需求分析和概念结构设计,设计了名称为职工的数据库表。
表的设计结果如下面各表所示:
表3-1职工表
列名
数据类型
长度
是否允许为空
编号
varchar
50
否
姓名
varchar
50
是
性别
char
10
是
出生日期
datetime
8
是
参加工作日期
datetime
8
是
住址
varchar
50
是
电话
varchar
50
是
来本单位的时间
datetime
8
是
职称名
varchar
50
是
评定时间
datetime
8
是
工龄年数
int
4
是
编号1
varchar
50
是
表3-2管理员表
列名
数据类型
长度
是否允许为空
登录账号
char
10
否
密码
char
10
否
表3-3职称表
列名
数据类型
长度
是否允许为空
职称名
varchar
50
否
工资级别
varchar
50
是
基本工资
money
8
是
职务补助
money
8
是
房补
money
8
是
表3-4工龄表
列名
数据类型
长度
是否允许为空
工龄年数
int
4
否
工龄津贴
money
8
是
表3-5洗理费
列名
数据类型
长度
是否允许为空
性别
char
10
否
金额
money
8
是
表3-6奖惩
列名
数据类型
长度
是否允许为空
编号1
varchar
50
否
金额
money
8
是
内容
varchar
50
是
四、功能分析
下图为职工信息表的截图,利用此表可以查询、修改、更新等相关信息:
图4-1职工表
管理员登录账号需要输入账号及密码,当然必须符合以下表对账号和密码的设计要求:
图4-2管理员表
下面的这个登录界面可提供职工和管理员登录,分别单击职工相关功能和管理员相关功能会出现不同的下拉菜单可供查询或是更改不同的所需信息内容,如下图:
图4-3登录界面
当在第一个界面点开职工相关功能,单击职工登录会进入下面的界面,只要输入正确的职工编号和职工姓名,单击登录就可进实现更多的信息查询和更改等操作,如下图:
图4-4职工登录页面
如果输入的职工编号或者职工姓名不匹配,或是不正确、不存在等情况下,系统会弹出对话框提示登录失败,编号或职工姓名错误,如下图所示:
图4-5登录失败
如果职工登陆成功的话会进入“欢迎您查看基本详细信息”的界面,再次输入本人的相关信息,编号、职称、工龄、性别,单击不同的按钮则会出现不同的信息,下图为单击“查看基本信息”出现的界面:
图4-6查看基本信息
下图为单击了“查看详细工资清单”按钮后出现的界面,信息如下:
图4-7查看详细工资清单
如果在登录界面职工相关功能的下拉菜单中选择奖惩登录,则会进入“欢迎您进入奖惩登录界面”的界面,输入职工编号,单击“查看”按钮,则会出现相应的奖惩信息,如下图所示:
图4-8奖惩登录界面
以上是我所负责部分功能的分析与介绍,其中包括SQLServer数据库中的两个表的创建和VisualBasic.NET中的几个界面的设计与分析。
五、相关代码设计与分析
登录界面Form1的部分代码如下:
定义公共类Form1继承系统窗体功能:
PublicClassForm1
InheritsSystem.Windows.Forms.Form
当单击MenuItem5时跳转到Form4界面,定义f112为Form4:
PrivateSubMenuItem5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuItem5.Click
Dimf112AsNewForm4
f112.Show()
EndSub
当单击MenuItem3时跳转到Form2界面,定义f111为Form2:
PrivateSubMenuItem3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuItem3.Click
Dimf111AsNewForm2
f111.Show()
EndSub
当单击MenuItem4时跳转到Form5界面,定义f113为Form5:
PrivateSubMenuItem4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuItem4.Click
Dimf113AsNewForm5
f113.Show()
EndSub
EndClass
职工登录页面Form2的代码如下:
当单击按钮2的时候,清除TextBox1和TextBox2的内容
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
TextBox1.Clear()
TextBox2.Clear()
EndSub
当单击按钮1的时候链接到“职工表”,如果职工编号与姓名存在并匹配则成功登陆,显示Form3界面,否则,弹出对话框“登录失败,编号或职工姓名错误!
”。
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimsqlstrAsString="Select*from职工表"
DimcomAsSqlClient.SqlCommand=NewSqlClient.SqlCommand(sqlstr,SqlConnection1)
DimflagAsBoolean
SqlConnection1.Open()
DimrAsSqlClient.SqlDataReader=com.ExecuteReader
Whiler.Read
IfTextBox1.Text=r("编号")AndTextBox2.Text=r("姓名")Then
flag=True
EndIf
EndWhile
SqlConnection1.Close()
IfNotflagThen
MessageBox.Show("登录失败,编号或职工姓名错误!
")
Else
Dimf110AsNewForm3
f110.Show()
EndIf
Me.Close()
EndSub
查看基本详细信息的代码如下:
单击按钮2时跳转到Form1界面,定义f113为Form1:
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)
Dimf113AsNewForm1
f113.Show()
EndSub
单击按钮3时链接到数据库的职工表,其中显示的信息与输入的编号相对应:
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
DataSet11.Clear()
SqlDataAdapter1.Fill(DataSet11,"职工表")
DataGrid1.SetDataBinding(DataSet11,"职工表")
DimdvAsDataView=NewDataView(DataSet11.Tables("职工表"))
DimtAsString=TextBox1.Text
Dimt1AsString="'"
Dimt2AsString="'"
dv.RowFilter="编号="&t1&t&t2
DataGrid1.SetDataBinding(dv,"")
EndSub
单击按钮1连接到数据库的职称表,其中的信息与输入的职称名相对应:
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DataSet11.Clear()
SqlDataAdapter2.Fill(DataSet11,"职称表")
DataGrid1.SetDataBinding(DataSet11,"职称表")
DimdvAsDataView=NewDataView(DataSet11.Tables("职称表"))
DimtAsString=TextBox2.Text
Dimt1AsString="'"
Dimt2AsString="'"
dv.RowFilter="职称名="&t1&t&t2
DataGrid1.SetDataBinding(dv,"")
EndSub
单击按钮2链接到数据库中的工龄表,其中显示的工龄数与输入的信息相对应:
PrivateSubButton2_Click_1(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
DataSet11.Clear()
SqlDataAdapter3.Fill(DataSet11,"工龄表")
DataGrid1.SetDataBinding(DataSet11,"工龄表")
DimdvAsDataView=NewDataView(DataSet11.Tables("工龄表"))
DimtAsString=TextBox3.Text
Dimt1AsString="'"
Dimt2AsString="'"
dv.RowFilter="工龄年数="&t1&t&t2
DataGrid1.SetDataBinding(dv,"")
EndSub
单击按钮4时,链接到洗理费表,其中显示的信息与输入的性别相对应:
PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click
DataSet11.Clear()
SqlDataAdapter4.Fill(DataSet11,"洗理费")
DataGrid1.SetDataBinding(DataSet11,"洗理费")
DimdvAsDataView=NewDataView(DataSet11.Tables("洗理费"))
DimtAsString=TextBox4.Text
Dimt1AsString="'"
Dimt2AsString="'"
dv.RowFilter="性别="&t1&t&t2
DataGrid1.SetDataBinding(dv,"")
EndSub
奖惩登录页面的代码如下:
单击按钮2时,清除TextBox1的内容:
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
TextBox1.Clear()
EndSub
单击按钮1时,链接到数据库中的奖惩表,其中显示的信息与输入的编号1相对应:
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DataSet71.Clear()
SqlDataAdapter1.Fill(DataSet71,"奖惩")
DataGrid1.SetDataBinding(DataSet71,"奖惩")
DimdvAsDataView=NewDataView(DataSet71.Tables("奖惩"))
DimtAsString=TextBox1.Text
Dimt1A