人力资源管理系统设计方案_第1页
人力资源管理系统设计方案_第2页
人力资源管理系统设计方案_第3页
人力资源管理系统设计方案_第4页
人力资源管理系统设计方案_第5页
已阅读5页,还剩82页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、人力资源管理系统设计方案人力资源管理系统21世纪是知识经济的时代,经济实力的竞争更多地表现在人才的培养、争夺与竞争。如何有效地对员工实施宏观管理,对企事业单位的构成情况和发展趋势进行统计、规划、分析、预测,根据分析的结果制定切实可行的人事政策,是一项繁重而艰巨的任务。传统的人力资源管理方式和手段主要以“工作”为核心,抑制了人的能动性,不利于工作质量的改进和工作效率的提高,它往往注重事务性操作,不利于开发人员潜在能力。而且它主要依赖于手工操作,效率低下,不利于企事业单位的快速发展。所以,企业在一般日常工作中需要一套人力资源管理系统,以便它能够基于现代人力资源管理的理念,结合中国行业主管机关的人力

2、资源管理经验,将现代化的信息技术引入企业人力资源管理工作,使它能够寻求“人”与“工作”相互适应的契合点,将“人”的发展与企业的发展有机地联系起,以便于对企业人员组成、考勤情况、工作评估和工资信息进行管理。12.1概述现代企业对人力资源管理越来越重视,主要是现在人们认为在人类所拥有的一切资源中,人力资源是最宝贵的,这是现代管理的核心。不断提高人力资源开发与管理的水平,不仅是当前发展经济、提高市场竞争力的需要,也是一个国家、一个民族、一个地区、一个单位长期兴旺发达的重要保证,更是一个现代人充分开发自身潜能、适应社会、改造社会的重要指施。信息技术的发展,让众多管理者意识到科技的应用对提高人力资源管理

3、工作效率的重要意义,因此,人力资源管理信息系统往往广泛应用于工业、商业、企业、事业和政等单位,几乎每个进行了信息化建设的单位都具有人力资源管理信息系统。本章的内容结合最新的VisualBasic2005编程技术和SQLServer2005数据库技术开发人力资源管理系统。开发完成的人力资源管理系统的主界面如图12-1所示。图12-1人力资源管理系统的主界面ASP.NET2简明教程由界面可以看出,系统分为6大模块:用户管理、部门管理、员工管理、考勤管理、考评管理和工资管理。单击界面上面不同模块的按钮,可以进入该模块的界面,对相应的信息进行操作。本系统是只是从实际系统中提取出来的一个简单的管理系统。

4、具体到不同的企业,会有不同的需求,这里只是起一个抛砖引玉的作用。希望读者在本章的学习基础上,开发出适用于不同企业或公司的人力资源管理系统。人力资源管理系统作为数据库信息管理系统的一种应用,其开发流程包括孺求分析、系统设计、数据库分析和设计以及各功能模块的开发等,将在随后几节分别讲述。12.2需求分析需求分析是数据库系统开发的第一步也是最重要的一步。对于人力资源管理系统也不例外。软件开发的目的是为了满足客户的需求,因此,客户需求是否正确理解成了项目成败的关键。试想,如果我们不清楚自己要实现的程序功能,或者不清楚客户所需要的功能,那么我们的工作将会失去方向,或者走了弯路。需求分析就是描述系统的需求

5、。分析的根本目的是在开发者和提出需求的用户之间建立一种理解和沟通的机制,因此,人力资源管理系统的需求分析也应该是由开发人员和用户或者客户一起完成的。下面是一份经过压缩后的人力资源管理系统的需求说明文本,这里只列出比较关键的部分。(1)系统需要对不同的用户给出不同的权限,比如,公司董事长应该可以看到公司的所有信息;公司的人事管理者只能进行部门管理、员工管理、考勤管理和考评管理,他不能看到各个员工的工资信息;公司的财务管理者不能进行部门管理、员工管理、考勤管理和考评管理,他只能看到和操作各个员工的工资信息;公司还有一个超级管理者,添加用户,并为其余人员分配各种权限。(2)系统在公司新成立部门之后,

