C#企业人事管理系统的设计与实现

更新时间:2024-04-21 07:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

浙江大学

设计题目: 企业人事管理系统的设计与实现

专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 指导教师:

中国﹒浙江

2012年 5月 30 日

企业人事管理系统的设计与实现

摘 要

进入二十一世纪以来,随着我国企业信息管理逐步向现代化和高效化的转变,自动化的办公流程也已成为必须。人才作为企业发展的核心竞争力,在企业的发展中发挥着不可比拟的作用。于是,良好的人才管理系统也便成为了企业管理的一部分。一个现代化的企业人事管理系统有助于企业节约成本、提高效率,而且还可以使领导者更清楚地了解到企业员工的相关资料,从而更合理地制定相关的人事信息。

本系统主要针对中小企业的人事管理人员进行开发设计的,在对用户的需求进行分析的基础上,进而得到相应的解决方案。从数据库的设计到程序的编写,从软件的测试到系统的运行维护,本系统严格按照软件设计的相关流程进行设计。

本文首先简单介绍了企业人事管理系统的发展现状和趋势,并阐明了论文选题的目的和意义。其次,根据现人事管理系统的一般组织结构和业务流程进行了系统需求分析,同时论述了人事管理系统的详细设计过程。

本系统采用C#作为开发语言,数据库采用SQL Server 2005数据库,应用Visual Studio 2010开发环境实现。

关键词:人事管理 C# SQL Server 2005

The Design and Implementation of Personnel

Management System Based on C#

Abstract

Into the twenty-first century, as China gradually to modern enterprise information management and efficiency of the transformation processes of office automation has become a must. The development of talent as the core competitiveness of enterprises in the development of enterprises play an unparalleled role. Thus, a good talent management system also will become part of enterprise management. A modern enterprise personnel management system helps businesses reduce costs and improve efficiency, but also can make leaders more clearly understand the relevant information of employees to more rational development of relevant personnel information. The system of personnel management for SMEs development and design staff, in the needs of the user based on the analysis, then the corresponding solution. From database design to the preparation process, from software testing to the system operation and maintenance of the system in strict accordance with the relevant software design process.

This article first briefly introduces the development of corporate personnel management system status and trends, and set out the purpose and topics of significance. Second, under the current personnel management system, general organizational structure and business processes of the system requirements analysis, also discussed the personnel management system for the detailed design process.

The system uses C # as development language, the database uses SQL Server 2005 databases, application development environments Visual Studio 2010.

Keywords: Personnel Management C# SQL Server 2005

目录

目录 .............................................................................................................................. 3 1 绪论 .......................................................................................................................... 1

1.1本课题的研究背景 ...........................................................................................1 1.2国内外研究现状 ...............................................................................................1 1.3本课题的主要工作 ...........................................................................................1 2 系统相关技术介绍 .................................................................................................. 3

2.1 C#技术简介 ......................................................................................................3 2.2 SQL技术 ..........................................................................................................3

2.2.1 数据库的基本概念 .............................................................................. 3 2.2.2 本系统中数据库的访问 ...................................................................... 3 3 系统分析 .................................................................................................................. 5

3.1需求分析 ...........................................................................................................5 3.2系统概述 ...........................................................................................................5 3.3系统目标 ...........................................................................................................5 3.4可行性分析 .......................................................................................................5

3.4.1经济可行性分析 ................................................................................... 5 3.4.2技术可行性分析 ................................................................................... 6 3.4.3管理可行性分析 ................................................................................... 6 3.5系统逻辑结构图及业务流程图设计 ...............................................................6 4 数据库设计 .............................................................................................................. 9

4.1数据库概念结构设计 .......................................................................................9 4.2数据库逻辑结构设计 .....................................................................................12 5 系统各模块的实现 ................................................................................................ 19

5.1系统登录模块的实现 .....................................................................................19 5.2主窗体的实现 .................................................................................................20 5.3系统人事基本档案及相关模块的实现 .........................................................22 5.4系统考勤管理窗体的实现 .............................................................................25 5.5系统工资管理模块的实现 .............................................................................27 5.6系统查询管理模块的实现 .............................................................................29 5.7系统管理模块实现 .........................................................................................30 6 系统安全管理 ........................................................................................................ 35 7 系统测试 ................................................................................................................ 36

7.1测试目的 .........................................................................................................36

7.2测试方法 .........................................................................................................36 7.3测试实例 .........................................................................................................36 8 总结 ........................................................................................................................ 38 谢辞 ............................................................................................................................ 39 参考文献 .................................................................................................................... 40 附录 ............................................................................................................................ 41 外文资料 .................................................................................................................... 55

浙 江 大 学 毕 业 设 计

1 绪论

1.1本课题的研究背景

互联网的高速发展,信息化的迅速蔓延,使企业的信息化管理出现了新的方向。一个现代化的企业想要生存和发展,必须跟上信息化的步伐,用先进的信息化技术来为企业的管理节约成本、制定规划。而人才作为企业生存和发展的根本,在企业的管理中始终占有着重要的地位。对企业的人才进行良好的人事管理既有助于企业高层和人事管理人员动态、及时地掌握企业的人事信息,制定人才招聘和发展规划,也有利于企业优化改革,精简机构,最终实现人事管理的信息化建设。在此形势下,我们开发了此套人事管理系统,可应用于大部分的企事业单位,管理人员可查询员工考勤、薪资、档案等相关信息并可对其进行维护,普通员工可在管理人员授权后进行相应的查询等操作[1]。

1.2国内外研究现状

国外专家学者对人事管理系统的研究起步比较早,发达国家的企业非常注重自身人事管理系统的开发。特别是一些跨国公司,更不惜花费大量的人力和物力来开发相应的人事管理系统,通过建立一个业务流的开发性系统实现真正意义上的人事管理目标,挑选和留住最佳人才,同时不断提高这些人才的工作效益。例如:苹果公司的企业员工人事管理系统便是一个很好的典范。

我国的信息管理系统是九十年代初开始快速发展的。经过十余年的发展,我国的数据库管理技术也广泛的应用于各个领域,并且形成了产业化。但是,我们的工厂、企业对信息管理系统的应用比起世界先进水平还相当落后。主要表现在:人事管理系统范围使用相对狭窄、人事管理系统功能相对欠缺、稳定性较差、功能相对单一等。

1.3本课题的主要工作

人事管理系统是一个面向企业人事部门工作人员,为其提供服务的综合信息管理系统。企业员工通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。员工的个人信息等都记录在人事系统里进行管理。企业下设人事部门,全权处理企业内部一切人事事物[2]。

人事管理系统主要研究实现以下内容:

(1)员工信息管理:主要实现管理企业员工的基本信息管理,包括员工基本信息的录入、修改、删除以及员工家庭信息、员工工作简历、员工奖惩记录、员工培训记录、员工工作业绩、员工离职信息管理等功能。

(2)考勤管理:主要通过员工考勤信息处理模块实现员工考勤信息的录入、修改、

1

浙 江 大 学 毕 业 设 计

删除操作及员工考勤信息的统计等信息[3]。

(3)工资管理:通过工资核算模块实现工资的录入核算,并在工资发放模块中实现工资的按部门发放。

(4)查询管理:主要实现对企业员工的人事档案、考勤记录和工资信息等信息的模糊查询。

(5)系统管理:对系统信息进行设置。主要实现操作权限的设置、新用户的添加、用户密码的修改、公司部门设置和系统帮助信息。

(6)退出系统:完成系统的退出。

2

浙 江 大 学 毕 业 设 计

2 系统相关技术介绍

2.1 C#技术简介

要了解C#,首先要了解Microsoft.NET FrmeWork。Microsoft.NET FrameWork是微软公司提出的新一代软件开发模型,C#语言是.NET FrameWork中新一代的开发工具。C#语言是一种现代的,面向对象的语言,它简化了C++语言在类、命名控件、方法重载和异常处理等方面的操作,摒弃了C++的复杂性,更易使用。它使用组件编程,在这方面和VB类似。在动态查阅、中间代码技术、参数传递、交叉语言处理、面向对象方面有自己的特点。另外,由于C#中取消了指针的功能,这样可以有效防止病毒程序利用非法指针访问私有成员,也能避免指针的误操作产生的错误。因此,其在安全性方面也有了很大的提高[4]。

