二审论文

更新时间:2024-02-01 10:14:01 阅读量: 教育文库 文档下载

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

编号

本科生毕业设计

基于三层架构的人力资源管理系统的设计

The Design of the Human Resource Management System

Based on the Three-layer Structure Technology

学 生 姓 名 专 业 学 号 指 导 教 师 学 院

徐智超 软件工程 070521131 王鹏 计算机科学技术 2011 年 6 月

长春理工大学本科毕业设计

摘要

人力资源管理系统(HRMS,Human Resources Management System),是指组织或社会团体运用系统学理论方法,对企业的人力资源管理方方面面进行分析,规划、实施、调整,提高企业人力资源管理水平,使人力资源更有效的服务于组织或团体目标。

本文对系统进行了需求分析、开发方案的选择、前台界面的设计、后台数据库的架设等工作,还描述了系统测试的相关工作。基于三层架构的思想,前台开发采用Asp.net与C#相结合的方式,后台采用SQL Server 2000平台,利用ADO.NET访问数据库,采用B/S架构,实现了一套人力资源管理系统。

关键词:人力资源管理系统 B/S模式 C# SQLServer ADO.NET

I

长春理工大学本科毕业设计

Abstract

Human resource Management System, coordination, refers to the organization or social organizations use of enterprise theory, systematic, all aspects of Human Resources Management analysis, planning, implementation, adjust and improve enterprise Human Resources Management level, make more effective Human resource service to organizations or groups target.

This article on the system needs analysis, development scheme selection, the backend database construction, the stage of design, interface also describes the system test of related work. Based on the thought of three layers framework, the front office development with asp.net and the way of the combination of the c #, the background server2000 platform using the SQL, ado.net database access, the B/S structure, realized one set of human resources management system.

Keywords: Human Resource Management System; B/S Model; C# ; SQLServer ;ADO.NET

II

长春理工大学本科毕业设计

目录

摘要 ................................................................................................................................ I ABSTRACT................................................................................................................. II 第1章 序言 ............................................................................................................. - 1 - 1.1项目背景与意义 ............................................................................................. - 1 - 1.2国内外研究现状 ............................................................................................. - 1 - 1.3 项目目标与期 ................................................................................................. - 2 - 1.3.1 树立全新企业形象 ................................................................................. - 2 - 1.3.2激发竞争力 .............................................................................................. - 2 - 1.3.3减轻部门负担 .......................................................................................... - 2 - 1.4项目设计原则 ................................................................................................. - 2 - 1.4.1 实用性原则 ............................................................................................. - 2 - 1.4.2 经济性原则 ............................................................................................. - 2 - 1.4.3 扩充性原则 ............................................................................................. - 2 - 第2章 相关技术介绍 ............................................................................................. - 3 - 2.1 三层架构的选择 ............................................................................................. - 3 - 2.2程序语言的选择 ............................................................................................. - 4 - 2.3 B/S模式 ........................................................................................................... - 5 - 2.2.1 B/S模式简介 ........................................................................................... - 5 - 2.2.2 B/S模式的优点 ....................................................................................... - 5 - 第3章 系统需求分析 ............................................................................................. - 6 - 3.1 系统需求分析简述 ......................................................................................... - 6 - 3.2 系统需求分析详述 ......................................................................................... - 6 - 3.2.1人力资源管理系统需求目标 .................................................................. - 6 - 3.2.2 系统模块需求分析 ................................................................................. - 7 - 3.2.3 系统安全需求分析 ................................................................................. - 9 - 3.2.4 系统数据库需求分析 ............................................................................. - 9 - 第4章 总体设计 ................................................................................................... - 11 - 4.1 系统开发结构设计图示 ............................................................................... - 11 - 4.2 系统功能模块结构设计 ............................................................................... - 11 - 4.3系统数据库逻辑设计 ................................................................................... - 12 - 第5章 详细设计 ................................................................................................... - 16 - 5.1界面详细设计 ............................................................................................... - 16 - 5.2 业务逻辑层详细设计 ................................................................................... - 18 - 5.2.1用户登录模块详细设计 ........................................................................ - 18 - 5.2.2用户管理模块详细设计 ........................................................................ - 20 - 5.2.3基础设置模块详细设计 ........................................................................ - 21 - 5.2.4人事管理模块详细设计 ........................................................................ - 22 - 5.2.4日常事务管理模块详细设计 ................................................................ - 24 -

I

长春理工大学本科毕业设计

5.3数据访问层 ................................................................................................... - 25 - 第6章 系统实现 ................................................................................................... - 28 - 6.1 管理员管理操作界面 ................................................................................... - 28 - 6.2 普通用户管理界面 ....................................................................................... - 28 - 6.3 系统通知实现截图 ....................................................................................... - 28 - 第7章 系统软件测试 ........................................................................................... - 29 - 7.1 单元测试 ....................................................................................................... - 29 - 第八章 总结 ........................................................................................................... - 31 - 参考文献 ................................................................................................................. - 32 - 致 谢 ................................................................................................................... - 33 -

II

长春理工大学本科毕业设计

第1章 序言

1.1项目背景与意义

完善的人力资源管理系统不但可以管理包括人员招聘、岗位描述、培训、绩效评估、个人信息、薪资和福利、人事管理等信息和进行报表分析,而且可以使人力资源管理人员从繁琐的日常工作中解脱出来,将精力放到更有挑战性和创造性、对企业未来发展具有前瞻性、规划性的人力资源分析、规划、员工激励和人力资源战略等工作中去。

目前,相当多的企业还没有部署人力资源管理系统,人力资源管理主要是通过简单的人事管理系统,结合文档、表格处理软件来完成,严重影响人力资源管理工作的效率和企业人才竞争能力,迫切需要借助现代计算机技术、网络技术和信息技术,建立先进、实用、基于网络的人力资源管理系统,实现人力资源管理工作的自动化、系统化、规范化、透明、公平,为企业战略发展提供人力资源决策信息。因此,研究基于现代信息技术的人力资源管理系统是一件非常有意义的事情。人力资源管理系统的实施有助于加快企业信息化建设的步伐,同时可以促进国家信息化进程和对社会进步做出贡献。HRMS在企业的实施可以改变企业的运行模式,提高企业的工作效率,增强企业竞争力。

1.2国内外研究现状

由于人力资源管理产品蕴涵着巨大的潜在效益,受到许多国家和组织的重视,纷纷投资进行相关领域研究。国内外许多学者对人力资源管理系统进行了定义,大家一致认为它已经超越了简单的存储和更正信息,其应用的范围已扩大到诸如编制报告、预测人力资源需求、战略计划、职业生涯和晋升计划,以及评估人力资源管理的政策及实践等领域。现在所说的人力资源管理系统,主要是指运用现代计算机、软件及网络技术来对组织的人力资源管理活动进行系统化、流程化的设计、管理、控制和评价。它不仅需要计算机及网络等硬件的支持,更需要HRMS软件及相关的人力资源管理理念的辅佐。在人力资源管理系统的理论研究方面,大多数企业都已运用信息技术在雇员的资料记录、工资支付、薪酬福利等方面进行管理,而人力资源管理信息系统也具有使企业人力资源更加有竞争力的极大潜力。

国内的许多学者也对人力资源管理系统进行了分析,具有代表性的有谢晋宇、申刚正、左葆瑜、郑大奇等人。在技术上,国内的吴相林提出了基于UML的HRMS的建模和开发理论,陈朝晖提出了基于流程控制的HRMS模型,张思嘉从流程重组(BPR)角度提出HRMS的新构架,李健则从宏观上对人力资源信息社会共享系统进行了研究。

- 1 -

长春理工大学本科毕业设计

1.3 项目目标与期

1.3.1 树立全新企业形象

对于任何一家企业而言,企业的品牌形象至关重要。特别是对于互联网技术高度发展的今天,通过人力资源管理系统,员工可以了解企业整体形象及实力情况,因此,设计B/S模式的企业人力资源管理系统能够极大的提升企业在每个员工心中的整体形象。

1.3.2激发竞争力

