数据库课程设计

数据库课程设计

专 业:教育技术学              

题 目:工资管理系统           

班 级:2012级教育技术班        

姓 名:                 

学 号:201201030319           

目录

一、开发背景...................................................... 2

二、功能描述...................................................... 3

三、数据流分析.................................................... 4

3.1数据流图..................................................... 4

3.2数据字典..................................................... 5

四、概念模型设计.................................................. 7

五、逻辑结构设计和优化........................................... 10

六、应用程序设计................................................. 11

七、心得体会..................................................... 13

参考文献.......................................................... 14

附录.............................................................. 14


一、开发背景

随着经济的发展,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。如何设计一个小型企业工资的数据库管理系统,由计算机代替人工执行一系列诸如增加新员工,删除旧员工,工资查询,统计等操作。这样就使办公人员可以轻松快捷地完成工资管理的任务。

对于企、事业单位的工资发放来说,不需要太大型的数据库系统。只需要一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位三方对数据的管理及需求的系统。企业的目标就是在于利用编程软件开发一个功能实用,用户操作方便,简单明了的工资管理程序。

实现工资的集中管理。可供财务人员对本单位的人员以及工资进行增加、删除、修改、查询,对工资发放中的应发工资合计等项目由系统自动进行计算;同时系统还可对员工及工资管理情况进行多角度查询。

基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。企业工资管理系统是典型的信息管理系统(MIS),前台程序开发工具采用微软的VB6,后台数据库采用SQL Server2000数据库。VB6是一种面向对象的开发工具,具有组件丰富、语言简单、功能强大的优点。SQL Server2000数据库具有与VB6无缝连接、操作简单、易于使用的优点

二、功能描述

工资管理系统系是为了更好的实现工资各种信息的管理以及各种信息的安全性管理。本系统主要对查看员工的各种工资信息需求所设计的,可以很好的管理数据。 本系统的主要功能由以下几个部分组成:

经过调研及分析,工资管理信息系统主要完成以下功能:

(1)  管理员身份的确认:只有用户名和用户密码都相符的管理员方可进入本系统,为了防止不合法用户对数据的察看和修改,管理员可以设定用户名、密码和其权限,还可以对纪录进行增加、删除、修改等操作。当管理员要进入系统时必须先输入用户名和密码,按“确认”按钮后,系统辨别管理员身份,对合法管理员赋予权限。

(2)  员工基本信息模块:员工的基本信息。

(3) 工资信息模块:员工每个月度的基本工资、岗位工资、水电费、津贴工资、扣除薪酬、实发金额。

(4) 部门信息模块:公司各部门编号、名称、负责人、人数。

(5) 考勤模块:记录员工迟到、缺席次数。

(6) 津贴模块:记录员工加班情况派发津贴。

(7) 员工信息管理模块:管理员对所需要的资料的查询即对员工基本信息的增加、删除、修改、查询操作。

(8) 员工工资管理模块:管理员对所需要的资料的查询即对员工工资信息的增加、删除、修改、查询操作。

三、数据流分析

3.1数据流图

图3.1 工资管理系统简易数据流图

3.2数据字典

3.2.1  数据结构描述

名称:员工(Employee)

含义说明:员工信息

组成结构:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

名称:工资(Salary)

含义说明:工资信息

组成结构:员工编号+基本工资+岗位工资+水电费+津贴工资+扣除工资+实发工资

名称:部门(branch)

含义说明:部门信息

组成结构:部门编号+部门名称+部门负责人+部门人数

3.2.2  数据流的描述

数据流名称:员工信息添加        简述:新员工信息录入

数据流来源:公司管理者

数据流去向:员工信息

数据流组成:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

数据流名称:员工信息修改    简述:员工信息错误或者员工调动

数据流来源:员工信息

数据流去向:员工信息

数据流组成:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

数据流名称:员工信息删除   简述:员工离职

数据流来源:员工信息

数据流去向:员工信息

数据流组成:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

数据流名称:工资添加        简述:新员工工资添加

数据流来源:公司管理者

数据流去向:工资信息

数据流组成:工号+基本工资+岗位工资+水电费+津贴工资+扣除薪酬+实发金额

数据流名称:工资修改        简述:公司对工资修改

数据流来源:公司管理者

数据流去向:工资信息

数据流组成:工号+基本工资+岗位工资+水电费+津贴工资+扣除薪酬+实发金额

3.2.3  主要数据存储的定义

存储名称:员工记录

       输入:员工基本信息

       输出:员工所有信息

       数据结构:员工编号+姓名+性别+出生年月+所属部门+文化程度+职称

