资源描述
<p><span id="_baidu_bookmark_start_0" style="display: none; line-height: 0px;"></span>枣 庄 学 院
信息科学与工程学院
课程设计任务书
题目: 人事管理系统
学 号:
姓 名: 赵延芳
专 业: 网络工程
课 程: 数据库系统概论
指导教师: 姜振风 职称: 老师
完毕时间: 2023年11 月----2023年 12月
枣庄学院信息科学与工程学院制
2023 年 11月 17 日
课程设计任务书及成绩评估
规定:
1. 对的使用SQL Server 2023的语句、语法和结构方便了程序设计及对于某些复杂数据的访问
2. 借助VisuaSQL Server等软件完毕这一系列的工作
3. 数据库逻辑结构设计及功能分析独立完毕
指导教师签字: 、 日期:
指导教师评语
成绩: 指导教师签字: 日期:
SQL Server 2023.以及语言编辑软件、、、
课程设计进度计划
起至日期
工作内容
备注
2023年12月13日
设计、编写、调试
参考文献、资料索引
序号
《数据库系统教程》.
《数据库系统概论》
史嘉权
清华大学出版社
目 录
1系统需求分析......................................4
2 系统总体设计
2.1 概述........................................4
2.2 业务分析...................................4
2.3 功能设计....................................5
2.4 概念结构设计...............................6
2.5 逻辑结构设计...............................7
2.6 物理结构设计...............................8
3 数据库表结构设计................................10
4 功能结构设计......................................11
5 相关代码设计与分析................................12
6 总结..............................................17
1 系统需求分析
该人事管理系统的需求具体体现在各种信息的提供、保存、更新和查询,这就规定数据库结构可以充足满足各种信息的输出和输入。收集基本数据、数据结构以及数据解决的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
一直以来人们使用传统人工的方式管理员工档案,这种管理方式存在着许多缺陷,譬如:效率低、保密性差,此外时间一长,将产生大量的文献和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻结识,它已进入人类社会的各个领域并发挥着越来越重要的作用。人事管理信息系统的出现轻而易举的解决了传统管理人员档案的方法的缺陷。随着着人事管理信息系统的广泛应用,它已经成为了任何一家公司公司都不可缺少的组成部分,它的存在使得管理者更容易了解自己公司的员工,便于分派人员,易于进行调整。所以人事管理信息系统可认为管理人员提供充足的信息和快捷的查询手段。
2系统总体设计
2.1概述
一个正常运作的公司必然有一个健全的人事管理系统,来管理员工的信息,涉及员工的编号、姓名、性别、工龄、工资以及奖惩情况。除了这些基本的用处外,此系统还提供员工信息更改或删除等的功能,使公司的人事管理方便快捷而又清楚。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效地程序结构支持各种数据操作的执行。
我们现在介绍的这个人事管理系统是一个非常通用的管理系统。它讲述如何建立一个公司人事管理系统。他可以将关于的一切员工信息记录在案,并且对其进行输入、修改、查询,大大提高了公司员工管理的工作效率。
2.2业务分析
针对一般人事管理系统的需求,通过对人事管理过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:
基本信息涉及:
人员基本信息:编号、姓名、性别、出生日期、参与工作日期住址、电话等;来本单位的日期及来自的单位;职称及评估的时间和工资级别;职工的奖惩登录。
工资的拟定:基本工资与职称和级别有关;职务补贴、房补由职称决定;工龄津贴由工龄决定;洗理费由性别决定;另有每人奖金不同。
查询员工的各项基本信息。
查询每个职工的具体工资清单。
用户管理:信息录入、工资计算的工作人员及普通职工查询自己的信息。
其中系统的整体功能可参考如下的整体功能模块图:
人事管理系统
职工相关功能
管理员相关功能
职工登录
奖惩登录
查看基本信息
查看具体工资清单
查看工龄信息
查看洗理费
奖惩信息查询
管理员登录
职工管理
工资管理
奖惩管理
查询
更新
查询
更新
对职工进行奖惩操作
图2-2整体功能模块图
2.3功能设计
系统开发的整体任务是实现各种信息的系统化、规范化和自动化。
系统功能分析是在系统开发的总体任务的基础上完毕的。本人事管理系统需要完毕的功能重要有:
职工信息的修改、更新和删除,涉及职称、工资、工龄等的变化;
工龄信息的变更会使工龄年数和工龄津贴的数据随之发生变化;
奖惩会根据具体信息的输入而有所变化。
此系统的功能具体体现在各种信息的提供、保存、更新和查询,这就规定数据库结构可以充足满足各种信息的输出和输入。收集基本数据、数据结构以及数据解决的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
根据以上信息按照结构化程序设计的规定,得到如图2-1所示我负责部分的功能模块图。
人事管理系统
管理员相关功能
奖惩管理
工资管理
职工管理
管理员登录
奖惩登录
职工登录
职工相关功能
图2-1 功能模块图(部分)
2.4概念结构设计
人事管理系统概念设计产生的基本E-R模型如图2-4所示。
职工
管理员
工龄表
奖惩
职称表
洗理费
查看
查看修改
查看修改
查看修改
查看
查看
查看
查看修改
编号
金额
编号
电话
性别
出生日期
住址
账号
房补
基本工资
职称名
工资级别
内容
职务补贴
密码
工龄年数
工龄津贴
金额
性别
姓名
图2-3人事管理系统基本E-R图
2.5逻辑结构设计
在逻辑结构设计中重要就是把概念结构设计阶段产生的系统基本E-R图转化为具体的DBMS所支持的数据模型。在该管理系统中,我们采用关系模型来进行分析和设计,将实体、实体的属性和实体之间的联系在遵循转化原则的前提下进行转化,并标出主键。
其中,各实体的属性如下所示:
职工(编号,姓名,性别,出生日期,参与工作,住址,电话,来自本单位的时间,职称名,评估时间,工龄年数)
工龄(工龄津贴,工龄年数)
洗理费(性别,金额)
奖惩(编号,金额,内容)
职称表(职称名,工资级别,基本工资,职务补贴,房补)
管理员(登录账号,密码)
2.6物理结构设计
职工表的创建语句如下:
CREATE TABLE [职工表] (
[编号] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[姓名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[性别] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[出生日期] [datetime] NULL ,
[参与工作日期] [datetime] NULL ,
[住址] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[电话] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[来自本单位的时间] [datetime] NULL ,
[职称名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[评估时间] [datetime] NULL ,
[工龄年数] [int] NULL ,
[编号1] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_职工表] PRIMARY KEY CLUSTERED
(
[编号]
) ON [PRIMARY] ,
CONSTRAINT [FK_职工表_工龄表] FOREIGN KEY
(
[工龄年数]
) REFERENCES [工龄表] (
[工龄年数]
),
CONSTRAINT [FK_职工表_洗理费] FOREIGN KEY
(
[性别]
) REFERENCES [洗理费] (
[性别]
),
CONSTRAINT [FK_职工表_职称表] FOREIGN KEY
(
[职称名]
) REFERENCES [职称表] (
[职称名]
)
) ON [PRIMARY]
GO
职称表的创建语句如下:
CREATE TABLE [职称表] (
[职称名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[工资级别] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[基本工资] [money] NULL ,
[职务补贴] [money] NULL ,
[房补] [money] NULL ,
CONSTRAINT [PK_职称表] PRIMARY KEY CLUSTERED
(
[职称名]
) ON [PRIMARY]
) ON [PRIMARY]
GO
管理员表的创建:
CREATE TABLE [管理员表] (
[登录账号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[密码] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
CONSTRAINT [PK_管理员表] PRIMARY KEY CLUSTERED
(
[登录账号]
) ON [PRIMARY]
) ON [PRIMARY]
GO
工龄表的创建语句如下:
CREATE TABLE [工龄表] (
[工龄年数] [int] NOT NULL ,
[工龄津贴] [money] NULL ,
CONSTRAINT [PK_工龄表] PRIMARY KEY CLUSTERED
(
[工龄年数]
) ON [PRIMARY]
) ON [PRIMARY]
GO
奖惩表的创建语句如下:
CREATE TABLE [奖惩] (
[编号1] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[金额] [money] NULL ,
[内容] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_奖惩] PRIMARY KEY CLUSTERED
(
[编号1]
) ON [PRIMARY] ,
CONSTRAINT [FK_奖惩_职工表] FOREIGN KEY
(
[编号1]
) REFERENCES [职工表] (
[编号]
)
) ON [PRIMARY]
GO
洗理费表的创建语句如下:
CREATE TABLE [洗理费] (
[性别] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[金额] [money] NULL ,
CONSTRAINT [PK_洗理费] PRIMARY KEY CLUSTERED
(
[性别]
) ON [PRIMARY]
) ON [PRIMARY]
GO
3数据库表结构设计
根据数据库的需求分析和概念结构设计,设计了名称为职工的数据库表。表的设计结果如下面各表所示:
表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功能分析
下图为职工信息表的截图,运用此表可以查询、修改、更新等相关信息:
图4-1 职工表
管理员登录账号需要输入账号及密码,当然必须符合以下表对账号和密码的设计规定:
图4-2 管理员表
下面的这个登录界面可提供职工和管理员登录,分别单击职工相关功能和管理员相关功能会出现不同的下拉菜单可供查询或是更改不同的所需信息内容,如下图:
图4-3 登录界面
当在第一个界面点开职工相关功能,单击职工登录会进入下面的界面,只要输入对的的职工编号和职工姓名,单击登录就可进实现更多的信息查询和更改等操作,如下图:
图4-4 职工登录页面
假如输入的职工编号或者职工姓名不匹配,或是不对的、不存在等情况下,系统会弹出对话框提醒登录失败,编号或职工姓名错误,如下图所示:
图4-5 登录失败
假如职工登陆成功的话会进入“欢迎您查看基本具体信息”的界面,再次输入本人的相关信息,编号、职称、工龄、性别,单击不同的按钮则会出现不同的信息,下图为单击“查看基本信息”出现的界面:
图4-6 查看基本信息
下图为单击了“查看具体工资清单”按钮后出现的界面,信息如下:
图4-7 查看具体工资清单
假如在登录界面职工相关功能的下拉菜单中选择奖惩登录,则会进入“欢迎您进入奖惩登录界面”的界面,输入职工编号,单击“查看”按钮,则会出现相应的奖惩信息,如下图所示:
图4-8 奖惩登录界面
以上是我所负责部分功能的分析与介绍,其中涉及SQL Server 数据库中的两个表的创建和Visual Basic.NET中的几个界面的设计与分析。
5相关代码设计与分析
登录界面Form1的部分代码如下:
定义公共类Form1继承系统窗体功能:
Public Class Form1
Inherits System.Windows.Forms.Form
当单击MenuItem5时跳转到Form4 界面,定义f112为Form4:
Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click
Dim f112 As New Form4
f112.Show()
End Sub
当单击MenuItem3时跳转到Form2 界面,定义f111为Form2:
Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
Dim f111 As New Form2
f111.Show()
End Sub
当单击MenuItem4时跳转到Form5 界面,定义f113为Form5:
Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
Dim f113 As New Form5
f113.Show()
End Sub
End Class
职工登录页面Form2的代码如下:
当单击按钮2 的时候,清除TextBox1和TextBox2的内容
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Clear()
TextBox2.Clear()
End Sub
当单击按钮1的时候链接到“职工表”,假如职工编号与姓名存在并匹配则成功登陆,显示Form3界面,否则,弹出对话框“登录失败,编号或职工姓名错误!”。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sqlstr As String = "Select * from 职工表"
Dim com As SqlClient.SqlCommand = New SqlClient.SqlCommand(sqlstr, SqlConnection1)
Dim flag As Boolean
SqlConnection1.Open()
Dim r As SqlClient.SqlDataReader = com.ExecuteReader
While r.Read
If TextBox1.Text = r("编号") And TextBox2.Text = r("姓名") Then
flag = True
End If
End While
SqlConnection1.Close()
If Not flag Then
MessageBox.Show("登录失败,编号或职工姓名错误!")
Else
Dim f110 As New Form3
f110.Show()
End If
Me.Close()
End Sub
查看基本具体信息的代码如下:
单击按钮2时跳转到Form1界面,定义f113为Form1:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim f113 As New Form1
f113.Show()
End Sub
单击按钮3时链接到数据库的职工表,其中显示的信息与输入的编号相相应:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
DataSet11.Clear()
SqlDataAdapter1.Fill(DataSet11, "职工表")
DataGrid1.SetDataBinding(DataSet11, "职工表")
Dim dv As DataView = New DataView(DataSet11.Tables("职工表"))
Dim t As String = TextBox1.Text
Dim t1 As String = "'"
Dim t2 As String = "'"
dv.RowFilter = "编号=" & t1 & t & t2
DataGrid1.SetDataBinding(dv, "")
End Sub
单击按钮1连接到数据库的职称表,其中的信息与输入的职称名相相应:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataSet11.Clear()
SqlDataAdapter2.Fill(DataSet11, "职称表")
DataGrid1.SetDataBinding(DataSet11, "职称表")
Dim dv As DataView = New DataView(DataSet11.Tables("职称表"))
Dim t As String = TextBox2.Text
Dim t1 As String = "'"
Dim t2 As String = "'"
dv.RowFilter = "职称名=" & t1 & t & t2
DataGrid1.SetDataBinding(dv, "")
End Sub
单击按钮2链接到数据库中的工龄表,其中显示的工龄数与输入的信息相相应:
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DataSet11.Clear()
SqlDataAdapter3.Fill(DataSet11, "工龄表")
DataGrid1.SetDataBinding(DataSet11, "工龄表")
Dim dv As DataView = New DataView(DataSet11.Tables("工龄表"))
Dim t As String = TextBox3.Text
Dim t1 As String = "'"
Dim t2 As String = "'"
dv.RowFilter = "工龄年数=" & t1 & t & t2
DataGrid1.SetDataBinding(dv, "")
End Sub
单击按钮4时,链接到洗理费表,其中显示的信息与输入的性别相相应:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
DataSet11.Clear()
SqlDataAdapter4.Fill(DataSet11, "洗理费")
DataGrid1.SetDataBinding(DataSet11, "洗理费")
Dim dv As DataView = New DataView(DataSet11.Tables("洗理费"))
Dim t As String = TextBox4.Text
Dim t1 As String = "'"
Dim t2 As String = "'"
dv.RowFilter = "性别=" & t1 & t & t2
DataGrid1.SetDataBinding(dv, "")
End Sub
奖惩登录页面的代码如下:
单击按钮2时,清除TextBox1的内容:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Clear()
End Sub
单击按钮1时,链接到数据库中的奖惩表,其中显示的信息与输入的编号1相相应:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataSet71.Clear()
SqlDataAdapter1.Fill(DataSet71, "奖惩")
DataGrid1.SetDataBinding(DataSet71, "奖惩")
Dim dv As DataView = New DataView(DataSet71.Tables("奖惩"))
Dim t As String = TextBox1.Text
Dim t1 As String = "'"
Dim t2 As String = "'"
dv.RowFilter = "编号1=" & t1 & t & t2
DataGrid1.SetDataBinding(dv, "")
End Sub
6总结
课程设计是一个对学生实际工作能力的具体训练和考察过程。通过这次的课程设计,我学到了很多很多的的东西,同时不仅巩固了以前所学过的知识,也学到了很多在书本上所没有学到过的知识。
这次数据库课程设计给我的最大感触就是合作的力量努力对知识进一步的分析和理解,及彼此的沟通交流还是可以得到统一,达成较抱负的双方都很满意的效果。完毕了这份工作,当然尚有指导老师的悉心指导、鼓励和支持,在此表达感谢。</p>
展开阅读全文