从系统查询中,员工可查看到评为优秀的中层干部等人员表彰,而如果这里没有自己的名字,会极大的激发个人的斗志,这也是本系统的作用之一。通过这种方式,使员工主动的全身心投入工作,鼓舞带动员工的积极性,这要比开动员大会效果好。

1.3.3减轻部门负担

企业在岗人数很多,而所有和人员有关的运作都由人事科来完成,可见工作量之大之复杂。通过研究,开发一套灵活、高效、适合于企业应用的人力资源管理系统,使之能够提高人事部门的工作效率,方便人事的各项管理,并且避免了人工作业的错误几率。系统开发符合企业实际需求,切合实际,能够提高企业人力资源管理水平,提高工作效率,降低成本。

1.4项目设计原则

1.4.1 实用性原则

充分考虑到在人力资源管理中可能遇到的各种问题,尽量全面的做好需求分析,以减少日后软件更新的次数。

1.4.2 经济性原则

建立适合企业自身需求的网络平台,提供广泛的涵盖用户多种需求的功能,数据处理方式灵活且满足需求,节省系统开发成本,并确保其较好的拓展性和开放性;同时系统具有基于WEB界面的管理后台,能够自主的对内容作更新、修改操作,节省了运营成本,提高了信息更新、传播效率。

1.4.3 扩充性原则

系统的整体规划及框架设计是具可扩充性的,前台页面的设计能保证系统在增加栏目后不会破坏其整体结构。后台数据库的设计具有高度的扩充性,能够根据需要对栏目、类别的增加、删除、修改。

- 2 -

长春理工大学本科毕业设计

第2章 相关技术介绍

2.1 三层架构的选择

本系统采用三层架构来实现,这样可以很容易的用新的实现来替换原有层次的实现;降低层与层之间的依赖;有利于标准化;利于各层逻辑的复用。

三层体系结构的概念:

[1]

1.用户界面表示层(UI)

位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

2.业务逻辑层(BLL)

业务逻辑层(Business Logic Layer)是系统架构中体现核心价值的部分。主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3.数据访问层(DAL)

有时候也称为是持久层,其功能主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。如下图2-1所示为三层架构图。

图2-1三层架构图

- 3 -

长春理工大学本科毕业设计

2.2程序语言的选择

1. C#编程语言

C#是可用于创建运行在.NETCLR上的应用程序的语言之一,是一种类型安全的语言,所以C#代码比C++要长,并且能使用.NET Framework代码库提供的每种功能。C#语言的优点如下:

1)完全支持类和面向对象编程; 2)定义完整、一致的基类集合; 3)可以用用户定义的属性标记类或方法; 4)对自动生成XML文档说明的内置支持; 5)自动清理动态分配的内存; 6)可以使用指针和直接内存访问;

7)对.NET基类库的完全访问权,并易于访问Windows API; 8)以VB的风格支持属性和事件;

9)C#可以用于编写ASP.NET动态Web页面。

C#是一种先进的、面向对象的开发语言。从开发语言的角度来讲,C#可以更好的提高工作效率,且具有C/C++的强大功能,可使熟悉C/C++开发的人员较快的转变为C#开发人员。

[2]

3. SQL Server

SQL Server 2000是微软公司推出的基于RDBMS(关系数据库管理系统)技术的数据库。它与ORACLE、SYBASE相比,有着安装方便、使用简单的优点,而且在性价比上有着其它数据库无法企及的优势。在我国,采用WINDOWS NT作为局域网操作系统的占不小比例,而从技术角度来说,同DB2结合大型机一样,SQL Server同WINDOWS NT紧密的结合在一起。能很好的处理部门级的数据。作为SQL Server 系列中的新版本,SQL Server 2000增强了很多功能,服务器性能主要有:新数据类型、数据仓库、分布式查询和更新、动态锁定、通过MICROSOFT代理服务器访问SQL Server、新的安全模型、XML支持等;管理性能增强有:数据转换服务工具(DTS)、管理控制台(企业管理器)、WEB助手向导等。SQL Server 2000所具有的将关系数据库管理系统(RDBMS)扩展为虚拟的对象数据库管理系统(ODBMS)的能力,使SQL Server 2000成为当今应用于Intranet、Internet及其Extrnet中最具综合性的数据库开发环境。这就是我们采用SQL Server 2000作为支持数据库的主要原因。

[3]

4. ADO.NET

ADO.NET是.NET应用程序数据访问模型,用于访问关系型数据库系统。具有互操作性、可伸缩性和高效性等优点。ADO.NET的对象模型包括内容(Content)组件和托管供应器(Managed Provider)组件。内容组件包括Dataset

- 4 -

长春理工大学本科毕业设计

类和其它支持类如DataTable,DataRow,DataColumn和DataRelation。托管供应器组件用于辅助数据获取和更新。

[4]

使用ADO.NET的任何软件解决方案的中心都是数据集。数据集是内存中的数据库数据的副本。一个数据集包括许多数据表,每个数据表一般都对应一个数据库表格或视图。一个数据集组成了一个“断开的”数据库数据的视图。说得更精确些,数据集存在于内存中,没有到包含相应表格或视图的数据库的活动的连接。这种断开的体系结构在读写数据库时,只使用数据库服务器资源,从而具有更大的可收缩性。

[5]

2.3 B/S模式

2.2.1 B/S模式简介

B/S模式是一种以Web技术为基础的新型的系统平台模式,它把传统的C/S模式中的服务器部分分解为一个数据服务器和多个应用服务器,从而构成了三层结构的客户端服务器体系。

[6]

第1层客户端是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator, Microsoft Internet Explorer等浏览器将HTML代码转换成图文并茂的网页,网页具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后第2层的Web服务器,并提出处理请求。

第2层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,将嵌入的处理结果返回给客户端浏览器。如果客户端提交的请求包括数据的存取,Web服务器还需要与数据库服务器协同完成这一处理工作。

第3层数据库服务器的任务类似于C/S模式,负责协调不同的Web服务器发出的SQL请求。

2.2.2 B/S模式的优点

B/S模式体系简化了客户端,使用户的操作便得更简单。采用B/S模式时,客户端只是一个简单易用的浏览器软件。无论是决策层还是操作人员都无须培训就可以使用。

B/S模式特别适用于网上信息发布,这是C/S模式所无法实现的。而这种新增的网上信息发布功能恰是现代物流企业所需的。这使得企业与客户之间的信息可以在因特网上直接进行,从而提高了企业的工作效率。

- 5 -

长春理工大学本科毕业设计

第3章 系统需求分析

3.1 系统需求分析简述

软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

[7]

需求分析是任何一个软件系统的开发过程当中比较重要的一项工作指标,人力资源管理系统需求分析工作中的质量好坏和结果的认定将直接影响甚至决定系统开发工作成功与否,如果后期的系统开发工作是建立在一系列错误的前期需求基础上,那么无论这个程序代码设计和编写的质量多么完美,系统都将是不会成功的。然而,对于一个比较大型软件系统开发来说,需求分析工作的确是难上加难,以至于很多项目的失败都是源于此。人力资源管理系统实现的是利用计算机系统支持企业人力资源管理的流程和内容,以达到高效的人力资源管理的要求。

人力资源管理系统的设计与实现包括以下几个方面的需求: 1.功能性:实现软件基本业务要求,且具有完善的安全特性。 2.可用性:提供友好可靠的交互界面,且具有完善的文档支持。 3.可靠性:提供可靠的系统错误处理能力,减少系统异常。

4.可支持性:提供软件的适应性,提供国际化支持,提供系统的可配置。

3.2 系统需求分析详述

3.2.1人力资源管理系统需求目标

人力资源管理是一个复杂命题,这里的系统需求关注的是人力资源基本信息的管理。考虑到公司人力资源的保密性,对人力资源的信息需要很谨慎的保密,以防被偷窃、泄露,对公司造成巨大的损失。因此,在设计人力资源管理系统的功能时,应当考虑周全,我们可以按照用户的授权级别,不同的用户可以拥有不同的功能,实现不同的职能。

具体包括以下功能:

1. 用户管理:授权管理、增加用户、修改用户、查询用户、删除用户。 2. 基础设置:设置系统主要操作方法,通过系统结构得到变化不断掌握企业发展的变化。