存储名称:部门记录

       输入:部门基本信息

       输出:部门所有信息

       数据结构:部门编号+部门名称+部门负责人+部门人数

存储名称:工资记录

       输入:员工工资信息

       输出:员工所有工资信息

       数据结构:员工编号+基本工资+岗位工资+水电费+津贴工资+扣除工资+实发工资

存储名称:考勤记录

       输入:员工考勤信息

       输出:员工所有考勤信息

       数据结构:员工编号+姓名+性别+迟到次数+缺席次数

存储名称:津贴记录

       输入:员工津贴信息

       输出:员工所有津贴信息

       数据结构:员工编号+姓名+性别+加班时间+加班天数+津贴情况

四、概念模型设计

根据系统数据流图和数据字典,得出系统的概念模型(E-R)如图所示。

图4.1用户信息E-R图

图4.2员工信息E-R图

图4.2部门信息E-R图

图4.3工资信息E-R图

图4.4考勤信息E-R图

图4.5津贴信息E-R图

图4.6工资管理系统总E-R图

五、逻辑结构设计和优化

5.1基本表

关系模式:员工信息(员工编号、姓名、性别、出生年月、所属部门、文化程度、职称)

               部门信息(部门编号、部门名称、部门负责人、部门人数)

               基本工资(工资级别、工资金额)

               岗位工资(工资级别、工资金额)

               工资信息(员工编号、基本工资、岗位工资、水电费、津贴工资、扣除工资、实发金额)

               考勤信息(员工编号、姓名、性别、迟到次数、缺勤次数)

               津贴信息(员工编号、姓名、性别、加班时间、加班天数、加班类型、津贴情况)

               用户信息(用户名、密码、权限)

表5.1员工信息表

表5.2部门信息表

表5.3基本工资表

表5.4岗位工资表

表5.5工资信息表

表5.6考勤信息表

表5.7津贴信息表

表5.8用户信息表

六、应用程序设计

6.1用户了登陆模块

登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是管理员还是普通用户,进入后将面对的是主界面,从而进行相关的操作。

登录的界面主要由用户名和密码的信息,还有一些标题设置,确定和取消的按钮组成。通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。

窗体如下:

图6.1用户登录界面

6.2 主窗体模块

在这个项目中,选择使用多文档界面。使用这个窗体的好处是可以使程序更加有条理。对于一个多任务的应用程序,使用多文档窗体还可以减少占用的系统资源。

主窗体设计的界面是用菜单编辑器做的,主要由系统、工资信息设置、工资信息管理和关于这四个大模块组成。主窗体是进行相关操作的主界面。在这几个里,管理员有所有的权利进行各种操作。窗体如下:

图6.2主窗体界面

七、心得体会

通过这两周的数据库设计,使我们从中受到很大的影响,不仅将大学所学的知识进行了实际应用,还学到了很多书本上学不到的知识。开阔了视野,增长了知识,积累了一些经验和教训。充分锻炼了自己的动手和应用能力,真正做到了理论联系实际。

开发本系统的过程中,首先要对企业工资管理进行系统调研,熟悉企业财务、人事、工资发放管理的流程、步骤;选用开发工具要选用自己最熟悉、应用较多的开发工具,本系统开发选用MS Visual Basic 6.0,其具有语言简单、功能强大、组件众多的优点。程序模块的编制中,重点把握系统内部完整性、功能性、实用性、便捷性,使其能够协调统一、运行无误。运行结果证明,工资管理系统提高了工作效率,节省了人力和物力。

本次程序我主要负责数据库的开发背景和用户登录、主窗体的设计。由于是第一次弄数据库程序设计,对于数据库的流程还不是很清楚,所以很大一部分时间是在网上找资料,来完善我们这次数据库的需求分析。一开始对于我们这个数据库系统的功能模块、数据流图和数据字典都不是很清楚该怎么样来书写和绘图,不过经过进一步的学习终于懂得这些该怎么样写才是正确的,也增强了我自学的积极性。具体我们这个程序应该完成些什么功能还是通过小组共同商讨才确定下来,因为一开始对这次数据库程序设计还很陌生,所以都是在摸索中前进,当然也会遇到很多问题。比如一个功能的实现遇到了困难就会很焦急的面对这个问题。

最后,我们要感谢老师的关心、指导和教诲。再次向所有关心、帮助、理解、支持我们做好数据库课程设计的老师和同学们致以深深的谢意,感谢你们的帮助和关爱!

参考文献

[1] 龚沛曾,陆慰民,杨志强﹒Visual Basic 6.0 程序设计简明教程(6.0版)[M]﹒高等教育出版社﹒2001

[2] 林永,张乐强﹒Visual Basic 用户编程手册(第二版)[M]﹒人民邮电出版社﹒2002