6、人事管理者负责建立主管和人数等各个部门的基本信息,如果取消了一个部门,人事管理者负责删除,如果部门人数等信息有变化,人事管理者负责更新,以便它反映最真实的情况。管理者可以查询各部门的主管和人数等信息。(3)系统在员工进入公司时,人事管理者为员工建立人事档案,人事档案应该包含员工报到的时间、员工姓名、员工所在部门和员工的家庭成员和学习/工作经历以及其他基本信息等,如果员工获得了晋升和调岗,可以对用户的基本信息进行修改,另外,可以方便的查询和浏览员工的基本信息,浏览时,通过双击员工的基本信息,可以看到员工的家庭成员和学习/工作经历。(4)员工到公司上班时应该刷卡签到,签到的信息能够自动转到人力资源

7、管理系统:离开公司时刷卡,下班的信息也能够自动转到人力资源管理系统。如果办事外出或者出差应由上级领导确认考勤情况。缺勤或者迟到按一定数额罚款。加班后可以调休,也可以发放相应的工资。(5)员工的考评由部门主管和人事人员决定,通过部门主管的评价来得到一个系第1章ASP.NET概述3数,通过人事人员的评价得到一个系数,这两个系数,共同决定了员工的年终奖和工资的增长幅度。(6)员工的工资包括基本工资和奖金两个部分。员工实际得到的工资是总工资加上加班费,扣除保险和个人所得税等之后的部分。(7)系统运行在windows平台上,要求有一个较好的图形用户界面,操作要求简单。(8)系统应该有很好的可扩展性,以便

8、企业根据实际情况添加新的功能。12.3系统设计在上节,已经对本系统的需求做了详细的阐述,本节在系统的需求分析的基础上,对人事管理系统做系统设计。主要解决实现该系统需求的程序模块设计问题。本系统的开发宗旨和总体任务就是要实现人力资源管理的信息交流上的自动化、规范化和系统化。本章的人力资源管理系统需要完成的功能有用户管理、部门管理、员工管理、考勤管理、考评管理和工资管理六个部分:?用户管理:该功能用于管理使用该系统的用户,以及按模块进行权限的分配,从而为系统提供一定的安全性。使用这个系统的用户主要包括四种,一是公司的总经理,负责浏览公司的各种信息;一个是人事人员,负责部门管理、员工管理、考勤管理和

9、考评管理;一个是财务人员,负责员工的工资管理;最后一个是系统管理员,负责添加用户以及权限分配。?部门管理:添加、修改、删除和查询部门信息。?员工管理:添加、修改、删除和查询员工信息。员工的信息除了本身的基本信息,还包括家庭成员的信息和学习/工作经历信息。在查询员工信息的时候,应该可以很容易的看到家庭成员的信息和学习/工作经历信息。在删除员工信息的同时,需要把该员工的考勤信息、考评信息和工资信息删除。?考勤管理:添加、修改和查询员工的考勤信息。在添加或修改考勤信息时,要求在界面中能够比较方便地选择企业的员工。?考评管理:添加、修改和查询员工的考评信息。同样要求在添加或修改考勤信息时,在界面中能够

10、比较方便地选择企业的员工。并且提供人事部门对员工的考评和上级员工对下级员工考评的两种模式。?工资管理:添加、修改和查询员工的员工工资,在这个模块需要对考评、考勤信息进行统计,最后得出员工的工资信息。对上述各项功能进行集中、分块和结构化,得到如图12-2所示的系统功能模块图。ASP.NET4简明教程人力资源管理系统工考用部员考资评户门工勤管管管管管管理理理理理理修添修删修删添修查添查修查添修查删添查修添改加改除改除加改询加询改询加改询除加询改加用用用部员用部部部员员考考考考考员考员员员户户户门工户门门门工工勤勤评评评工勤工工工密信信信信信信信信信信信信信信信信信工工工码息息息息息息息息息息息息息

11、息息息息资资资图12-2人力资源管理系统功能模块图12.4数据库设计完成系统设计后,要进行的工作就是数据库设计。数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构可以提高数据库存储效率,保证数据的完整和一致性。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有系统的以及将来可能增加的需求。12.4.1数据库的需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础