3.人事信息管理:进行员工信息的管理,包括基本信息的管理,职称比例统计、在岗人数统计等。

4.日常事务管理:记录企业发展动态,发布企业消息,如会议、公告等。

- 6 -

长春理工大学本科毕业设计

3.2.2 系统模块需求分析 1.用户管理

按照权限不同本系统的用户又分为两类普通用户和管理员,普通用户对于本系统只有浏览和查阅的功能,而管理员用户还有添加、删除、修改信息等功能。在此模块下可以自动处理员工入职/离职的信息,管理员工的基本信息和履历信息,包括员工简历、家庭、变迁、职业生涯、奖惩记录、技能、培训信息等。

如图3-1为用户管理的数据流图。

权限设置为1添加用户ID和密码生成管理员用户添加管理员信息处理保存设置权限设置为0图3-1 用户管理数据流图

生成普通用户添加信息2.基础设置

对系统的基本操作设置规则,人事管理的设置,以及用户管理的设置,使整个企业有一个完整统一的工作流程;根据企业的需要将组织架构进行设置、维护、扩展,适应企业多层管理架构的需要,通过对本系统的实时更新随时掌握企业的动向,及时对其进行调整。

如图3-2为基础设置管理数据流图:

人事信息处理人事信息设置信息企业架构信息企业架构处理设置信息设置信息设置信息界面生成设置信息界面管理员查询信息查询方式分析处理用户用户信息用户管理处理日常事务处理人才事务信息设置信息

图3-2 基础设置数据流图

3.人事管理

自动处理员工入职/离职的信息,管理员工的基本信息和履历信息,包括员

- 7 -

长春理工大学本科毕业设计

工简历、家庭、变迁、职业生涯、奖惩记录、技能、培训信息等。

其中包括:调动管理,对人事调动进行信息统计,如人事升迁、降职、更换部门、新员工入职、老员工离职等人事变迁进行统计和管理。基本活动流程和人事管理相似,只是在本人确认前需要部门领导确认;合同管理,对于劳务合同的管理,新入职员工需签订试用合同,试用期满签订劳动合同。对于合同期满的员工办理续签工作;工资管理,对公司所有员工进行工资统计和管理,可以自动更新工资变动信息、查询所有员工的工资情况、添加和修改记录等。当对员工工资进行修改时需要经过本人确认后方可提交。

如下图3-3为人事管理的数据流图:

用户信息人事信息添加处理添加的人事信息管理员修改信息修改分类修改信息人事信息保存修改发布界面用户信息人事信息删除处理删除的人事信息所有用户图3-3 人事管理数据流图

4.日常事务管理

根据企业工作情况发布企业新闻动态、活动通知、会议信息、人事变更信息、会议室占用情况等,为企业员工搭建一个动态的公告栏,记录员工奖惩情况等。

主要包括添加、修改、删除、查询等功能,是管理人员能够把企业动态及时发布出去,方便全体员工查阅信息。

如下图3-4为日常事务管理的数据流图:

事务信息添加事务事务信息需添加事务信息确认发布事务信息操作分类发布事务信息管理员日常事务信息确认提交发布界面所有用户事务信息修改事务需修改事务信息图3-4 日常事务管理数据流图

系统用例如图3-1所示

- 8 -

长春理工大学本科毕业设计

人力资源管理系统用户管理<><>人事管理<><><>管理员<>日常事务情况普通用户基础设置图3-1 人力资源管理系统用例

3.2.3 系统安全需求分析

人事信息中存在许多个人资料的数据,需对其进行妥善管理,但由于时间和精力原因,本系统只对操作权限进行了划分和控制。系统根据业务上的需要划分了管理员,普通用户两个角色,不同的角色具有不同的操作权限(普通用户只有浏览权限不能对其修改,管理员可以进行一些增、删、改、查等操作),以确保数据的安全和操作的规范。事实上,还应从数据传输,登录口令验证,处理断电,断网等意外情况,数据库备份和恢复多个方面进行操作以保证系统的安全性。

3.2.4 系统数据库需求分析

该系统的数据库不仅要体现信息管理这一部分,因为权限管理是关系到查看详细信息的,所以系统的实体之间的关系要衔接完整才行。图3-2用实体关系(E-R)图描述该系统主要的数据库表及表之间的关联。图3-3为实体及其属性图。

该用户已存在该用户已存在普通用户n浏览1人力资源管理1管理n管理员1隶属1n人员管理n对应1人员信息工资管理1参照n对应1日常事务图3-2人力资源管理系统E-R图

- 9 -

长春理工大学本科毕业设计

由于空间有限下面将实体及其属性通过图3.3实体及其属性图展现出来。

员工姓名职务家庭住址联系方式日常事务所属部门人员信息工龄人事合同人员调动情况公告通知出生日期籍贯民族普通用户工资管理管理员密码用户权限用户ID用户名奖惩各项补助保险基本工资用户ID密码用户权限用户名图3-3人力资源管理系统实体-属性图

- 10 -

长春理工大学本科毕业设计

第4章 总体设计

本系统是基于.NET平台下B/S体系的三层结构。由用户界面层,中间业务逻辑层,后台数据处理层组成。采用以数据库作为后台,以数据处理及分析程序作为中间层,以Web作为后台的三层次结构开发模式。在ASP.NET和SQL Server2000平台下进行开发。使用Web技术开发后端软件,使客户端应用通过从服务器下载的方式运行,这可大大提高系统的安全性;由于系统对客户端机器的硬件要求不高,用户可保留原有的软硬件投资;用户只需在服务器上作配置和维护,将大大降低系统维护的难度;此外,采用浏览器的客户界面,操作十分简单,又可节省大量的培训时间和费用。在具体实施时,充分利用ASP.NET技术,使开发出来的Web应用的可靠性、扩展性及功能性有了很大的提高,使最终的结果不再是简单的网页,而是可以在其之上构筑完整应用的一种应用平台。

4.1 系统开发结构设计图示

系统开发的结构设计图4-1如下所示:

用户需求分析系统分析业务流程数据流程数据库设计数据加载数据测试功能分析基于B/S模式应用开发应用测试SQL程序服务器Data服务器Web服务器应用数据库管理与维护设备DB结束

图4-1 系统开发结构设计图

4.2 系统功能模块结构设计

下图4-2为人力资源管理系统功能模块框架图:

- 11 -

长春理工大学本科毕业设计

人力资源管理系统日常事务管理用户管理普通用户活动通知人事管理奖惩公告合同管理调动管理人事信息工资管理公司架构基础设置人事管理设置用户管理设置管理员工作流程图4-2系统总体功能框架图

4.3系统数据库逻辑设计

本系统采用三层架构开发模型,数据访问层的设计直接影响系统逻辑层访问数据访问层的扩展性和维护的难易程度。为了实现对数据库的支持,数据库的访问采用设计模式中的抽象工厂模式封装数据访问层。抽象工厂模式可以为逻辑层提供统一的接口。这样逻辑层访问数据访问层只要调用这个接口就可以了,从而使得上层代码稳定。

因为本系统涉及到很多数据信息的添加、修改、删除等操作,把对数据库的访问提升为一个抽象工厂类。

[8]

为进一步阐释数据库逻辑设计,用数据库表和表之间的关联图4-3如下所示:

- 12 -

长春理工大学本科毕业设计

tb_familyPKPKFK1,FK2 perIDLeaguerNameperNameNexusBirthDateWorkIncheadshipvisagephonetb_perInfoPK,FK1PKFK1 FK2FK4FK5perIDperNameLeaguerNameperNumfolkbirthdayagekulturmarriagesexvisageIDCardorigoworkDateworkLengthemployeeintoWorkDateintoWorkLengthlaborageTypebranchheadshipZhiChenphonehandsetschoolspecialityGraduateDateM_PaybankNumaddressphotoImagefidhidZCIDtb_workresumePK,FK1PKFK1 perIDIncNameperNamebeginDateendDatebranchheadshiptb_addressBookPK,FK1FK2FK2 idperIDperNameuNamesexphonehandsetworkPhoneQQe_mailtb_transferPK,FK1PK,FK1 perIDperNametraDatetraTypetreFormertreAftertreWhystb_RandPPK,FK1PKFK1 perIDQuashWhysperNameRPKindRPDateconfirmManQuashDatetb_UsersPK iduserNameuserPwduserGroup图4.3数据库表关系图