2.2 SQL技术

2.2.1 数据库的基本概念

SQL(Structured Query Languge)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL语言包括:数据定义语言、数据操作语言、数据查询语言、数据控制语言四部分。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所有具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能。

2.2.2 本系统中数据库的访问

本系统的数据库访问过程实现主要通过六个步骤[5]: (1)建立数据库表,表中存储相应数据。

(2)使用SqlConnection或OleDbConnection类建立数据库应用程序和数据库连接对象。

(3)从数据库指定表中取出感兴趣的记录。

(4)从数据库指定表中取出的感兴趣记录组成一个新表,填充到DataSet类对象中,可填充多个表,并可在DataSet类对象中指定表和表的关系。取出所感兴趣的记录后,断开数据库连接。

(5)用支持数据库绑定控件(例如DataGrid控件)显示DataSet类对象中的数据,

3

浙 江 大 学 毕 业 设 计

供用户浏览、查询和修改。

(6)及时更新DataSet中内容,并把修改的数据存回源数据库。 本系统中数据库连接部分的具体实现代码如下: String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString;

String s=”DTBSE=Northwind;SERVER=loclhost;UID=s;PWD=;”

SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open();

4

浙 江 大 学 毕 业 设 计

3 系统分析

3.1需求分析

本系统主要是针对一般企事业单位设计,基于其他企业人事管理系统的不足,本系统更好地完成了数据的添加、修改、删除操作,并且可以将员工信息添加到Excel文档,这样,不但利于保存,还可以通过Excel文档进行打印。

3.2系统概述

本系统主要针对中小企业的人事管理人员和企业管理人员设计,以帮助其实现企业人事管理的信息化和自动化。

通过本系统,人事管理人员可以实现员工档案管理,员工离职管理,员工薪资的录入、发放和查询管理,员工考勤信息的添加、查询等操作。由于公司管理人员需要对企业人事信息进行系统的了解,本系统采用了模糊查询的功能,企业管理人员可以清晰地了解部门人员分配、员工年龄、文化程度、婚姻状况等信息。同时,人事管理人员还可以将相应的数据通过Excel等形式予以打印,最终实现办公流程的系统化。为满足不同员工对本系统的特殊要求,系统添加了权限设置的功能,针对不同的企业员工,分配了不同的权限,以便更有利于企业的规范化管理。

3.3系统目标

根据企业对人事管理的要求,制定企业人事管理系统具体目标如下: (1)员工基本档案、员工简历、员工家庭成员信息等相关界面的添加、修改、删除操作。

(2)全方位的模糊查询功能的实现。

(3)按相应条件对员工的考勤、工资等进行统计。 (4)针对不同用户的权限管理。

(5)员工考勤信息的数字化显示,以方便企业对员工进行年终考核。 (6)可以实现将相应数据采用Excel表格的形式导出。 (7)系统运行良好,兼容性强。

3.4可行性分析

3.4.1经济可行性分析

完成本系统需要硬件和软件两方面的支持。硬件方面需要开发服务器一台,个人电脑在此可作为服务器使用;软件方面,由于本系统属于小型管理系统,利用Visual Studio 2010和SQL Server 2005数据库开发工具即可实现,经济成本低,因此

5

浙 江 大 学 毕 业 设 计

在经济上是可行的。

3.4.2技术可行性分析

本系统采用目前被广泛使用的C#开发技术、SQL Server 2005数据库技术和Windows Server 2003操作系统进行开发设计。首先,c#是微软为.NET量身定做的开发语言集合了C/C++和VB的双重优点,具有简易型、灵活性、移植性强等特点,同时使用Visul Studio 2010作为开发平台,对于开发中小系统来说,这种开发环境是完全没有问题的。其次,本系统采用SQL Server 2005数据库。到目前为止,SQL数据库仍然是使用最广泛的一种数据库语言,因此本系统采用SQL Server 2005,在系统安全性、可用性和高稳定性上又有了很大的提升。再次,本系统的操作环境采用Windows下的Server 2003操作系统,Windows Server 2003是由微软公司推出的服务器操作系统,可以为本系统的开发提供良好的稳定性。最后,考虑到三者兼容的问题,由于三者都属于微软公司的产品,所以兼容性上不存在问题。硬件方面,采用标准的服务器硬件配置,能满足本系统的要求。综上所述,本系统的技术可行性不存在问题。

3.4.3管理可行性分析

本系统的主要应用对象为企业的人事管理人员和企业的高层管理者,由于本系统界面简洁、结构清晰、操作简单,所以在对相应使用人员进行培训的情况下是可以顺利使用本系统的。

3.5系统逻辑结构图及业务流程图设计

系统逻辑结构图能够清晰地反映出本系统的结构功能和模块分布,是系统对外介绍的良好窗口。用户也可以一目了然地了解系统的整体逻辑结构,加深对系统功能的理解。

本系统的逻辑结构图如图3-1所示:

6

浙 江 大 学 毕 业 设 计

系统主界面 人事管理 考勤管理 工资管理 查询管理 系统管理 退出 基培离月年工工个全修公本训职度度资资人部改司档记管部个核录员考用部案 录 理 门人算 入 工勤户门考考档记密设勤 勤 案 录 码 置 家奖工工部全操公系庭惩作资门部作司统成记业发员工权信帮员 录 绩 放 工资限息助档信设设信案 息 置 置 息 图3-1 企业人事管理系统逻辑结构图

7

系统退出

浙 江 大 学 毕 业 设 计

系统业务流程图如图3-2所示 开始 用户登录 成功 否 失败 是否退出 是 退出程序 员工档案管理工作业绩管理基本信息管理 工作简历管理 家庭成员管理 月度部门考勤 离职管理 考勤管理 工资核算 年度个人考勤 薪资管理 工资发放 个人员工档案工资录入 部门员工档案 查询管理 操作权限设置 修改密码 系统管理 公司部门设置 系统帮助信息 系统退出 全部考勤记录 全部工资信息 图3-2 企业人事管理系统业务流程图

8

浙 江 大 学 毕 业 设 计

4 数据库设计

4.1数据库概念结构设计

企业人事管理系统的数据库主要用来记录一个企业所有员工的基本信息及考勤、薪资等信息等数据,数据量由企业的员工数量多少决定。本系统的数据库命名为MyPersonnel,共用13张数据表来存储相应信息。

数据库概念结构设计作为系统开发的重要组成部分,是根据管理系统的相应需求制定的,数据库的优劣直接影响到系统的后期开发。

本系统中,为了保证系统的安全性,在登录系统的时候用户需要输入正确的用户名和密码,并且通过不同的用户名和密码进入不同的管理界面[6]。因此,需要一个数据库表用来记录用户的用户名和密码。登录表的实体E-R图如图4-1所示: 用户名

查看工作

简历权限 用户密码

查看奖惩 查看基本档案操作用户 记录权限

查看家庭成员查看培训

记录权限 查看工作 查看离职

图4-1 登录表的实体E-R图

在企业人事管理系统中,员工信息表属于其中最重要的一个表,在这个表中记录了员工的基本信息,因此表中涉及的员工信息字段太多,本实体E-R图只给出了部分字段。本系统的员工基本信息表E-R图如图4-2所示:

9

浙 江 大 学 毕 业 设 计

政治面貌 员工年龄 员工基本信息表 部门 政治面貌 自编号 员工编号 员工姓名 员工姓名 图4-2 员工基本信息实体E-R图

为了更好地记录员工信息,在本系统的数据库设计中,创建了一个家庭关系表,来记录每个员工的家庭成员及其工作单位和联系方式等。家庭关系表的实体E-R图如图4-3所示:

其它

联系电话

担任职务

自编号

员工编号

员工家庭成员表

员工姓名

与员工关系

工作单位

家庭成员

图4-3 员工家庭成员实体E-R图

10

浙 江 大 学 毕 业 设 计

在企业中,员工受到奖惩是必不可少的。在数据库设计中,加入了一个员工奖惩表,以便对员工的奖惩信息进行记录。奖惩表的实体E-R图如图4-4所示: 员工编号 自编号