12、。在走访,调查和讨论具体客户对企业人力资源管理系统的需求后,经过仔细分析,得到如图12-3所示的业务流程图和12-4所示的数据流图。第1章ASP.NET概述5登录系统是否具有用户是进行用户管理操作管理模块的权限否是是否具有部门进行部门管理操作管理模块的权限否是是否具有员工进行员工管理操作管理模块的权限否是是否具有考勤进行考勤管理操作管理模块的权限否是是否具有考评进行考评管理操作管理模块的权限否是是否具有工资进行工资管理操作管理模块的权限否退出系统图12-3企业人力资源管理业务流程ASP.NET6简明教程员工登记基本信息录入员工基本信息管理工作评价管理考勤管理工资管理员工工资图12-4企业人力资

13、源管理数据流图首先是用户登录系统,这是进入系统前必须进行的操作。登录后系统将记录用户的信息,并读取用户的权限信息。然后用户可以进入用户管理模块,这个是可选的操作。在这里一般用户只有修改密码的权限,其他权限是超级用户所具有的。这里按5个模块来划分用户的权限,部门管理模块、员工管理模块、考勤管理模块、考评管理模块和工资管理模块。如果用户具有相应模块的权限,就可以对该模块进行管理。在这些操作都完成后,可以退出系统。针对企业人力资源管理系统的需求,通过对系统的业务流程和数据流程的分析,需要设计如下所示的数据字段和数据表。?用户信息表,包括的数据字段有:用户名、密码、用户编号、电子邮箱、联系电话、权限、

14、家庭地址。其中用户编号是关键字段。?部门信息表,包括的数据字段有:部门编号、部门名称、部门主管、部门人数、部门描述和上级部门。其中部门编号是关键字段。?员工信息表,包括的数据字段有:工号、姓名、性别、民族、出生日期、政治面第1章ASP.NET概述7貌、学历、婚姻状况、身份证号、部门编号、工作岗位、部门主管、办公电话、手机、邮箱、籍贯、家庭住址、邮政编码、户口所在地、档案所在地、基本工资、转正日期、劳动合同日期和报到日期。其中工号是关键字段。?家庭成员信息表,包括的数据字段有:编号、姓名、称呼、员工编号、性别、出生日期、民族和政治面貌。其中编号是关键字段。?学习/工作经历信息表,包括的数据字段有

15、:编号、开始日期、截止日期、员工编号、职务、地点、获奖状况。其中编号是关键字段。?考勤信息表,包括的数据字段有:序号、年度、月份、部门编号、员工编号、姓名、当月天数、全勤天数、病假天数、事假天数、旷工天数、法定休假天数、调休天数、出差天数、迟到天数、早退天数、延时加班天数和休息日加班天数。其中序号是关键字段。?考评信息表,包括的数据字段有:序号、年度、月份、部门编号、员工编号、姓名、主管评价、奖金系数,、人事评价、奖金系数,和工作业绩。其中序号是关键字段。?工资信息表,包括的数据字段有:序号、年度、月份、部门编号、员工编号、姓名、基本工资、本月奖金、加班费、迟到扣款、事假扣款、差旅补助、养老代

16、扣、基本医疗代扣、失业保险代扣、住房公积金代扣、个人所得税、医药费报销和实发工资。其中序号是关键字段。有了上面的数据结构,数据字段和数据流程,下面进行数据库的逻辑结构设计。12.4.2数据库逻辑结构设计现在需要将上面的数据库概念结构转化为SQLServer2005数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。根据数据库的需求分析和概念结构设计,设计了名称为HumanResource的数据库。数据库由下面多个表组成,每个表格表示在数据库中的一个表。各个表的设计结果如下面的表格所示。表12-1为用户信息表,命名为tbUser。表12-1用户信息表字段名字段类型字段大小可否为空关键字用户名

17、nchar6NOTNULL密码nchar16NOTNULL用户编号是nchar3NOTNULL电子邮箱nchar20NULL联系电话nchar20NULL权限nchar10NOTNULL家庭地址nchar50NULL表12-2为部门信息表,命名为Department。ASP.NET8简明教程表12-2部门信息表字段名字段类型字段大小可否为空关键字部门编号是nvarchar20NOTNULL部门名称nvarchar20NOTNULL部门主管nvarchar10NOTNULL部门人数int4NOTNULL部门描述nvarchar100NULL上级部门nvarchar11NULL表12-3为员工信息