其中,数据库表的详细信息构成如表4-1~4-7所示:

表4-1系统personal information信息表

序号 1 2 3 4 5 6 7 8 9 列名 perID Porname Folk Birthday Workdate Age sex phoneNumber Marriage 数据类型 varchar(10) nvarchar(10) nvarchar(10) datetime datetime int bit int bit 可否为空 否 否 是 是 是 是 否 是 否 备注 主键 主键 0 女 1 男 0 未婚 1 已婚 10 Worklength Int 是 - 13 -

长春理工大学本科毕业设计

11 12 13 14 15 序号 1 2 3 4 5 6 序号 1 2 3 序号 1 2 3 School Fid Hid Zcid visage 列名 id Uname Workphone E-mail address qq 列名 PerID brancrname branchId 列名 Username Password Group nvarchar(10) nvarchar(10) nvarchar(10) nvarchar(10) int 数据类型 varchar(10) nvarchar(10) int nvarchar(10) nvarchar(10) Char(15) 数据类型 int nvarchar(10) nvarchar(10) 数据类型 nvarchar(10) nvarchar(10) bit 是 是 是 是 是 可否为空 否 否 是 是 否 否 可否为空 否 否 否 可否为空 否 否 否 备注 主键,自增 备注 主键 0 用户为普通用户 1 用户为管理员 表4-5 系统family信息表 序号 1 2 3 4 5 列名 PerID LeagureName birthday headship phone 数据类型 Int nvarchar(10) datetime nvarchar(20) varchar(13) 可否为空 否 是 是 是 否 备注 主键,自增 备注 主键 表4-2 系统addressbook信息表 表4-3 系统tb_branch信息表 表4-4 系统tb_user信息表 表4-6 系统tb_RandP信息表 序号 1 2 3 4 5 列名 PerID RPkind RPdate Quashwhys Name 数据类型 Int nvarchar(10) datetime nvarchar(20) Nvachar(10) - 14 -

可否为空 否 是 是 是 否 备注 主键,自增 长春理工大学本科毕业设计 表4-7 系统workresum信息表

序号 1 2 3 4 5 列名 PerID Begindate Enddate branch headship 数据类型 Int datetime datetime nvarchar(20) Nvachar(10) 可否为空 否 是 是 是 否 备注 主键,自增 Branch的外键 由以上的表和表之间的关联可以清晰分析出数据库的整个规模,以上表中的personal information、tb_RandP、tb_usere三表是本系统的业务核心表。系统的大致轮廓确定了,数据库的内容以及表的设计就直接影响到开发的系统的质量。在设计的过程中,本系统考虑了设计数据表范式规则,但更重要的考虑了用户使用的方便性,所以采用了比较折中的办法——适当增加冗余度去牺牲空间来加快时间。

- 15 -

长春理工大学本科毕业设计

第5章 详细设计

5.1界面详细设计

1.用户登录界面详细设计

用户登录界面中涉及到触发事件的控件元素如下表5-1所示

表5-1 用户登录界面控件元素

控件名称 Register 控件类型 Label 事件 Register_Label_MouseLeftButtonDown Login_Button_Click 功能描述 获取验证码, 调用函数 private string CreateCheckCodeString() 向系统提交用户身份、ID和密码,符合要求则打开对应的管理界面 调用函数protected void ib_login_Click Login Button 2系统管理主界面详细设计 因为大部分的管理功能都必须建立在界面的DataGrid显示基础上,将两大模块组合成一个大界面,设计力求界面简洁、清晰、便捷,这样能方便用户查找、维护、管理企业人员,避免用户产生误操作和业务繁琐复杂的挫败感。系统管理员和普通用户主界面设计框架相似,细微差别在下列表中作出分辨(M—管理员界面独有;N—普通用户界面独有)。

注:在实际实现中,允许出现额外的Label控件,但其功能仅限用于对以下控件描述的描述性辅助说明,否则不可出现任何详细设计中未提及到的控件。系统管理主界面详细设计如表5-2所示:

表5-2系统管理主界面元件设计表

控件名称 SearchPerinforCode SearchPerinforBranch 控件类型 Button 事件 SearchFacilityCode_Button_Click SearchFacilityName_Button_Click 功能描述 提交按员工编号查询条件 调用函数public partial class HRData : System.Web.UI.Page Button 提交按部门编号查询条件 调用函数public partial class addBranch : System.Web.UI.Page 提交按民族查询条件 调用函数public partial class addFolk : System.Web.UI.Page SearchPerinforName Button SearchFacilityDateTime_Button_Click 提交按姓名查询条件 调用函数public partial class CheckCode : System.Web.UI.Page SearchPerinforFolk Button SearchFacilityPrice_Button_Click 3用户添加界面详细设计 系统用户添加界面详细设计如表5-2所示:

- 16 -

长春理工大学本科毕业设计 表5-3系统用户添加界面控件元素

控件名称 UserID 控件类型 TextBox 事件 ID_TextBox_TextChanged 无 Password2_PasswordBox_GotFocus, Password2_PasswordBox_LostFocus 功能描述 输入添加的员工ID,并查找没有没相同的员工ID,调用函数protected void bt_add_Click 输入登录密码 调用函数protected void Page_Load 输入确认密码,与注册密码进行对比 调用函数protected void bt_back_Click Password DefinePassword PasswordTextBox PasswordTextBox 4.人事信息添加界面详细设计 系统人事信息添加界面详细设计如图5-4所示

表5-4 人事信息添加界面控件元素

控件名称 Add(M) 控件类型 Button 事件 Add_Button_Click 功能描述 添加信息 调用函数protected void Page_Load(object sender, EventArgs e) Dele(M) ViewPerinfor(M) ViewBranch(M) Apply(N) Button Button Button Button Dele_Button_Click ApplyDefine_Button_Click ReturnDefine_Button_Click Apply_Button_Click 删除信息 调用函数protected void bt_del_Click 查看所有员工信息 调用函数public partial class viewPerInfo : System.Web.UI.Page 查看所有部门信息 调用函数public void dataBind 提交添加申请 调用函数protected void cb_all_CheckedChanged CheckUseFacility(N) Caution(N) Button Button CheckUseFacility_Button_Click Caution_Button_Click 提交修改申请 调用函数protected void GridView1_PageIndexChanging 返回 调用函数protected void bt_back_Click 另:以下控件元素镶嵌在DataGrid中: Detail(M) Delete(M) Button Button Detail_Button_Click Delete_Button_Click 查看该员工的资料详情 调用函数 protected void bt_view_Click 删除员工信息 调用函数protected void bt_del_Click - 17 -

长春理工大学本科毕业设计

5.2 业务逻辑层详细设计

类模型,是描述系统内部对象的特征、对象之间的相互关系以及对象所属的每个类的属性和操作,捕获系统的静态特征的一种直观方式。

本系统是基于三层架构开发的管理信息系统,因此,每一层可以看作独立的类,对每一层进行抽象可以提取出基类,如逻辑层的Interface接口类、用户类等等,然后按照需要实现的关系来组合成有连接的关联类模型。

按照需求分析和总体设计阶段提出的模块和实体关系,整个系统业务逻辑的类模型设计如下图5-1所示:

Manage-Style : int1User-ID : string-Password : string-Name : string-PhoneNumber : string-GroupID : int-LastLogicDateTime : Date+Login()Interface*-Code : string1-Name : string-TotalNumber : int-RemainNumber : int-UserID : string-UpdateTime : Date-GroupID : int+BindDatetoDataGrid()+SendDate()+GetDate()SearchManage-Code : int-Style : int-Number : int-UserID : string+BindData()+SearchDetail()+SendApply()*ChangeManage-Code : int-Style : int-Number : string-UserID+BindData()+Search Detail()+SendCaution()*1NormalUser-Caution : bool-Department : int+SearchCode()+SearchName()+Searchaddress()+SearchTime()+CheckCaution()+CheckDetail()+Register()Manager-Apply : bool+SearchCode()+SearchName()+Searchaddress()+SearchTime()+CheckaddDetail()+CheckAllDetail()+Checkdeletedetial()+Checkchangeapply()+Addactivity()+Deleteactivity()+Updateactivity()**perinfor-Code : string-Name : string-Price : decimal-TotalNumber : int-RemainNumber : int-AddTime : Date-UpdateTime : Date+UpdateTime()+UpdateNumber()**图5-1类模式图