员工姓名

员工奖惩表 说明

奖惩原因 奖惩主体解除处分日 部门

图4-4 奖惩表实体E-R图

在本系统中,涉及到了员工的考勤信息,员工的考勤信息是通过数据库进行显示的。其实体E-R图如图4-5所示: 自编号

年份

员工考勤信息表 月份

1号

. 2号

图4-5 员工考勤信息表

员工编号

员工姓名

31号

30号

人事管理系统离不开对员工的薪资管理,将员工的工资信息动态地录入数据库并且能够随时清晰地查看,是设计此薪资信息表的基本目的。其E-R图设计如图4-6所示:

11

浙 江 大 学 毕 业 设 计

自编号

实发金额

员工编号

银行账号

薪资管理信息表

员工姓名

其它应减项

奖金 其它应增项

图4-6 薪资管理表

基本工资

此外,员工培训记录表、员工简历表、员工离职管理表、员工培训记录表均属于员工档案信息的范围,实体E-R图设计与其它员工基本信息类似,本论文中不再显示其E-R图设计。

4.2数据库逻辑结构设计

根据上面设计的E-R图,便可以在数据库中创建相应的数据库表,本系统的各数据表的结构如下:

(1)员工基本档案表用于保存员工的基本档案信息。包括自编号、员工编号、员工姓名、员工性别、出生年月、身份证号码、民族、政治面貌、婚姻状况、文化程度、专业、毕业院校、职务、基本工资、手机号码、籍贯等字段。其结构如表4-1所示:

12

浙 江 大 学 毕 业 设 计

表4-1 基本档案表

字段名称 自编号 员工编号 姓名 性别 出生年月 身份证号码 民族 政治面貌 文化程度 专业 毕业院校 职称 职务 进入单位时间 合同年限 基本工资 银行账号 保险账号 手机号码 家庭住址 籍贯 说明

类型 nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) datetime nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) datetime nvarchar(50) float nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50)

是否允许空

否 否 否 否 否 否 否 否 是 是 是 是 是 否 否 否 否 否 是 否 否 是

说明 递增的流水号 员工信息编号(主键)

员工姓名 员工性别 员工出生日期 员工身份证编号 员工民族 员工政治面貌 员工文化程度 员工所学专业 员工毕业院校 员工职称 员工在公司的职务 员工进入本单位时间 员工签订的合同年限 员工的基本工资 员工的工资银行账号 员工的保险账号 员工手机号码 员工家庭住址 员工籍贯 其它说明

(2)公司部门表用于存放公司部门信息。包括部门名称、部门负责人、人事文员、联系电话、额定人数、说明等字段。其结构如表4-2所示:

表4-2部门信息表

字段名 部门名称 部门负责人 人事文员

类型 nvarchar(50) nvarchar(50) nvarchar(50)

是否允许空

否 否 是

说明 公司部门名称 各部门负责人信息 部门人事文员信息

13

浙 江 大 学 毕 业 设 计

联系电话 额定人数 说明

nvarchar(100)

int nvarchar(50)

否 是 是

本部门联系电话 部门额定人数 说明信息

(3)离职管理表用来存放员工的离职信息。包括:自编号、员工编号、员工姓名、离职时间、离职原因、批准人和说明信息等字段。其结构表如表4-3所示:

表4-3 离职管理表

字段名 自编号 员工编号 员工姓名 离职时间 离职原因

批准人 说明

类型 nvarchar(50) nvarchar(50) nvarchar(50) datetime nvarchar(50) nvarchar(50) nvarchar(50)

是否允许空

否 否 否 否 否 否 是

说明 递增的流水号 员工编号 员工姓名 员工离职时间 员工离职原因 批准人姓名

说明事项

(4)操作用户权限表用于存放用户的信息及各用户的权限信息。包括用户名称、用户密码、员工基本档案访问权限、员工家庭成员访问权限、员工工作简历访问权限、员工奖惩记录访问权限、员工培训记录访问权限、员工工作业绩访问权限、员工离职管理访问权限、月度部门考勤访问权限、年度个人考勤访问权限、工资核算访问权限、工作发放访问权限、考勤管理访问权限、修改密码权限、修改部门信息权限等字段。其结构如表4-4所示:

表4-4 操作用户权限表

字段名称 用户名称 用户密码 员工基本档案 家庭成员信息 工作简历 奖惩记录 培训记录 工作业绩 离职管理

类型 nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) datetime nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50)

是否允许空

否 否 是 是 是 是 是 是 是

14

说明 存放用户名称 存放用户密码

控制基本档案窗台体的显示 控制家庭成员窗体的显示 控制工作简历窗体的显示 控制奖惩记录窗体的显示 控制培训记录窗体的显示 控制工作业绩窗体的显示 控制离职管理窗体的显示

浙 江 大 学 毕 业 设 计

月度考勤 个人考勤 工资核算 工资发放 考勤管理 部门信息

nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50)

是 是 是 是 是 是

控制月度考勤窗体的显示 控制个人考勤窗体的显示 控制工资核算窗体的显示 控制工资发放窗体的显示 控制考勤管理窗体的显示 控制部门信息窗体的显示

(5)员工工作简历表用来存放员工的工作简历,以便更好地为员工安排岗位。包括:自编号、员工编号、员工姓名、开始时间、结束时间、单位名称、担任职务、所在部门、说明信息等字段。其结构表如表4-5所示:

表4-5 员工工作简历表 字段名 自编号 员工编号 员工姓名 开始时间 结束时间

单位名称 担任职务 所在部门 说明

类型 nvarchar(50) nvarchar(50) nvarchar(50) datetime datetime nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50)

是否允许空

否 否 否 否 否 否 是 是 是

说明 递增的流水号 员工编号 员工姓名 本次工作经历开始时间 本次工作经历结束时间 工作单位名称

所担任的职务 所在部门 其它说明

(6)员工家庭成员表用来存放员工的家庭成员信息。包括:自编号、员工编号、员工姓名、家庭成员姓名、与员工关系、工作单位、担任职务、政治面貌、联系电话、其他等字段。其结构表如表4-6所示:

表4-6 员工家庭成员表

字段名 自编号 员工编号 员工姓名 家庭成员姓名 与员工关系 工作单位

类型 nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50)

是否允许空

否 否 否 否 否 是

15

说明 递增的流水号 员工编号 员工姓名

员工家庭成员姓名 其家庭成员与员工关系 工作单位名称

浙 江 大 学 毕 业 设 计

担任职务 政治面貌 联系电话 其他

nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50)

是 是 是 是

所担任的职务 政治面貌 家庭成员联系电话 其他说明事项

(7)培训记录表用于存放员工的培训记录信息。包括:自编号、员工编号、员工姓名、开始时间、结束时间、培训单位、培训地点、培训内容、培训经费、证书名称、说明信息等字段。其结构表如表4-7所示:

表4-7 员工培训记录表

字段名 自编号 员工编号 员工姓名 开始时间 结束时间 培训单位 培训地点 培训内容 培训经费 证书名称 说明

类型 nvarchar(50) nvarchar(50) nvarchar(50) datetime datetime nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(50)

是否允许空

否 否 否 否 否 是 是 是 是 是 是

说明 递增的流水号 员工编号 员工姓名 培训开始时间 培训结束时间 培训单位名称 培训所在地点 培训内容 培训经费数量 培训证书名称 说明信息

(8)员工奖惩信息表用于存放员工的奖惩信息。包括:自编号、员工编号、员工姓名、奖惩日期、奖惩类型、奖惩原因、奖惩批准单位、解除处分日期、说明等字段。其结构表如表4-8所示:

表4-8 员工奖惩信息表

字段名 自编号 员工编号 员工姓名 奖惩日期 奖惩类型

类型 nvarchar(50) nvarchar(50) nvarchar(50) datetime nvarchar(50)

16

是否允许空

否 否 否 否 否

说明 递增的流水号 员工编号 员工姓名 奖惩日期 奖惩类型

浙 江 大 学 毕 业 设 计

奖惩原因 奖惩批准单位 接触处分日期

说明

nvarchar(50) nvarchar(50) dtaetime nvarchar(50)

否 是 是 是

奖惩原因 奖惩批准单位 解除处分日期