18、表,命名为Employee。表12-3员工信息表字段名字段类型字段大小可否为空关键字工号是nvarchar20NOTNULL姓名nvarchar20NOTNULL性别nvarchar10NOTNULL民族nvarchar5NOTNULL出生日期datetime8NOTNULL政治面貌nvarchar4NOTNULL学历nvarchar5NOTNULL婚姻状况nvarchar4NOTNULL身份证号nvarchar20NOTNULL部门编号nvarchar20NOTNULL工作岗位nvarchar20NOTNULL部门主管nvarchar10NOTNULL办公电话nvarchar15NOTNUL

19、L手机nvarchar11NULL邮箱nvarchar20NOTNULL籍贯nvarchar50NOTNULL家庭住址nvarchar50NOTNULL邮政编码nvarchar6NOTNULL户口所在地nvarchar50NOTNULL档案所在地nvarchar50NOTNULL基本工资money8NOTNULL转正日期datetime8NOTNULL劳动合同日期datetime8NOTNULL报到日期datetime8NOTNULL工龄smallint2NOTNULL表12-4为考勤信息表,命名为Worktime。第1章ASP.NET概述9表12-4考勤信息表字段名字段类型字段大小可否为空关

20、键字序号是int4NOTNULL年度nvarchar20NOTNULL月份nvarchar10NOTNULL部门编号nvarchar20NOTNULL员工编号nvarchar20NOTNULL姓名nvarchar10NOTNULL当月天数nvarchar15NOTNULL全勤天数smallint2NOTNULL病假天数smallint2NULL事假天数smallint2NULL旷工天数smallint2NULL法定休假天数smallint2NOTNULL调休天数smallint2NULL出差天数smallint2NULL迟到天数smallint2NULL早退天数smallint2NULL延时加

21、班天数smallint2NULL休息日加班天数smallint2NULL表12-5为考评信息表,命名为Evaluation。表12-5考评信息表字段名字段类型字段大小可否为空关键字序号是intUncheckedNOTNULL年度nvarcharUncheckedNOTNULL月份nvarcharUncheckedNOTNULL部门编号nvarcharUncheckedNOTNULL员工编号nvarcharUncheckedNOTNULL姓名nvarcharUncheckedNOTNULL主管评价ncharUncheckedNOTNULL奖金系数1floatCheckedNULL人事评价ncha

22、rUncheckedNOTNULL奖金系数2smallintCheckedNULL工作业绩nvarcharCheckedNULL表12-6为工资信息表,命名为Salary。ASP.NET10简明教程表12-6工资信息表字段名字段类型字段大小可否为空关键字序号是intUncheckedNOTNULL年度nvarcharUncheckedNOTNULL月份nvarcharUncheckedNOTNULL部门编号nvarcharUncheckedNOTNULL员工编号nvarcharUncheckedNOTNULL姓名nvarcharUncheckedNOTNULL基本工资moneyUnchecke

23、dNOTNULL本月奖金moneyCheckedNULL加班费moneyCheckedNULL迟到扣款moneyCheckedNULL事假扣款moneyCheckedNULL差旅补助moneyCheckedNULL养老代扣moneyCheckedNULL基本医疗代扣moneyCheckedNULL失业保险代扣moneyCheckedNULL住房公积金代扣moneyCheckedNULL个人所得税moneyUncheckedNOTNULL医药费报销moneyCheckedNULL实发工资moneyUncheckedNOTNULL表12-7为家庭成员信息信息表,命名为EmpFamily。表12-7

24、家庭成员信息信息表字段名字段类型字段大小可否为空关键字编号是nvarchar30NOTNULL姓名nvarchar20NOTNULL称呼nvarchar10NOTNULL员工编号nvarchar20NOTNULL性别nvarchar2NOTNULL出生日期datetime8NOTNULL民族nvarchar11NOTNULL政治面貌nvarchar11NOTNULL工作单位nvarchar50NOTNULL表12-8为学习经历/工作经历信息表,命名为Study。第1章ASP.NET概述11表12-8学习经历及工作经历信息表字段名字段类型字段大小可否为空关键字编号是nvarchar30NOTNU

25、LL开始日期datetime8NOTNULL截止日期datetime9NOTNULL员工编号nvarchar20NOTNULL职务nvarchar10NOTNULL地点nvarchar20NOTNULL获奖状况nvarchar20NULL12.5数据库结构的实现经过前面的需求分析和概念结构设计以后,读者了解到数据库的逻辑结构和系统的程序结构。下面通过程序代码中来创建数据库和数据表。12.5.1创建数据库本系统的数据库的创建在程序代码中完成。在主窗体调用时,我们需要判断数据库是否存在,如果不存在则创建它。创建数据库的代码如下:DimconnStrAsString=Server=localhost