在上图类模型中已经把整个系统所涉及的类和之间的关联描述得很清楚了,下面针对各个模块做一个系统流程图设计进一步勾画逻辑层的详细设计。

5.2.1用户登录模块详细设计

用户登录实质上是对用户的一种检索。当然这种检索的条件就是用户名,密码,用户类别(身份)这三个条件的结合。该系统所有的功能都是在用户登录的前提下才能正常运行,所以这个功能在整个系统中起着重要的作用。

- 18 -

长春理工大学本科毕业设计

用户按登录界面上的要求,选择登录身份,输入用户名和密码后单击“登录”后,输入的信息将与用户表中的用户名和密码进行比较,如果表中有该用户名,密码对应相同,并且身份匹配,则登录成功,进入下一相应身份的主界面;如果用户表中无该用户名,或者对应用户名的密码不相同,或者身份不一致,则给出提示信息“用户不存在”或“密码错误”,如果未输入用户名或密码直接登录,则提示“用户名或密码不能为空!”。

系统用户登录模块中,关系到三层结构的相互合作,整个流程自上而下也让数据从界面到逻辑、从逻辑到数据,然后数据流反序返回,整个模块的详细设计如流程图5-2和时序图5.-3所示:

开始进入登录界面选择身份输入用户ID和密码账号不存在 || 身份不匹配FT显示用户不存在账号和密码匹配F显示密码错误T进入管理员主界面T是管理员身份F进入普通用户主界面登录成功结束

图5-2 用户登录流程图

- 19 -

长春理工大学本科毕业设计

界面用户登录添加用户类别逻辑对象数据访问对象数据表对象输入用户名、密码、用户类别判断输入条件是否完整把输入信息传递给逻辑对象{输入条件完整}传递输入信息给数据访问对象检索相对于的用户名返回错误信息{ 用户名存在}登录/返回错误信息登录/返回错误信息比较用户名与密码是否匹配显示错误信息{用户名不存在}进入用户主界面/显示错误信息{匹配/不匹配}

图5-3 用户登录三层交互时序图

以上两个登录的详细设计图描述了用户登录的整个顺序。首先判断用户登录时在节目输入的信息是否完整,在输入完整的条件下,把界面信息赋值给一个用户对象,然后在数据库中查找用户是否存在,并比较用户名和密码是否匹配,最后返回结果,如果用户不存在或者用户名与密码不匹配,在界面显示错误信息,否则进入用户主界面。

5.2.2用户管理模块详细设计

按照权限不同本系统的用户又分为两类普通用户和管理员,普通用户对于本系统只有浏览和查阅的功能,而管理员用户还有添加、删除、修改信息等功能。在此模块下可以自动处理员工入职/离职的信息,管理员工的基本信息和履历信息,包括员工简历、家庭、变迁、职业生涯、奖惩记录、技能、培训信息等。

下图5-4是用户管理的主要活动流程:

用户登录界面管理员登录修改信息普通用户登录保存信息浏览信息图5-4 用户管理活动图

- 20 -

长春理工大学本科毕业设计

如下图5-5为用户管理流程图

开始进入管理页面是否为管理员T选择操作目标显示操作界面FF删除用户修改用户T修改信息添加用户T输入用户信息T用户权限设为1保存结束添加管理员F普通用户权限设为1F提示您只是普通用户只能浏览无法修改设置图5-5 用户管理流程图

在进入用户管理的管理界面时会首先判断用户是否为管理员,如果不是管理员会提示您只是普通用户只能进行浏览操作。如果是管理员身份就可以选择操作目标操作用户,然后显示操作界面在这里进行一个判断否是添加用户,如果添加就输入信息,并设置用户的相关权限,如果不是进行添加就判断是否进行修改,T进行修改信息,不进行修改就是进行删除用户操作。以上操作完成后保存。

5.2.3基础设置模块详细设计

根据企业的需要将组织架构进行设置、维护、扩展,适应企业多层管理架 构的需要,企业HR人员可在权限范围内对本企业架构进行管理。随着企业规模的不断扩大、市场环境的急剧变化、企业组织制度的日新月异,企业要进行 “公司再造”,对原有企业进行组织要素的再整合,建立新型的“有机组织”。 下图5-5是基础设置的活动图:

管理员登陆进入基础设置公司架构人事管理设置用户管理设置保存修改结束登陆图5-5基础设置活动图

- 21 -

长春理工大学本科毕业设计

如下图5-6为基础设置的流程图

开始进入管理页面是否为管理员FT选择设置目标显示操作界面选择目标详情T保存设置T操作合法性F提示该操作不合法F提示您只是普通用户无法修改设置结束

图5-6 基础设置流程图

在进入用户管理的管理界面时会首先判断用户是否为管理员,如果不是管理员会提示您只是普通用户只能进行浏览操作。如果是管理员身份就可以选择设置目标,进入操作界面进行修改,判断选择目标的详情,设置合法保存设置;不合法就提示

操作不合法,是判断操作是否合法如果不是就返回到管理主界面。

5.2.4人事管理模块详细设计 1.人事信息管理

自动处理员工入职/离职的信息,管理员工的基本信息和履历信息,包括员 工简历、家庭、变迁、职业生涯、奖惩记录、技能、培训信息等。 图5-6介绍了人事查询、操作的主要流程:

开始进入管理页面FFF输入查询条件显示查询结果判断权限T选择目标操作T是管理员身份选择查看详情TT是管理员身份F显示个人信息显示所有员工信息FT选择添加T输入添加信息F选择删除T选定删除信息F选择更新T输入修改信息F结束- 22 -

长春理工大学本科毕业设计 图5-6 人事查询、操作流程图

在进入管理界面后判断是否查询,如果进行查询输入查询条件后点击查询,即可显示查询结果,如果想对某个具体目标查看详情会先判断是否为管理员,是管理员就能查看详情,如果不是管理员用户就无法查看详情。在不进行查询时可以选择其他目标操作,判断是否为管理员,是的话就判断是进行添加、删除、更新操作,然后进行相应的操作;如果不是管理员就会返回人事管理主界面。

2.调动管理

对人事调动进行信息统计,如人事升迁、降职、更换部门、新员工入职、老员工离职等人事变迁进行统计和管理。基本活动流程和人事管理相似,只是在本人确实前需要部门领导确认。

下图5-7为人事管理活动图:

管理员登陆信息错误进入人事管理界面修改人事信息本人确认保存修改信息正确结束登陆图5-7 人事管理活动图

3.工资管理

对公司所有员工进行工资统计和管理,可以自动更新工资变动信息、查询所有员工的工资情况、添加和修改记录等。当对员工工资进行修改时需要经过本人确认后方可提交。

如下5-8图是工资管理的顺序图:

- 23 -

长春理工大学本科毕业设计

管理员人力资源管理系统普通用户登录修改员工工资登录发出确认请求确认正确发送确认报告保存修改推出登录推出登录图5-8 员工工资管理顺序图

4.奖惩管理

记录员工奖惩情况,有奖励和惩处两张表。在奖励表中可添加或删除受奖励的记录,并公布在整个系统中;惩处表功能类似。

下图5-9为奖惩管理活动图:

+登录系统进入奖惩管理界面发布奖惩信息民主评议属实修改对应员工工资不属实取消奖惩图5-9奖惩管理活动图

5.2.4日常事务管理模块详细设计

据企业工作情况发布企业新闻动态、活动通知、会议信息、人事变更信息、会议室占用情况等,为企业员工搭建一个动态的公告栏,记录员工奖惩情况等。 主要包括添加、修改、删除、查询等功能,是管理人员能够把企业动态及时发布出去,方便全体员工查阅信息。 下图5-10为日常事务管理流程图:

- 24 -

长春理工大学本科毕业设计

开始进入管理页面查询日常事务T是管理员FF查看事务详情FT显示所有事务详情查看事务详情T显示与该用户相关的事务详情查看事务状态T显示状态F进行相关提示T进行确认确认状态T发布事务进行情况FF向相关部门或人员发送提示T向管理员发送确认关闭查询结束

图5-10 日常事务管理流程图

首先进入管理页面进行日常事务查询,这里需要判断是否为管理员,如果是不是管理员显示与用户相关的事务详情,判断是否确认,是要确认的话就向管理员发送确认关闭查询;在管理员登录时会先判断进行那个操作,如果查看事务详情就显示所有事务详情,对于其中的事务判断是否发送提示,确定即可发送,不提示的话就可以关闭查询。查询事务状态,进入显示状态界面判断是否确认状态确认即可发布事务进行情况,这里也可以直接关闭查询

5.3数据访问层

本系统主要采用ADO.NET技术进行数据访问,sqldbDatahelper作为数据底层,负责与数据库建立连接,执行对数据库的操作,将数据返回给业务逻辑层或者将逻辑层传来的命令执行。因为系统没有使用存储过程,因此本系统的数据底层主要是执行SQL语句的函数。下表5-4列出了时应用的主要函数方法及其功能说明。

表5-4数据访问调用的函数方法及其功能说明 方法名称 protected static string connstr 方法说明 连接数据库对象 - 25 -

长春理工大学本科毕业设计

public static int ExecuteSql(string strSql) public static object GetSingle(string strSql) 执行SQL语句,返回影响的记录数 执行一条计算查询结果语句,返回查询结果(object)。 public static SqlDataReader ExecuteReader(string strSql) public static DataSet Query(string strSql) 执行连接式查询语句,返回SqlDataReader 执行非连接式查询语句,返回DataSet 以上的函数方法提供的操作囊括了按照需求分析出的模块所要实现的功能,编码实现阶段,严格要求以上的函数方法进行实现。

其中数据访问类lapublic abstract css DbHelperSQL中包含了上面说列出的函数,可以通过调用SQL语句来执行数据访问。

下面利用一个例子在展现出访问数据库的具体过程。

例如要添加对人事信息表中家庭信息进行添加。首先在界面构建family实体的示例,然后调用逻辑层 family.cs中的add 方法传入tb_family对象,在函数中通过以下方法构造添加信息sql字符串:

StringBuilder strSql = new StringBuilder();