说明信息

(9)员工工作业绩表用于存放员工工作业绩信息。包括:自编号、员工编号、员工姓名、工作业绩、专长描述、说明信息等字段。其结构表如表4-9所示:

表4-9 员工工作业绩表

字段名 自编号 员工编号 员工姓名 工作业绩 专长描述

说明

类型 nvarchar(50) nvarchar(50) nvarchar(50) nvarchar(200) nvarchar(50) nvarchar(300)

是否允许空

否 否 否 否 是 是

说明 递增的流水号 员工编号 员工姓名 工作业绩描述 专长信息描述 说明信息

(10)考勤管理表用于存放员工的考勤信息。包括:自编号、员工编号、员工姓名、考勤年份、考勤月份、1号、2号、3号、4号、5号????28号、29号、30号、31号等字段。其结构表如表4-10所示:

表4-10 考勤管理表

字段名 自编号 员工编号 员工姓名 考勤年份 考勤月份 1号 2号

3号 ?? ??

29号 30号

类型 nvarchar(50) nvarchar(50) nvarchar(50)

int int nvarchar(10) nvarchar(10) nvarchar(10)

?? ?? nvarchar(10) nvarchar(10)

17

是否允许空

否 否 否 否 否 否 否 否 ?? ?? 否 否

说明 递增的流水号 员工编号 员工姓名 考勤年份

考勤月份 本月1日 本月2日 本月3日 ???? ???? 本月29日 本月30日

浙 江 大 学 毕 业 设 计

31号

nvarchar(10)

本月31日

(11)员工工资核算表用于存放员工的工资信息。包括:自编号、员工编号、员工姓名、基本工资、津贴、奖金、工龄工资、岗位工资、其它应增项、所得税、养老险、医疗险、住房基金、其它应减项、实发工资、说明等字段。其结构表如表4-11所示:

表4-11员工工资核算表

字段名 自编号 员工编号 员工姓名 基本工资 津贴 奖金

工龄工资 岗位工资 其它应增项

所得税 养老险 医疗险 住房基金 其它应减项 实发工资 说明

类型 nvarchar(50) nvarchar(50) nvarchar(50)

float float float float float float float float float float float float nvarchar(300)

是否允许空

否 否 否 否 否 是 是 是

是 是 是 是 是 否 是

说明 递增的流水号 员工编号 员工姓名

员工基本工资 员工津贴 员工奖金 员工工龄工资 员工岗位工资 其它应增项目 应缴所得税 应缴养老险 应缴医疗险 扣除住房基金 其它应减项目 实发工资数 说明信息

18

浙 江 大 学 毕 业 设 计

5 系统各模块的实现

5.1系统登录模块的实现

企业人事管理系统登录窗体如图5-1所示:

图5-1 管理程序登录窗体

当用户输入用户名和密码时,在登录的click事件中,通过“Select COUNT(*) From 操作用户 Where 用户名称=@用户名称 ND 用户密码=@用户密码”语句来判断用户输入的用户名和密码是否正确。若不正确,则将定义的MyTryCount变量(用于记录登录的次数)自动加1,并提示“用户名称或用户密码有误,您还有*次机会。”当MyTryCount变量大于3的时候,执行连接断开语句,系统退出,不能登录;若密码正确,则根据“Select * From 操作用户 Where 用户名称='\\”语句,在操作用户表中找到相应的用户名和密码对应的权限,进入系统。并通过this.MyOpertor所连接到的不同字符串来进行用户的分权限进入系统[7]。

输入用户名或密码有误部分的具体实现代码如下:

StringMySQLConnectionString=globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString;

string MySQL = \操作用户Where 用户名称=@用户名称 ND 用户密码=@用户密码\

SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open();

SqlCommnd MyCommnd = new SqlCommnd(MySQL, MyConnection); MyCommnd.Prmeters.Cler();

SqlPrmeter MySqlNmePrmeter = new SqlPrmeter(); MySqlNmePrmeter.PrmeterNme = \用户名称\

MySqlNmePrmeter.Vlue = this.用户名称TextBox.Text; MyCommnd.Prmeters.dd(MySqlNmePrmeter); SqlPrmeter MySqlPWPrmeter = new SqlPrmeter(); MySqlPWPrmeter.PrmeterNme = \用户密码\

MySqlPWPrmeter.Vlue = this.用户密码TextBox.Text; MyCommnd.Prmeters.dd(MySqlPWPrmeter);

19

浙 江 大 学 毕 业 设 计

int MyCount = (int)MyCommnd.ExecuteSclr(); if (MyCount == 1) {

this.Close(); } else {

this.MyTryCount += 1;

if (this.MyTryCount != 3) {

int MyDoCount = 3 - this.MyTryCount;

MessgeBox.Show(\用户密码或用户名称有错,还有\

MyDoCount + \次机会¨\信息提示\

this.用户密码TextBox.Text = \

this.用户名称TextBox.Text = \ } else {

退出系统3Button_Click(null, null); } }

当输入的用户名和密码均正确的时候,执行选择用户权限的操作。具体实现代码如下:

String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString;

string MySQL = \ * From 操作用户Where 用户名称='\

this.MyOpertor + \

SqlConnection MyConnection = new

SqlConnection(MySQLConnectionString);

MyConnection.Open();

DtTble MyTble = new DtTble();

SqlDtdpter Mydpter = new SqlDtdpter(MySQL, MyConnection); Mydpter.Fill(MyTble);

if ((int)MyTble.Rows[0][\人事管理之基本档案] == 0) {

this.基本档案ToolStripMenuItem.Visible = flse; this.基本档案ToolStripSeprtor.Visible = flse; }

以上代码只包含了基本档案模块的权限设置,其它模块的进入权限设置与其类似,在这里便不再赘述。

5.2主窗体的实现

20

浙 江 大 学 毕 业 设 计

本窗体应用了MenuStrip控件的ToolStripDropDownItem对象,该对象的功能是用于存储各菜单项下的所有信息,并通过该对象的DropDownItem属性获取各子菜单项的名称。其窗体如图5-2所示:

图5-2 主窗体

其实现的重点代码如下:

String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString; string MySQL = \ * From 公司信息\ SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open(); DtTble MyTble = new DtTble();

SqlDtdpter Mydpter = new SqlDtdpter(MySQL, MyConnection); Mydpter.Fill(MyTble);

MyBgPhoto = ppliction.StrtupPth + \

21

浙 江 大 学 毕 业 设 计

管理系统背景照片\

5.3系统人事基本档案及相关模块的实现

人事基本档案及相关模块用来对员工的基本档案、家庭信息、工作简历、奖惩记录、培训记录、离职记录等进行添加、修改、删除的操作。为了更好的进行查询操作,本界面设计了模糊查询的功能[8]。人事基本档案窗体运行结果图如图5-3所示:

图5-3 人事基本档案管理窗体

本窗体通过在BindingNvigtor中添加相应的Button控件和Label控件。首先,来看本窗体查询功能的实现。在连接成功数据库后,用户单击查询Button的按钮,响应其click事件,通过ToolStripTextBox.Text方法,获取文本框中的信息并与This. MyPer sonnelDtSet.基本档案中的信息进行比较,若有相似信息,则在添加到页面的数据库 DataGridView控件中显示相关信息。若遇到异常情况,则通过Messgebox.show(“系

22

浙 江 大 学 毕 业 设 计

统异常,请联系管理员”)来提示用户中止操作,以防治数据的丢失。其次,本窗体的添加功能实现。用户在单击添加按钮时,在自编号的Label中实现了一个自动获取编号的功能。在定义的变量MyLength中通过MyLength = MyID.ToString().Length获取字段的长度,进而通过Switch()语句来控制自编号的位数。自编号获取成功后,用户添加相应的信息至文本框,随后调用保存按钮的click事件,在保存的click事件中,先进行了一个判断操作If(combox.text==””)则Messgebox.show(“**文本框为空,请核对后再执行保存操作”),此判断操作结束后,执行“this.基本档案Tbledpter. Updte (this.myPersonnelDtSet.基本档案)”语句,将添加后的数据进行数据保存。再次,本窗体的修改功能与添加功能类似,只是将自动获取自编号的相应代码取消,其与查询功能联合使用,当用户查询出相关的信息后,进行修改仍执行updte语句,然后单击保存按钮后进行保存[9]。最后,是基本档案窗体的删除功能实现,在删除功能中首先做的仍是数据库的连接,数据库连接成功后,通过姓名text进行删除,其相应执行代码为MyCommnd.CommndText = \基本档案 where 姓名=@姓名;

具体实现的重点代码如下:

try

{

this.基本档案Tbledpter.FillByll(this.myPersonnelDtSet.基本档案, ddPercent(姓名ToolStripTextBox.Text), ddPercent(性别àetoolStripComboBox.SelectedItem), ddPercent( 部门toolStripComboBox.SelectedItem), ddPercent(民族toolStripComboBox.SelectedItem), ddPercent(职称toolStripComboBox.SelectedItem), ddPercent(政治面貌2toolStripComboBox.SelectedItem), ddPercent(婚姻状况toolStripComboBox.SelectedItem), ddPercent(文化程度toolStripComboBox.SelectedItem), ddPercent(籍贯toolStripTextBox.Text)); }

this.基本档案Tbledpter.Fill(this.myPersonnelDtSet.基本档案); this.myPersonnelDtSet.基本档案.Rows.Cler();

MyConnection.Open();

SqlCommnd MyCommnd = MyConnection.CreteCommnd();

MyCommnd.CommndText = \基本档案where 姓名=@姓名\ }