26、;DataBase=master;IntegratedSecurity=SSPIDimconnAsSqlConnection=NewSqlConnection(connStr)conn.Open()DimstrAsString=Select*fromsysDatabaseswherename=HumanResourceDimcommandAsSqlCommand=NewSqlCommand(str,conn)DimreaderAsSqlDataReader=command.ExecuteReader()IfNotreader.HasRows()ThenIfMessageBox.Show(数据库

27、尚未创建,是否创建数据库,创建数据库,MessageBoxButtons.YesNo,_MessageBoxIcon.Question)=Windows.Forms.DialogResult.NoThenClose()EndIfDimbSucceedAsBoolean=mdlCreateDataBase.CreateDatabase(connStr,HumanResource,HumanResource_data,_C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDataHumanResource_data.mdb,HumanResource_Log,_

28、C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDataHumanResource_Log.ldf)ASP.NET12简明教程IfbSucceedThenMessageBox.Show(创建数据库成功,创建数据库,MessageBoxButtons.OK,MessageBoxIcon.Information)ElseMessageBox.Show(创建数据库失败,创建数据库,MessageBoxButtons.OK,MessageBoxIcon.Error)EndIfEndIfconn.Close()数据库创建完毕后,我们只是得到一个空数据库,还需要在数

29、据库中增加表。下面对表的创建进行详细介绍。12.5.2创建部门表在主窗体中,选择“部门管理”按钮,将弹出“部门管理”窗体,以便对部门信息进行编辑和查询。但程序第一次运行时,部门表可能还没有创建,我们需要首先判断该表是否存在,如果不存在,则创建它。具体代码如下:DimconnStrAsString=Server=localhost;DataBase=HumanResource;IntegratedSecurity=SSPIDimconnAsSqlConnection=NewSqlConnection(connStr)conn.Open()DimstrAsString=Select*fromSys

30、ObjectsWhereid=Object_Id(Department)DimcommandAsSqlCommand=NewSqlCommand(str,conn)DimreaderAsSqlDataReader=command.ExecuteReader()IfNotreader.HasRows()ThenIfMessageBox.Show(部门表尚未创建,是否创建该表,创建部门表,MessageBoxButtons.YesNo,_MessageBoxIcon.Question)=Windows.Forms.DialogResult.NoThenReturnEndIf设置数据表的字段信息Di

