• 446.50 KB
  • 2022-05-17 12:58:01 发布

数据库课程设计-- 职工考勤管理信息系统

  • 35页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
课程设计课程名称SQL数据库系统课程设计题目名称职工考勤管理信息系统专业班级2013级软件工程学生姓名学号指导教师2015年12月 目录一可行性研究11.1问题描述11.2研究目的11.3开发环境和运行环境11.4预期结果和意义2二需求分析22.1功能需求22.1.1数据管理22.1.2考勤管理22.1.3加班管理22.1.4请假管理22.1.5出差管理22.2功能模块图32.3系统数据流程图42.4数据字典4三概念结构设计43.1局部E-R图43.1.1员工信息E-R图43.1.2出勤记录E-R图53.1.3出差记录E-R图53.1.4加班记录E-R图53.1.5请假记录E-R图63.2总E-R图6四逻辑结构设计74.1关系模式7 五数据实施和维护75.1数据表的创建75.2数据表的属性85.2.1出勤资料表85.2.2加班资料表95.2.3请假资料表105.2.4出差资料表10六测试116.1登录模板测试116.2登录后页面136.3建立上班签到表156.4职工信息表176.5出差信息系统206.6加班信息系统246.7请假信息系统29七心得体会32八参考文献32 一可行性研究1.1问题描述随着企业人事管理的日趋复杂和企业人员的增多,企业的考勤管理变得越来越复杂。规范的考勤管理是现代企业提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代企业的需求。随着计算机技术和通信技术的迅速发展,将传统的人工考勤管理计算机化,建立一个高效率的、无差错的考勤管理系统,能够有效的帮助企业实现“公正考勤,高效薪资”,使企业的管理水平登上一个新的台阶。职工考勤管理经过如下的业务流程:(1)员工基本信息管理,添加,删除,更改(2)员工考勤管理,员工根据自己的班次在上下班时分别进行出勤操作,采用手动方式或者使用划卡机。由人事部门专门的人员管理出勤和退勤信息。(3)一般在每个月月初进行考勤汇总,汇总信息包括工作日的出勤情况、请假天数、出差天数、休假天数和不同性质的加班记录等。1.2研究目的待开发的系统的名称为职工考勤管理信息系统。我们以中小型企业的考勤管理业务为依托,结合科学管理的理论,设计并开发一个企业考勤管理信息系统,提供一个科学合理的考勤管理解决方案,彻底实现无纸化作业。根据管理权限的不同,将界面分为一般职员、部门经理、系统管理员和最高管理者四个层次。(1)提供简单、方便的操作。(2)根据企业原来的考勤管理制度,为企业不同管理层次提供相应的功能。(3)通过考勤管理无纸化的实现,使企业的考勤管理更加科学规范。(4)节省考勤管理的成本。(5)提高企业考勤管理的透明度和效率,防止“虚假出勤“的现象。(6)对系统提供必要的权限管理。(7)为企业实现整体信息化的其他相关系统提供必要的数据支持。1.3开发环境和运行环境公司考勤管理系统这运用了当前最流行的SQLSERVER2012来建表还有前台应用程序采用VISUALSTUDIOI2015编写运行和开发的。1.库、基本表的建立和修改:在SQL-SERVER环境下用CREATETABLE32 建立库以及库中基本表。2.数据加载:用手工录入或导入等方法实现基本表中的数据加载。3.单表查询以及多表查询:在建立的基本表中使用select基本格式和聚集函数;设计合适的视图,实现多表间查询。4.用SQLSERVER2012等开发环境设计、实现系统主要功能。1.4预期结果和意义考勤系统能实现职工日考勤记录,记录请假信息,记录出差信息等功能,并最终所有信息归入月统计中去。本考勤系统建立了一个高效率的、无差错的考勤管理系统,能够有效的帮助企业实现“公正考勤,高效薪资”,使企业的管理水平登上一个新的台阶。二需求分析2.1功能需求2.1.1数据管理功能是设置和管理基础数据,包括加班、请假类别的定义和班次的定义,在全县范围内可以进行基础数据的添加、删除和修改。2.1.2考勤管理包括出勤动作、出勤信息的查询;上级对下级员工的出勤信息的确认;生成考勤统计信息并可以根据指定的条件进行查询。实现从每日出勤到统计全部考勤信息的无纸化操作。为方便数据传递和查阅,要根据需求提供不同时间短的考勤统计信息表。2.1.3加班管理对员工的加班时间进行统计,记录开始时间和结束时间,对加班信息实现添加,删除等操作。2.1.4请假管理可以提出请假申请,并完善请假信息,如请假开始时间,请假结束时间,请假的次数进行管理。2.1.5出差管理管理者安排员工出差,对出差时间,次数的管理。32 2.2功能模块图如图2-1所示,图为功能模块图2-1功能模块图32 2.3系统数据流程图如图2.3所示,图为数据流程图考勤员员工经理审批请假值班出差记录上下班时间安排员工出勤记录记录出勤时间2-2数据流程图2.4数据字典在物理结构中,数据的基本存取单位是存储记录。有了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。存储记录就包括记录的组成,数据项的类型和长度等。三概念结构设计3.1局部E-R图3.1.1员工信息E-R图职工信息职称年龄姓名性别编号图3-132 3.1.2出勤记录E-R图下班时间缺勤记录上班时间出勤记录图3-23.1.3出差记录E-R图结束时间总计天数开始时间出差记录图3-33.1.4加班记录E-R图统计时间开始时间加班记录结束时间图3-432 3.1.5请假记录E-R图结束时间统计天数开始时间请假记录图3-53.2总E-R图图3-632 四逻辑结构设计4.1关系模式职工信息(职工编号,姓名,性别,年龄,职称)出勤记录(上班打卡时间,下班打卡时间,缺勤记录)出差记录(出差开始时间,出差结束时间,统计出差时间)加班信息(加班开始时间,加班结束时间,加班时间统计)请假信息(请假开始时间,请假结束时间,请假时间统计)五数据实施和维护5.1数据表的创建图5-1表的建立32 5.2数据表的属性图5-2表的属性5.2.1出勤资料表图5-3出勤资料图5-4员工出勤基本资料表属性32 图5-5员工出勤基本资料属性5.2.2加班资料表图5-6加班资料表属性图5-7加班资料表32 5.2.3请假资料表图5-8请假资料表属性图5-9请假资料表5.2.4出差资料表图5-10出差资料表属性32 图5-11出差资料表六测试6.1登录模板测试为了系统的安全,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。图6-1登录界面32 登录代码的简单说明:privatevoidbutton1_Click(objectsender,EventArgse){if(textBox1.Text==""||textBox2.Text==""){MessageBox.Show("请输入用户名或密码");}else{stringsql="select""+textBox1.Text+""from登录信息表where密码=""+textBox2.Text+""";SqlConnectioncon=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");con.Open();SqlCommandcom=newSqlCommand(sql,con);SqlDataReadersread=com.ExecuteReader();try{if(sread.Read()){Form3frm2=newForm3();frm2.Show();this.Hide();}else{MessageBox.Show("登录信息有误");textBox1.Text=textBox2.Text="";32 }}catch{}finally{con.Close();//关闭连接con.Dispose();//释放连接sread.Close();//释放资源}}}6.2登录后页面图6-2登录后页面登录进入的主页面主要代码:32 privatevoidbutton1_Click(objectsender,EventArgse){panel1.Controls.Clear();Form2form2=newForm2();form2.TopLevel=false;panel1.Controls.Add(form2);form2.Show();}privatevoidbutton2_Click(objectsender,EventArgse){panel1.Controls.Clear();Form4form4=newForm4();form4.TopLevel=false;panel1.Controls.Add(form4);form4.Show();}privatevoidbutton3_Click(objectsender,EventArgse){panel1.Controls.Clear();Form5form4=newForm5();form4.TopLevel=false;panel1.Controls.Add(form4);form4.Show();}privatevoidbutton4_Click(objectsender,EventArgse)32 {panel1.Controls.Clear();Form7form4=newForm7();form4.TopLevel=false;panel1.Controls.Add(form4);form4.Show();}privatevoidbutton5_Click(objectsender,EventArgse){panel1.Controls.Clear();Form6form4=newForm6();form4.TopLevel=false;panel1.Controls.Add(form4);form4.Show();}6.3建立上班签到表privatevoidbutton1_Click(objectsender,EventArgse){try{SqlConnectionconn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");conn.Open();Stringsql="select*from职工信息表where职工编号=""+textBox1.Text+""";SqlCommandcmd=newSqlCommand(sql,conn);cmd.ExecuteNonQuery();32 SqlDataReaderdr=cmd.ExecuteReader();if(dr.HasRows)while(dr.Read()){tx.Text=dr["职工姓名"].ToString();}else{MessageBox.Show("查无此人");}conn.Close();}catch(Exceptionex){MessageBox.Show(ex.Message);}try{SqlConnectionconn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");conn.Open();Stringsql="insertinto出勤信息表(职工编号,职工姓名,上班时间)values(""+textBox1.Text+"",""+tx.Text+"",""+DateTime.Now.ToShortTimeString()+"")";SqlCommandcmd=newSqlCommand(sql,conn);intn=cmd.ExecuteNonQuery();if(n>0){MessageBox.Show("签到成功,经验值+5");this.出勤信息表TableAdapter.Fill(this.职工考勤系统DataSet1.出勤信息表);32 }conn.Close();}catch{MessageBox.Show("禁止重复签到");}图6-3出勤界面6.4职工信息表职工信息表的插入添加还有查询页面其相关代码:privatevoidbutton3_Click(objectsender,EventArgse){SqlConnectionconn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");conn.Open();Stringsql="select*from职工信息表where职工编号=""+textBox6.Text+""";SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReaderdre=cmd.ExecuteReader();if(dre.HasRows)32 while(dre.Read()){textBox1.Text=dre["职工编号"].ToString();textBox2.Text=dre["职工姓名"].ToString();textBox3.Text=dre["性别"].ToString();textBox4.Text=dre["年龄"].ToString();textBox5.Text=dre["职称"].ToString();}else{MessageBox.Show("查无此人");textBox6.Text="";}this.职工信息表TableAdapter.Fill(this.职工考勤系统DataSet.职工信息表);conn.Close();conn.Dispose();}privatevoidbutton4_Click(objectsender,EventArgse){try{SqlConnectionconn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");conn.Open();32 Stringsql="update职工信息表set职工姓名=""+textBox2.Text+"",性别=""+textBox3.Text+"",年龄=""+textBox4.Text+"",职称=""+textBox5.Text+""where职工编号=""+textBox1.Text+""";SqlCommandcmd=newSqlCommand(sql,conn);cmd.ExecuteNonQuery();MessageBox.Show("更新成功");conn.Close();conn.Dispose();textBox1.Text="";textBox2.Text="";textBox3.Text="";textBox4.Text="";textBox5.Text="";textBox6.Text="";this.职工信息表TableAdapter.Fill(this.职工考勤系统DataSet.职工信息表);}catch(Exceptionex){MessageBox.Show(ex.Message);}}32 图6-4职工信息表6.5出差信息系统图6-5出差信息系统其中各按钮代码中总时长代码:privatevoidbutton3_Click(objectsender,EventArgse){try{32 SqlConnectionconnn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");connn.Open();Stringsqll="select*from出差信息表1where职工编号=""+textBox1.Text+""";SqlCommandcmdd=newSqlCommand(sqll,connn);SqlDataReaderdr=cmdd.ExecuteReader();if(dr.HasRows)while(dr.Read()){te.Text=dr["出差开始时间"].ToString();tx.Text=dr["出差结束时间"].ToString();}}catch(Exceptionex){MessageBox.Show(ex.Message);}try{stringhour;DateTime.TryParse(te.Text,outda1);DateTime.TryParse(tx.Text,outda2);tp=da2-da1;hour=tp.TotalMinutes.ToString();SqlConnectioncon=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");con.Open();Stringsql="update出差信息表1set出差总时间=""+hour.Substring(0,5)+"分钟"+""where职工编号=""+textBox1.Text+""";32 SqlCommandcom=newSqlCommand(sql,con);intn=com.ExecuteNonQuery();if(n>0){this.出差信息表1TableAdapter.Fill(this.职工考勤系统DataSet3.出差信息表1);MessageBox.Show("记录完成!");}}catch(Exceptionex){MessageBox.Show(ex.Message);}}privatevoidbutton4_Click(objectsender,EventArgse){try{strings;s=this.dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();longn=Convert.ToInt64(s);SqlConnectionconn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");32 conn.Open();Stringsql="deletefrom出差信息表1where职工编号=""+n+""";SqlCommandcmd=newSqlCommand(sql,conn);cmd.ExecuteNonQuery();MessageBox.Show("删除成功!");this.出差信息表1TableAdapter.Fill(this.职工考勤系统DataSet3.出差信息表1);conn.Close();}catch{MessageBox.Show("请选择要删除的课程号");}}}}6.6加班信息系统32 图6-6加班信息系统其中删除记录代码:privatevoidbutton1_Click(objectsender,EventArgse){try{SqlConnectionconn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");conn.Open();Stringsql="select*from职工信息表where职工编号=""+textBox1.Text+""";SqlCommandcmd=newSqlCommand(sql,conn);cmd.ExecuteNonQuery();SqlDataReaderdr=cmd.ExecuteReader();if(dr.HasRows)while(dr.Read()){tx.Text=dr["职工姓名"].ToString();}32 else{MessageBox.Show("查无此人");}conn.Close();}catch(Exceptionex){MessageBox.Show(ex.Message);}try{SqlConnectionconn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");conn.Open();Stringsql="insertinto加班信息表(职工编号,职工姓名,加班开始时间)values(""+textBox1.Text+"",""+tx.Text+"",""+DateTime.Now.ToString()+"")";SqlCommandcmd=newSqlCommand(sql,conn);intn=cmd.ExecuteNonQuery();if(n>0){MessageBox.Show("签到成功");this.加班信息表TableAdapter.Fill(this.职工考勤系统DataSet5.加班信息表);}conn.Close();}catch{MessageBox.Show("禁止重复签到");}32 }privatevoidbutton2_Click(objectsender,EventArgse){try{SqlConnectionconnn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");connn.Open();Stringsqll="update加班信息表set加班结束时间=""+DateTime.Now.ToString()+""where职工编号=""+textBox1.Text+""";SqlCommandcmdd=newSqlCommand(sqll,connn);intn=cmdd.ExecuteNonQuery();if(n>0){this.加班信息表TableAdapter.Fill(this.职工考勤系统DataSet5.加班信息表);MessageBox.Show("记录完成!");}elseMessageBox.Show("信息输入有误");connn.Close();}catch(Exceptionex)32 {MessageBox.Show(ex.Message);}}privatevoidbutton3_Click(objectsender,EventArgse){try{SqlConnectionconnn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");connn.Open();Stringsqll="select*from加班信息表where职工编号=""+textBox1.Text+""";SqlCommandcmdd=newSqlCommand(sqll,connn);SqlDataReaderdr=cmdd.ExecuteReader();if(dr.HasRows)while(dr.Read()){te.Text=dr["加班开始时间"].ToString();tx.Text=dr["加班结束时间"].ToString();}}catch(Exceptionex){MessageBox.Show(ex.Message);}try{32 stringhour;DateTime.TryParse(te.Text,outda1);DateTime.TryParse(tx.Text,outda2);tp=da2-da1;hour=tp.TotalMinutes.ToString();SqlConnectioncon=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");con.Open();Stringsql="update加班信息表set加班总时间=""+hour.Substring(0,5)+"分钟"+""where职工编号=""+textBox1.Text+""";SqlCommandcom=newSqlCommand(sql,con);intn=com.ExecuteNonQuery();if(n>0){this.加班信息表TableAdapter.Fill(this.职工考勤系统DataSet5.加班信息表);MessageBox.Show("记录完成!");}}catch(Exceptionex){MessageBox.Show(ex.Message);}}6.7请假信息系统32 图6-7请假信息系统其中请假结束时间的代码:privatevoidbutton3_Click(objectsender,EventArgse){try{SqlConnectionconnn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");connn.Open();Stringsqll="select*from请假信息表3where职工编号=""+textBox1.Text+""";SqlCommandcmdd=newSqlCommand(sqll,connn);SqlDataReaderdr=cmdd.ExecuteReader();if(dr.HasRows)while(dr.Read()){te.Text=dr["请假开始时间"].ToString();tx.Text=dr["请假结束时间"].ToString();}32 }catch(Exceptionex){MessageBox.Show(ex.Message);}try{stringhour;DateTime.TryParse(te.Text,outda1);DateTime.TryParse(tx.Text,outda2);tp=da2-da1;hour=tp.TotalMinutes.ToString();SqlConnectioncon=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");con.Open();Stringsql="update请假信息表3set请假总时间=""+hour.Substring(0,5)+"分钟"+""where职工编号=""+textBox1.Text+""";SqlCommandcom=newSqlCommand(sql,con);intn=com.ExecuteNonQuery();if(n>0){this.请假信息表3TableAdapter.Fill(this.职工考勤系统DataSet9.请假信息表3);MessageBox.Show("记录完成!");}}catch{MessageBox.Show("时间太短,信息无效");32 SqlConnectionconnn=newSqlConnection("DataSource=ZHANGHAO\SQL2012;InitialCatalog=职工考勤系统;UserId=sa;Password=");connn.Open();Stringsqll="deletefrom请假信息表3where职工编号=""+textBox1.Text+""";SqlCommandcmdd=newSqlCommand(sqll,connn);SqlDataReaderdr=cmdd.ExecuteReader();this.请假信息表3TableAdapter.Fill(this.职工考勤系统DataSet9.请假信息表3);}}七心得体会本系统在信息表述上还不完备,一些模块的信息还不够详细,主要是提供的报表有限。系统虽然针对中小企业的考勤管理业务。对使用打卡机、指纹机进行出、退勤的企业,还需要添加一个采集打卡机和指纹机的数据模块。下一步可以再熟悉系统设计风格的基础上,在各个界面上进一步添加多需要的字段和报表,或者添加采集数据的模块,以扩充系统的功能。本系统的创新点在于触发器的应用,每增加一条记录,都会重新统计一下记录次数,并存入月纪录中,使得信息更加准确。在设计时由于对编程语言知识的匮乏,所以数据库的界面化没有做成,如若想更加完善数据库,应该结合一些编程语言,使得操作界面更加人性化,简单化。通过本次设计,我们对数据库有了更深入的了解,见证了一个系统从无到有,从漏洞百出到逐渐完善的过称,是我们32 所学的只是得以所用,加深了对数据库的理解,在设计过程中有很多不会的问题,通过自己查阅资料逐渐解决,这本身就是一个学习的过程,不仅学到了只是,还掌握了学习方法。同时让我们认识到自己所学知识的匮乏,所以要全面发展自己的专业,一个人的能力总是有限的,所以团队合作很重要,在做设计的过程中要学习他人之长,听取他人的意见,虚心向别人请教。虽然我们做的设计还不是很完善,但我们觉得很有意义,对我们今后的人生都很有帮助。八参考文献[1]胡师彦.微软SQLServer2000数据库的特点及查询优化研究[J].兰州工业高等专科学校学报[2]王西文,张广智.浅谈SQLServer应用方法和技巧[J].山东水利[3]何思文.基于SQLServer2000的数据仓库的实现[J].广东科技[4]白青海,张善勇,郑瑛.ADO与SQLSERVER2000数据库应用程序开发探讨[J].内蒙古民族大学学报(自然科学版)[5]莫德举.VisualBasic程序设计.北京邮电大学出版[6]陈志泊.数据库原理及应用教程.人民邮电出版社[7]周屹.数据库原理及开发应用--实验与课程设计指导.清华大学出版[8]程云志.数据库原理与SQLServer2005应用教程.机械工业出版社32