MyCommnd.CommndText = \自编号) 最大编号 From 基本档案; object MyResult = MyCommnd.ExecuteSclr(); Int64 MyID = 1;

23

浙 江 大 学 毕 业 设 计

if (MyResult != System.DBNull.Vlue) {

String MyMxID = MyResult.ToString().Trim(); MyMxID = MyMxID.Substring(2, MyMxID.Length - 2); MyID = Convert.ToInt64(MyMxID) + 1; }

int MyLength = MyID.ToString().Length; string MyNewID = \ switch (MyLength) { cse 1:

MyNewID = \ brek; cse 2:

MyNewID = \ brek; cse 3:

MyNewID = \ brek; cse 4:

MyNewID = \ brek; cse 5:

MyNewID = \ brek; cse 6:

MyNewID = \ brek; cse 7:

MyNewID = \ brek; }

在员工家庭成员管理模块、简历管理、培训管理、离职管理等相应窗体中,因

24

浙 江 大 学 毕 业 设 计

需要实现的功能类似,因需实现的功能类似,所有采用了相似的程序设计方法。在此,仅以基本档案窗体为例,其他相似窗体便不在赘述。

5.4系统考勤管理窗体的实现

本窗体实现的功能包括:查询每一部门所有员工在某一个月份的考勤记录,由于这里的查询连接的是基本档案的数据库,所有可以查询出该部门的所有员工。在此情况下,便设计了员工考勤信息按部门的添加功能的实现。为了方便用户的使用,本窗体还设计了个人考勤信息的年度查询功能并且能够统计出某一名员工某年的考勤情况,以方便对其进行年中考核。另外,考虑到领导审阅的问题,本窗体添加了打印按钮,用户可将相关的信息进行Excel导出,进而进行打印。其运行窗体如图5-4所示:

图5-4 员工考勤信息管理窗体

首先,说明查询功能的实现。因为本查询采用的是混合查询的方式,所以需要先用if语句判断年份、月份和部门的Text是否为空。以年份为例,执行“this.考勤年份ToolStripComboBox.Text.Length < 1”语句。若为空,则退出。三者均不为空的时候,执行数据库查询操作,此操作方法与基本档案查询类似。所不同的是,本次查 询执行的是视图操作,执行语句为“string MySQL = \在职员工视图

25

浙 江 大 学 毕 业 设 计

WHERE 部门='\部门ToolStripComboBox.Text + \”若能够查询出相应员工信息,则在DtGridView中进行显示。其次,是统计考勤天数功能的实现。实现该功能要先设置一个变量dt,将数据库的读取出来象征考勤情况的图形信息存放在dt中。因为,数据库中一共定义了8种表示出勤情况的图标,所以定义了一个int[8]数组,用以存放8种图标,利用dt.Rows[j][i]的for循环来记录数据库中相应图表出现的次数,并将count值加1。通过“考勤统计dtGridView.Rows[0].Cells[0].Vlue = clerpercent()”语句将统计出的语句添加到数据库的行中,以完成数据的显示。再次,打印功能的实现窗体是通过导出Excel表的形式实现的。实现的具体方法是,通过实例化一个Myexcel对pplictionClss MyExcel,通过此对象来操作相应的方法。定义一个二维数组MyDt,用来存放导出的excel数据。通过MyWorkSheet = (Worksheet) MyWorkBook. Worksheets[1]方法在Excel中建立一个表,用来存放数据,通过MyRnge =MyWork Sheet.get_Rnge(\语句建立相应的行和列。在dtgridview中显示相应数据。当系统中不存在excel程序的时候,弹出界面提示MessgeBox.Show(\程序无法启动\信息提示\

本窗体实现的重点代码如下:

int[] count = new int[8];

for (int i = 0; i < count.Length; i++) {

count[i] = 0; }

