某公司员工管理系统的设计与实现
摘 要
本文设计的员工管理系统是为了更好,更方便的管理公司员工的信息。此系统主要包括员工基本信息,员工过失记录,员工奖金记录,员工社保记录,上级评语和基本设置等几个大模块。每个大模块又分成了几个小的模块,如员工基本信息模块又分成了员工列表,扩展信息,离职管理等小的模块。每个模块都完成了其相关信息的添加、修改、删除、查询和查看的功能,如员工列表模块就实现了员工信息的添加,修改,删除,查看和查询。在开发此系统时用了代码生存器,生成了与数据库有关的一些代码以及一些常用的存储过程如记录的添加,删除和修改存储过程。通过代码生成器生成的代码将数据访问层的很好的封装了起来,大大的提高了开发的效率。系统功能的实现大大提高了公司管理员工信息的效率。
关键词:员工管理系统;员工信息;信息管理
The Design and Implementation of Some Company's Managing System of Staff
Abstract
This staff administration system, which is investigated and designed in order to administer company staffs more effectively and more conveniently, contains some sections such as staff basic information, records of staff lapses, bonus, and social securities, as well as superior comments and fundamental settings, etc. Every section can be further divided, e.g. staff basic information is divided into staff list, extensive information, dismissing administration and so on. Furthermore, every section has such functions as adding, resetting, checking, and referring to the relevant data, e.g. the staff list part has such functions as adding, resetting, deleting, checking, and referring to the relevant data, which will be introduced below in detail.
Code producer, which has been used in the process of developing this system, has produced several codes relevant to the data base as well as several frequently used memory processes, such as adding records, deleting and revising memory processes. Those codes made the data visiting layer well sealed so as to promote developing efficiency greatly. The realization of system functions has enormously enhanced the efficiency of business staff information administration.
Key words: staff administration system; staff information; data administration
目 录
论文总页数:24页
1 引言
1.1 课题背景
公司员工信息很不完整,而且会经常的去添加和修改员工的信息。同时公司的员工信息也都是通过文档进行的管理,在管理上很不方便。例如:不方便员工信息的查找,修改等,所以需要开发此员工管理系统。开发此系统所用的数据库是 Microsoft Sql Server 2000。数据库中的表主要分为了静态表——数据不发生变化的基础表(如:国家表)和动态表——数据经常变动的表(如:员工表)。开发系统用的软件是VS.NET 2005,此软件功能强大,它封装了很多的服务器控件同时它也兼容HTML控件,如果将HTML控件中加上runat="server"属性那么它就变成了“服务器控件”(它并不是真得成了服务器控件,只是和服务器控件大致上一样)。此系统的开发主要用到了GridView控件以及一些其它的控件
1.2 系统开发环境
此系统通过VS.NET 2005+Sql Server 2000在Windows 2003下开发。
1.3 系统预期结果
实现公司内部员工的管理,包括添加、删除、修改、查询,将每一个员工的详细资料记录下来,并为每个员工设定一个资料保密等级,只能让一些特定的管理者可以管理员工资料,以保证信息的安全性,除此之外,还要对员工的薪资变动、职位变动以及奖惩情况进行记录并管理
2 系统数据库设计
本系统的数据库主要有员工基本资料表,员工学习经历表,奖金记录表,过失记录表,员工担保人表,国籍表,民族表等19张表组成。下面将详细介绍这些表。
国籍表存储世界所有国家的名称。
表 1国籍表
表名:国籍表(Countrys) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
CountryID |
国家编号 |
int |
|
Auto |
CountryName |
国家名 |
varchar |
40 |
|
民族表存储我国所有民族的名称。
表 2民族表
表名:民族表(Races) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
ReceID |
民族编号 |
int |
|
Auto |
ReceName |
民族名 |
varchar |
40 |
|
币种表存储世界主要的币种如:人民币、美元,欧元。
表 3币种表
表名:币种表(PayTypes) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
PayTypeID |
币种编号 |
Int |
|
Auto |
PayTypeName |
币种名 |
varchar |
40 |
|
血型表存储人的血型名称如:O型、AB型。
表 4血型表
表名:血型表(BloodTypes) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
BloodTypeID |
币种编号 |
int |
|
Auto |
BloodTypeName |
币种名 |
varchar |
40 |
|
星座表存储12个星座的名称
表 5星座表
表名:星座表(Stars) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
StarID |
星座编号 |
int |
|
Auto |
StarName |
星座名 |
varchar |
40 |
|
员工学习经历表存储员工的学习经历。
表 7员工学习经历表
表名:员工学习经历表(StudyExps) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
StudyExpID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
StudyExpSchool |
学校名 |
varchar |
200 |
|
StudyExpClass |
系别 |
varchar |
50 |
|
StudyExpSpec |
专业 |
varchar |
50 |
|
StudyExpBeginTime |
开始日期 |
Dateime |
|
|
StudyExpEndTime |
结束日期 |
Datetime |
|
|
工作经历表存储员工的工作经历。
表 9工作经历表
表名:工作经历表(WorkExps) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
WorkExpID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
WorkExpCompany |
公司名 |
varchar |
200 |
|
WorkExpPart |
部门 |
varchar |
50 |
|
WorkExpJob |
职位 |
varchar |
50 |
|
WorkExpBeginTime |
开始日期 |
Datetime |
|
|
WorkExpEndTime |
结束日期 |
Datetime |
|
|
WorkExpPay |
工作薪资 |
float |
|
|
WorkExpTask |
工作内容 |
varchar |
200 |
|
WorkExpWhyOut |
离职原因 |
varchar |
200 |
|
员工基本资料存储员工的基本信息。
表 6员工基本资料
表名:员工基本资料(Staffs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
StaffID |
员工编号 |
int |
|
Auto |
StaffNumber |
员工实际编号 |
varchar |
20 |
|
StaffUserName |
用户名 |
Varchar |
20 |
|
StaffPassword |
密码 |
Varchar |
32 |
MD5加密 |
StaffName |
员工姓名 |
varchar |
20 |
|
StaffBirthday |
出生日期 |
Datetime |
|
|
BloodTypeID |
血型编号 |
int |
|
联系BloodTypes |
StarID |
星座编号 |
int |
|
联系Stars |
StaffSex |
性别 |
bitint |
|
1男 0女 |
CountryID |
国家编号 |
int |
|
关系Countrys表 |
RaceID |
民族编号 |
int |
|
关系Races表 |
StaffRPRAddress |
户籍地址 |
varchar |
200 |
|
StaffIsMarry |
婚否 |
bitint |
|
1为已婚 |
StaffPicPath |
相片地址 |
varchar |
200 |
相片存放的地址 |
StaffDeputy |
代理人 |
varchar |
40 |
|
StaffIDCard |
身份证号 |
varchar |
30 |
|
StaffIDCardFilePath |
身份证复印件地址 |
varchar |
200 |
身份证复印件地址 |
StaffPayTypeID |
工资币种 |
int |
|
联系 PayTypes表 |
StaffMail |
私用邮箱 |
varchar |
200 |
|
StaffWorkMail |
公司邮箱 |
varchar |
200 |
|
StaffTel |
联系电话 |
varchar |
30 |
|
StaffMobile |
手机号 |
varchar |
30 |
|
StaffOtherTel |
备用电话 |
varchar |
30 |
|
StaffPoint |
特长 |
varchar |
100 |
|
StaffLike |
兴趣爱好 |
varchar |
100 |
|
StaffDemerit |
缺点 |
varchar |
100 |
|
StaffInfoLv |
资料保密等级 |
int |
|
这个程序上安排,存数字 |
StaffTryoutBeginTime |
试用期开始时间 |
Datetme |
|
|
StaffTryoutEndTime |
试用结束时间 |
Datetime |
|
|
StaffTryoutPay |
试用工资 |
float |
|
单位是按工资币种来的 |
StaffAddtime |
添加日期 |
Datetime |
|
|
StaffInWork |
是否在职 |
bitint |
|
1为在职 |
PartID |
部门编号 |
Int |
|
联系 Parts表 |
JobID |
职位编号 |
int |
|
联系 Jobs |
StaffDesc |
员工备注 |
Text |
|
|
上级评语记录表存储上级对员工的评语记录。
表 10上级评语记录表
表名:上级评语记录表(Comments) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
CommentID |
评语编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
CommenterID |
评语者编号 |
int |
|
联系Staffs表 |
CommentDesc |
评语内容 |
Text |
|
|
CommentTime |
发表时间 |
Datetime |
|
|
OperaterID |
操作员员工编号 |
int |
|
联系Staffs表 |
语言能力存储员工对外语掌握的能力。
表 8语言能力
表名:语言能力(LanguageLvs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
LangLvID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
LangID |
语言编号 |
int |
|
联系 Languages表 |
LangLv |
能力等级 |
int |
|
数字的 1-6 |
LangLvDesc |
备注 |
Text |
|
|
薪资变动记录表记录员工的薪资变动记录。
表 11薪资变动记录
表名:薪资变动记录(ChangePayLogs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
CPayID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
CPayLv |
薪资等级 |
int |
|
联系PayLevels表 |
CPayMoney |
基本工资 |
float |
|
|
CPayAllDutyMoney |
全勤奖金 |
float |
|
|
CPayTime |
变更日期 |
Datetime |
|
|
CPayDesc |
变更说明 |
Text |
|
|
OperaterID |
操作员员工编号 |
int |
|
联系Staffs表 |
薪资等级表存储薪资的等级。
表 12薪资等级表
表名:薪资等级表(PayLevels) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
PayLvID |
薪资等级编号 |
int |
|
Auto |
PayLvMoney |
金额段 |
varchar |
20 |
如:1000-1500/month |
奖金记录表记录员工的奖金记录。
表 13奖金记录表
表名:奖金记录表(BonusLogs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
BounsLogID |
奖金记录编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系 Staffs 表 |
BonusLogMoney |
奖金 |
float |
|
单位是员工的币种 |
BonusLogTime |
日期 |
Datetime |
|
|
BounsLogDesc |
奖金原因 |
Text |
|
|
MakerID |
提案者编号 |
int |
|
联系 Staffs表 |
OperaterID |
操作员员工编号 |
int |
|
联系Staffs表 |
过失级别存储员工的过失等级。
表 15过失级别
表名:过失级别(LapseLvs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
LapseLvID |
过失级别编号 |
int |
|
Auto |
LapseLvName |
过失级别名 |
varchar |
20 |
|
LapseLvDesc |
过失介绍 |
Varchar |
200 |
|
过失记录表记录员工的过失记录。
表 14过失记录表
表名:过失记录表(LapseLogs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
LapseLogID |
记录编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
LapseLogTime |
过失日期 |
Datetime |
|
|
LapseLogDis |
过失描述 |
Text |
|
|
MasterID |
主管编号 |
int |
|
联系Staffs表 |
LapseLvID |
过失级别 |
int |
|
联系LapseLvs 表 |
LapseLogDo |
过失处理 |
varchar |
200 |
|
LapseLogDesc |
过失备注 |
Text |
|
|
OperaterID |
操作员员工编号 |
int |
|
联系Staffs表 |
社保记录表记录员工的社保记录。
表 16社保记录表
表名:社保记录表(SoseLogs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
SoseLogID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
SoseID |
社保编号 |
varchar |
30 |
|
SoseLvID |
社保等级编号 |
int |
|
联系SoseLvs表 |
SoseLvBeginTime |
开始日期 |
Datetime |
|
|
SoseLvEndTime |
结束日期 |
Datetime |
|
|
SoseLvDesc |
备注 |
Text |
|
|
OperaterID |
操作员员工编号 |
int |
|
联系Staffs表 |
社保等级表存储社保的等级。
表 17社保等级表
表名:社保等级表(SoseLvs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
SoseLvID |
等级编号 |
int |
|
Auto |
SoseLvMoney |
金额 |
float |
|
|
SoseLvDesc |
描述 |
Text |
|
|
OperaterID |
操作员员工编号 |
int |
|
联系Staffs表 |
员工离职记录表记录员工的离职记录。
表 18员工离职记录表
表名:员工离职记录表(OutworkLogs) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
OutworkLogID |
记录编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
OutworkLogDis |
原因说明 |
Text |
|
|
OutworkLogTime |
离职日期 |
Datetime |
|
|
OutworkLogDesc |
备注 |
Text |
|
|
OperaterID |
操作员员工编号 |
int |
|
联系Staffs表 |
家庭情况表记录员工的家庭的主要联系人情况。
表 19家庭情况表
表名:家庭情况表(Familys) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
FamilyID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
FamilyTitle |
称谓 |
varchar |
20 |
|
FamilyName |
姓名 |
varchar |
30 |
|
FamilyCountryID |
国籍编号 |
int |
|
联系Countrys表 |
FamilyAddress |
地址 |
varchar |
200 |
|
FamilyTel |
电话 |
varchar |
20 |
|
FamilyDesc |
备注 |
Text |
|
|
朋友情况表记录员工的主要朋友的联系方式。
表 20朋友情况表
表名:朋友情况表(Friends) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
FriendID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
FriendDis |
朋友关系简述 |
varchar |
200 |
|
FriendName |
朋友姓名 |
varchar |
30 |
|
FriendAddress |
朋友地址 |
varchar |
200 |
|
FriendTel |
朋友电话 |
varchar |
20 |
|
FriendPRI |
紧急联系优先级 |
int |
|
越大越先 |
FriendDesc |
备注 |
text |
|
|
员工担保人表记录员工的担保人信息。
表 21员工担保人表
表名:员工担保人表(Suretys) |
||||
字段名 |
中文名 |
类型 |
长度 |
备注 |
SuretyID |
编号 |
int |
|
Auto |
StaffID |
员工编号 |
int |
|
联系Staffs表 |
SuretyName |
担保人姓名 |
varchar |
20 |
|
SuretyDis |
关系说明 |
varchar |
200 |
|
SuretySex |
性别 |
bitint |
|
1为男 |
SuretyHomeAddress |
户口地址 |
varchar |
200 |
|
SuretyAddress |
联系地址 |
varchar |
200 |
|
SuretyWorkAddress |
工作地址 |
varchar |
200 |
|
SuretyTel |
联系电话 |
varchar |
20 |
|
SuretyOtherTel |
备用电话 |
varchar |
20 |
|
SuretyIsOk |
担保是否成立 |
Bitint |
|
1为成立 |
SuretyAuthority |
威信人 |
Varchar |
20 |
|
SuretyApproveID |
核准人编号 |
Int |
|
联系Staffs表 |
SuretyApproveTime |
核准日期 |
Datetime |
|
|
SuretyBeginTime |
担保开始时间 |
Datetime |
|
|
SuretyEndTime |
担保结束时间 |
Datetime |
|
|
SuretyEnderID |
担保终止人 |
Int |
|
联系Staffs表 |
3 系统设计与实现
系统流程图如下所示:
图 31 系统流程图
3.1 系统权限
不同类别的用户登陆系统会有不同的权限。根据用户的权限限定了用户对系统的操作。不同权限的用户登陆系统后主要体现在菜单栏(页面的左边绿色背景部分)的菜单不同,如下图所示:
图 32不同权限的菜单
如过用户越权操作,系统将有如下提示:
图 33无权限时提示
3.2 系统登陆页面
登陆页面名称为Signin . aspx。此页面以简洁为主,用户输入登陆名和密码后点击登陆按钮登陆。如果用户名和对应的密码在数据库的员工表中找不到记录时将提示用户“用户名或密码错误!”,如果找到了记录就将用户名和加密后的密码存入Coolie,并跳转到系统首页。
图 34 登陆页面
主要代码
public int DoLogin ( string aUserName, string aPassword )
{if ( aUserName == "" ) { return -1; }
if ( aPassword == "" ) { return -1; }
int staffID;
staffs staffDAL = Staffs . Instance ( CommConfig . BaseInfoConnectstring ) ;
try{staffID = staffDAL . C_GetStaffIDByUserName ( aUserName ) ;
if ( staffID == -1 ) { return -1; }
if ( staffDAL . C_CheckStaffByUserAndPassword ( staffID, WbForm . Common . Safety . MD5 ( aPassword ) ) == false )
{ return -1; }
int jobid = this . GetJobId ( staffID . ToString ( ) ) ;
int PartPopedom = this . GetPartPopedom ( staffID . ToString ( ) ) ;
this . SetCookie ( "Username", aUserName ) ;
this . SetCookie ( "Password", Safety . MD5 ( aPassword ) ) ;
this . SetCookie ( "StaffID", staffID . ToString ( ) ) ;
this . SetCookie ( "JobID", jobid . ToString ( ) ) ;
this . SetCookie ( "PartPopedomID", PartPopedom . ToString ( ) ) ;
return 1; }catch ( Exception ex )
{this . errorHandler ( ex . Message ) ; return -1; } }
3.3 模版页面
模版页面名称是MasterPage . maste,它为整个系统的页面提供一个框架。它的上面是公司的Logo以及导航栏,左边是菜单栏。菜单栏根据登陆的用户的权限生成不同菜单。
3.4 员工信息管理
员工管理流程图
图 35员工管理流程图
2.1.1 员工管理首页
员工管理首页在模版页面菜单栏的名称(以后就叫:菜单名称)是员工列表,页面名称是Staff / Staffs / Default . aspx(最后一个“ / ”后面的表示页面名称,前面表示此文件所放的文件夹。)。此页面的列表显示用的是ASP . NET的服务器控件GridView控件。列表主要显示了员工的编号、工号、用户名、员工姓名、部门、职位、添加的日期。此页面有查询功能,可以按员工的姓名、部门、工号、户籍地址查找。如下图所示
图 36 员工记录管理首页
主要代码
public void GetList ( bool aIsAllStaffer )
{ Staffs staffDAL = Staffs . Instance ( CommConfig . BaseInfoConnectstring ) ;
try{if ( aIsAllStaffer )
{ GridView1 . DataSource = staffDAL . C_GetList ( ) . DefaultView; / / 取得所有员工列表
}else{GridView1 . DataSource = staffDAL . C_GetMyList ( int . Parse ( this . GetCookie ( "StaffID" ) ) ) . DefaultView; / / 取得下属列表}
GridView1 . DataBind ( ) ;}
catch ( Exception ex ) { this . errorHandler ( ex . Message ) ; }}
通过员工管理首页可以连接到添加员工信息页面、查看员工信息的页面、修改员工信息的页面以及删除员工。在删除员工信息时会弹出信息提醒框,提醒操作者是否真的要删除此员工,员工删除后不能找会资料。
2.1.2 添加员工信息
添加员工信息的菜单名称是添加员工信息,页面名称是Staff / Staffs / StaffAdd . aspx。可以通过员工管理首页和菜单栏的添加员工信息跳转到此页面。在此页面填完必要的信息(后面带有“*”为必要信息)后,点击确定钮添加员工,点击取消按钮回到员工管理首页。新加的员工可以登陆此系统,密码和用户名一样。此页面版面如下图所示
图 37 添加员工信息页面