[3] 萨师煊,王珊﹒数据库系统概论(第三版)[M]﹒高等教育出版社﹒2000

[4] 王珊,陈红﹒数据库系统原理教程[M]﹒清华大学出版社﹒1998

[5] 钱雪忠,李京﹒数据库原理及应用(第三版)[M]﹒北京邮电大学出版社﹒2010

[6] 温贤发﹒VB数据库程序设计高手[M]﹒科学出版社﹒2001

附录

登录模块源代码如下:

Private Sub cmd_cancel_Click()

  txt_key.Text = ""

  cmo_user.Text = "请选择"

  Unload Me

End Sub

Private Sub cmd_ok_Click()

  Dim try_times As String

  Dim sql As String

  Dim rst As ADODB.Recordset

  try_times = 0

If (Trim(txt_key.Text) = "") Then

     MsgBox "请输入密码", vbOKOnly + vbExclamation, "提示"

Else

    sql = "select * from 用户表 where 用户名='" & Trim(cmo_user.Text) & "'"

    Set rst = ExecuteSQL(sql, "")

     If Trim(rst.Fields(1)) = Trim(txt_key.Text) Then

        If Trim(rst.Fields(2)) <> "管理员" Then

           frm_main.xitong.Enabled = False '在这里设计非管理员用户的权限,这里我假设让非管理员用户不能用菜单中的‘系统’

           frm_main.shezhi.Enabled = False

           frm_main.xinxiweihu.Enabled = False

        End If

       rst.Close

       UserName = Trim(cmo_user.Text)

       frm_main.Show

       Unload Me

    Else

       MsgBox "密码不正确,请重新输入", vbOKOnly + vbExclamation, "警告"

       txt_key.SetFocus

       txt_key.Text = ""

       try_times = try_times + 1

       Exit Sub '在这里若密码错了应该跳出该过程,否则下面的语句还会执行,这不是你想要的

    End If

 'try_times = try_times + 1 '个人认为密码输入错了才加一,你这样的话,用户名错了也会加一,当然你这里用户名不会错是吧,改得多余了

  If try_times = 3 Then

  Unload Me

  End If

End If

End Sub

Private Sub Form_Load()

      Dim i As Integer

      Dim sql As String

      Dim rst As ADODB.Recordset

      sql = "select 用户名 from 用户表 "

      Set rst = ExecuteSQL(sql, "")

      For i = 1 To rst.RecordCount

      cmo_user.AddItem (rst.Fields(0))

      rst.MoveNext

      Next i

End Sub

主窗体:Private Sub bumenxinxi_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_bumenxinxi.Show

Unload Me

End If

End If

End Sub

Private Sub gangweigongzi_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_gangweigongzi.Show

Unload Me

End If

End If

End Sub

Private Sub jiben_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_jiben.Show

Unload Me

End If

End If

End Sub

Private Sub yonghushanchu_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_tianjiayushanchu.Show

Unload Me

End If

End If

End Sub

Private Sub yonghutianjia_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_tianjiayushanchu.Show

Unload Me

End If

End If

End Sub

Private Sub Form_Load()

      Dim i As Integer

      Dim sql As String

      Dim rst As ADODB.Recordset

      sql = "select 权限 from 用户表 "

      Set rst = ExecuteSQL(sql, "")

      For i = 1 To rst.RecordCount

      rst.MoveNext

      Next i

主窗体模块源代码如下:

Private Sub bumenxinxi_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_bumenxinxi.Show

Unload Me

End If

End If

End Sub

Private Sub gangweigongzi_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_gangweigongzi.Show

Unload Me

End If

End If

End Sub

Private Sub jiben_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_jiben.Show

Unload Me

End If

End If

End Sub

Private Sub yonghushanchu_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_tianjiayushanchu.Show

Unload Me

End If

End If

End Sub

Private Sub yonghutianjia_Click()

Dim sql As String

Dim rst As New ADODB.Recordset

sql = "select * from 用户表 "

Set rst = ExecuteSQL(sql, "")

power = rst.Fields(2)

If Trim(power) <> "管理员" Then

MsgBox "您无权进行该操作!", vbOKOnly + vbExclamation, "警告"

Else

If Trim(power) = "管理员" Then

frm_tianjiayushanchu.Show

Unload Me

End If

End If

End Sub

Private Sub Form_Load()

      Dim i As Integer

      Dim sql As String

      Dim rst As ADODB.Recordset

      sql = "select 权限 from 用户表 "

      Set rst = ExecuteSQL(sql, "")

      For i = 1 To rst.RecordCount

      rst.MoveNext

      Next i

End Sub

相关推荐