if (dt != null) {

for (int j = 0; j < dt.Rows.Count; j++)//搜索相应信息 {

for (int i = 1; i <= 31; i++) {

if (dt.Rows[j][i].ToString() == \ count[0]++;

else if (dt.Rows[j][i].ToString() == \ count[1]++;

else if (dt.Rows[j][i].ToString() == \ count[2]++;

26

浙 江 大 学 毕 业 设 计

else if (dt.Rows[j][i].ToString() == \ count[3]++;

else if (dt.Rows[j][i].ToString() == \ count[4]++;

else if (dt.Rows[j][i].ToString() == \ count[5]++;

else if (dt.Rows[j][i].ToString() == \△\ count[6]++;

else if (dt.Rows[j][i].ToString() == \\ count[7]++; } }

if (考勤统计dtGridView.Rows.Count <= 0) 考勤统计dtGridView.Rows.dd();

考勤统计dtGridView.Rows[0].Cells[0].Vlue = clerpercent();//将统计的数据添加到数据库的行中。

for (int i = 0; i < 考勤统计dtGridView.ColumnCount - 1; i++) {

考勤统计dtGridView.Rows[0].Cells[i + 1].Vlue = count[i]; } } } }

5.5系统工资管理模块的实现

在本窗体中,最重要的是工资发放和工资录入两个模块的实现。工资发放的实现是一个将查询出来的数据添加到工资数据库的过程;工资录入实现的也是一个员工工资数据库添加的操作。具体实现过程为:员工输入相应的部门信息和查询年月,点击查询之后搜索出相应的部门工资信息,在通过发工资按钮将工资添加到数据库。工资录入界面实现起来比较简单,输入工资数据化,单击添加,数据便录入相应数据库。为方便管理,本窗体还添加了打印的相关功能。其运行界面如图5-5、图5-6所示:

27

浙 江 大 学 毕 业 设 计

图5-5 工资核算窗体

图5-6 系统工资添加窗体

首先,说明工资录入功能的实现。在工资录入窗体中,设置了两个Groupbox。一个应增工资项Groupbox,一个应减工资项Groupbox,分别用来提供输入数据的text。调用添加Button的Click()事件,通过if判断来判断员工姓名或者员工编号是否为空:if (姓名TextBox.Text == \员工编号TextBox.Text==\若有一个为空,则messgebox语句输出“员工姓名或编号没有填写”。当二者均不为空的时候,要先通过查询字符串“Select COUNT(*) From 基本档案Where 姓名=姓名 ND 员工编号=

28

浙 江 大 学 毕 业 设 计

员工编号 ND (员工编号NOT IN(SELECT 员工编号FROM 离职管理))”,来确定确实存在相应的员工信息。然后定义一个MyCount变量,执行int MyCount = (int) My Commnd.ExecuteSclr()语句后,若员工相关信息存在,则MyCount返回为1,if (My Count == 1),则执行UPDATE语句更新数据库,将相应数据添加到数据库中。其次是工资核算和发放窗体功能的实现,在这个窗体中调用查询的click()事件将部门信息通过“this.工资核算表Tbled p ter. FillBy(this.myPersonnelDtSet.工资核算表, 部门ToolStrip Combo B ox.Text)”语句显示出来。工资发放是以部门为单位实现的,在调用发工资Button的click事件后,要首先做一个将年、月转换成整型的操作,其语句为int My年份=Convert.ToInt16(this.年份ToolStripComboBox.Text),目的是方便以后的转换运算。在工资核算表中存储着员工的工资信息,因此需要将其搜索出来,按照部门和时间的方式添加到工资发放表之中,第一步是将工资核算表中的相应数据连接上年份和月语句为Select COUNT(*) From 工资核算表 Where 发放年份=\年份ToolStripComboBox.Text+\发放月份=\月份

ToolStripComboBox.Text+\员工编号='\员工编号+\。第二步是从员工基本档案中搜索出相应的银行账号、住房基金账号等信息。第三步是调用INSERT INTO的SQL语句,因为在工资发放之后,数据就不能够在前台界面进行删除操作了,所以需要在发工资的click事件中添加一个messgebox.show(“请确认是否发放*年*月的工资”,工资一旦发放将不能恢复)的弹出窗口。

其主要实现代码如下:

string My员工编号=MyRow[1].ToString();

string My发放年份= this.年份ToolStripComboBox.Text;

string My发放月份= this.月份ToolStripComboBox.Text;

string MySQL = \工资发放表 Where 发放年份Y=\年份ToolStripComboBox.Text+\发放月份=\月份ToolStripComboBox.Text+\员工编号='\员工编号+\

System.Dt.DtTble MyQueryTble = new System.Dt.DtTble();

MySQL = \银行帐号,养老保险帐号,医疗保险帐号,住房基金帐号,身份证号码From 基本档案 WHERE 员工编号='\员工编号+ \

5.6系统查询管理模块的实现

在本模块中,主要实现的是一个整合的查询功能。以查询全部工资信息窗体为例,用户输入要查询的年份和月份之后选择相应的部门。单击查询按钮之后,窗体中显示出该年份、月份,某一特定部门的工资信息情况。为方面管理,添加了打印全部信息、打印银行入账单、打印养老险入账单、打印医疗险入账单、打印住房基

29

浙 江 大 学 毕 业 设 计

金入账单等打印选项。

在本菜单下,还包括个人人事档案资料、个人员工档案、部门员工档案等界面,查询功能实现机制相似。设计这些窗体的主要目的在于方便不同用户的查询管理。

其运行窗体如图5-7所示:

图5-7 全部员工工资信息查询

其实现的具体过程为:单击查询Button,调用其click事件,用this.工资发放表Tbledpter.FillBy(this.myPersonnelDtSet.工资发放表, new System.Nullble(((int)(System.Convert.ChngeType(this.月份

ToolStripComboBox.Text, typeof(int))))), this.部门ToolStripComboBox.Text, new System.Nullble(((int)(System.Convert.ChngeType(this.年份

ToolStripComboBox.Text, typeof(int))))))语句从工资发放表中调取相应数据,若不存在要查询的数据,则messgebox.show“您查询的记录不存在”

5.7系统管理模块实现

在本模块中主要实现了用户操作权限设置、登录用户密码修改、公司部门信息设置等功能。在用户权限设置窗体,可以通过新建用户,并为其分配不同的模块访问权限来对员工进行管理。密码修改窗体可以使当前进入的用户实现密码的修改功能。而公司部门信息管理则是为公司规模变更之后,部门信息有所调整时使用的[10]。

首先,说明用户操作权限设计的具体实现。当新添加一个用户的时候,勾选该用户拥有的相应的ckeckbox的复选框,进而给该用户赋予该模块的访问权限。当用户调用添加Button的click事件时,新增一个数据库行数据。添加相应的用户名密码并勾选其对应的复选框控件后,执行this.操作用户Tbledpter. Updte (this.myPersonnel DtSet.操作用户)语句,将数据保存在数据库的操作用户表中。当用户在前台界面登录的时候,通过执行\ * From 操作用户 Where 用户名称='\this.MyOpertor + \语句来寻找相应的用户名和密码是否为有效用户,再根据if ((int)MyTble.Rows[0][\窗体\基本档案ToolStripMenuItem.Visible = flse;this.基本档案ToolStripSeprtor.Visible = flse;}语句来控制某些窗体的不可见。以此

30

浙 江 大 学 毕 业 设 计

来完成用户的权限分配。

其运行窗体如图5-8所示:

图5-8 更改用户权限窗体

具体代码如下:

String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString;

string MySQL = \ * From 操作用户 Where 用户名称='\this.MyOpertor + \

SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open(); DtTble MyTble = new DtTble();

SqlDtdpter Mydpter = new SqlDtdpter(MySQL, MyConnection); Mydpter.Fill(MyTble);

if ((int)MyTble.Rows[0][\窗体\ {

this.基本档案ToolStripMenuItem.Visible = flse; this.基本档案ToolStripSeprtor.Visible = flse; }

其次,说明用户更改密码的操作的具体实现。该窗体设置了四个lbel控件,分别用来输入用户名、旧密码、新密码和确认新密码。当用户调用修改密码Button的click()事件时,通过if语句this.新密码TextBox.Text == this.再输一次新密码TextBox.Text) || (this.新密码TextBox.Text.Length == 0来判断两次输入的新密码是否一致,并且不为空。若不一致,则messgebox(“两次输入的密码不一致”);若满足条

31

浙 江 大 学 毕 业 设 计

件,则通过“Updte 操作用户 Set 用户密码='\新密码TextBox.Text + \用户名称='\用户名称TextBox.Text + \用户密码='\旧密码TextBox.Text + \”语句对数据库进行更新操作。

其运行窗体如图5-9所示:

图5-9 更改用户密码窗体

具体实现代码如下:

if (!(this.新密码TextBox.Text == this.再输一次新密码TextBox.Text) || (this.新密码TextBox.Text.Length == 0)) {

MessgeBox.Show(\两次密码的输入不一致\信息提示\MessgeBoxButtons.OK, MessgeBoxIcon.Informtion); return; }

String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString;

string MySQL = \ 操作用户Set 用户密码='\新密码TextBox.Text + \Where 用户名称='\用户名称TextBox.Text + \用户密码='\旧密码TextBox.Text + \

SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); SqlCommnd MyCommnd = new SqlCommnd(MySQL, MyConnection); MyCommnd.Connection.Open();

int MyCount = MyCommnd.ExecuteNonQuery(); if (MyCount == 1) {

MessgeBox.Show(\在数据库中修改用户密码操作成功|\信息提示\MessgeBoxButtons.OK, MessgeBoxIcon.Informtion);

32

浙 江 大 学 毕 业 设 计

} else {

MessgeBox.Show(\在数据库中修改用户密码操作失败!, \信息提示\MessgeBoxButtons.OK, MessgeBoxIcon.Informtion); }

最后,说明添加公司部门信息窗体的实现。用户单击新建按钮后,进行相应的添加操作,输入数据后,单击保存按钮对数据进行保存。其修改功能和删除功能的具体操作与实现方式与员工基本档案管理界面类似,这里便不再赘述。

其运行窗体如图5-10所示:

图5-10 公司部门信息管理窗体

具体实现代码如下:

int i = 公司部门DtGridView.CurrentRow.Index;

String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString; SqlConnection MyConnection = new SqlConnection(MySQLConnectionString);

MyConnection.Open();

string MySQL = \公司部门 where 公司名称='\公司部门

33

浙 江 大 学 毕 业 设 计

DtGridView.Rows[i].Cells[0].Vlue.ToString() + \

DtTble MyPersonnelTble = new DtTble();

SqlDtdpter MyDtdpter = new SqlDtdpter(MySQL, MyConnection); MyDtdpter.Fill(MyPersonnelTble);

this.公司部门DtGridView.DtSource = MyPersonnelTble;

if (MyConnection.Stte == ConnectionStte.Open) {

MyConnection.Close(); }

MessgeBox.Show(\删除成功!\ this.Vlidte();

this.公司部门BindingSource.EndEdit();

34

浙 江 大 学 毕 业 设 计

6 系统安全管理

在系统安全性方面,本系统采用了数据库认证和被广泛使用的MD5加密两种加密方式。数据库认证比较简单,设置较为复杂的登录密码即可。MD5加密算法已比较成熟,很适合应用于本系统。下面对本系统中应用到的MD5加密算法进行介绍[11]。

MD5算法的作用是让大容量信息在用数字签名软件签署私人密匙前被\压缩\成一种保密的格式,需要获得一个随机长度的信息并产生一个128位的信息摘要。其应用原理简单概括为:以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

在本系统中实现MD5加密的相关代码如下:

namespace Windows //MD5加密

{

class md5 {

public static String EncryptCode(string password) {

Byte[] clearBytes = new UnicodeEncoding().GetBytes(password); Byte[] hashedBytes =

((HashAlgorithm)CryptoConfig.CreateFromName(\

return BitConverter.ToString(hashedBytes); } } }

35

浙 江 大 学 毕 业 设 计

7 系统测试

7.1测试目的

程序测试是指程序测试就是在程序投入运行前,对程序的需求分析、设计规格说明和编码的最终复审,是保证程序质量的关键步骤。在系统正式交付运行前,一般需要做系统测试,来检测系统是否符合预期开发的目标、产品的使用是否方便、产品的稳定性是否良好、产品在运行过程中是否会出现错误。测试的目的也正是为了解决以上几方面的问题。

7.2测试方法

在系统测试的各种方法中,通常使用的有两种:即黑盒测试和白盒测试[12]。 黑盒测试是指将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,测试软件的外部特性。根据软件的需求分析和设计规格设计测试方式,从程序的输入和输出特性上测试是否满足设定的功能。而白盒测试则是将软件看做一个按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符。

本系统采用的测试方法为黑盒测试:首先测试系统完成的功能是否满足初期的需求分析。发现系统已基本完成了添加、修改、删除和模糊查询等相关功能,在具体的模块中均实现了预期目标。其次测试程序的设计规格,本系统开发完成一共应用了13个表和23个程序窗体,属于中小型企业所使用的程序系统,符合预期要求。综上所述:本系统的测试符合预期目标。

7.3测试实例

(1)用户登录测试

测试内容:在数据库的操作用户表中添加用户名和密码,并为其分配相应的权限。进而转到前台界面,首先输入错误的用户名、密码,验证是否提示错误并且不能登录,然后输入正确的用户名和密码,验证是否成功登录。结果显示用户输入错误的用户名和密码时提示“输入用户名或密码错误,请重新登录”。当用户输入正确的用户名和密码时,顺利进入系统主界面。因此,本次测试的测试结果为成功。

(2)添加功能测试

测试内容:在系统主窗体中点击人事档案管理窗体。单击添加按钮,在自编号中自动生成员工自编号,在手工输入员工编号、姓名及相关信息之后单击保存按钮。若有部分必填字段未输入则提示“请将相关信息输入完整”,若相关信息输入完整,则弹出“保存成功”的弹出窗口。然后进入SQL数据库查看相关信息,发现相关信息已经录入员工基本档案表。同样的方式,对其它拥有添加功能的窗体进行操作,

36

浙 江 大 学 毕 业 设 计

发现均能达到相同的效果。因此,本次测试的测试结果为成功。

(3)修改功能测试

测试内容:在系统主窗体中点击人事档案管理窗体。根据模糊查询的相关查询条件查询出相应的数据,点击显示在界面数据库中相应的数据,则相关数据显示在窗体界面中。单击修改按钮,修改相应的数据,修改完成后,单击保存按钮保存数据,则修改操作完成。后台进入SQL,查看相应的数据记录,发现数据已经更改。同样的方式,对其它拥有添加功能的窗体进行操作,发现均能达到相同的效果。因此,本次测试的测试结果为成功。

(4)删除功能测试

测试内容:在系统主窗体中点击人事档案管理窗体。根据模糊查询的相关查询条件查询出相应的数据,点击显示在界面数据库中相应的数据,则相关数据显示在窗体界面中。单击删除按钮,弹出提示框“删除成功”。进入后台SQL数据库,发现相关数据已被删除。同样的方式,对其它拥有删除功能的窗体进行操作,发现均能达到相同的效果。因此,本次测试的测试结果为成功。

(5)查询功能测试

测试内容:在系统主窗体中点击人事档案管理窗体。选择相应的查询条件之后单击查询按钮,则相关数据显示在引用到窗体的数据库中。比对数据库之后发现,相关数据为自己想要查询的数据。同样的方式,对其它拥有查询功能的窗体进行操作,发现均能达到相同的效果。因此,本次测试的测试结果为成功。

(6)统计功能测试

测试内容:在系统主窗体的考勤管理菜单项下点击年度个人考勤窗体,输入员工编号后,引用到窗体的数据库中显示出相关信息,单击某一信息项,则会有相关的考勤统计信息显示在窗体中。

(7)密码修改功能测试

测试内容:在系统主窗体的密码修改下拉菜单下。用户输入用户名、旧密码、新密码和确认新密码之后,单击修改密码按钮。退出系统重新进入的时候,用新密码进入,发现可以进入系统主窗体。因此,本次测试的测试结果是成功的。

37

浙 江 大 学 毕 业 设 计

8 总结

本次毕业设计,可以说是我多年来大学生活的一个知识总结。在本次设计之初,我在C#以及数据库方面的知识仍停留在理论知识的水平上,随着系统完成的深入,我在理论知识不断提高的基础上完善了我的实际软件开发经验。这不但是一次毕业设计,更是一个理论与实践良好结合的机会。至此,本次设计基本实现预期的相关要求,在添加、修改、删除、查询等基本功能实现了的情况之下,完善了数据统计,考勤管理等功能。在本次毕业设计过程中,每当遇到不能解决的知识性问题或设计思路不流畅的时候,可以通过学校的图书馆、网络以及指导教师的指导进行解决。当然由于时间、本人能力等原因,本系统仍有很多不完善的地方。具体表现在:

(1)员工考勤信息管理的按月查询尚未实现。 (2)员工每日工作任务的动态分配尚未实现。 (3)员工每日的工作日志未能实现动态添加。 (4)招聘、任用等环节未能涉及。

(5)员工照片未能添加到员工基本信息档案中。 (6)设计界面美观性仍有待完善。 (7)数据加密方式过于单一,加密性不强。

(8)公司的企业文化设计及员工与高层人事调动信息申请与交互的功能尚未实现。

38

浙 江 大 学 毕 业 设 计

谢辞

首先,要感谢我的毕业设计指导教师赵志伟老师,在赵老师的悉心指导使我顺利的完成了本次毕业设计的题目。从设计选题到中期开发直到最后的设计成果展示,赵老师始终本着严谨的治学态度、高度的探索精神来督促我完成本次题目。赵老师在学术方面的求真务实态度和严谨认真的治学风格是我以后学习、工作和生活中终生受益的资产。

其次,要感谢其它各位老师、同学的热心帮助。学校提供了优秀的知识资料供我参考,同学提供了良好的交流机会和论文改进的优秀意见。在此,要感谢他们。

最后,还要感谢多年来培养我的大学老师们,是你们扎实的知识储备和负责的教学风格使我养成了良好的学习习惯并且具备了程序开发的基础知识。

通过本次的毕业设计。从我个人角度上来说,我学到了很多知识,无论是在理论上还是在实践上,我的程序开发综合能力都有了一个提高。并且逐渐掌握了学习新鲜知识,掌握新鲜事物的能力。为我以后的学习和生活打下了一个更加坚实的基础。

39

浙 江 大 学 毕 业 设 计

参考文献

[1] 张立 等编著.程序天下--C#2.0实例自学手册[M].电子工业出版社.2008.1:70-72 [2] 王福明 主编.C#程序设计案例教材[M].科学出版社.2009:3

[3] 黄兴荣 等编著.C#程序设计实用教材[M].电子工业大学出版社.2009:189-191 [4] 韩晓祥、刘志军 主编.C#程序设计[M].中国人民大学出版社.2009:20 [5] 姚普选.数据库原理及应用[M].清华大学出版社.2002:7-9 [6] 陈宗斌等. 精通SQL Server 2005[M].电子工业出版社.2008:40

[7] 唐政、房大伟 等编著.C#项目开发实录[M].清华大学出版社.2009:45-48

[8] 明日科技,邹天思,孙明丽,庞娅娟.SP技术开发大全[M].北京:人民邮电出版社,2007:3-4

[9] 纪红.人事管理信息系统的设计与实施[J].计算机与现代化.2010年第3期,总第6期:89 [10] Rmez Elmsri,University Of Texs t rli,Fundmentls Of Dtbse Systems[M].New York:Person Eduction,2007:287-299

[11] brhm Silberschtz,Henry F.Korth,S.Sudrshn.Dtbse Systems Concepts[M].New York:McGrw-Hill College,2005:56-69

[12] Hns Vn Vliet,Softwre Engineering--Principles nd Prctice[M].New York:John Wiley & Sons,2000:300-301

40

浙 江 大 学 毕 业 设 计

附录

//登录模块代码 using System;

using System.Collections.Generic; using System.ComponentModel; using System.Dt;

using System.Drwing; using System.Text;

using System.Windows.Forms;

using System.Dt.SqlClient;

nmespce MyPersonnel {

public prtil clss LoginForm : Form {

public LoginForm() {

InitilizeComponent(); }

//记录用户登录次数

privte int MyTryCount = 0;

privte void 登录系统Button_Click(object sender, Eventrgs e) {

//从pp.config文件中读取数据库连接字符串信息 String MySQLConnectionString = globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString;

string MySQL = \操作用户 Where 用户名称=@用户名称 ND 用户密码=@用户密码\

SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open();

SqlCommnd MyCommnd = new SqlCommnd(MySQL, MyConnection); MyCommnd.Prmeters.Cler();

SqlPrmeter MySqlNmePrmeter = new SqlPrmeter(); MySqlNmePrmeter.PrmeterNme = \用户名称\

MySqlNmePrmeter.Vlue = this.用户名称TextBox.Text; MyCommnd.Prmeters.dd(MySqlNmePrmeter); SqlPrmeter MySqlPWPrmeter = new SqlPrmeter(); MySqlPWPrmeter.PrmeterNme = \用户密码;

MySqlPWPrmeter.Vlue = this.用户密码TextBox.Text; MyCommnd.Prmeters.dd(MySqlPWPrmeter); int MyCount = (int)MyCommnd.ExecuteSclr();

41

浙 江 大 学 毕 业 设 计

if (MyCount == 1) {

this.Close(); } else {

this.MyTryCount += 1;

if (this.MyTryCount != 3) {

int MyDoCount = 3 - this.MyTryCount;

MessgeBox.Show(\用户密码或用户名称有错,还有\次机会!\信息提示\ this.用户密码TextBox.Text = \

this.用户名称TextBox.Text = \ } else {

退出系统Button_Click(null, null); } }

if (MyConnection.Stte == ConnectionStte.Open) {

MyConnection.Close(); } }

privte void 退出系统Button_Click(object sender, Eventrgs e) {

MinForm MyDlg = (MinForm)this.Owner; MyDlg.Close(); }

privte void LoginForm_Lod(object sender, Eventrgs e) {

} } }

//主窗体设计

privte string MyBgPhoto; privte string Myddress; privte string MyTel; privte string MyCode; privte string MyWeb;

42

浙 江 大 学 毕 业 设 计

privte string MySlogn;

privte string MyBgPhotoShow; privte string MyOpertor; privte string MyCompny;

privte void MinForm_Lod(object sender, Eventrgs e) {

//添加ThredException事件关联程序

ppliction.ThredException += MyThredException; //从公司信息数据表中读取基本信息 this.GetCompnyInformtion(); //显示登录对话框

LoginForm MyDlg = new LoginForm(); MyDlg.Text = \欢迎使用\ MyDlg.ShowDilog(this);

this.MyOpertor = MyDlg.用户名称TextBox.Text; //根据用户的操作权限配置系统菜单 SetUserOperteMenu(); //最大化显示系统主窗体 if (MyOpertor.Length > 0) {

this.WindowStte = FormWindowStte.Mximized; }

//设置系统背景图像信息

this.BckgroundImge = new Bitmp(this.MyBgPhotoShow, true); //设置统标题栏显示文字 this.Text = MySlogn; }

//系统异常处理代码

public void MyThredException(Object sender, System.Threding.ThredExceptionEventrgs e)

{

string MyInfo = \错误名称:\,错误信息:\e.Exception.Messge;

MessgeBox.Show(MyInfo, \信息提示\MessgeBoxIcon.Informtion); }

//实现在系统关闭前给予用户提示

protected override void WndProc(ref Messge SystemMessge) {

switch (SystemMessge.Msg) {

cse 0x0112:

if (((int)SystemMessge.WPrm) == 61536) {

43

浙 江 大 学 毕 业 设 计

退出系统EToolStripMenuItem_Click(null, null); } else {

bse.WndProc(ref SystemMessge); } brek; defult:

bse.WndProc(ref SystemMessge); brek; } }

//从公司信息数据表中读取基本信息 public void GetCompnyInformtion() {

//从pp.config文件中读取数据库连接字符串信息 String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString; string MySQL = \ * From 公司信息 \

SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open();

DtTble MyTble = new DtTble();

SqlDtdpter Mydpter = new SqlDtdpter(MySQL, MyConnection); Mydpter.Fill(MyTble);

MyBgPhoto = ppliction.StrtupPth + \管理系统背景照片\

Myddress = (String)MyTble.Rows[0][\公司地址\ MyTel = (String)MyTble.Rows[0][\服务电话\ MyCode = (String)MyTble.Rows[0][\邮政编码\ MyWeb = (String)MyTble.Rows[0][\公司网站\

MySlogn = (String)MyTble.Rows[0][\管理系统显示名称\ MyCompny = (String)MyTble.Rows[0][\公司名称\ if (MyConnection.Stte == ConnectionStte.Open) {

MyConnection.Close(); }

MyBgPhotoShow = ppliction.StrtupPth + \管理系统背景照片\ }

public void SetUserOperteMenu() {

String MySQLConnectionString =

globl::MyPersonnel.Properties.Settings.Defult.MyPersonnelConnectionString;

string MySQL = \ * From 操作用户 Where 用户名称='\

44

浙 江 大 学 毕 业 设 计

+ \

SqlConnection MyConnection = new SqlConnection(MySQLConnectionString); MyConnection.Open();

DtTble MyTble = new DtTble();

SqlDtdpter Mydpter = new SqlDtdpter(MySQL, MyConnection); Mydpter.Fill(MyTble);

if ((int)MyTble.Rows[0][\人事管理之基本档案] == 0) {

this.基本档案ToolStripMenuItem.Visible = flse; this.基本档案ToolStripSeprtor.Visible = flse; } //系统设置

CompnyForm MyDlg = new CompnyForm(); MyDlg.ShowDilog();

StringBuilder MyTempPth = new StringBuilder(this.MyBgPhotoShow); this.GetCompnyInformtion();

if (!System.IO.File.Exists(MyBgPhotoShow)) {

Imge MyImge = new Bitmp(MyBgPhoto, true); int PosX = 10;

int PosY = MyImge.Height / 2 + 150; int MyFont = 150; bool bMyFound = flse;

int MyWidth = MyImge.Width; int MyHeight = MyImge.Height; int MySize = MyWidth * MyHeight;

Bitmp MyPttern = new Bitmp(MyWidth, MyHeight); Bitmp MyBitmp = new Bitmp(MyImge); Grphics g = Grphics.FromImge(MyPttern);

Grphics MyGrphics = Grphics.FromImge(MyImge); g.Cler(Color.White);

while (bMyFound == flse) {

Font NewFont = new Font(\宋体?\ SizeF MyString = new SizeF(MyWidth, MyHeight); MyString = g.MesureString(MySlogn, NewFont); if (MyString.Width < MyPttern.Width) {

if (MyString.Height < MyPttern.Height) {

bMyFound = true;

g.DrwString(MySlogn, NewFont, new SolidBrush(Color.Blck),

45

本文来源:https://www.bwwdw.com/article/8yxp.html

Top