软 件 学 院
三级实践课题
系统名称: 员工签到管理系统 专 业: 计算机信息管理 班 级: 信管111 学生姓名: 张世超(40)
2013 年 1 月 17 日
三级实践课题设计任务书
指导教师签字: 年 月 日
摘 要
本文设计的员工签到管理系统是为了更好,更方便的管理公司员工考勤的信息。此系统主要包括员工基本信息,员工签到管理等几个大模块。每个大模块又分成了几个小的模块,如员工基本信息模块又分成了员工列表,扩展信息,离职管理等小的模块。每个模块都完成了其相关信息的添加、修改、删除、查询和查看的功能, 如员工列表模块就实现了员工信息的添加,修改,删除,查看和查询。在开发此系统时用了代码生存器,生成了与数据库有关的一些代码以及一些常用的存储过程如记录的添加,删除和修改存储过程。通过代码生成器生成的代码将数据访问层的很好的封装了起来,大大的提高了开发的效率。系统功能的实现大大提高了公司管理员工信息的效率。
关键词:员工签到管理;员工签退管理;考勤统计;
目 录
摘 要................................................................................................................................................. 3 第1章 绪 论 . .................................................................................................................................. 5
1.1 课题背景 . ........................................................................................................................... 5 1.2 研究内容 . ........................................................................................................................... 5 1.3 分工及排序 . ....................................................................................................................... 5 第2章 需求分析 . ............................................................................................................................ 6
2.1 业务分析 . ........................................................................................................................... 6 2.2 功能需求分析 . ................................................................................................................... 6 第3章 概要设计 . ............................................................................................................................ 8
3.1 数据库概要设计 . ............................................................................................................... 8
3.1.1 表的设计 . .............................................................................................................. 8 3.1.2 实体关系图 . .......................................................................................................... 8
第4章 系统设计 . .......................................................................................................................... 10
4.1 数据库详细设计 . ............................................................................................................. 10 4.2界面设计 . .......................................................................................................................... 12
4.2.1员工操作界面 . ....................................................................................................... 12 4.2.1.1 员工信息查询 . ................................................................................................... 12 4.2.1.2 员工密码修改 . ................................................................................................... 13 4.2.2管理员操作界面 . ................................................................................................... 14 4.2.2.1 员工信息管理 . ................................................................................................... 14 4.2.2.2 员工信息添加 . ................................................................................................... 15 4.2.2.3 时间管理 . ........................................................................................................... 16 4.2.2.4 添加时间段 . ....................................................................................................... 17 4.2.2.5 签到查询 . ........................................................................................................... 17 4.2.2.6 签退查询 . ........................................................................................................... 18 4.2.2.7 考勤统计 . ........................................................................................................... 19
第5章 运行及测试 . ...................................................................................................................... 21 第6章 结束语 . .............................................................................................................................. 23 指导教师评语: . ............................................................................................................................ 25 附录 系统相关代码 . ...................................................................................................................... 26
第1章 绪 论
1.1 课题背景
目前市场上流行的员工签到管理系统能够完成大多数的考勤任务,其硬件系统做的相当完善,但与之相对应的管理软件的功能还不够完全,少了一些必须的考勤项目,如员工签退管理、请假管理等等。在对员工签到管理系统进行详细的需求分析的基础上,对目前员工签到管理系统做了一些改进,添加必要的员工管理项目,并对已有的项目有针对性的优化,使系统能有效的帮助企业进行人力资源管理,通过代码生成器生成的代码将数据访问层的很好的封装了起来,大大的提高了开发的效率。系统功能的实现大大提高了公司管理员工信息的效率。
1.2 研究内容
员工签到管理系统主要实现对员工的考勤进行管理,同时,也实现了对不同员工所属不同部门进行管理以及对考勤进行统计,员工管理系统主要实现了一下功能:
● 员工签到管理 ● 员工签退管理 ● 考勤统计 ● 员工管理
1.3 分工及排序
分工及排序如图所示:
图1-1分工及排序
第2章 需求分析
2.1 业务分析
员工签到管理系统首先分为不同的管理身份,它主要由管理员对其进行操作,管理员主要对所有员工签到和签退进行管理,同时也可以对员工的离职、调动、招新以及对员工信息查询等,也可以对制度进行更改、查询、添加以及删除等,同时,管理员可以对上、下班时间及签到时间或签退时间进行管理,也可以对部门的添加、修改、查询以及对删除等,管理员也可以根据不同的条件对员工签到以及签退信息进行统计。
2.2 功能需求分析
经业务分析,员工签到管理系统主要适用于事业型企业,系统需要实现以下功能:
1、员工签到:
员工可以根据自己的员工编号和密码在登陆界面中对自己上班时间进行记录(这个记录只是员工根据自己信息进行签到)。
1) 员工进入系统,员工输入自己的员工编号和密码,点击签到,系统
根据员工输入的员工编号和密码判断输入是否合法,如果合法并且签到时间早于时间表里的上班时间,则签到成功,若签到时间晚于时间表里的上班时间,则登录系统中的签到按钮则会变灰,不能签到;否则,提示签到失败;
2) 签到成功的话,系统根据员工签到的相关信息和系统当前时间把签
到信息插入到签到表里;
2、员工签退:
员工可以根据自己的员工编名和密码在登陆界面中对自己下班时间进行记录(这个记录只是员工根据自己信息进行签退)。
1) 员工进入系统,员工输入自己的员工编号和密码,点击签退,系统
根据员工输入的员工编号和密码判断输入是否合法,如果合法并且签退时间晚于时间表里的下班时间,签退成功,若签退时间早于时间表里的下班时间,则登录系统中的签到按钮则会变灰,不能签到;
否则,提示签到失败;
2) 签退成功的话,系统根据员工签退的相关信息和系统当前时间把签
退信息插入到签退表里;
3、时间管理:
管理员可以根据公司要求对签到时间进行管理,包括对时间的更改、查询工作时间段以及对添加工作时间段(上午、下午、晚上)等(上班时间就是签到截止时间,下班时间就是签退开始时间)。
1) 当网页显示时,把时间表里数据加载到控件中供管理员查询,管理
员可以对时间段进行更新、查询、添加(上午、下午、晚上),点击相应的按钮对时间进行管理操作;
2) 管理员对时间段更改后,时间表里也会进行更新并保存; 4、员工管理:管理员根据人员的变动,进行一系列的操作如人员的招新、员工的调动、员工的离职以及对员工信息查询等。
1) 如果管理员需要对员工进行管理,经过系统验证身份的合法性后方
可登录系统,选择员工管理导航按钮进入员工管理网页; 2) 当网页显示时,把员工表里数据加载到控件中供管理员查询,管理
员可以对员工的离职、调动、查询、招新进行管理,点击相应的按钮对员工进行操作;
3) 管理员对员工信息更改后,员工表里也会进行更新并保存; 5、考勤统计:根据员工签到记录进行管理,包括对员工所在的部门、早退次数、迟到次数、签到时间、签退时间等进行统计。
1) 如果管理员需要对员工考勤进行管理,经过系统验证身份的合法性
后方可登录系统,选择员工考勤管理导航按钮进入考勤管理网页; 2) 当网页显示时,把员工表里数据加载到控件中供管理员查询,管理
员根据员工所在的部门、早退次数、迟到次数、签到时间、签退时间等进行对员工的考勤进行统计(考勤信息无法修改);
第3章 概要设计
3.1 数据库概要设计
对于员工签到管理系统的数据库设计,本文将从以下几个方面进行描述:首先是概念模型描述,包括对系统的实体属性分析及系统的E-R 图,然后是系统的逻辑结构设计,即给出系统的数据库设计表结构及描述。 3.1.1 表的设计
整个系统各实体和联系可用以下关系来表示(其中主键已用下划线标识):
● 员工信息表(tb_StaffInfo)务、性别、年龄、出生日期、联系方式、联系地址;
● 时间表(tb_Time):时间段编号、部门编号、时间段名称(分为上午、
下午)、签到时间、上班时间、签退时间、下班时间;
● 员工签到表(tb_StaffReach):签到编号、员工编号、部门编号、职务、
性别、签到时间;
● 员工签退表(tb_StaffBack):签退编号、员工编号、部门编号、职务、
性别、签退时间;
● 部门表(tb_Department):部门编号、部门名称;
● 考勤统计表(tb_Count):员工编号、部门编号、员工名、部门名称、
职务、性别、年龄、类别、早退(迟到)次数、考勤是否有效、签到(签退)时间。
3.1.2 实体关系图
在分析过系统各实体之间的联系后可得出系统的整体概念模型,用E-R 图表示出来,如图所示的。
图3.1 E-R 图
第4章 系统设计
为了方便用户的操作,系统采用了模块化设计的思想,通过各模块的不同组合以实现不同的增、删、改、查功能。最终,使该系统能够具有规范化的格式、完整的信息量和易于查询等的特点。
4.1 数据库详细设计
该系统数据库采用SQL Server 2005 数据库。整个数据库系统共有员工信息表,时间表,员工签到表,员工签退表,部门表,考勤统计表六个表组成所有数据表的表结构如下:
1. 员工信息表
该表主要用来记录员工信息,其表结构如表4-1所示:
表4-1 员工信息表(tb_StaffInfo)
2. 时间表
该表主要记录了上下班时间等,其表结构如表4-2所示:
表4-2 时间表(tb_Schedule)
3. 员工签到表
该表主要记录了员工签到信息,其表结构如表4-3所示:
表4-3 员工签到表(tb_StaffReach)
4. 员工签退表
该表记录了员工签退信息,其表结构如表4-4所示:
表4-4 员工签退表(tb_StaffBack)
5. 部门表
该表详细记录了部门信息,其表结构如表4-5所示:
表4-5 部门表(tb_Department)
6. 考勤统计表
该表记录了考勤统计信息,其表结构如表4-6所示:
表4-6 考勤统计表(tb_Count)
4.2界面设计
员工签到管理系统主要包括管理员和员工两种身份,员工可以进行签到、签退,同时可以查询自己相关信息以及修改密码等,管理员主要是对员工的管理、部门管理、时间的设置、考勤信息的统计等等,以下是员工签到管理系统的页面。 无论是员工还是管理员都需要签到或签退,以下是登陆页面如图4.1所示:
图4.1 登录页面
4.2.1员工操作界面 4.2.1.1 员工信息查询
用户通过身份验证后进入相应业务功能页面,如果验证身份是员工的话,就进入员工相应的页面,下图是员工查询个人信息的页面如图4.2所示:
图4.2 员工信息查询页面
4.2.1.2 员工密码修改
如果员工需要对自己的密码进行修改,需要进入相应的页面,下图是员工密码修改的页面如图4.3所示:
图4.3 员工修改密码页面
员工修改密码流程图如下图4.4:
图4.4 员工修改密码流程图
4.2.2管理员操作界面 4.2.2.1 员工信息管理
管理员对员工信息进行一系列的操作,以下是员工信息的编辑页面,如图4.5所示:
图4.5 员工信息编辑页面
员工信息管理流程图如下图4.6:
图4.6 员工信息管理流程图
4.2.2.2 员工信息添加
管理员对员工信息进行一系列的操作,以下是员工信息的添加页面,如图4.7所示:
图4.7员工信息添加页面
4.2.2.3 时间管理
管理员可以根据公司的需要进行对时间的设置,以下是管理员对时间的设置,如图4.8所示:
图4.8 时间编辑页面
4.2.2.4 添加时间段
管理员可以根据公司的需要进行对时间的设置,以下是管理员对时间的设置,如图4.9所示:
图4.9 添加时间段页面
4.2.2.5 签到查询
管理员可以对员工签到进行查询,以下是对员工签到信息查询,如图4.10所示:
图4.10 员工签到查询
4.2.2.6 签退查询
管理员可以对员工签到进行查询,以下是对员工签到信息查询,如图4.11所示:
图4.11 员工签退查询
4.2.2.7 考勤统计
管理员根据不同条件对员工的考勤进行不同的统计,以下是管理统计界面,如图4.12所示:
图4.12 管理统计界面
第5章 运行及测试
在编码的过程中,需要通过不断的对系统进行调试,才能对其功能做出完善
性的补充。所以测试在此期间起了相当大的作用。
以下给出员工管理模块的若干主要测试用例。如表5.1所示。
表5.1员工管理测试用例
第6章 结束语
不知不觉间,两周的实践课题即将结束。回头看去,期间有苦也有甜:有时一个问题做不出来,能让我们郁闷好几天;有时自己调出一个代码,会兴奋很长时间。这次二阶课题我们分小组,自己选择合适的题目,自由选择队友,带给我们很大的收获。
通过这次实践我学会如何与团队合作,交流,分工,也增进了我们之间的友情。由于这次是自己动手,我可以把在上课时,老师教的知识用于实践,让我更加理解和熟练掌握它们,让我在以后的工作中能更好的工作。做这次课题中用到了许多知识,有老师讲过的,也有老师没有讲过的。遇到老师讲过的又不会的就去找课本,遇到老师没讲过的我们就去找资料和去问老师,在老师讲解之下我们最终会解决问题。
在此,我要郑重感谢帮过我们的老师,以后我要更加努力学习,争取开发出更好的程序。
参考文献
1) [01]郭兴峰, ASP.NET动态网站开发基础教程(C#篇)[M],北京:清华大学
出版社, 2006.5
2) [02]孙士宝,ASP.NET 数据库网站设计教程(C#篇)[M],北京:电子工业出版
社, 2010.3 3) Thiru Thangarathinam,ASP.NET 2.0 XML 高级编程[M].北京:清华大学出
版社,2006。
4) 张海藩. 软件工程导论[M].北京:清华大学出版社,2003。
5) 郝刚.ASP.NET 2.0 开发指南[M].北京:人民邮电出版社,2006。
指导教师评语:
成绩:
指导教师签字:
年 月 日
附录 系统相关代码
主要代码如下: 员工管理:
public void bind() {
SqlConnection conn = MyConnection .Connection();
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo", conn);
DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView1.DataSource = ds;
this .GridView1.DataKeyNames = new String [] { "StaffId" }; this .GridView1.DataBind(); conn.Close(); }
protected void Page_Load(object sender, EventArgs e) {
if (!this .IsPostBack) {
bind(); } }
protected void Button1_Click(object sender, EventArgs e) {
string strSql = "select * from tb_StaffInfo";
if (TextBox1.Text != "" || TextBox3.Text != "" || TextBox4.Text != "" ) {
strSql = strSql + " where";
if (TextBox1.Text != "" ) {
strSql = strSql + " StaffId= '" + TextBox1.Text.Trim() + "'" ; }
if (TextBox1.Text != "" && TextBox3.Text != "" ) {
strSql = strSql + " and"; }
if (TextBox3.Text != "" ) {
strSql = strSql + " Priviliges= '" + TextBox3.Text.Trim() + "'" ; }
if (TextBox1.Text != "" && TextBox4.Text != "" ) {
strSql = strSql + " and"; } else {
if (TextBox3.Text != "" && TextBox4.Text != "" ) {
strSql = strSql + " and";
} }
if (TextBox4.Text != "" ) {
strSql = strSql + " DepartId= '" + TextBox4.Text.Trim() + "'" ; } }
SqlConnection conn = MyConnection .Connection();
SqlDataAdapter sda = new SqlDataAdapter (strSql, conn); DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView1.DataSource = ds;
this .GridView1.DataKeyNames = new String [] { "StaffId" }; this .GridView1.DataBind(); conn.Close(); }
//删除数据
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) {
SqlConnection conn = MyConnection .Connection();
SqlCommand cmd = new SqlCommand ("select count(*) from tb_Count where StaffId='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'" , conn); int i = Int32.Parse(cmd.ExecuteScalar().ToString()); if (i == 0) {
SqlCommand cmd2 = new SqlCommand ();
cmd2.CommandText = "delete from tb_StaffInfo where StaffId=" + GridView1.DataKeys[e.RowIndex].Value.ToString(); cmd2.Connection = conn; cmd2.ExecuteNonQuery();
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo", conn);
DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView1.DataSource = ds; this .GridView1.DataBind(); conn.Close(); } else {
Response.Write(""); }
}
//更新行
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {
SqlConnection conn = MyConnection .Connection(); //string StaffId =
((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text; string StaffName =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text; //string DepartId =
((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text; string Keys =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text; string Priviliges =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text; string Gender =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text; string Age =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text; string Birthday =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[7].Controls[0])).Text; string Phone =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[8].Controls[0])).Text; string Address =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[9].Controls[0])).Text; SqlCommand cmd = new SqlCommand ();
cmd.CommandText = "update tb_StaffInfo set StaffName='" + StaffName + "',Keys='" + Keys + "',Priviliges='" +
Priviliges + "',Gender='" + Gender + "',Age='" + Age + "',Birthday='" +
Birthday + "',Phone='" + Phone + "',Address='" + Address + "'where StaffId=" + GridView1.DataKeys[e.RowIndex].Value.ToString(); cmd.Connection = conn; cmd.ExecuteNonQuery(); conn.Close(); bind(); }
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {
this .GridView1.EditIndex = e.NewEditIndex; bind(); }
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) {
this .GridView1.EditIndex = -1; bind(); }
protected void Button2_Click(object sender, EventArgs e) {
Response.Redirect("StaffAdd.aspx?" );
}
添加员工:
protected void Page_Load(object sender, EventArgs e) {
SqlConnection conn = MyConnection .Connection(); //调用自动编号
MyConnection au = new MyConnection (); au.autoNum("select StaffId from tb_StaffInfo " , "tb_StaffInfo", "StaffId" , "" , "10001" , TextBox1);
SqlDataAdapter sda3 = new SqlDataAdapter ("select DepartId from tb_Department", conn);
DataSet ds5 = new DataSet (); sda3.Fill(ds5);
this .DropDownList1.DataSource = ds5;
this .DropDownList1.DataTextField = "DepartId" ; this .DropDownList1.DataBind(); conn.Close(); }
protected void Button1_Click(object sender, EventArgs e) {
if (TextBox1.Text != "" || DropDownList1.Text != "" ) {
SqlConnection conn = MyConnection .Connection(); string StaffId = TextBox1.Text.Trim(); string StaffName = TextBox5.Text.Trim(); string DepartId = DropDownList1.Text.Trim(); string Keys = TextBox7.Text.Trim();
string Priviliges = DropDownList2.Text.Trim(); string Gender = DropDownList3.Text.Trim(); string Age = TextBox10.Text.Trim();
string Birthday = TextBox11.Text.Trim(); string Phone = TextBox12.Text.Trim(); string Address = TextBox13.Text.Trim(); SqlCommand cmd = new SqlCommand (); cmd.CommandText = "insert into
tb_StaffInfo(StaffId,StaffName,DepartId,Keys,Priviliges,Gender,Age,Birthday,Phone,Address) values('" + StaffId + "','" + StaffName + "','" + DepartId + "','" + Keys + "','" + Priviliges + "','" + Gender + "','" + Age + "','" +
Birthday + "','" + Phone + "','" + Address + "')" ; cmd.Connection = conn; cmd.ExecuteNonQuery();
Response.Write("");
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo", conn);
DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView2.DataSource = ds;
this .GridView2.DataKeyNames = new String [] { "StaffId" };
this .GridView2.DataBind(); conn.Close(); } else
Response.Write("");
}
修改密码:
protected void Page_Load(object sender, EventArgs e) {
string s = Session["keys" ].ToString(); string i = Session["staffid" ].ToString(); }
protected void Button1_Click(object sender, EventArgs e) {
string s = Session["keys" ].ToString(); string i = Session["staffid" ].ToString(); if (TextBox1.Text == s.ToString()) {
if (TextBox2.Text != "" ) {
if (TextBox3.Text != "" ) {
if (TextBox3.Text == TextBox2.Text) {
SqlConnection conn = MyConnection .Connection();
SqlCommand cmd = new SqlCommand ("update tb_StaffInfo set Keys='" + TextBox2.Text + "' where StaffId="+i, conn); cmd.ExecuteNonQuery();
Response.Write("alert('修改成功!')"); conn.Close(); } else {
Response.Write("alert('两次输入不一致!')"); } } else {
Response.Write("alert('输入有空值!')"); } } else {
Response.Write("alert('输入有空值!')"); } } else {
员工签到管理系统—张世超
Response.Write("alert('旧密码输入错误!')"); }
}
查看个人信息:
protected void Page_Load(object sender, EventArgs e)
{
string s = Session["staffid" ].ToString();
SqlConnection conn = MyConnection .Connection();
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo where StaffId="+s, conn);
DataSet ds = new DataSet ();
sda.Fill(ds);
this .GridView1.DataSource = ds;
this .GridView1.DataBind();
}
31
软 件 学 院
三级实践课题
系统名称: 员工签到管理系统 专 业: 计算机信息管理 班 级: 信管111 学生姓名: 张世超(40)
2013 年 1 月 17 日
三级实践课题设计任务书
指导教师签字: 年 月 日
摘 要
本文设计的员工签到管理系统是为了更好,更方便的管理公司员工考勤的信息。此系统主要包括员工基本信息,员工签到管理等几个大模块。每个大模块又分成了几个小的模块,如员工基本信息模块又分成了员工列表,扩展信息,离职管理等小的模块。每个模块都完成了其相关信息的添加、修改、删除、查询和查看的功能, 如员工列表模块就实现了员工信息的添加,修改,删除,查看和查询。在开发此系统时用了代码生存器,生成了与数据库有关的一些代码以及一些常用的存储过程如记录的添加,删除和修改存储过程。通过代码生成器生成的代码将数据访问层的很好的封装了起来,大大的提高了开发的效率。系统功能的实现大大提高了公司管理员工信息的效率。
关键词:员工签到管理;员工签退管理;考勤统计;
目 录
摘 要................................................................................................................................................. 3 第1章 绪 论 . .................................................................................................................................. 5
1.1 课题背景 . ........................................................................................................................... 5 1.2 研究内容 . ........................................................................................................................... 5 1.3 分工及排序 . ....................................................................................................................... 5 第2章 需求分析 . ............................................................................................................................ 6
2.1 业务分析 . ........................................................................................................................... 6 2.2 功能需求分析 . ................................................................................................................... 6 第3章 概要设计 . ............................................................................................................................ 8
3.1 数据库概要设计 . ............................................................................................................... 8
3.1.1 表的设计 . .............................................................................................................. 8 3.1.2 实体关系图 . .......................................................................................................... 8
第4章 系统设计 . .......................................................................................................................... 10
4.1 数据库详细设计 . ............................................................................................................. 10 4.2界面设计 . .......................................................................................................................... 12
4.2.1员工操作界面 . ....................................................................................................... 12 4.2.1.1 员工信息查询 . ................................................................................................... 12 4.2.1.2 员工密码修改 . ................................................................................................... 13 4.2.2管理员操作界面 . ................................................................................................... 14 4.2.2.1 员工信息管理 . ................................................................................................... 14 4.2.2.2 员工信息添加 . ................................................................................................... 15 4.2.2.3 时间管理 . ........................................................................................................... 16 4.2.2.4 添加时间段 . ....................................................................................................... 17 4.2.2.5 签到查询 . ........................................................................................................... 17 4.2.2.6 签退查询 . ........................................................................................................... 18 4.2.2.7 考勤统计 . ........................................................................................................... 19
第5章 运行及测试 . ...................................................................................................................... 21 第6章 结束语 . .............................................................................................................................. 23 指导教师评语: . ............................................................................................................................ 25 附录 系统相关代码 . ...................................................................................................................... 26
第1章 绪 论
1.1 课题背景
目前市场上流行的员工签到管理系统能够完成大多数的考勤任务,其硬件系统做的相当完善,但与之相对应的管理软件的功能还不够完全,少了一些必须的考勤项目,如员工签退管理、请假管理等等。在对员工签到管理系统进行详细的需求分析的基础上,对目前员工签到管理系统做了一些改进,添加必要的员工管理项目,并对已有的项目有针对性的优化,使系统能有效的帮助企业进行人力资源管理,通过代码生成器生成的代码将数据访问层的很好的封装了起来,大大的提高了开发的效率。系统功能的实现大大提高了公司管理员工信息的效率。
1.2 研究内容
员工签到管理系统主要实现对员工的考勤进行管理,同时,也实现了对不同员工所属不同部门进行管理以及对考勤进行统计,员工管理系统主要实现了一下功能:
● 员工签到管理 ● 员工签退管理 ● 考勤统计 ● 员工管理
1.3 分工及排序
分工及排序如图所示:
图1-1分工及排序
第2章 需求分析
2.1 业务分析
员工签到管理系统首先分为不同的管理身份,它主要由管理员对其进行操作,管理员主要对所有员工签到和签退进行管理,同时也可以对员工的离职、调动、招新以及对员工信息查询等,也可以对制度进行更改、查询、添加以及删除等,同时,管理员可以对上、下班时间及签到时间或签退时间进行管理,也可以对部门的添加、修改、查询以及对删除等,管理员也可以根据不同的条件对员工签到以及签退信息进行统计。
2.2 功能需求分析
经业务分析,员工签到管理系统主要适用于事业型企业,系统需要实现以下功能:
1、员工签到:
员工可以根据自己的员工编号和密码在登陆界面中对自己上班时间进行记录(这个记录只是员工根据自己信息进行签到)。
1) 员工进入系统,员工输入自己的员工编号和密码,点击签到,系统
根据员工输入的员工编号和密码判断输入是否合法,如果合法并且签到时间早于时间表里的上班时间,则签到成功,若签到时间晚于时间表里的上班时间,则登录系统中的签到按钮则会变灰,不能签到;否则,提示签到失败;
2) 签到成功的话,系统根据员工签到的相关信息和系统当前时间把签
到信息插入到签到表里;
2、员工签退:
员工可以根据自己的员工编名和密码在登陆界面中对自己下班时间进行记录(这个记录只是员工根据自己信息进行签退)。
1) 员工进入系统,员工输入自己的员工编号和密码,点击签退,系统
根据员工输入的员工编号和密码判断输入是否合法,如果合法并且签退时间晚于时间表里的下班时间,签退成功,若签退时间早于时间表里的下班时间,则登录系统中的签到按钮则会变灰,不能签到;
否则,提示签到失败;
2) 签退成功的话,系统根据员工签退的相关信息和系统当前时间把签
退信息插入到签退表里;
3、时间管理:
管理员可以根据公司要求对签到时间进行管理,包括对时间的更改、查询工作时间段以及对添加工作时间段(上午、下午、晚上)等(上班时间就是签到截止时间,下班时间就是签退开始时间)。
1) 当网页显示时,把时间表里数据加载到控件中供管理员查询,管理
员可以对时间段进行更新、查询、添加(上午、下午、晚上),点击相应的按钮对时间进行管理操作;
2) 管理员对时间段更改后,时间表里也会进行更新并保存; 4、员工管理:管理员根据人员的变动,进行一系列的操作如人员的招新、员工的调动、员工的离职以及对员工信息查询等。
1) 如果管理员需要对员工进行管理,经过系统验证身份的合法性后方
可登录系统,选择员工管理导航按钮进入员工管理网页; 2) 当网页显示时,把员工表里数据加载到控件中供管理员查询,管理
员可以对员工的离职、调动、查询、招新进行管理,点击相应的按钮对员工进行操作;
3) 管理员对员工信息更改后,员工表里也会进行更新并保存; 5、考勤统计:根据员工签到记录进行管理,包括对员工所在的部门、早退次数、迟到次数、签到时间、签退时间等进行统计。
1) 如果管理员需要对员工考勤进行管理,经过系统验证身份的合法性
后方可登录系统,选择员工考勤管理导航按钮进入考勤管理网页; 2) 当网页显示时,把员工表里数据加载到控件中供管理员查询,管理
员根据员工所在的部门、早退次数、迟到次数、签到时间、签退时间等进行对员工的考勤进行统计(考勤信息无法修改);
第3章 概要设计
3.1 数据库概要设计
对于员工签到管理系统的数据库设计,本文将从以下几个方面进行描述:首先是概念模型描述,包括对系统的实体属性分析及系统的E-R 图,然后是系统的逻辑结构设计,即给出系统的数据库设计表结构及描述。 3.1.1 表的设计
整个系统各实体和联系可用以下关系来表示(其中主键已用下划线标识):
● 员工信息表(tb_StaffInfo)务、性别、年龄、出生日期、联系方式、联系地址;
● 时间表(tb_Time):时间段编号、部门编号、时间段名称(分为上午、
下午)、签到时间、上班时间、签退时间、下班时间;
● 员工签到表(tb_StaffReach):签到编号、员工编号、部门编号、职务、
性别、签到时间;
● 员工签退表(tb_StaffBack):签退编号、员工编号、部门编号、职务、
性别、签退时间;
● 部门表(tb_Department):部门编号、部门名称;
● 考勤统计表(tb_Count):员工编号、部门编号、员工名、部门名称、
职务、性别、年龄、类别、早退(迟到)次数、考勤是否有效、签到(签退)时间。
3.1.2 实体关系图
在分析过系统各实体之间的联系后可得出系统的整体概念模型,用E-R 图表示出来,如图所示的。
图3.1 E-R 图
第4章 系统设计
为了方便用户的操作,系统采用了模块化设计的思想,通过各模块的不同组合以实现不同的增、删、改、查功能。最终,使该系统能够具有规范化的格式、完整的信息量和易于查询等的特点。
4.1 数据库详细设计
该系统数据库采用SQL Server 2005 数据库。整个数据库系统共有员工信息表,时间表,员工签到表,员工签退表,部门表,考勤统计表六个表组成所有数据表的表结构如下:
1. 员工信息表
该表主要用来记录员工信息,其表结构如表4-1所示:
表4-1 员工信息表(tb_StaffInfo)
2. 时间表
该表主要记录了上下班时间等,其表结构如表4-2所示:
表4-2 时间表(tb_Schedule)
3. 员工签到表
该表主要记录了员工签到信息,其表结构如表4-3所示:
表4-3 员工签到表(tb_StaffReach)
4. 员工签退表
该表记录了员工签退信息,其表结构如表4-4所示:
表4-4 员工签退表(tb_StaffBack)
5. 部门表
该表详细记录了部门信息,其表结构如表4-5所示:
表4-5 部门表(tb_Department)
6. 考勤统计表
该表记录了考勤统计信息,其表结构如表4-6所示:
表4-6 考勤统计表(tb_Count)
4.2界面设计
员工签到管理系统主要包括管理员和员工两种身份,员工可以进行签到、签退,同时可以查询自己相关信息以及修改密码等,管理员主要是对员工的管理、部门管理、时间的设置、考勤信息的统计等等,以下是员工签到管理系统的页面。 无论是员工还是管理员都需要签到或签退,以下是登陆页面如图4.1所示:
图4.1 登录页面
4.2.1员工操作界面 4.2.1.1 员工信息查询
用户通过身份验证后进入相应业务功能页面,如果验证身份是员工的话,就进入员工相应的页面,下图是员工查询个人信息的页面如图4.2所示:
图4.2 员工信息查询页面
4.2.1.2 员工密码修改
如果员工需要对自己的密码进行修改,需要进入相应的页面,下图是员工密码修改的页面如图4.3所示:
图4.3 员工修改密码页面
员工修改密码流程图如下图4.4:
图4.4 员工修改密码流程图
4.2.2管理员操作界面 4.2.2.1 员工信息管理
管理员对员工信息进行一系列的操作,以下是员工信息的编辑页面,如图4.5所示:
图4.5 员工信息编辑页面
员工信息管理流程图如下图4.6:
图4.6 员工信息管理流程图
4.2.2.2 员工信息添加
管理员对员工信息进行一系列的操作,以下是员工信息的添加页面,如图4.7所示:
图4.7员工信息添加页面
4.2.2.3 时间管理
管理员可以根据公司的需要进行对时间的设置,以下是管理员对时间的设置,如图4.8所示:
图4.8 时间编辑页面
4.2.2.4 添加时间段
管理员可以根据公司的需要进行对时间的设置,以下是管理员对时间的设置,如图4.9所示:
图4.9 添加时间段页面
4.2.2.5 签到查询
管理员可以对员工签到进行查询,以下是对员工签到信息查询,如图4.10所示:
图4.10 员工签到查询
4.2.2.6 签退查询
管理员可以对员工签到进行查询,以下是对员工签到信息查询,如图4.11所示:
图4.11 员工签退查询
4.2.2.7 考勤统计
管理员根据不同条件对员工的考勤进行不同的统计,以下是管理统计界面,如图4.12所示:
图4.12 管理统计界面
第5章 运行及测试
在编码的过程中,需要通过不断的对系统进行调试,才能对其功能做出完善
性的补充。所以测试在此期间起了相当大的作用。
以下给出员工管理模块的若干主要测试用例。如表5.1所示。
表5.1员工管理测试用例
第6章 结束语
不知不觉间,两周的实践课题即将结束。回头看去,期间有苦也有甜:有时一个问题做不出来,能让我们郁闷好几天;有时自己调出一个代码,会兴奋很长时间。这次二阶课题我们分小组,自己选择合适的题目,自由选择队友,带给我们很大的收获。
通过这次实践我学会如何与团队合作,交流,分工,也增进了我们之间的友情。由于这次是自己动手,我可以把在上课时,老师教的知识用于实践,让我更加理解和熟练掌握它们,让我在以后的工作中能更好的工作。做这次课题中用到了许多知识,有老师讲过的,也有老师没有讲过的。遇到老师讲过的又不会的就去找课本,遇到老师没讲过的我们就去找资料和去问老师,在老师讲解之下我们最终会解决问题。
在此,我要郑重感谢帮过我们的老师,以后我要更加努力学习,争取开发出更好的程序。
参考文献
1) [01]郭兴峰, ASP.NET动态网站开发基础教程(C#篇)[M],北京:清华大学
出版社, 2006.5
2) [02]孙士宝,ASP.NET 数据库网站设计教程(C#篇)[M],北京:电子工业出版
社, 2010.3 3) Thiru Thangarathinam,ASP.NET 2.0 XML 高级编程[M].北京:清华大学出
版社,2006。
4) 张海藩. 软件工程导论[M].北京:清华大学出版社,2003。
5) 郝刚.ASP.NET 2.0 开发指南[M].北京:人民邮电出版社,2006。
指导教师评语:
成绩:
指导教师签字:
年 月 日
附录 系统相关代码
主要代码如下: 员工管理:
public void bind() {
SqlConnection conn = MyConnection .Connection();
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo", conn);
DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView1.DataSource = ds;
this .GridView1.DataKeyNames = new String [] { "StaffId" }; this .GridView1.DataBind(); conn.Close(); }
protected void Page_Load(object sender, EventArgs e) {
if (!this .IsPostBack) {
bind(); } }
protected void Button1_Click(object sender, EventArgs e) {
string strSql = "select * from tb_StaffInfo";
if (TextBox1.Text != "" || TextBox3.Text != "" || TextBox4.Text != "" ) {
strSql = strSql + " where";
if (TextBox1.Text != "" ) {
strSql = strSql + " StaffId= '" + TextBox1.Text.Trim() + "'" ; }
if (TextBox1.Text != "" && TextBox3.Text != "" ) {
strSql = strSql + " and"; }
if (TextBox3.Text != "" ) {
strSql = strSql + " Priviliges= '" + TextBox3.Text.Trim() + "'" ; }
if (TextBox1.Text != "" && TextBox4.Text != "" ) {
strSql = strSql + " and"; } else {
if (TextBox3.Text != "" && TextBox4.Text != "" ) {
strSql = strSql + " and";
} }
if (TextBox4.Text != "" ) {
strSql = strSql + " DepartId= '" + TextBox4.Text.Trim() + "'" ; } }
SqlConnection conn = MyConnection .Connection();
SqlDataAdapter sda = new SqlDataAdapter (strSql, conn); DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView1.DataSource = ds;
this .GridView1.DataKeyNames = new String [] { "StaffId" }; this .GridView1.DataBind(); conn.Close(); }
//删除数据
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) {
SqlConnection conn = MyConnection .Connection();
SqlCommand cmd = new SqlCommand ("select count(*) from tb_Count where StaffId='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'" , conn); int i = Int32.Parse(cmd.ExecuteScalar().ToString()); if (i == 0) {
SqlCommand cmd2 = new SqlCommand ();
cmd2.CommandText = "delete from tb_StaffInfo where StaffId=" + GridView1.DataKeys[e.RowIndex].Value.ToString(); cmd2.Connection = conn; cmd2.ExecuteNonQuery();
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo", conn);
DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView1.DataSource = ds; this .GridView1.DataBind(); conn.Close(); } else {
Response.Write(""); }
}
//更新行
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {
SqlConnection conn = MyConnection .Connection(); //string StaffId =
((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text; string StaffName =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text; //string DepartId =
((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text; string Keys =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text; string Priviliges =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text; string Gender =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text; string Age =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text; string Birthday =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[7].Controls[0])).Text; string Phone =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[8].Controls[0])).Text; string Address =
((TextBox )(this .GridView1.Rows[e.RowIndex].Cells[9].Controls[0])).Text; SqlCommand cmd = new SqlCommand ();
cmd.CommandText = "update tb_StaffInfo set StaffName='" + StaffName + "',Keys='" + Keys + "',Priviliges='" +
Priviliges + "',Gender='" + Gender + "',Age='" + Age + "',Birthday='" +
Birthday + "',Phone='" + Phone + "',Address='" + Address + "'where StaffId=" + GridView1.DataKeys[e.RowIndex].Value.ToString(); cmd.Connection = conn; cmd.ExecuteNonQuery(); conn.Close(); bind(); }
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {
this .GridView1.EditIndex = e.NewEditIndex; bind(); }
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) {
this .GridView1.EditIndex = -1; bind(); }
protected void Button2_Click(object sender, EventArgs e) {
Response.Redirect("StaffAdd.aspx?" );
}
添加员工:
protected void Page_Load(object sender, EventArgs e) {
SqlConnection conn = MyConnection .Connection(); //调用自动编号
MyConnection au = new MyConnection (); au.autoNum("select StaffId from tb_StaffInfo " , "tb_StaffInfo", "StaffId" , "" , "10001" , TextBox1);
SqlDataAdapter sda3 = new SqlDataAdapter ("select DepartId from tb_Department", conn);
DataSet ds5 = new DataSet (); sda3.Fill(ds5);
this .DropDownList1.DataSource = ds5;
this .DropDownList1.DataTextField = "DepartId" ; this .DropDownList1.DataBind(); conn.Close(); }
protected void Button1_Click(object sender, EventArgs e) {
if (TextBox1.Text != "" || DropDownList1.Text != "" ) {
SqlConnection conn = MyConnection .Connection(); string StaffId = TextBox1.Text.Trim(); string StaffName = TextBox5.Text.Trim(); string DepartId = DropDownList1.Text.Trim(); string Keys = TextBox7.Text.Trim();
string Priviliges = DropDownList2.Text.Trim(); string Gender = DropDownList3.Text.Trim(); string Age = TextBox10.Text.Trim();
string Birthday = TextBox11.Text.Trim(); string Phone = TextBox12.Text.Trim(); string Address = TextBox13.Text.Trim(); SqlCommand cmd = new SqlCommand (); cmd.CommandText = "insert into
tb_StaffInfo(StaffId,StaffName,DepartId,Keys,Priviliges,Gender,Age,Birthday,Phone,Address) values('" + StaffId + "','" + StaffName + "','" + DepartId + "','" + Keys + "','" + Priviliges + "','" + Gender + "','" + Age + "','" +
Birthday + "','" + Phone + "','" + Address + "')" ; cmd.Connection = conn; cmd.ExecuteNonQuery();
Response.Write("");
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo", conn);
DataSet ds = new DataSet (); sda.Fill(ds);
this .GridView2.DataSource = ds;
this .GridView2.DataKeyNames = new String [] { "StaffId" };
this .GridView2.DataBind(); conn.Close(); } else
Response.Write("");
}
修改密码:
protected void Page_Load(object sender, EventArgs e) {
string s = Session["keys" ].ToString(); string i = Session["staffid" ].ToString(); }
protected void Button1_Click(object sender, EventArgs e) {
string s = Session["keys" ].ToString(); string i = Session["staffid" ].ToString(); if (TextBox1.Text == s.ToString()) {
if (TextBox2.Text != "" ) {
if (TextBox3.Text != "" ) {
if (TextBox3.Text == TextBox2.Text) {
SqlConnection conn = MyConnection .Connection();
SqlCommand cmd = new SqlCommand ("update tb_StaffInfo set Keys='" + TextBox2.Text + "' where StaffId="+i, conn); cmd.ExecuteNonQuery();
Response.Write("alert('修改成功!')"); conn.Close(); } else {
Response.Write("alert('两次输入不一致!')"); } } else {
Response.Write("alert('输入有空值!')"); } } else {
Response.Write("alert('输入有空值!')"); } } else {
员工签到管理系统—张世超
Response.Write("alert('旧密码输入错误!')"); }
}
查看个人信息:
protected void Page_Load(object sender, EventArgs e)
{
string s = Session["staffid" ].ToString();
SqlConnection conn = MyConnection .Connection();
SqlDataAdapter sda = new SqlDataAdapter ("select * from tb_StaffInfo where StaffId="+s, conn);
DataSet ds = new DataSet ();
sda.Fill(ds);
this .GridView1.DataSource = ds;
this .GridView1.DataBind();
}
31