31、mstrSQLAsString=_CREATETABLEDepartment(&_部门编号NVarChar(20)NOTNULL,&_部门名称NVarChar(20)NOTNULL,&_部门主管NVarChar(10)NOTNULL,&_部门人数IntNOTNULL,&_第1章ASP.NET概述13部门描述NVarChar(100)NOTNULL,&_上级部门NVarChar(11)NOTNULL,&_CONSTRAINTPK_DepartmentPRIMARYKEYCLUSTERED&_(部门编号)DimbSucceedAsBoolean=mdlCreateTable.CreateTable

32、(connStr,strSQL)IfbSucceedThenMessageBox.Show(创建表成功,创建表,MessageBoxButtons.OK,MessageBoxIcon.Information)ElseMessageBox.Show(创建表失败,创建表,MessageBoxButtons.OK,MessageBoxIcon.Error)conn.Close()ReturnEndIfEndIfconn.Close()由于此时数据库已经创建,我们可以在代码中指定数据库连接信息为:DimconnStrAsString=Server=localhost;DataBase=HumanRes

33、ource;IntegratedSecurity=SSPI。然后在SysObjects表中查询表Department是否存在。SysObjects表是数据库的系统表,用于保存数据库中所有表的信息。如果Department表存在,则执行ExecuteReader后,SqlDataReader中行数应该为1,否则说明该表不存在。创建表的模块mdlCreateTable前面已经介绍过,在本系统中略做修改,所做的修改将在后面“公用模块的设计”一节中进行介绍,这里暂不介绍。现在让我们来看员工表的创建过程。12.5.3创建员工表在主窗体中,选择“员工管理”按钮,将弹出“员工管理”窗体,以便对员工信息进行编

34、辑和查询。和Department表类似,程序第一次运行时,Employee表也可能没有创建。由于Employee表中包含部门信息,所以创建Employee表之前要先创建Department表,否则会导致数据不一致。该表的创建代码如下所示:DimconnStrAsString=Server=localhost;DataBase=HumanResource;IntegratedSecurity=SSPIDimconnAsSqlConnection=NewSqlConnection(connStr)conn.Open()DimstrAsString=Select*fromSysObjectsWher

35、eid=Object_Id(Department)DimcommandAsSqlCommand=NewSqlCommand(str,conn)DimreaderAsSqlDataReader=command.ExecuteReader()IfNotreader.HasRows()ThenASP.NET14简明教程MessageBox.Show(部门表尚未创建,请先创建部门表,创建员工表,MessageBoxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Objec

36、t_id(Employee)command=NewSqlCommand(str,conn)reader=command.ExecuteReader()IfNotreader.HasRows()ThenIfMessageBox.Show(员工表尚未创建,是否创建该表,创建员工表,MessageBoxButtons.YesNo,_MessageBoxIcon.Question)=Windows.Forms.DialogResult.NoThenReturnEndIf设置数据表的字段信息DimstrSQLAsString=_CREATETABLEEmployee(&_工号NVarChar(20)NO

37、TNULL,&_姓名NVarChar(20)NOTNULL,&_性别NVarChar(10)NOTNULL,&_民族NVarChar(5)NOTNULL,&_出生日期datetime,&_政治面貌NVarChar(4)NOTNULL,&_学历NVarChar(5)NOTNULL,&_婚姻状况NVarChar(4)NOTNULL,&_身份证号NVarChar(20)NOTNULL,&_部门编号NVarChar(20)NOTNULLREFERENCESDepartment(部门编号),&_工作岗位NVarChar(20)NOTNULL,&_部门主管NVarChar(10)NOTNULL,&_办公电

38、话NVarChar(15)NOTNULL,&_手机NVarChar(11)NOTNULL,&_邮箱NVarChar(20)NOTNULL,&_籍贯NVarChar(50)NOTNULL,&_家庭住址NVarChar(50)NOTNULL,&_邮政编码NVarChar(6)NOTNULL,&_户口所在地NVarChar(50)NOTNULL,&_档案所在地NVarChar(50)NOTNULL,&_基本工资moneyNOTNULL,&_奖金moneyNOTNULL,&_第1章ASP.NET概述15转正日期datetimeNOTNULL,&_劳动合同日期datetimeNOTNULL,&_报到日期

39、datetimeNOTNULL,&_工龄SmallIntNOTNULL,&_CONSTRAINTPK_EmployeePRIMARYKEYCLUSTERED(工号)DimbSucceedAsBoolean=mdlCreateTable.CreateTable(connStr,strSQL)IfbSucceedThenMessageBox.Show(创建表成功,创建表,MessageBoxButtons.OK,MessageBoxIcon.Information)ElseMessageBox.Show(创建表失败,创建表,MessageBoxButtons.OK,MessageBoxIcon.E

40、rror)conn.Close()ReturnEndIfEndIfconn.Close()该表中,如代码所示,我们设置该表的“部门编号”字段为Department表的外键,这就是我们为什么在创建该表之前先判断Department表是否存在,如果不存在则退出创建过程。需要注意的是,在根据SqlDataReader的行数判断Department是否存在之后,必须先关闭SqlDataReader才能再次使用它判断Employee表是否存在。12.5.4创建考勤表在主窗体中,选择“考勤管理”按钮,将弹出“考勤管理”窗体,以便对员工信息进行编辑和查询。和前面类似,程序第一次运行时,Worktime表也可

41、能没有创建。由于该表包含Department和Employee表的信息,若这两个表有一个没有创建,则不能创建该表。创建该表的代码如下:DimconnStrAsString=Server=localhost;DataBase=HumanResource;IntegratedSecurity=SSPIDimconnAsSqlConnection=NewSqlConnection(connStr)conn.Open()DimstrAsString=Select*fromSysObjectsWhereid=Object_Id(Department)DimcommandAsSqlCommand=NewS

42、qlCommand(str,conn)DimreaderAsSqlDataReader=command.ExecuteReader()IfNotreader.HasRows()ThenMessageBox.Show(部门表尚未创建,请先创建部门表,创建考勤表,MessageBoxButtons.OK,MessageBoxIcon.Error)ASP.NET16简明教程ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Object_id(Employee)command=NewSqlCommand(str,conn)reader=

43、command.ExecuteReader()IfNotreader.HasRows()ThenMessageBox.Show(员工信息表尚未创建,请先创建员工信息表,创建考勤表,MessageBoxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Object_id(Worktime)command=NewSqlCommand(str,conn)reader=command.ExecuteReader()IfNotreader.HasRows()ThenIfMes

44、sageBox.Show(考勤表尚未创建,是否创建该表,创建考勤表,MessageBoxButtons.YesNo,_MessageBoxIcon.Question)=Windows.Forms.DialogResult.NoThenReturnEndIf设置数据表的字段信息DimstrSQLAsString=_CREATETABLEWorktime(&_序号intIDENTITY(1,1)PRIMARYKEY,&_年度NVarChar(20)NOTNULL,&_月份NVarChar(10)NOTNULL,&_部门编号NVarChar(20)NOTNULLREFERENCESDepartmen

45、t(部门编号),&_员工编号NVarChar(20)NOTNULLREFERENCESEmployee(工号),&_姓名NVarChar(10)NOTNULL,&_当月天数NVarChar(15)NOTNULL,&_全勤天数SmallInt,&_病假天数SmallInt,&_事假天数SmallInt,&_旷工天数SmallInt,&_法定休假天数SmallInt,&_第1章ASP.NET概述17调休天数SmallInt,&_出差天数SmallInt,&_迟到天数SmallInt,&_早退天数SmallInt,&_延时加班天数SmallInt,&_休息日加班天数SmallInt)DimbSucc

46、eedAsBoolean=mdlCreateTable.CreateTable(connStr,strSQL)IfbSucceedThenMessageBox.Show(创建表成功,创建表,MessageBoxButtons.OK,MessageBoxIcon.Information)ElseMessageBox.Show(创建表失败,创建表,MessageBoxButtons.OK,MessageBoxIcon.Error)conn.Close()ReturnEndIfEndIfreader.Close()conn.Close()从代码中可以看出,这次我们设置该表的“部门编号”和“员工编号”

47、字段分别为Department表和Employee表的外键。如果这两个表有一个不存在,则退出创建过程。前面我们提到创建Employee表之前必须先创建Department表,这里还对Department表是否存在进行判断似乎显得多余,因为如果Empoyee表不存在,则必然要退出创建过程;如果Employee表存在,在Department表必然存在,也没有必要判断。其实不然,读者大概会注意到,前面我们在提到程序第一次运行时,总是这样说“如果数据库不存在”、“如果表不存在”,因为我们无法阻止系统用户使用SQLSERVER手动创建数据库和表,这是完全合理的要求,所以即便是程序第一次运行也不能确定数据

48、库和表不存在。同样,我们也不能要求用户会在创建Employee表之前创建Department表。因此,这里判断Department表是否存在还是必要的。12.5.5创建考评表Evaluation表和考勤表类似,也是只有在创建Department表和Employee表之后才能创建它。创建Evaluation的代码如下:DimconnStrAsString=Server=localhost;DataBase=HumanResource;IntegratedSecurity=SSPIDimconnAsSqlConnection=NewSqlConnection(connStr)conn.Open()

49、DimstrAsString=Select*fromSysObjectsWhereid=Object_Id(Department)ASP.NET18简明教程DimcommandAsSqlCommand=NewSqlCommand(str,conn)DimreaderAsSqlDataReader=command.ExecuteReader()IfNotreader.HasRows()ThenMessageBox.Show(部门表尚未创建,请先创建部门表,创建考评表,MessageBoxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close

50、()str=Select*fromSysObjectsWhereid=Object_id(Employee)command=NewSqlCommand(str,conn)reader=command.ExecuteReader()IfNotreader.HasRows()ThenMessageBox.Show(员工信息表尚未创建,请先创建员工信息表,创建考评表,MessageBoxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Object_id(Evaluati

51、on)command=NewSqlCommand(str,conn)reader=command.ExecuteReader()IfNotreader.HasRows()ThenIfMessageBox.Show(考评表尚未创建,是否创建该表,创建考评表,MessageBoxButtons.YesNo,_MessageBoxIcon.Question)=Windows.Forms.DialogResult.NoThenReturnEndIf设置数据表的字段信息DimstrSQLAsString=_CREATETABLEEvaluation(&_序号intIDENTITY(1,1)PRIMARY

52、KEY,&_年度NVarChar(20)NOTNULL,&_月份NVarChar(10)NOTNULL,&_部门编号NVarChar(20)NOTNULLREFERENCESDepartment(部门编号),&_员工编号NVarChar(20)NOTNULLREFERENCESEmployee(工号),&_姓名NVarChar(10)NOTNULL,&_第1章ASP.NET概述19主管评价ncharNOTNULL,&_奖金系数,float,&_人事评价ncharNotNull,&_奖金系数,SmallInt,&_工作业绩NVarChar(200)DimbSucceedAsBoolean=mdl

53、CreateTable.CreateTable(connStr,strSQL)IfbSucceedThenMessageBox.Show(创建表成功,创建表,MessageBoxButtons.OK,MessageBoxIcon.Information)ElseMessageBox.Show(创建表失败,创建表,MessageBoxButtons.OK,MessageBoxIcon.Error)conn.Close()ReturnEndIfEndIfreader.Close()conn.Close()从代码中可以看到,我们使用IDENTITY设置表的主键。IDENTITY在表中创建一个标识列,

54、此属性与CREATETABLE及ALTERTABLETransact-SQL语句一起使用。该属性的语法为:IDENTITY(seed,increment),其中seed表示装载到表中的第一个行使用的值;increment表示与前一个加载的行的标识值相加的增量值。需要注意的是,必须同时指定种子和增量,或者二者都不指定。如果二者都未指定,则取默认值(1,1)。12.5.6创建工资表对于员工来说,再也没有比工资更重要的事了,但工资可不是轻易就可以到手的。仅仅员工(Employee表中一行)在部门(Department表中的一行)上班可不够,还得通过考评和考勤这两关。所以,建立Worktime表和Ev

55、aluation表信息之前,就不要指望可以建立Salary表了。当然,Employee表和Department表也是必须的。创建该表的代码如下:DimconnStrAsString=Server=localhost;DataBase=HumanResource;IntegratedSecurity=SSPIDimconnAsSqlConnection=NewSqlConnection(connStr)conn.Open()DimstrAsString=Select*fromSysObjectsWhereid=Object_Id(Department)DimcommandAsSqlCommand

56、=NewSqlCommand(str,conn)DimreaderAsSqlDataReader=command.ExecuteReader()ASP.NET20简明教程IfNotreader.HasRows()ThenMessageBox.Show(部门表尚未创建,请先创建部门表,创建薪水表,MessageBoxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Object_id(Employee)command=NewSqlCommand(str,conn)re

57、ader=command.ExecuteReader()IfNotreader.HasRows()ThenMessageBox.Show(员工信息表尚未创建,请先创建员工信息表,创建薪水表,MessageBoxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Object_id(Evaluation)command=NewSqlCommand(str,conn)reader=command.ExecuteReader()IfNotreader.HasRows()Th

58、enMessageBox.Show(考评信息表尚未创建,请先创建考评信息表,创建薪水表,MessageBoxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Object_id(Worktime)command=NewSqlCommand(str,conn)reader=command.ExecuteReader()IfNotreader.HasRows()ThenMessageBox.Show(考勤信息表尚未创建,请先创建考勤评信息表,创建薪水表,MessageB

59、oxButtons.OK,MessageBoxIcon.Error)ReturnEndIfreader.Close()str=Select*fromSysObjectsWhereid=Object_id(Salary)command=NewSqlCommand(str,conn)reader=command.ExecuteReader()IfNotreader.HasRows()Then第1章ASP.NET概述21IfMessageBox.Show(薪水表尚未创建,是否创建该表,创建薪水表,MessageBoxButtons.YesNo,_MessageBoxIcon.Question)=Wi

60、ndows.Forms.DialogResult.NoThenReturnEndIf设置数据表的字段信息DimstrSQLAsString=_CREATETABLESalary(&_序号intIDENTITY(1,1)PRIMARYKEY,&_年度NVarChar(20)NOTNULL,&_月份NVarChar(10)NOTNULL,&_部门编号NVarChar(20)NOTNULLREFERENCESDepartment(部门编号),&_员工编号NVarChar(20)NOTNULLREFERENCESEmployee(工号),&_姓名NVarChar(10)NOTNULL,&_基本工资mo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论