strSql.Append(\ into tb_family(\ strSql.Append(\WorkInc,headship,visage,phone\strSql.Append(

sqlQueryString= sorted_model_Items.each { \ }

); 然后通过 DbHelperSQL .ExecuteSql(strSql.ToString())去调用SQL语句执行对数据库的访问。具体执行过程如图5-11所示:

- 26 -

长春理工大学本科毕业设计

开始进入family添加界面输入family信息FF调用逻辑层 family.csTadd 方法传入tb_family对象T生成sql字符串T调用SQL语句构造添加信息sql字符串T将数据添加到数据库中结束

图5-11 添加family信息流程图

- 27 -

长春理工大学本科毕业设计

第6章 系统实现

6.1 管理员管理操作界面

如图6-1为管理员管理操作界面

图6-1 管理员管理操作界面

6.2 普通用户管理界面

如图6-2为普通用户管理界面

图6-2 普通用户管理界面

6.3 系统通知实现截图

如图6-3为日常记事界面

图6-3日常记事界面

- 28 -

长春理工大学本科毕业设计

第7章 系统软件测试

软件的质量的重要性是毋庸置疑的,而测试是保证质量的手段之一。测试是发现并指出软件系统缺陷(Bug)的过程,而缺陷在软件生命周期中的各个阶段都有可能发生。软件测试是贯穿于软件生命周期的整个期间:系统构思、需求分析、总体设计、详细设计以及程序实际编码各个阶段,测试的是各个阶段所得到的文档,包括系统构思说明、需求规格说明、总体设计说明、详细设计说明、源程序。软件测试的目标是以最少的时间和人力,系统的找出软件中潜在的各种错误和缺点。

在测试中,基本的测试方法有代码复查、静态测试、动态测试、白盒测试和

[8]

黑盒测试,而白盒和黑盒测试是最为常见的测试方法。软件测试按照开发阶段划分可以分为以下几种:单元测试、集成测试、系统测试、验收测试(也称确认测试)。

[9]

由于实际时间和课题设计条件限制的原因,本系统主要进行了单元测试和集

成测试。

7.1 单元测试

单元测试是对程序设计的最小单位——程序模块进行正确性检验的测试工作,是以详细设计描述为指南,对重要的控制路径进行测试,用以发现错误或者缺陷。单元测试的目的是发现并指出每个程序模块中可能存在的差错或者缺陷,以及是否实现了详细设计中的功能要求。

[10]

本系统的单元测试是在.NET中建立的TEST工程中采用代码复查、静态测试和动态测试这三种测试方法进行测试的。下图7-1为系统单元测试流程图。

图7-1系统单元测试流程图

本系统主要采用黑盒测试技术的驱动模块测试方法。在得到预期结果后,比

- 29 -

长春理工大学本科毕业设计

较实际结果和预期结果的值是否一致。测试驱动的伪码编写如下: 先设置期望值:

public DataTable Expecte() {

DataTable dt = new DataTable(); Try

{ //连接数据库

//执行查询

//返回数据表dt

catch (Exception err) {

throw (err); }

return dt; }

实际得到的值:

public DataSet Actual() {

DataSet ds = new DataSet(); DataTable dt = new DataTable();

ArrangeClassInfo mArrangeClassInfo = new ArrangeClassInfo (); ds = mArrangeClassInfo.Search (); return ds; }

判断实际值与期望值是否相同:

public void TestArrangeClassInfoSearch() {

DataTable expecte = new DataTable(); DataSet actual = new DataSet(); expecte = this.Expecte(); actual = this.Actual();

Assert.AreEqual(AreSame(expecte, actual.Tables[0]), true); }

执行测试驱动,若实际值与期望值结果相同,则显示的结果为Passed;若实际值与期望值结果不相同,则显示的结果为Failed。然后还可以查看单位测试的代码覆盖率,填写单元测试测试用例。

[13]

本系统采用的单元测试的方法有代码复查、静态测试和动态测试。

- 30 -

长春理工大学本科毕业设计

第八章 总结

本系统采用Microsoft Visual Studio 2005的C#.NET编程技术和SQL Server2000数据库技术及B/S式实现。

在此过程中遇到了很多问题,让我收获了很多也学到了很多,例如起初对一些技术掌握不够熟练,为此在开发系统前我查阅了大量书籍、刊物等;在开发工具及环境的选择上也用了不少心思;在开发过程中也遇到了很多技术上的问题,在导师和同学的帮助下也都得已解决。

除此之外,我也学到了许多在以前没有涉及到过的知识:

首先,我们了解了编写大型应用软件的一般步骤,获得了很多宝贵的经验。特别是怎么样通过理论与实践相结合,把书本上的内容应用到我们做的程序上去。怎样使各个子模块实施其的详细功能,特别是各个子模块之间的接口,一定要相当清晰,达到相互协调的作用。

其次,我熟悉了三层架构的知识、C#.NET编程技术和SQL Server2000数据库知识。学会了很多关于程序设计的经验和技巧,明白了程序的使用性和通用性是程序生存周期长短的关键,学会了调试程序的一般方法。

懂得了在数据库应用程序的开发中,因为使用同一个数据源,更加容易发生冲突。虽然程序还存在很多的不完善的地方,但是付出的心血也较多。取得了很大的进步。

重要的是,通过这次设计,令我逐步具备了走向程序员的基本素质。知道应如何在困难重重中一步一步细心的发现问题,解决问题。并深刻体会到了团体合作精神的重要性,知道了在软件设计中对界面和功能如何平衡,如何达到相对的完美。

由于本人理解能力和实际操作水平有限,本系统还有许多不合理和疏漏的地方,也难免出现一些错误,希望读者能给予宝贵的意见,在此谨表谢意。

通过本次毕设,我发现了自己的不足,明白还有许多新的知识等待着我去理解、去掌握,一定会在今后的学习和工作中更加刻苦努力地学习,来不断丰富自己的专业阅历。

- 31 -

长春理工大学本科毕业设计

参考文献

[1] 温昱.软件架构设计[M].电子工业出版社.2007. [2] 张立.C#2.0完全自学手册[M].机械工业出版社 2008

[3] 萨师煊,王珊 《数据库系统概论(第四版)》 高等教育出版社,2006 [4]Glen Johnson.ADO.NET 2.0高级编程[M].清华大学出版社,2005 [5] 张海藩 《软件工程导论(第五版)》 清华大学出版社,2008

[6](美)David Sceppa.ADO.NET 2.0技术内幕[M].清华大学出版社,2007.

[7](英) Suzanne Robertson, James Robertson 《掌握需求过程(第2版)》 人民邮电出版社,2007

[8] 张银奎.软件调试[M] .电子工业出版社,2008 [9] 朱少民.软件测试方法与技术.清华大学出版社,2007

[10] 张振莲,基于.NET三层架构的科研管理系统的研究与实现[N].信阳师范学院学报:自然科学版,2007,4(20):502-504

[11] Stephen R.Schach 《Object-oriented classical software engineering》 China Machine Press,2007

[12] Bruno R. Preiss B.A.Sc.,M.A.Sc.,Ph.D.,P.Eng. 《Data Structures and Algorithms with Object-Oriented Design Patterns in C Sharp》,2006

[13] Brian Marick.subsystem testing, including object-based and object-orient-ed test,Pearson Education,2003

- 32 -

长春理工大学本科毕业设计

致 谢

论文是在长春理工大学王鹏老师的精心指导下完成的。

本论文最终能顺利完成,首先应感谢我的导师王鹏老师自始至终给予的关心和指导。无论是在论文选题、开题、写作阶段还是在项目的实践过程中,王老师都倾注了很多心血并加以悉心的指导。导师严谨的治学作风和求实的工作态度都深深地影响着我。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我,一直是我工作、学习中的榜样。王老师平易近人,对我的整个毕业设计关照有加。通过这段时间与老师的接触,我不仅仅是完成了毕业设计,我还从王老师身上学会到一种做人的原则,这在我以后的工作中将受益匪浅。我心中的感激是很难用言语来表达的,唯有用今后的加倍努力来报达恩师的教诲。

在导师的精心指导下,我不但在学术上、实践经验上取得了较大的进步,而且在工作和为人处事上也日渐成熟。导师给予我的,将永远铭记在心。

忠心感谢长春理工大学计算机科学技术学院的各位老师,在我读大学的四年时间里,在学习和生活上给予我的巨大支持,使我顺利完成了学业。

在论文的写作过程中,同学张继坤、田爱雪、王建安等为我提供了很多帮助,值此机会向他们表示诚挚的谢意。

本论文的写作参考、引用了很多书籍及文献,在此向这些文章的作者表示深深的谢意。

感谢在百忙之中抽出时间、精心审阅本论文的各位老师!

感谢我的父母和亲人,正是有了他们的关心和支持,我的学业才得以顺利完成。

最后,再次感谢所有关心和爱护过我的老师、亲人、同学和朋友!

- 33 -

长春理工大学本科毕业设计

附录

///

// Login.aspx.cs ///

//登陆对应的Model类. users dal = new users();

protected void ib_login_Click(object sender, ImageClickEventArgs e) {

string uid = tb_txtName.Text; string pwd = tb_txtPwd.Text; //判断是否存在该用户.

bool pass = dal.Exists(uid, pwd);

string code = tb_txtcode.Text.Trim().ToLower().ToString(); if (code != Request.Cookies[\ {

//UpdatePanel里面的控件不要使用Response.Write()使用即出错 Response.Write(\language='javascript'>alert('验证码错误!');\

//使用微软的Ajax框架后不要用response.write()弹出提示框,用下面这个:

//ScriptManager.RegisterStartupScript(tUpdatePanel1, this.GetType(), \验证码错误.');\ } else {

if (pass) {

Session[\ DataSet ds = dal.GetList(uid);

int usergroup = int.Parse(ds.Tables[0].Rows[0][3].ToString()); Session[\ if (usergroup == 1) {

Response.Redirect(\用户类型为1时则代表的是管理员登录 } else {

Response.Write(\你只是普通用户,只能对数据进行浏览.');window.open('index.aspx','_self')\ } } else {

Response.Write(\language='javascript'>alert('用户名或密

- 34 -

长春理工大学本科毕业设计

码错误!');\ } } }

///

/// 用户数据访问类 ///

public class users {

public users() { }

#region 成员方法 ///

///

///

///

public bool Exists(string uid,string pwd) {

StringBuilder strSql = new StringBuilder();

strSql.Append(\ strSql.Append(\where userName=@username and userPwd=@userpwd\此SQL语句只返回结果0或1

SqlParameter[] parms ={ new SqlParameter(\SqlDbType.NVarChar, 20), new SqlParameter(\SqlDbType.NVarChar, 20) };

parms[0].Value = uid; parms[1].Value = pwd;

bool pass = DbHelperSQL.Exists(strSql.ToString(), parms); return pass; } //添加数据.

public void Add(tb_Users model) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\

strSql.Append(\ strSql.Append(\

strSql.Append(\

strSql.Append(\ strSql.Append(\ strSql.Append(\ strSql.Append(\

DbHelperSQL.ExecuteSql(strSql.ToString()); }

//更新数据.

public void Update(tb_Users model) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\

- 35 -

长春理工大学本科毕业设计

//strSql.Append(\ //strSql.Append(\ strSql.Append(\ strSql.Append(\ DbHelperSQL.ExecuteSql(strSql.ToString()); } //删除数据.

public void Delete(int id) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\ strSql.Append(\

DbHelperSQL.ExecuteSql(strSql.ToString()); }

public tb_Users GetModel(int id) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\ strSql.Append(\ tb_Users model = new tb_Users();

DataSet ds = DbHelperSQL.Query(strSql.ToString()); model.id = id;

if (ds.Tables[0].Rows.Count > 0) {

model.userGroup

=int.Parse(ds.Tables[0].Rows[0][\ return model; } else {

return null; } }

///

/// 获得数据列表 ///

public DataSet GetList(string strWhere) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\ if (strWhere.Trim() != \ {

strSql.Append(\ }

strSql.Append(\

return DbHelperSQL.Query(strSql.ToString()); }

#endregion }

- 36 -

长春理工大学本科毕业设计

//HRData 人事管理界面.

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack) {

string hrefurl = Request.Url.PathAndQuery;

if (hrefurl.Substring(6).ToString() == \ {

lb_url.Text = \人事档案浏览\ }

string usergroup = Session[\ if (usergroup != \ {

bt_add.Enabled = false; bt_update.Enabled = false; bt_del.Enabled = false; } //获取人事数据并绑定. dataBind(); }

bt_del.Attributes.Add(\您确定删除吗?')\}

//人事管理对应的Model类. perInfo dal = new perInfo(); public string strWhere=\ protected void dataBind() {

DataSet ds = new DataSet(); ds = dal.GetList(strWhere);

GridView1.DataSource = ds.Tables[0];

GridView1.DataKeyNames = new string[] { \ GridView1.DataBind(); }

//换页.

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {

GridView1.PageIndex = e.NewPageIndex; dataBind(); }

branch brdal = new branch(); headship hsdal = new headship(); zhichen zc = new zhichen();

//根据选择的不同进行不同的操作.

protected void ddl1_SelectedIndexChanged(object sender, EventArgs e) {

- 37 -

长春理工大学本科毕业设计

DataSet ds=new DataSet();

string txt = ddl1.SelectedItem.Text.Trim(); if (txt == \按工作部门查询\ {

ds=brdal.GetList(\

ddl2.DataSource = ds.Tables[\ ddl2.DataTextField = \ ddl2.DataValueField = \ ddl2.DataBind(); }

if (txt == \按员工职务查询\ {

ds = hsdal.GetList(\

ddl2.DataSource = ds.Tables[\ ddl2.DataTextField = \ ddl2.DataValueField = \ ddl2.DataBind(); }

if (txt == \按员工职称查询\ {

ds = zc.GetList(\

ddl2.DataSource = ds.Tables[\ ddl2.DataTextField = \ ddl2.DataValueField = \ ddl2.DataBind(); } }

//执行查询过程.

protected void bt_query_Click(object sender, EventArgs e) {

string strddl1 = ddl1.SelectedItem.Text.Trim(); string strddl2 = ddl2.SelectedItem.Text.ToString(); string strname = tb_pername.Text.Trim(); string strnum = tb_pernum.Text.Trim();

if (strddl1 == \按工作部门查询\ {

GridView1.DataSource = dal.GetList(strddl2, 1); }

if (strddl1 == \按员工职务查询\ {

GridView1.DataSource = dal.GetList(strddl2, 2); }

if (strddl1 == \按员工职称查询\ {

GridView1.DataSource = dal.GetList(strddl2, 3); }

if (strname != \请选择\ {

- 38 -

长春理工大学本科毕业设计

GridView1.DataSource = dal.GetList(strnum,4); }

if (strnum != \请选择\ {

GridView1.DataSource = dal.GetList(strnum); }

GridView1.DataBind(); }

//跳转到添加界面.

protected void bt_add_Click(object sender, EventArgs e) {

Response.Redirect(\}

//更新数据.

protected void bt_update_Click(object sender, EventArgs e) {

bool cbstate = false;

for (int i = 0; i < GridView1.Rows.Count; i++) {

CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl(\ if (cb.Checked) {

cbstate = true;

int perid = int.Parse(GridView1.DataKeys[i].Value.ToString()); string pernum = GridView1.DataKeys[i][1].ToString(); Response.Redirect(\+\perid+\ } }

if (!cbstate) {

Response.Write(\请选择要修改的数据.')\ return; } }

//删除.

protected void bt_del_Click(object sender, EventArgs e) {

for (int i = 0; i < GridView1.Rows.Count; i++) {

CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl(\ if (cb.Checked) {

int strid =int.Parse(GridView1.DataKeys[i].Value.ToString()); dal.Delete(strid); }

- 39 -

长春理工大学本科毕业设计

}

dataBind(); }

protected void cb_all_CheckedChanged(object sender, EventArgs e) {

if (cb_all.Checked) {

for (int i = 0; i < GridView1.Rows.Count; i++) {

CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl(\ cb.Checked = true; } } else {

for (int i = 0; i < GridView1.Rows.Count; i++) {

CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl(\ cb.Checked = false; } } }

///

/// 员工数据访问类 ///

public class perInfo {

public perInfo() { }

#region 成员方法

//tb_perInfo model = new tb_perInfo(); ///

/// 是否存在该员工 ///

///

public bool Exists(string pernum) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\count(*) from tb_perInfo where perNum='\

object obj = DbHelperSQL.GetSingle(strSql.ToString()); int cmdresult; if ((object.Equals(obj, null)) || (object.Equals(obj, System.DBNull.Value))) {

cmdresult = 0; }

- 40 -

长春理工大学本科毕业设计

else {

cmdresult = 1; }

if (cmdresult == 0) {

return false; } else {

return true; } } ///

/// 添加员工数据. ///

/// public void Add(tb_perInfo model) { //构造要添加的数据字符串.

StringBuilder strSql = new StringBuilder(); strSql.Append(\into tb_perInfo(perNum,perName,folk,birthday,age,kultur,marriage,sex,visage,IDCard,origo,\

strSql.Append(\rageType,branch,headship,ZhiChen,\

strSql.Append(\ //strSql.Append(\

strSql.Append(\

strSql.Append(\.birthday+\

strSql.Append(\+ model.marriage + \+ model.sex + \+ model.visage + \

strSql.Append(\,'\

strSql.Append(\+ model.headship + \

strSql.Append(\speciality+\

//strSql.Append(\ strSql.Append(\ int cmdresult = DbHelperSQL.ExecuteSql(strSql.ToString());

} ///

- 41 -

长春理工大学本科毕业设计

/// 修改员工数据. ///

/// public void Update(tb_perInfo model) {

//构造要修改的数据字符串.

StringBuilder strSql = new StringBuilder(); strSql.Append(\

strSql.Append(\ strSql.Append(\ strSql.Append(\

strSql.Append(\ strSql.Append(\

strSql.Append(\

strSql.Append(\ strSql.Append(\

strSql.Append(\ strSql.Append(\ strSql.Append(\

strSql.Append(\ strSql.Append(\ strSql.Append(\

strSql.Append(\ strSql.Append(\ strSql.Append(\ strSql.Append(\ strSql.Append(\ strSql.Append(\ strSql.Append(\ strSql.Append(\ strSql.Append(\

strSql.Append(\

strSql.Append(\ //strSql.Append(\

//strSql.Append(\ strSql.Append(\

strSql.Append(\ strSql.Append(\ DbHelperSQL.ExecuteSql(strSql.ToString());

} //根据ID删除员工数据. public void Delete(int perid) {

string strSql = \ int cmdresult=DbHelperSQL.ExecuteSql(strSql); } ///根据id获取员工数据.

public tb_perInfo GetModel(string pernum)

- 42 -

长春理工大学本科毕业设计

{

StringBuilder strSql = new StringBuilder();

strSql.Append(\ tb_perInfo model = new tb_perInfo();

DataSet ds = DbHelperSQL.Query(strSql.ToString()); DataTable dt = new DataTable(); dt = ds.Tables[0];

if (dt.Rows.Count > 0) { //以下皆为员工数据.

model.perNum = dt.Rows[0][\ model.perName = dt.Rows[0][\ model.folk = dt.Rows[0][\ if (dt.Rows[0][\ {

model.birthday = dt.Rows[0][\ }

if (dt.Rows[0][\ {

model.age =int.Parse(dt.Rows[0][\ }

model.kultur = dt.Rows[0][\

model.marriage = dt.Rows[0][\ model.sex = dt.Rows[0][\

model.visage = dt.Rows[0][\ model.IDCard = dt.Rows[0][\ model.origo = dt.Rows[0][\

model.workDate = dt.Rows[0][\ if (dt.Rows[0][\ {

model.workLength

=int.Parse(dt.Rows[0][\ }

model.employee = dt.Rows[0][\ if (dt.Rows[0][\ {

model.intoWorkDate =dt.Rows[0][\ }

if (dt.Rows[0][\ {

model.intoWorkLength

=int.Parse(dt.Rows[0][\ }

model.laborageType = dt.Rows[0][\ model.branch = dt.Rows[0][\ model.headship = dt.Rows[0][\ model.ZhiChen = dt.Rows[0][\ model.phone = dt.Rows[0][\

- 43 -

长春理工大学本科毕业设计

model.handset = dt.Rows[0][\ model.school = dt.Rows[0][\

model.speciality = dt.Rows[0][\

model.GraduateDate = dt.Rows[0][\ model.address = dt.Rows[0][\

model.photoImage = dt.Rows[0][\ return model; } else {

return null; }

} //获取所有满足条件的员工数据.

public DataSet GetList(string strWhere) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\ if (strWhere.Trim() != \ {

strSql.Append(\ }

strSql.Append(\ DataSet ds = new DataSet();

ds = DbHelperSQL.Query(strSql.ToString()); return ds; }

//获取所有满足条件的员工数据. //重载函数.

public DataSet GetList(string strWhere,int i) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\ if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

- 44 -

长春理工大学本科毕业设计

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

if (strWhere.Trim() != \ {

strSql.Append(\ }

strSql.Append(\ DataSet ds = new DataSet();

ds = DbHelperSQL.Query(strSql.ToString()); return ds; }

//获取所有满足条件的员工数据. //重载函数.

public DataSet GetList(string strWhere,string endage) {

StringBuilder strSql = new StringBuilder(); strSql.Append(\ if (strWhere.Trim() != \ {

strSql.Append(\age between \+ strWhere + \and \+

- 45 -

本文来源:https://www.bwwdw.com/article/01dw.html

Top