实 习 报 告
实训项目: WEB开发实训B 学生姓名: *** 学 号: ********* 班 级: 网络13级1班 专 业: 网络工程 完成日期: 2016年10月24日
吉林建筑大学城建学院 计算机科学与工程系
实训名称: 人事管理系统的设计与实现
《实训课名称》成绩评定表
姓名 学号 王宝鑫 130330118 专业班级 学历学制 网络13级1班 四年制本科 题目 人事管理系统的设计与实现 实训时间 实训地点 2016年 10月3日 至 2016 年 10月 28 日 网络机房415 指导教师 刘书红,苏丽 指导教师评语: 指导教师签字: 年 月 日 平时(20%)(出勤、表现、团队意识) 第一阶段 阶段成果(20%) 成 绩 评 定 (按大纲规定) 第二阶段 设计成果(35%) 答辩(25%) 总成绩(五级分制) 教研室主任审核签字: 签 字: 年 月 日
第1部分 项目描述 ........................................................... 1
1.1 人事管理系统背景分析················································1 第2部分 项目术语表 ......................................................... 1
2.1 人事管理系统相关术语 ................................................ 1 第3部分 技术支持 ............................................................ 1
3.1 开发软件Access的介绍 ............................................... 1 3.2 Visual Basic····························································4 3.3 Java Servlet技术························································4 3.4 JavaBeans 技术······················································4 3.5 开发环境····························································3 第4部分 需求分析···························································3
4.1 系统功能模块·························································3 4.2 4.3
系统活动图·························································4
客
户
端
用
例
图·························································错误!未定义书签。 4.4
服
务
端
用
例
图·························································错误!未定义书签。 第5部分 概要设计···························································7
5.1 业务模型···························································7 5.2
数据库设计·······················································7
第6部分 设计过程中遇到的问题和解决方法·····································24
6.1 问题一······························································24 6.2 问题一及解决方法····················································24 6.3 问题二··························································.. ·24 6.4 问题二分析及解决方法················································24 第7部分 系统测试····························································25
第8部分 实训总结···························································25 第9部分 项目部署简单说明··················································26
9.1 使用说明····························································26
第1部分 项目描述
1.1人事管理系统背景分析
人事管理系统是一个企业单位不可缺少的部分,是适应现代企业制度,推动企业人事管理走向科学化、规范化、自动化的必要条件。它的内容对于企业的决策者和管理者来说都至关重要,所以人事管理系统应该能为领导提供充足的信息和快捷的查询手段,以帮助企业领导了解企业现有的人力资源状况。为人事管理和高层决策领导提供高校的决策支持。本系统实现了用户登录,基本信息管理,人事管理,备忘记录,数据库维护,管理工具,系统管理等功能。其中用户登录用来验证用户的信息是否合法。系统管理是由系统用户添加新的用户,修改用户权限。基本信息管理功能主要对部门的管理、工种职务类型、职称类型、文化类型等的管理,如部门信息的添加、修改、删除等。在系统中主要包括添加新的部门、修改和删除部门信息。人事管理功能主要实现员工信息的管理功能。
第2部分 项目术语表
2.1 人事管理系统相关术语
设计中用到的专门术语的定义或外文首字母组词的原词组:
PMS:即:Personnel Management System,人事管理系统(PMS)可以大幅提高企业内部领导人事对本公司的人事管理的效率,是企业信息化建设的核心部分。
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
第3部分 技术支持
3.1开发软件Access的介绍
Microsoft Access是比较流行的关系型数据库管理系统之一,其基本核心
是Microsoft Jet 数据库引擎,是一些关于某个特定主题或目的的信息集合。它的作用是用来存储,维护和检索数据。同时,提供了VBA 编程接口,可以为用户提供各种各样的编程功能。
一个数据库对象是由若干表,查询,窗体,报表,宏和模块等对象及对象的集合组成的,这些集合的组合丰富和增强了Access数据库的功能。在Access中,所有的对象均保存在一个“.MDB”文件中,这给数据库的维护带来了很大的方便。
选择Access作为后台数据库,是因为Access在许多数据管理的系统中已经非常广泛的使用,在数据流管理方面也是比较成熟的。同时Access相比较SQL作为后台数据库,在连接方面有更为简易的表现,因此选择Access作为后台数据库。i
3.2 Java Servlet技术
Java Servlet是JSP技术的基础,JSP本身就是预先被编译成Servlet,然后再运行的,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成,Servlet这个名称大概源于Applet,现在国内的翻译方式很多,本文为了避免误会,本文直接采用Servlet这个名称而不做任何翻译,读者如果愿意,可以称之为“小服务程序”。Servlet其实和传统的CGI程序和ISAPI、NSAPI等Web程序开发工具的作用是相同的,在使用Java Servlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器也可以通过附加的应用服务器和模块来支持Servlet。得益于Java的跨平台的特性,Servlet也是平台无关的,实际上,只要符合Java Servlet规范,Servlet是完全平台无关且是Web服务器无关的。由于Java Servlet内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Java Servlet效率非常高。但Java Servlet也不是没有缺点,和传统的CGI、ISAPI、NSAPI方式相同,Java Servlet是利用输出HTML语句来实现动态网页的,如果用Java Servlet来开发整个网站,动态部分和静态页面的整合过程简直就是一场噩梦。这就是为什么
SUN还要推出Java Server Pages的原因。
3.3 JavaBeans 技术
什么是JavaBeans?JavaBeans就是Java的可重用组件技术。ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或复杂计算分离出来成为独立可重复利用的模块。JSP通过JavaBeans实现了同样的功能扩充。JSP对于在Web应用中集成JavaBeans组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。JavaBeans组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。在实际的JSP开发过程中,读者将会发现,和传统的ASP或PHP页面相比,JSP页面将会是非常简洁的,由于JavaBeans开发起来简单,又可以利用Java语言的强大功能,许多动态页面处理过程实际上被封装到了JavaBeans中。
3.4 开发环境
系统开发语言:java
数据库管理软件:Microsoft SQL Server 2005 运行平台:Windows 7
运行环境:Microsoft.NET Framework SDK v2.0
第4部分 需求分析
4.1 系统功能模块
4.2 系统活动图
基本信息模块的流程图如图4-2所示。
人事管理模块的流程图如图4-3所示。
数据库维护管理流程图如图4-4所示。
第5部分 概要设计
5.1业务模型
在职状态工号合同期限入职日期毕业院校所属专业聘用形式最高学历性别员工姓名出生日期员工编号身份证号婚姻状况名族机关联系地址政治面貌电子邮箱联系电话员工基本工资职称职位部门员工基本信息
姓名性别部门备注员工奖罚 奖惩日期奖惩类别奖惩原因编号职位奖惩分数 员工奖惩信息
5.2 数据库设计
通讯录表
字段名 数据类型 主键 描述
ID Name Sex Phone QQ Wordphone E-mail Handset Varchar(5) Varchar(20) Varchar(4) Varchar(13) Varchar(15) Varchar(13) 是 否 否 否 否 否 编号 职工名称 性别 家庭电话 QQ号 工作电话 邮箱地址 手机号 Varchar(32) 否 Varchar(11) 否 奖惩表
字段名 ID Sut-ID RPKind RPDate SealMan QuashDate QuashWhys 数据类型 Varchar(5) Varchar(5) Varchar(20) Datetime Varchar(10) Datetime Varchar(50) 主键 是 否 否 否 否 否 否 描述 编号 职工编号 奖惩种类 奖惩时间 批准人 撤销时间 撤销原因 职工基本信息表
字段名 ID StuffName Folk Birthday Age Kultur Marriage Sex Visage 数据类型 Varchar(5) Varchar(15) Varchar(5) Datetime Int Varchar(14) Varchar (4) Varchar (4) Varchar (14) 主键 是 否 否 否 否 否 否 否 否 描述 职工编号 职工名称 民族 出生日期 年龄 文化程度 婚姻 性别 政治面貌
IDCard Workdate WorkLength Employee Business Laborage Branch Duthcall Phone Handset School Speciality GraduateDate Address Photo BeAware City M-pay Bank Pact-B Pact-E Pact-Y Varchar(20) Datetime Int Varchar(20) Varchar(10) Varchar(10) Varchar(14) Varchar(14) Varchar(14) Varchar(11) Varchar(24) Varchar(20) Datetime Varchar(50) Image Varchar(30) Varchar(30) Float Varchar(20) Datetime Datetime Float 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 身份证号 单位工作时间 工龄 职工类型 职务类型 工资类别 部门类别 职称类别 电话 手机 毕业学校 主修专业 毕业时间 家庭地址 个人照片 省 市 月工资 银行账号 合同起始日期 合同结束日期 合同年限 家庭关系表
字段名 ID Sut-ID LeaguerName Nexus 数据类型 Varchar(5) Vachar(5) Vachar(20) Vachar(10) 主键 是 否 否 否 描述 编号 职工编号 家庭成员名称 与本人关系
BirthDate WordUnit Business Visage Datetime Varchar(24) Varchar(10) Varchar(10) 个人简历表
否 否 否 否 出生日期 工作单位 职务 政治面貌 字段名 ID Sut-ID Memo 数据类型 Varchar(5) Varchar(5) Text 日常记事本表
主键 是 否 否 描述 编号 职工编号 内容 字段名 ID 数据类型 Int 主键 是 否 否 否 否 培训记录表
描述 编号 记事时间 记事类别 主题 内容 BlotterDate Datetime BlotterSort Varchar(20) Motif Wordpa Varchar(20) Text 字段名 ID Sut-ID 数据类型 Varchar(5) Varchar(5) 主键 是 否 否 否 否 否 否 否 否 否 描述 编号 职工编号 培训方式 培训开始时间 培训结束时间 培训专业 培训单位 培训内容 费用 效果 TrainFashion Varchar(20) BeginDate EndDate Datetime Datetime Speciality Varchar(20) TrainUnit Varchar(30) KulturMemo Varchar(50) Charge Effect Float Varchar(20) 工作简历表
字段名 ID Sut-ID BeginDate End Date WordUnit Branch Business 类型 Varchar(5) Varchar(5) Datetime Datetime Varchar(24) Varchar(14) Varchar(14) 主键 是 否 否 否 否 否 否 描述 编号 职工编号 开始时间 结束时间 工作单位 部门 职务 5.3主要工作流程图
5.3.1 登录模块
此部分主要用于本系统工作人员的登录,只有在分配了用户名和密码时才可以进入该系统,管理相应的工作,并且工作人员能浏览数据库中的用户表和注册用户名密码,以免非法登录,以便于管理。用户登录时将按照用户名和密码进行验证,当输入错误或没有用户名和密码时会出现相应的提示(用户名或密码输入错误!),当用户名和密码都正确时会进入程序主界面,才能进行日常管理工作。该模块的界面设计如图5-1登录界面所示。
图5-1 登录界面
如果登录身份验证成功则进入主界面,主界面是程序操作过程中必不可少的,它是人机交换的重要环节。通过主界面,用户可以调用系统相关的各个子模块,快速掌握本系统中所实现的各个功能。人事管理系统中,当登录窗体验证成功后,用户将进入主窗体,主窗体分为四个部分:最上面是系统菜单栏,可以通过它调用系统中的所有子窗体;菜单栏下面是工具栏,它以按钮的形式使用户能够方便地调用最常用的子窗体;窗体的左边是一个树形导航菜单,该导航菜单中的各节点是根据菜单栏中的项自动生成的;窗体的最下面用状态显示当前登录的用户。它的界面图如图5-2所示。
图5-2 主界面
如果用户名或密码错误则会提示用户名或者密码错误,需要重新输入。
5.3.2基本信息管理模块
1.基本数据管理
主要包括民族类别设置、职工类别设置、文化程度设置政治面貌等,这样方便用户杳看.运行结果会显示如图5-3所示。
图5-3 基本数据管理界面
2.员工提示信息管理
主要用提示员工的生日和合同到期日期,并进行保存。启动之后会显示如图5-4所示。
图5-4 员工生日提示管理界面
图5-5 员工合同提示管理界面
5.3.3管理工具模块
此模块有两个子模块组成,完成对记事本、计算器的设置。如图5-6/5-7所示。
图5-6 计算器设置界面图
图5-7 记事本设置界面图
5.3.4人事管理模块
此模块由三个子模块组成,人事档案管理模块,对员工的基本信息进行的查询、删除、添加、修改等操作,如添加一个员工的姓名、年龄、出生日期、政治面貌、身份证号等。人事资料查询模块和人事资料统计模块。可以对员工的基本信息和员工的个人信息进行相关的操作。其中人事资料查询模块是实现了员工在部门中的职务、职称、工种,员工信息查询等功能.,设计思路与人事档案管理模块基本相同,为了方便用户操作可以在子窗体中选择要调动的员工.在模块中,父窗体中主要用于添加、 浏览、查找、打开“选择员工”窗体(子窗体)。子窗体用于显示员工信息。人事资料统计模块主要是按照不同的条件,对员工人数进行统计。它们的运行界面分别如图所示:
图5-8 人事档案管理界面图
图5-9 人事资料查询界面图
图5-10 人事资料统计界面图
5.3.5备忘记录模块
此模块有两个子模块组成,分别是日常记事、通讯录。备忘记录模块中可以实现对员工信息的修改、查询、浏览等。基中通讯录和日常记事的图如下图所示。
图5-11 通讯录管理界面
图5-12 日常记事管理界面
5.3.6系统管理模块
此模块用于管理用户的权限,对用户名及密码进行设置、修改、删除,口令设置中只能对当前登录的用户进行密码的修改。具体的界面如图5-13所示。
图5-13 系统管理界面图
5.4代码设计
public string strUserName; { String FrmStr = \"\"; //记录窗体名称
if (FrmName == \"民族类别设置\") //判断要打开的窗体
{ DataClass.MyMeans.Mean_SQL = \"select * from tb_Folk\"; //SQL语句 DataClass.MyMeans.Mean_Table = \"tb_Folk\"; //表名
DataClass.MyMeans.Mean_Field = \"FolkName\"; //添加、修改数据的字段名 FrmStr = FrmName;
} if (FrmName == \"职工类别设置\")
{ DataClass.MyMeans.Mean_SQL = \"select * from tb_EmployeeGenre\";
DataClass.MyMeans.Mean_Table = \"tb_EmployeeGenre\"; DataClass.MyMeans.Mean_Field = \"EmployeeName\"; FrmStr = FrmName;
}if (FrmName == \"文化程度设置\")
{ DataClass.MyMeans.Mean_SQL = \"select * from tb_Kultur\"; DataClass.MyMeans.Mean_Table = \"tb_Kultur\"; DataClass.MyMeans.Mean_Field = \"KulturName\";
FrmStr = FrmName;
} if (FrmName == \"政治面貌设置\")
{ DataClass.MyMeans.Mean_SQL = \"select * from tb_Visage\"; DataClass.MyMeans.Mean_Table = \"tb_Visage\";
DataClass.MyMeans.Mean_Field = \"VisageName\"; FrmStr = FrmName;
} if (FrmName == \"部门类别设置\")
{ DataClass.MyMeans.Mean_SQL = \"select * from tb_Branch\"; DataClass.MyMeans.Mean_Table = \"tb_Branch\";
DataClass.MyMeans.Mean_Field = \"BranchName\"; FrmStr = FrmName;
} if (FrmName == \"工资类别设置\")
{DataClass.MyMeans.Mean_SQL = \"select * from tb_Laborage\"; DataClass.MyMeans.Mean_Table = \"tb_Laborage\"; DataClass.MyMeans.Mean_Field = \"LaborageName\"; FrmStr = FrmName;
} if (FrmName == \"职务类别设置\")
{DataClass.MyMeans.Mean_SQL = \"select * from tb_Business\"; DataClass.MyMeans.Mean_Table = \"tb_Business\"; DataClass.MyMeans.Mean_Field = \"BusinessName\"; FrmStr = FrmName;
} if (FrmName == \"职称类别设置\")
{DataClass.MyMeans.Mean_SQL = \"select * from tb_Duthcall\"; DataClass.MyMeans.Mean_Table = \"tb_Duthcall\"; DataClass.MyMeans.Mean_Field = \"DuthcallName\"; FrmStr = FrmName;
} if (FrmName == \"奖惩类别设置\")
{ DataClass.MyMeans.Mean_SQL = \"select * from tb_RPKind\"; DataClass.MyMeans.Mean_Table = \"tb_RPKind\";
DataClass.MyMeans.Mean_Field = \"RPKind\"; FrmStr = FrmName;
} if (FrmName == \"记事本类别设置\")
{ DataClass.MyMeans.Mean_SQL = \"select * from tb_WordPad\"; DataClass.MyMeans.Mean_Table = \"tb_WordPad\"; DataClass.MyMeans.Mean_Field = \"WordPad\"; FrmStr = FrmName; } }public void PactDay(int i)
{DataSet DSet = MyDataClass.getDataSet(\"select * from tb_Clew where kind=\" + i + \" and unlock=1\\"tb_clew\");
if (DSet.Tables[0].Rows.Count > 0) { string Vfield = \"\"; string dSQL = \"\";
int sday = Convert.ToInt32(DSet.Tables[0].Rows[0][1]); if (i == 1) { Vfield = \"Birthday\";
dSQL = \"select * from tb_Stuffbusic where (datediff(day,getdate(),convert(Nvarchar(12),cast (cast (year(getdate()) as char(4))+'-'+ cast(month(\" + Vfield + \") as char(2))+'-'+ cast (day(\" + Vfield + \") as char(2)) as datetime),110))<=\" + sday + \") and (datediff(day,getdate(),convert(Nvarchar(12),cast (cast (year(getdate()) as char(4))+'-'+ cast(month(\" + Vfield + \") as char(2))+'-'+cast (day(\" + Vfield + \") as char(2)) as datetime),110))>=0)\"; } else {Vfield = \"Pact_E\";
dSQL = \"select * from tb_Stuffbusic where ((getdate()-convert(Nvarchar(12),\" + Vfield + \+ sday + \" and (getdate()-convert(Nvarchar(12),\" + Vfield + \} DSet = MyDataClass.getDataSet(dSQL, \"tb_Stuffbusic\");
if (DSet.Tables[0].Rows.Count > 0) { if (i == 1)
Vfield = \"是否查看\" + sday.ToString() + \"天内过生日的职工信息?\";
else
Vfield = \"是否查看\" + sday.ToString() + \"天内合同到期的职工信息?\";
if (MessageBox.Show(Vfield, \"提示\== DialogResult.OK)
{DataClass.MyMeans.AllSql = dSQL; } private void (object sender, EventArgs e) {if (FrmName == \"用户设置\")
{PerForm.F_User FrmUser = new PWMS.PerForm.F_User(); FrmUser.Text = \"用户设置\"; FrmUser.ShowDialog(); FrmUser.Dispose(); }if (FrmName == \"计算器\")
{System.Diagnostics.Process.Start(\"calc.exe\"); }if (FrmName == \"记事本\")
{System.Diagnostics.Process.Start(\"notepad.exe\");} if (FrmName == \"系统帮助\")} private void tabControl1_Click(object sender, EventArgs e) {groupBox5.Enabled = true; Sut_Delete.Enabled = true;
MyMC.Ena_Button(Sut_Add, Sut_Amend, Sut_Cancel, Sut_Save, 1, 1, 0, 0); if (tabControl1.SelectedTab.Name == \"tabPage1\") //如果选择的是“职工基本信息”选项卡
{hold_n = 0; //恢复原始标识
MyMC.Ena_Button(Sut_Add, Sut_Amend, Sut_Cancel, Sut_Save, 1, 1, 0, 0); // groupBox5.Text = \"\"; Ima_n = 0;//标识是否选择了职工照片
Img_Clear.Enabled = false; //使按钮为不可用状 Img_Save.Enabled = false; Sub_Table.Enabled = true; }
if (tabControl1.SelectedTab.Name == \"tabPage2\" | tabControl1.SelectedTab.Name == \"tabPage3\" | tabControl1.SelectedTab.Name == \"tabPage4\" | tabControl1.SelectedTab.Name == \"tabPage5\") { groupBox5.Enabled = false; //使窗体中的操作按钮为不可用状态 Sub_Table.Enabled = false;
if (tabControl1.SelectedTab.Name == \"tabPage2\") //“工作简历”选项卡
{groupBox6.Parent = (TabPage)tabPage2; MyMC.MaskedTextBox_Format(Word_2); MyMC.MaskedTextBox_Format(Word_3);
} if (tabControl1.SelectedTab.Name == \"tabPage3\") //“家庭关系”选项卡 {groupBox6.Parent = (TabPage)tabPage3; MyMC.MaskedTextBox_Format(Famity_4);
}if (tabControl1.SelectedTab.Name == \"tabPage4\") //“培训记录”选项卡 {groupBox6.Parent = (TabPage)tabPage4; MyMC.MaskedTextBox_Format(TrainNote_3); MyMC.MaskedTextBox_Format(TrainNote_4);
} if (tabControl1.SelectedTab.Name == \"tabPage5\") //“奖惩记录”选项卡 { groupBox6.Parent = (TabPage)tabPage5; MyMC.MaskedTextBox_Format(RANDP_3);
MyMC.MaskedTextBox_Format(RANDP_5); MyMC.CoPassData(RANDP_2, \"tb_RPKind\");
} MyMC.Ena_Button(Part_Add, Part_Amend, Part_Cancel, Part_Save, 1, 1, 0, 0); }if (tabControl1.SelectedTab.Name == \"tabPage6\") //“个人简历”选项卡 {MyMC.Ena_Button(Sut_Add, Sut_Amend, Sut_Cancel, Sut_Delete, 0, 0, 0, 0);
Sut_Save.Enabled = true; } }
private void comboBox1_TextChanged(object sender, EventArgs e)
{switch (comboBox1.SelectedIndex) //向comboBox2控件中添加相应的查询条件 {case 0: {MyMC.CityInfo(comboBox2, \"select distinct StuffName from tb_Stuffbusic\
tem_Field = \"StuffName\"; break;
}case 1: {comboBox2.Items.Clear();
comboBox2.Items.Add(\"男\"); comboBox2.Items.Add(\"女\");
tem_Field = \"Sex\"; break;
} case 2: { MyMC.CoPassData(comboBox2, \"tb_Folk\"); //民族类别
tem_Field = \"Folk\"; break;
}case 3: {MyMC.CoPassData(comboBox2, \"tb_Kultur\"); //文化程度 tem_Field = \"Kultur\"; break;
}case 4: { MyMC.CoPassData(comboBox2, \"tb_Visage\"); //政治面貌 tem_Field = \"Visage\"; break;
}case 5: {MyMC.CoPassData(comboBox2, \"tb_EmployeeGenre\"); //职工类别 tem_Field = \"Employee\"; break;
}case 6: { MyMC.CoPassData(comboBox2, \"tb_Business\"); //职务类别 tem_Field = \"Business\"; break;
}case 7: {MyMC.CoPassData(comboBox2, \"tb_Branch\"); //部门类别 tem_Field = \"Branch\"; break; }
case 8: { MyMC.CoPassData(comboBox2, \"tb_Duthcall\"); //职称类别 tem_Field = \"Duthcall\"; break; }
case 9: {MyMC.CoPassData(comboBox2, \"tb_Laborage\"); //工资类别 tem_Field = \"Laborage\"; break; } }
private void InitializeComponent()
this.groupBox1.Location = new System.Drawing.Point(12, 12); this.groupBox1.Name = \"groupBox1\";
this.groupBox1.Size = new System.Drawing.Size(385, 106); this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false; this.groupBox1.Text = \"通讯录信息\"; this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(161, 81); this.label7.Name = \"label7\";
this.label7.Size = new System.Drawing.Size(53, 12); this.label7.TabIndex = 13;
this.label7.Text = \"E-Mail:\"; this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(15, 81); this.label6.Name = \"label6\";
this.label6.Size = new System.Drawing.Size(29, 12); this.label6.TabIndex = 12; this.label6.Text = \"QQ:\";
this.Address_7.Location = new System.Drawing.Point(214, 75); this.Address_7.Name = \"Address_7\";
this.Address_7.Size = new System.Drawing.Size(160, 21); this.Address_7.TabIndex = 11;
this.Address_6.Location = new System.Drawing.Point(54, 75); this.Address_6.Name = \"Address_6\";
this.Address_6.Size = new System.Drawing.Size(100, 21); this.Address_6.TabIndex = 10; this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(208, 52); this.label5.Name = \"label5\";
this.label5.Size = new System.Drawing.Size(65, 12); this.label5.TabIndex = 9;
this.label5.Text = \"工作电话:\"; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(12, 53); this.label4.Name = \"label4\";
this.label4.Size = new System.Drawing.Size(41, 12); this.label4.TabIndex = 8; this.label4.Text = \"手机:\";
this.Address_5.Location = new System.Drawing.Point(274, 47); this.Address_5.Name = \"Address_5\";
this.Address_5.Size = new System.Drawing.Size(100, 21); this.Address_5.TabIndex = 7;
this.Address_4.Location = new System.Drawing.Point(54, 47); this.Address_4.Name = \"Address_4\";
this.Address_4.Size = new System.Drawing.Size(148, 21); this.Address_4.TabIndex = 6; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(232, 25); this.label3.Name = \"label3\";
this.label3.Size = new System.Drawing.Size(41, 12); this.label3.TabIndex = 5; this.label3.Text = \"电话:\"; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(130, 25); this.label2.Name = \"label2\";
this.label2.Size = new System.Drawing.Size(41, 12);
this.label2.TabIndex = 4; this.label2.Text = \"性别:\"; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(13, 26); this.label1.Name = \"label1\";
this.label1.Size = new System.Drawing.Size(41, 12);
this.label1.TabIndex = 3;
this.label1.Text = \"姓名:\";
this.Address_3.Location = new System.Drawing.Point(274, 20); this.Address_3.Name = \"Address_3\";
this.Address_3.Size = new System.Drawing.Size(100, 21); this.Address_3.TabIndex = 2;
private void (object sender, EventArgs e)
{ UserManage.frmUserManage frm_usermanage = newPMSW.UserManage.frmUserManage(); frm_usermanage.ShowDialog();} private void (object sender, EventArgs e)
{UserManage.frmUserEdit frm_useredit = new HRP.UserManage.frmUserEdit(); frm_useredit.strUserName = strUserName; frm_useredit.ShowDialog();}
第6部分 设计过程中遇到的问题和解决方法
6.1问题一
修改密码的时候修改了其他用户的权限及密码怎么办
6.2问题一及解决方案:
管理员不仅可以查看修改其它用户的权限及密码,这样可以阻止某些管理员用户进入。虽然都是领导者但也不一定都是诚实的好搭档。在口令设置里面只能对当前用户进行修改密码的操作,这样可以防止误操作的发生。
6.3问题二
通读页面上所有文字,如基本信息管理中的员工信息,若有错字、漏字、拼写错误等问题;
6.4 问题二分析及解决方法
重新编码,在编码过程中要注意多检查,多次进行测试。
第7部分 系统测试
7.1人事管理系统内容检查
1. 检查整个人事管理主界面页面的布局,检查是否完整; 2. 检查有无被覆盖的文字或其他显示对象; 3. 检查有无超出边界范围的添加、删除信息的控件;
7.2人事管理易用性测试
1. 测试人事管理系统所使用的C#语言是否明白易懂,了解该系统的基本信息、人事管理、备忘记录等各个模块的功能;
2. 根据用户权限登录,用户是否总是可以知道系统当前的登录用户为TSoft;
3. 查询信息员工的基本信息和个人信息操作,数据库的维护,管理工具的操作是否方便可行;
4. 输入域上必填的域是否有特别的提示;
7.3人事管理功能检查
检查页面上是否有功能缺漏,典型的功能是: 1. 添加/修改/清空功能; 2.查询/显示功能; 3.用户登录/验证权限功能。 对每个功能,要求测试以下方面:
1. 检查登录功能、基本信息模块、人事模块等六个模块功能是否正确实现; 2. 检查员工的基本信息输出、个人信息输出是否正常; 3. 检查所有功能/业务流程。
第8部分 实训总结
由于水平有限,对于数据库的操作还不是相当的熟练,有时会出现信息不能及时更新到数据库的问题,导致错误,导致功能不够完善。另外在做需求分析的时候,由于考虑欠佳,等到做软件的时候又出现了问题,在返工为时太晚,
尽管已经想办法补救,但难免出现漏洞。比如高级管理员才可以设置管理员权限,默认情况下为普通管理员。另外有些想法还没有及时的添加到页面中,比如说:我想在用户登录以后提醒他的最新时间,以便于他处理工作的及时性。但是本系统还有不少闪光点,例如界面布局合理色调清新,功能虽然多但给人一目了然的感觉,不会太繁杂。
在我看来本系统的系统管理功能也是一个亮点,管理员不仅可以查看修改其它用户的权限及密码,这样可以阻止某些管理员用户进入。虽然都是领导者但也不一定都是诚实的好搭档。在口令设置里面只能对当前用户进行修改密码的操作,这样可以防止误操作的发生。另外本系统中实现照片的成功上传,也是一大亮点!可以把照片以二进制的形式保存在数据库中来实现,在自我创新的同时,我没有丢掉老师交给我的一些好的方法和捷径。比如正确处理数据结构之间的关系是我面临的一个问题和挑战。处理数据库的有关连接是这次系统设计的一大收获。学习的过程最主要的就是学习与实践相结合,进入大学以来我们的主要时间都在学习理论知识,即便是有一些课程设计也是时间很短,我们有充足的时间把四年来所学的知识在这一学期的时间里融于实践。
系统难免还有一些不足的地方,还望各位读者和教师们多多批评指正,不胜感激。
第9部分 项目部署简单说明
9.1 使用说明
在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对人力管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求,也未能实现全面的功能。
尽管本管理系统存在着很多不足,不过功能还算全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点。通过开发这个系统,我掌握了项目的开发过程,了解了基础知识。
因篇幅问题不能全部显示,请点此查看更多更全内容