




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人事管理柔统痒细设计说明莘成员:李典1000505030王欣 1000505031谭宇 1000505032李斌 1000505033张俊刚 1000505034邓晓峰 1000505035何连峰 1000505036王相忠 1000505037李宝 1000505038目录一、引言-3-1.1 编写h的:-3-1.2 项目背景:-3-1.3 定义-3-1.4 参考资料:-4-二、数据库设计-4-2.1 数据库表歹q表2.2 逻辑结构设计:-4-2.3 物理结构设计: -5-2.4 数据表代码记录-7-三、软件结构-10-3.1 顶级结构-10-3.2 一般职工界面结构-10 -3.3 管理员
2、界面-11-3.4超级管理员界而-12 -四、程序模块描述-13-4. 1登录模块-13-4.2 职工考勤模块-15-4.3 个人信息模块-19-4.4 修改密码模块-20-4.5 部门管理模块-20-4.6 职工管理模块-23-4.7 职工出勤模块-26-4.8 管理员管理模块-27-五、登录体验-29 -、引言人事管理系统是针対企业内部人事管理设计,分角色实现对公司部门及各部门员 工的增、删、改、查以及对员工考勤的管理。1.1编写目的:在系统需求分析的基础上,对需求分析中产生的功能模块进行过程描述,设计功 能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明,并作 为测试和
3、维护的参考文档。详细设计说切书的预期用户为所有与此项目相关的决策人员、开发人员和测试人 员。1.2项目背景:项冃名称:人事管理系统项冃介绍:人事管理是一套先进的管理模式,其实施要取得成功,必须有必需的技术和工具 支持,公司人事管理软件(cpm)是实施人事部门人员管理职工必不可少的一套技术 和工具集成支持平台。cpm悖理系统基于通讯、计算机等信息技术,能实现企业对职 丄、部门的良好管理,能够协助管理者更好地完成管理的两项基本任务:管理和了解 职工状况。1.3定义cpm:companypersonnelmanagement,公司人事管理系统的缩写命名规则:探 窗体命名格式:功能模块名+form (
4、例如:部门管理窗体,smf)探控件命名格式:窗体名+功能名+控件名(例如:部门管理窗体中的添加按钮,smf_addbtn) 字体格式:主窗体控件:微软雅黑,五号,粗体,字体颜色:黑色 次窗体控件:微软雅黑,小五,粗体,字体颜色:黑色 探程序命名:类:首字母大写属性:首字母人写方法:首字母人写字段:单词首字母大写、变量:小写1.4参考资料:详细设计说明书模板资料、人事管理系统需求分析说明书二、数据库设计数据库名称:hrmanagement2.1数据库表列表序号关系名称表描述1部门表存储公司的部门名称2职位表存储部门有哪些职位3性别表存储人的性别4民族表存储不同民族信息5学历表存储不同的学历6员工
5、表存储公司的员工信息7工作时间类别表标识时间种类8工作时间表存储上下班时间信息9打卡状态存储打卡正常、迟到、早退三种状态10上班打卡记录表存储员工上班打卡信息11下班打卡记录表存储员工下班打卡信息12管理员表存储管理员级别的员t进入系统的用户名及密码信 息,管理员冇对员工和部门增删改查的权限13超级管理员表存储超级管理员信息,超级管理员增加了对管理员信 息查看、修改和删除的权限14用户表存储员工进入系统的用户名及密码信息2.2逻辑结构设计:序号关系名称关系的属性1部门表部门id、部门名称2职位表职位id、职位名称3性别表性别id、性别名称4民族表民族id、民族名称5学历表学历id、学历名6员工
6、表id、职工id、姓名、性别id、职位id、部门id、学历 id、生li、照片、籍贯、现住地址、民族id、联系方式、 工作年限、毕业院校、专业、身份证号码、入职时间7工作时间类别表类别id、类别名称8工作时间表工作时间id、工作吋间、类别id9打卡状态打卡状态id、状态名称10上班打卡记录表记录id、打卡吋间、状态id、职工编号11下班打卡记录表记录id、打卡时间、状态id、职工编号12管理员表管理员id、用户名、密码、职工编号13超级管理员表超级管理员id、用户名、密码、职工编号14用户表用户id、员工工号、密码2.3物理结构设计:1.部门表(sections)字段说明类型可空备注secti
7、onldidnvarchar(2)no主键sectio nn ame部门名称nvarchar(20)no唯一2.职位表(positions)字段说明类型可空备注positi onldidnvarchar(2)no主键positi onn ame职位名称nvarchar(20)no唯一3.性别表(sexs)7段说明类型可空备注sexididintno主键启增sexname性别名称nvarchar(4)no唯一4.民族表(nations)字段说明类型可空备注nationldidintno主键启增natio nn ame民族名称nvarchar(16)no唯一5.学历表(edubackgrounds
8、)字段说明类型可空备注edubackgro undididintno主键启增edubackgro un dname学历名称nvarchar(lo)no唯一6.员工表(staffs)字段说明类型可空备注ididintno主键,自增staff id职工idnvarchar(lo)no组合项:部门id+ 职位id+数字标识staffname姓名nvarchar(lo)nosexid性别idintno外键positionld职位idvarchar(4)no外键edubackgro undid学历idintno外键birthday牛.flnvachar(lo)yespicture照片imageyesna
9、tiveplace籍贯nvarchar(40)yesnowaddress现住地址nvarchar(40)yes1 dcardno身份证号码nvarchar(18)no唯一nationld民族idintyes外键contactway联系方式nvarchar(30)yesworkse niorityt作年限intnosectionld部门idnvarchar(2)no外键graduateschool毕业院校nvarchar(30)yesmajor专业nvarchar(16)yesemployeddate入职吋间datetimeno7.工作时间类别表(workingtimetype)字段说明类型可空
10、备注wttypeldidintno主键启增wttypename类别名称nvarchar(14)no唯一8.工作时间表(workingtimes)字段说明类型可空备注workingtimeldidintno主键,自增worktime工作时间nvarchar(5)no唯一wttypeld类别idintno外键9.打卡状态(clockstatus)字段说明类型可空备注clockstatusididintno主键,自增clockstatusname状态名称nvarchar(lo)no唯一10.上班打卡记录表(startclockrecords)字段说明类型可空备注sciockrecordsididin
11、tno主键,自增scolcktime打卡时间datetimenosciockstatusid打r状态idintno外键staff id职lidnvarchar(lo)no外键11.下班打卡记录表(endclockrecords)字段说明类型可空备注ecolcktime打卡时间datetimenoeclockstatusid打卡状态idintno外键staff id职丁 idnvarchar(lo)no外键12.管理员表(adms)字段说明类型可空备注admididintno主键,白增admname管理员名nvarchar(15)no唯一admpw密码nvarchar(15)nostaff id
12、职工idnvarchar(lo)no外键13.超级管理员表(superadms)段说明类型可空备注superadmididintno主键,自增superadmname管理员名nvarchar(15)no唯一superadmpw密码nvarchar(15)nostaff id职工idnvarchar(lo)no外键14.用户表(users)字段说明类型可空备注userididintno主键,白增staff id职工idnvarchar(lo)no外键userpw密码nvarchar(ls)no2.4数据表代码记录1. 部门表(sections): id,名称create table sectio
13、ns(sectionld nvarchar(2) not null primary key, sectionname nvarchar(20) not null unique )2. 职位表(positions): idz名称create table positions(positionld nvarchar(2) not null primary key,posit!onname nvarchar(20) not null unique )3. 性别表(sexs): id,名称create table sexs(sexid jnt not null identity(lzl) primary
14、 key,sexname nvarchar(4) not null unique)4. 民族表(nations): id,名称create table nations(nationld int not null identity(l,l) primary key, nationname nvarchar(16) not null unique )5. 学历表(edubackgrounds): id,名称create table edubackgrounds(edubackgroundid int not null identity(l,l) primary key, edubackground
15、name nvarchar(lo) not null unique6. 员工表(staffs): id,职工id,姓名,性别id,职位id,学历id,生日,照片,籍贯,现 住地址,民族id,联系方式,工作年限,部门id,毕业院校,专业,身份证号码,入职时间 create table staffs(id int not null identity(l,l) primary key,staff id nvarchar(lo) not null unique,staffname nvarchar(lo) not null,sexid int not null foreig n key ref ere
16、 nces sexs(sexld),positionid nvarchar(4) not null foreign key references positions(positionid),edubackgroundid int not null foreign key references edubackgrounds(edubackgroundid), birthday nvarchar(lo) not null,picture image not null,nativeplace nvarchar(40) not null,nowaddress nvarchar(40) not null
17、,nationld int not null foreig n key ref ere nces nati on s(nati onld),contactway nvarchar(30) not null,workseniority int not null,secti onld n varchar(4) not null foreig n key refere nces secti on s(secti on id),graduateschool nvarchar(30) not null,major nvarchar(16) not null,idcardno nvarchar(18) n
18、ot null unique,employeddate datetime not null)7. 工作时间类别(workingtimetype): id,类别create table workingtimetype(wttypeld int not null identity(l,l) primary key,wttypename nvarchar(14) not null unique)8. 工作时间(workingtimes): id,工作时间,工作时间类别create table workingtimes(workingtimeld int not null identity(l,l)
19、primary key,worktime datetime not null unique,wttypeld int not null foreign key references workingtimetype(wttypeld)9. 打卡状态(clockstatus): id,状态名称create table clockstatus(clockstatusid int not null identity(l,l) primary key,clockstatusname nvarchar(lo) not null unique10. 上班打卡记录表(startclockrecords): i
20、d,打卡时间状态10职工idcreate table startclockrecords(sciockrecordsid int not null identity(l,l) primary key,sciocktime datetime not null,sciockstatusid int not null foreign key references clockstatus(clockstatusld), staff id n varchar(lo) not null foreig n key references staffs(staffld)下班打卡记录表(endclockrecor
21、ds): id,打卡时间,标记id职工idcreate table endclockrecords(eclockrecordsid int not null identity 1) primary key,eclocktime datetime not null,eclockstatusid int not null foreign key references clockstatus(clockstatusld), staff id nv archar(lo) not null foreig n key ref ere nces staffs(staffld)12. 管理员表(adms)ld
22、,用户名,密码,职工idcreate table adms(admid int not null identity(l,l) primary key,admname nvarchar(15) not null unique ,admpw nvarchar(15) not null,staff id nvarchar(lo) not null foreig n key references staffs(staffld)13. 超级管理员(superadms)ld,用户名,密码,职工idcreate table superadms(superadmid int identity(l,l) not
23、 null primary key,superadmname nvarchar(15) not null unique,superadmpw nvarchar(15) not null,staff id nvarchar(lo) not null foreig n key references staffs(staffld)14. 用户表(usersjid,职工id,密码create table users(userid int not null identity(l,l) primary key,userpw nvarchar(15) not null,staff id n varchar(
24、lo) not null foreign key ref ere nces staffs(staffld)2.5数据库re图nations9 see:scjmfworld ngtimes9 wor<v-<】nendclockrecords ccoocorhcoortstaffssections三4tz<*1 superadmsstartclockrecords(gdoaxu5coo<cpositions三、软件结构3.1,顶级结构人事管理系 统登录界面32、一般职工界面结构(1)个人考勤块般职工 界面个人信息块(3)修改密码块3.3管理员界面修改密码块部门管理(5)职工
25、管理(2)个人信息块(1)个人考勤块上下班打卡个人信息修改登录密码修改按入职时间按姓名按编号按个人查询按部门查询3.4超级管理员界面修改密码块7登录密码修改修改添加部门管理删除查看按个人查询按入职时间按部门杳询(6)职工出勤r个人出勤查询部门整体出勤修改管理员管理删除査询杳询全部按个人查询程序模块描述4. 1登录模块1.流程图:职工输入用户名、密码、 选择身份 今登录成功管理 员主 界面职工 主界 面超级 管理 员主 界面职工输入用户名、密码并选择登录身份,根据选择的身份做不同的操作若选择的是“职工”,系统将杏询数据库屮的用户表users的记录,用户名密码核对 正确后加载职工主界而;若选样的是
26、“管理员”,系统将查询数据库屮的管理员表adms的记录,用户名密码 核对正确后加载管理员主界面;若选择的是“超级管理员”,系统将查询数据库中的用户表superadms的记录,川户 名密码核对正确后加载超级管理员主界面; 三种身份,若用八名、密码核对不正确,弹出提示消息框用八名或密码错误! ”。2.界面设计及代码如下:用到的控件字段名、方法及变量有:探控件:用户名文本框名称:login_usernametxt密码文本框名称:login_userpwtxt身份下拉列表名称:login_rolecom登录标签名称:login enterlab退出标签名称:login esclab探变量:userch
27、ange uc = new userchange(); /处理登录业务类的实例探调用方法:uc.getllser(user); /核对一般职工的用户名、密码;uc.getadm(adm); /核对管理员的用户名、密码; uc.getsupadm(supadm); /核対超级管理员的用八名、密码。 “登录”标签的单击事件:private void login_enterlab_click(object sender, eventargs e)usertype = logi n_rolecom.text;tryif (usertype = ”职工“)user user = new user();u
28、ser.staffid = login_usernametxt.text.trim(); user.userpw = login_userpwtxt.text.trim(); count = uc.getllser(user);else if (usertype ="管理员")adm adm = new adm();adm.admname = login_usernametxt.text.trim(); adm.admpw = login_userpwtxt.text.trim();count = uc.getadm(adm);else if (usertype = ”超级
29、管理员”)superadm supadm = new superadm(); supadm.superadmname = login_usernametxt.text.trim(); supadm.superadmpw = login_userpwtxt.text.trim(); count = uc.getsupadm(supadm);讦(count > 0)this.dialogresult = dialogresult.ok;username = logi n_ usernametxt.text; this.close();elsemessagebox.show(h用户或密码错误!
30、 n);catch (exception exc)messagebox.show(exc.message); “退出”标签的单击事件:private void logj n_esclab_click(object sender, eve nt args e) this.close();4. 2职工考勤模块1.流程图:所有的 用户登 录系统上班打卡下班打卡超级管 理员登 录系统每天晚上22点整必卩h整a完成每天的上班 打r记录的录入a完成每犬的下班 打卡记录的录入成功登录系统后所有的职工都可以进行上下班打卡操作,每个职工每天只允许打一次上班卡和一次 下班卡;上班打卡时间为每天的am 6:00 -
31、 12:00, 12点整截止,下班打卡时间为每 天的pml2:00-22:00, 22点整截止。 “超级管理员”登录,系统会在每天中午12点和每天晚上22点查询数据库屮的职 工表staffs的记录,对未打卡的员工分别在上下班打卡记录表屮标记为未打卡;必须 保证每天这两个时间段超级管理员处于登录状态才能完成上下班考勤记录。2.打卡界面设计及代码如下:用到的控件字段名、方法及变量有:探控件:上班打卡按钮名称:loin userndmetxtf班打卡按钮名称:login_userpwtxt探变量:staffed /登录员工的职工iddatetime time;/id录当前时间clickcardopt
32、 copt = new clickcardopt(); 处理打卡业务类的实例 探调用方法:copt.addclockrecord("startclockrecords", srecord); 添加上班打卡记录 copt.addclockrecord("endclockrecords", erecord); 添加卜班打卡记录 getworkingtime("j:班”);获取上班时间表workingtimes的上班时间 getworkingtime("下班”);获取上班时间表workingtimes的下班时间 “上班打卡”按钮的单击事件:
33、private void clock_sdkbtn_click(object sender, eventargs e)int hour = convert.tolnt32(time.hour);if (hour < 6 11 hour >= 12) /6-12 点打上班卡时间messagebox.show("抱歉,现在不是打卡时间!");elsestring workingtime = getworkingtime(”上班”);string worktimes = workingtime.splitc:');int workhour = con vert
34、.tolnt32(worktimes0);int workminute = con vert.tolnt32(worktimesl); startclockrecord srecord = new startclockrecord(); srecord.sciocktime = time;讦(time.hour > workhour 11 time.hour = workhour && time.minute >workminute)srecord.sciockstatusid = 2;elsesrecord.sciockstatusid = 1;srecord.s
35、taffid = staffid;if (copt.addclockrecord(llstartclockrecordsl,/ srecord)messagebox.show(staffid + ”打卡成功!elsemessagebox.show(staffid +"你已经打过上班卡了! ”);“下班打卡”按钮的单击事件:private void clock_edkbtn_click(object sender, eventargs e) jnt hour = convert.tolnt32(time.hour);讦(hour <= 11 11 hour >= 22) /
36、12-22 点打下班卡时间messagebox.show("抱歉,现在不是打卡时间! ”);elsestring workingtime = getworkingtime下班”); string worktimes = workingtime.splitf1:1);int workhour = con vert.tolnt32(worktimes0);time.minute <int workminute = convert.tolnt32(worktimesl); endclockrecord erecord = new endclockrecord(); erecord.e
37、clocktime = time;if (time.hour < workhour 11 time.hour = workhour && workminute)erecord.eclockstatusid = 3;elseerecord.eclockstatusid = 1;erecord.staff id = staffid;if (copt.addclockrecord("endclockrecords", erecord)messagebox.show(staffid + "打卡成功!elsemessagebox.show(staffi
38、d + ”你已经打过卜班卡了 !"); 3超级管理员登录后主窗体处理未打卡职工的后台代码: 用到的控件字段名、方法及变量有:探控件:计时器名称:lndex_timerdatetime time;/记录当前时间clickcardopt copt = new clickcardopt();/ 处理打卡业务类的实例 探调用方法:coptperfectsciockrecords(); /插入未打卡职工的上班打卡标记copt.perfecteciockrecords();/插入未打r职工的f班打忖记录 主窗体的load事件private void index_load(object sende
39、r, eventargs e)if (usertype = ”超级管理员“)this.lndex_timer.lnterval = 60000;this .in dex_timer.tick += new system. eve ntha ndler(this .in dex_timer_tick);计时器的tick事件private void lndex_timer_tick(object sender, eventargs e)time = datetime.now;每天中午12点整完成上班打卡记录表的录入if (time.hour = 12 && time.minute
40、= 0)copt.perfectsciockrecords();每天晚上22点整完成下班打卡记录表的录入if (time.hour = 22 && time.minute = 0)copt.perfecteciockrecords();4. 3个人信息模块1.流程图:成功登录系统麻所何的职t都可以对白己的全部信息进行杳看、对部分信息进行修改。2.界面设计截图如下:基本信亘编号 pemaoool小何外联部职位董爭长本科出生日期1989 年月日身份证号上传头像222222222222222联祭方式民族蒙古族毕业院校爱的飞专业阿斯达工作年限3户 口 areg4. 4修改密码模块1.流
41、程图:成功登录系统后所有的职工都町以对口己的密码进行修改操作。2.界面设计截图如下:ibs 码22斯密码确定m4.5部门管理模块1.流程图:j修改部门添加部门超级管理 员和管理 员登录系 统管理员和超级管理员成功登录系统后可以执行对部门的增删改查操作。2.删除部门的界面设计及详细代码如下:(其他没有写在此说明书内)耶门名9入彌1ki 号所 bmo1pcmdooox人钳klviz 广菩那asmt用到的控件字段名、方法及变量有 探控件:tablecontrol 名称:tionnametb删除部门 combobox 名称:smf_delete_sectionnamecomdatagridview 名
42、称:smf_delete_sectionmemberdgv 职工编号文本框名称:smf_delete_staffldtxt 调派部门 combobox 名称:smf_delete_sectionnewnamecom 调派按钮的名称:smf_delete_assignbut提交删除按钮的名称:smf_delete_yesbutsectionopt sopt = new sectionopt();/处理部门业务section oldsec = new section(); 【口部 i、j 探调用方法:sopt.getsections(); /得到部门的所有记录sopt.getstaffs_byse
43、ction(oldsec.sectionname); /根据部门名称得到员工sopt.delectsection(oldsec); /删除部门sopt.getothersections(oldsec.sectionld); / 得到除此之外所有部门的记录 tablecontrol 的 selectedlndexchanged 事件: private void tionnametb_selectedlndexchanged(object sender, eventargs e) newsmf_delete_sectio nn amecom.datasource = sopt.getsectio
44、ns(); smf_delete_sectionnamecom.displaymember = 'ectionname11; smf delete sectionnamecom.valuemember = ''sectionld11;this.sm f_delete_secti onn amecom.selectedl ndexcha nged+= system. eve ntha ndler(this.smf_delete_sectionn amecom_selectedl ndexcha nged);oldsec.sectionname = smf delete s
45、ectionnamecom.text; oldsec.sectionld = smf_delete_sectio nn amecom.selectedvalue.tostri ng();删除部门 combobox 的 selectedlndexchanged 事件:private void smf_delete_sectio nn amecom_selectedl ndexcha nged(object sen der, eve nt args e)oldsec.sectionname = smf_delete_sectio nn amecom.text; oldsec.sectionld =
46、 smf_delete_sectio nn amecom.selectedvalue.tostri ng();smf_delete_sectionmemberdgv.datasource=sopt.getstaffs_bysectio n(oldsec.sectio nn ame);sm f_delete_sectio nn ewnamecom.datasource=sopt.getothersectio ns(oldsec.sectionld);smf_delete_sectionnewnamecom.displaymember = nsectionnameh;smf delete sect
47、ionnewnamecom.valuemember = ,sectionld" smf_delete_staffldtxt.clear(); datagridview 的 sectionmemberdgv_cellclick 事件private void smf_delete_sectio nmemberdgv_cellclick(objectsen del;datagridviewcelleventargs e)讦(e.rowindex >= 0)smf_delete_staffldtxt.text=smf_delete_sectionmemberdgv. rowse.row
48、index.cells0.value.tostring();调派按钮的单击事件private void smf_delete_assignbut_click(object sender, eventargs e)if (smf_delete_staffldtxt.text !="")string staffid = smf_delete_staffidtxt.text;string sectionid = smf_delete_sectio nnewnamecom.selectedvalue.tostri ng(); 讦(sopt.assignstaff(staffid, sectio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国网继电保护技术培训体系
- 小学生语文写作培训课件
- 城市交通规划合同管理合同管理咨询重点基础知识点
- 我的童年音乐课件
- 试验检测单位安全培训课件
- 《当代少先队教育导论》课件-【第8章】 少先队仪式教育
- 跟单文员合同协议范本
- 浮苔打捞协议书
- 超市租赁协议合同协议
- 车合同补充协议模板
- 三年级下册面积单位换算练习100道及答案
- 仿古建筑工程施工合同
- 恐动症品管圈课件
- 电商平台对用户交易纠纷的处理和解决方案
- 森林生态修复技术方案
- 婴幼儿托育服务与管理专业人才需求调研报告
- 江苏省四所百强中学2022-2023学年高二下学期6月联考生物试题含答案
- 隧道工程维护与修复技术
- 智慧社区平台运营方案
- 不良资产项目律师法律尽调报告(模板)
- 全钢子午线轮胎一次法成型机课件
评论
0/150
提交评论