• 926.50 KB
  • 2022-05-17 12:58:04 发布

考勤管理系统实现与设计

  • 39页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
毕业设计(论文)题目:姓名:指导教师:专业:层次:2012年03月30日 成绩评定表指导教师评语及评分美克家具有限公司考勤管理系统设计与实现论文评分指导教师(签名)年月日评审教师评语及评分评审评分组长(签名)年月日综合评分成绩评定人签名年月日 毕业论文(设计)任务题目学生姓名专业层次专科学号指导教师任务书下达时间年月日概述:在现代企业中..企业员工的考勤工作不仅工作量大..而且时效性强。随着数据库技术的发展和企业信息化建设的进行..使用计算机管理考勤工作也大为大势所趋..它为企业的考勤工作节约了大量的人力和物力..也大大减轻了企业考勤工作量。因此..开发一个界面友好..易于操作的员工信息管理软件进行自动化处理具有较大的社会现实意义。要求阅读或检索的参考资料及文献(包括指定给学生阅读的外文资料):[1]郑阿奇.SQLServer实用教程(第2版)[M].北京:电子工业出版社..2005.[2]王珊..萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社..2006.[3]金旭亮..吴彬.网站建设教程[M].北京:人民邮电出版社..2003.[4]郭东强.现代管理信息系统[M].北京:清华大学出版社,2006.[5]求是科技.ASP.NET数据库管理系统开发实例导航[M].北京:人民邮电出版社..2004.[6]张海藩.软件工程(第二版)[M].北京:人民邮电出版社..2006.[7]张欣.MicrosoftSQLServer2000ReportingServices[M].北京:清华大学出版社..2005.[8]MarcoBellinaso.C#入门经典[M].北京:清华大学出版社..2002.[9]徐可.VisualC#.NET深入编程[M].北京:希望电子出版社..2001.[10]MatthewReynolds.Windows高级编程—C#编程篇[M].北京:清华大学出版社..2003. 目录摘要I1绪论11.1系统开发背景11.2系统开发的意义11.3系统开发方法11.4系统开发工具简介21.4.1C#简介21.4.2SQLServer2000简介22系统分析32.1可行性分析32.1.1技术可行性分析32.1.2经济可行性分析32.1.3开发环境可行性32.2需求分析42.2.1用户需求分析42.2.2功能需求分析42.2.3系统需求分析42.2.3安全保密需求53总体设计63.1系统功能设计63.2系统功能流程图74数据库设计84.1数据库需求分析84.2概念结构设计94.3逻辑结构设计114.4数据库连接145详细设计155.1登录模块界面设计155.2主界面模块界面设计155.3员工管理模块设计165.3.1员工修改信息界面设计16 5.3.2员工密码修改界面设计175.3.3员工考勤管理界面设计185.4管理员管理模块设计185.4.1管理员查询界面设计195.4.2修改功能界面设计205.4.3浏览功能界面设计205.4.4添加功能界面设计216系统测试226.1系统测试方法226.2本系统测试226.2.1登录模块测试226.2.2员工功能模块测试236.2.3管理员模块测试246.2.4测试结论257结论26致谢27参考文献28附录29 摘要在现代企业中..企业员工的考勤工作不仅工作量大..而且时效性强。随着数据库技术的发展和企业信息化建设的进行..使用计算机管理考勤工作也大为大势所趋..它为企业的考勤工作节约了大量的人力和物力..也大大减轻了企业考勤工作量。考勤管理系统是企业对考勤实行了信息化管理..其目的是为了实现员工考勤数据采集、信息查询和数据统计过程的自动化..完善人事管理现代化..方便管理人员统计、考核员工出勤情况..计算员工工资。企业考勤管理系统主要是针对各个公司作为使用对象而开发的..其系统开发任务主要包括数据库的设计与维护、应用程序的开发等两个方面。对于前者要求建立起的数据库具有完整性和一致性..且具有一定的数据安全性..如用户需要密码才能使用等..而对于后者则要求程序界面友好、功能完备等特点。根据软件工程的原理..设计并开发了企业考勤管理系统..包括系统的需求分析..系统的总体设计和各模块功能的实现。经过详细分析..我们选用微软公司的C#作为前端开发工具..C#是微软公司基于.NET平台上推出的新一代编程语言,它功能强大、编程简洁..使程序设计工作变得轻松快捷。选用MicrosoftSQLServer2000作为后台数据库。首先建立系统应用原型..然后对原型系统进行需求迭代..不断修正和改进..直到形成用户满意的实际可行的系统。关键词:考勤管理系统..MicrosoftSQLServer2000..C#I 1绪论1.1系统开发背景无论公司还是企业..都会涉及到对职工考勤管理。考勤管理在生产管理过程中充当着一个十分重要的角色..考勤管理的效率对生产的效果起着举足轻重的作用。随着现代科学技术的发展..越来越多的公司和企业对职工的考勤管理都实行了信息化管理..使计算机系统代替繁琐冗余的手工方式来管理考勤事务。传统的手工方式不仅效率低下..而且容易出错..采用计算机技术进行管理可以克服手工管理的缺点..将人们从烦杂的劳动中解放出来。先进的考勤管理思想在商业中实现就成为了一个时代的目标..它的执行对于公司的决策者和管理者来说是很有帮助的。公司集团急需一套既有先进考勤方法又适合国内大商业的考勤管理系统..作为实现目标和提高现有水平的一种重要手段。基于此..开发了一套考勤管理系统..其主要目的是为了统计员工的迟到、早退、旷工、事病假、加班以及出差等情况。1.2系统开发的意义随着计算机技术和网络技术的发展..计算机网络给人们都来了很多便利..同样考勤管理系统也是如此..它主要是为了满足单位日常的考勤管理的需要..扩大工作空间..使单位管理过程更加快速、安全、高效。论文系统规划设计过程是从单位的业务流程出发展开分析..从而完成系统各个功能模块的分析过程..以及完成部分功能模块的设计..实现了数据库信息的浏览、录入、查询、修改、删除等各种操作..通过统一界面使得系统操作更为灵活、方便。面对大量的商品信息..采用人力处理将浪费大量的时间、人力和物力..而且统计数据麻烦。因此开发一个界面友好..易于操作的考勤管理软件进行自动化处理变得十分重要..这真是本系统开发的目的和意义。1.3系统开发方法本系统采用C/S客户服务器应用数据库开发..选用C#作为前台开发语言..使用MicrosoftSQLServer2000作为后台数据库开发。本次毕业设计应首先分析考勤管理系统的相关功能..结合本次毕业设计的相关要求写出需求分析;其次..综合运用以前所学的相关知识..在设计中又需求分析为基础..写出系统开发计划、实现流程及相关问题的实现方法;同时..在开发设计与实现中..要保存好相关的设计文档。33 1.4系统开发工具简介1.4.1C#简介C#语言不能孤立地对待..而必须和VS.NETFramework一起考虑..因为VS.NETFramework运行库(CLR)为C#代码执行和代码管理提供了支持..并且提供类库简化了C#编程。C#是一种现代的面向对象的程序开发语言..是微软为.NET平台量身定制的一种语言..使得程序员能够在新的微软.NET平台上快速开发种类丰富的应用程序。它具有良好的安全性和哭平台性。.NET平台提供了大量的工具和服务..能够最大限度地发掘和使用计算及通信能力...NET框架的各种优点在C#中表现得淋漓尽致。由于其一流的面向对象的设计..从构建组件形式的高层商业对象到构造系统应用程序..你都会发现C#将是最合适的选择。C#语言的优势如下:1、具有高度的灵活性和强大的底层控制能力..能与计算机硬件直接通信。2、具有感可移植性..尽管程序的是针对所给的操作系统(OS)和特定的计算机硬件系统的..但是只需要做少量的修改就可以应用于其他系统。3、代码高速高效..具有相当高的执行效率。1.4.2SQLServer2000简介MicrosoftSQLServer2000是一套完整的数据库和分析产品..可迅速提供下一代可扩展电子商务、各种业务和数据仓库解决方案。MicrosoftSQLServer2000是一个分布式的关系型数据库管理系统..具有客户机/服务器体系结构..采用了Transact-SQL的SQL语言在客户机与服务器间传递客户机的请求与服务器的处理结果。它一种应用广泛的数据库管理系统..具有许多显著的特点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器紧密关联的集成性、良好的性价比等。除这些核心企业品质外..SQLServer2000还为您的数据管理与分析带来了灵活性..允许单位在快速变化的环境中从容响应..从而获得竞争优势。MicrosoftSQLServer2000是众多数据库开发软件的一种..它的版本包括企业板..标准版..个人版..WindowsCE版..开发版和评估版。不同版本的功能和用户群不同。SQL语言是访问数据库的标准语言..无论后台数据库是SQLServer..Oracle..还是IBMDB2..甚至是小型数据库ACCESS..都可以使用标准的SQL语句对它进行操作。在这里..是采用SQLServer2000作为后台数据库。33 2系统分析2.1可行性分析2.1.1技术可行性分析随着国内软件开发的日益发展壮大..各种中小企事业单位已具备独立开发各种类型的软件的能力..能够满足不同行业的特别的需求。而这个系统尽管其在组织关系上存在着很大的复杂性..繁琐性..但是就整个系统的技术构成上来看..它还是属于一个数据库应用类的系统。其基本操作还是对存在库进行添加、删除、查找、编辑等。所以就单纯的数据库应用来看..暂不存在太大的技术问题。2.1.2经济可行性分析对于整个系统而言..在系统未运行之前..初期投资比较大..花费相对而言比较多。各部门之行配置电脑、服务器、打印机、传真机及相关的网络设备..但是在整个系统投入运行之后..因为现在计算机已经普及了..相关的人员培训费可以减少很多。而同时又减少了数据的流通环节..不必要花费那么多的时间..也就是说最重要的就是要提高了效率..而又保证了各项数据的准确性..也避免了工作人员的流动造成的数据丢失等问题..适应了当前的发展形式。2.1.3开发环境可行性采用的C#开发工具..它首先是一个开放的协作式系统..可以和多种PC产品集成..并可以通过专用接口或ODBC接口连接许多比较常用的数据库;其次它具有可视化的开发环境..使代码的编写更为直观..并且在可视化环境下的和维护也相对容易。而为方便用户见面的开发..C#提供了大量控件..这既丰富了应用程序的表达能力..也加快了项目的开发速度。同时..它拥有多平台的开发环境..如果需要把一个平台上开发的代码移植到另外一个平台上..只要程序编译就可以了。33 2.2需求分析2.2.1用户需求分析随着社会现代化的发展..单位日常管理相关的信息随之急剧增加..传统的人力手工管理模越来越不能适应现在的工作效率和准确性。在这个高节奏的信息时代..安全、准确的管理信息系统是每个管理者所需求的。建立一个适应现代化社会经济体制的管理信息系统势在必行。该系统的具体任务就是设计一个公司的考勤管理系统..由计算机来代替人工执行一系统诸如增加、删除、修改、查询、统计及打印等操作。这样就使办公人员以轻松空间地完成考勤管理的任务。2.2.2功能需求分析本系统要实现的是企业考勤管理系统..在设计时应该有友好的用户界面..对于一个好的软件有一个友好的用户界面是非常重要的。用户界面应尽量做的简单、层次清晰明了..以最大限度为用户提供操作方便。如尽量减少用户输入次数..多使用快捷按钮等。系统应有基本功能如下:1、考勤管理员、员工登录功能。2、员工考勤管理相关信息的管理功能。3、统计功能。4、查询功能。2.2.3系统需求分析考勤管理系统能够提供员工考勤的情况记录..方便地对员工考勤进行评定。考勤情况是由员工登录系统添加记录..能提供请假、辞职等情况的记录..并实现查询、添加、修改、删除、浏览等处理功能;能具有一定的协调性和完整性。考勤管理者可直接操作各考勤情况..考勤管理人员功能的信息量大..数据安全性和保密性要求最高..管理员可以浏览和修改查询、添加、删除、修改、统计员工的基本信息。考勤管理系统通过考勤信息判断并记录员工出勤信息..可以保证考勤数据的准确、公正、安全..减少考勤人员的工作负担..避免人为因素的干扰和弄虚作假现象;各管理用计算机及管理软件用Windows环境下的全中文界面平台..能灵活处理各种特殊情况..方便的修改各种基本信息..提过丰富的统计信息..查询方便..管理安全..操作简便巨噬易学。经过仔细思考..对考勤管理系统应实现的功能描述如下:33 1、员工能通过自己的姓名和密码登录系统..浏览自己的基本信息、缺勤情况、加班情况..工资信息等。可以修改一些基本信息..包括:姓名..性别..密码等..可以提交考勤操作。2、管理员能通过自己的姓名和密码登录系统..可以通过员工编号或者员工姓名查询和修改员工的基本信息..包括:员工姓名、性别、部门信息、工资信息等。对需要删除的员工进行删除处理..还可以浏览员工的考勤记录并按实际情况对其修改。3、管理员能添加新的用户。4、管理员能够通过考勤管理系统清楚的看到员工考勤的时间..及是否早退等诸多信息。5、员工可以通过此系统提交对工作或者日常生活中的意见..以及在使用此系统中发现的一些问题。2.2.3安全保密需求对登录用户进行权限划分..普通员工只能浏览和修改自己一定的信息..对于其他的一些信息普通员工均不能操作..管理员能操作系统所有功能..从而保证了系统的数据的安全以及稳定。33 3总体设计3.1系统功能设计在系统功能分析的基础上..考虑C#程序编制的特点..得到如下图所示的系统功能模块图:图3-1系统功能模块图考勤管理系统由基本信息管理模块、考勤信息模块、统计查询模块和用户管理模块四个主要功能模块构成。基本信息管理模块..包括部门信息管理和员工信息管理。部门信息包括部门名称和部门功能的描述..员工信息包括员工姓名、性别、生日等。33 考勤信息包括出勤、加班、请假等信息。出勤信息包括全勤、信息、旷工、迟到和早退等信息;信息包括员工信息、时间、加班类型和加班描述;请假信息包括员工信息、请假类型和原因。统计查询模块包括日考勤统计表、月考勤统计表和当日缺勤人员列表。日考勤统计表包括员工姓名、考勤日期、是否全勤..是否请假等信息..月考勤统计表包括员工姓名、考勤月份、全勤天数等信息..当日缺勤人员列表包括系统当前日期缺勤员工编号和姓名..所在部门和联系电话等信息。用户管理模块包括管理员和普通用户。管理员可以修改自己的密码..创建、修改和删除普通用户信息。普通用户只能修改自身的一定信息。3.2系统功能流程图员工可以通过用户名和密码进入考勤系统进行修改一些基本信息、修改密码以及考勤等操作。管理员可以通过用户名和密码进入考勤系统..可以通过员工编号或者员工姓名来对所有员工进行查询以及修改操作..也可以查看全体员工的考勤情况..还可以进行添加删除等操作。根据系统功能..可以画出如下3-2流程图:图3-2系统功能流程图针对系统功能流程图..现具体描述其功能:1、员工登录:系统对其合法性进行检查。2、员工操作:员工可以进行修改基础信息和考勤操作。3、管理员登录:系统对其合法性进行检查。4、管理员操作:管理员可以进行添加新员工、查询所有员工信息、修改所有员工信息和删除等操作。33 4数据库设计(DatabaseDesign)是指根据用户的需求..在某一具体的数据库管理系统上..设计数据库的结构和建立数据库的过程。数据库设计是建立数据库及其应用系统的技术..是信息系统开发和建议中的核心技术。由于数据库应用系统的复杂性..为了支持相关程序运行..数据库设计就变得异常复杂..因此最佳设计不可能一蹴而就..而只能是一种“反复探寻..逐步求精”的过程..也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。4.1数据库需求分析在仔细调查企业考勤管理过程的基础上..得到系统所要处理数据的流程如下图所示。图4-1数据流程图针对本实例..通过对企业考勤管理的内容和数据流程分析..设计的数据项和数据结构如下:1、员工考勤信息。包括的数据项有员工号、缺勤时间、缺勤天数、缺勤类别等。2、缺勤类别信息。包括的数据项有缺勤类别、名称、描述等。3、员工基本信息。包括的数据项有员工号、员工姓名、员工工种、员工所属部门等。有了上面的数据结构、数据项和数据流程..就能进行下面的数据库设计。33 4.2概念结构设计本实例根据上面的设计规划出的实体有:员工基本信息实体、工资信息实体、部门信息实体、考勤信息实体。各个实体的E-R图以及实体和实体之间的关系E-R图描述如下。1、员工实体图如图4-2所示:图4-2员工实体图2、部门实体图如图4-3所示:图4-3部门实体图33 3、加班实体图如图4-4所示:员工编号员工编号图4-4工资实体图4、考勤信息实体图如4-5所示:图4-5考勤信息实体图33 5、实体和实体之间总体E-R图4-6所示:图4-6总体ER图4.3逻辑结构设计逻辑结构设计阶段的任务是将概念结构设计阶段所得到的概念模型转换为具体DBMS所能支持的数据模型(即逻辑结构)..并对其进行优化。通过对E-R分析..得到以下关系模式:员工信息表:(员工编号..员工姓名..性别..部门编号..所在地址..身份证号..政治面貌..联系电话..到岗时间..员工备注..权限..密码)。部门信息表:(部门编号..部门名称..部门负责人..负责人电话)。加班信息:(员工编号..加班时间..加班日期..加班类型)。33 考勤信息表:(员工编号..考勤时间..全勤..早退..病假..事假..出差..旷工..休息..备注)。在上面的实体以及实体之间关系的基础上..形成数据库中的表格以及各个表格之间的关系。考勤管理体统数据库中各个表格的设计结果如下面的几个表格所示。没个表示在数据库中的一个表。1、员工信息表用于保存员工的基本信息..数据表名为“YuangongIngo”..结构见表4-1:表4-1YuangongInfo列名数据类型长度可否为空说明YgIdchar9否主键YgNamevarchar8否员工姓名BumenIdchar2否部门编号Sexvarchar8是性别Ygaddressvarchar12是员工地址IdCardvarchar16是身份证号YgZzmianmaovarchar12是政治面貌Phonevarchar16是联系电话DaogangTimedatetime8是到岗时间YgBeizhuvarchar50是员工备注Quanxianvarchar12否员工权限2、部门信息表用于保存部门的基本信息表..数据表名为“BumenInfo”..结构见表4-2:表4-2BumenInfo列名数据类型长度可否为空说明BumenIdchar6否主键BumenNamevarchar12否部门名称BumenFuzhevarchar10否部门负责人FuzhePhonevarchar16否负责人电话3、考勤信息表用于保存员工考勤的信息表..数据表名为“KaoqingInfo”..结构见表4-3:33 表4-3KaoqingInfo列名数据类型长度可否为空说明YgIdchar9否主键KqTimedatetime8是考勤时间Quanqingvarchar8是全勤Bingjiavarchar8是病假Shijiavarchar8是事假Chucaivarchar8是出差Kuanggongvarchar8是旷工Cidaovarchar8是迟到Xiuxivarchar8是休息Beizhuvarchar100是备注4、加班信息表用于保存员工工资的信息表..数据表名为“JiabanInfo”..结构见表4-4:表4-4JiabanInfo列名数据类型长度可否为空说明YgIdchar9否主键JbTimedaetime8是加班时间JbDatadatetime8是加班日期JbTypevarchar8是加班类型33 4.4数据库连接本系统后台数据库使用的是SQLServer2000..数据库名为“MkYgKq_Db”。数据库中创建的表如前所述..下面简单介绍数据库的连接方法。首先用C#连接SQL2000需要使用命名空间“usingSystem.Data.SqlClient”..其次就是连接字符了“server=(local);database=MkYgKq_Db;integratedsecurity=sspi”“server=(local)”..表示服务器名字..这里设为本地。可以用电脑名字或者IP地址代替“(local)”。“database=MkYgKq_Db”..表示数据库的名字。“integratedsecurity=sspi”..表示使用Windows验证登录..没有密码。如果需要使用SQLServer身份验证..就需要使用“PersistSecurityInfo=false;UserID=*****;Password=*****”..这里星号表示数据的用户名和密码。33 5详细设计5.1登录模块界面设计登录界面主要是对用户身份、密码以及登录类型进行验证..以保证系统的安全性。用户登录模块设计的好坏..也是开发的软件是否好用的标志之一。用户登录模块要完成的功能有:验证用户的用户名和密码是否正确..验证用户的权限。验证用户的用户名和密码..是为了防止别人非法的使用用户名来登录。权限的验证是为了确定该用户在系统的使用中有哪些权限。因为在系统中..不同的用户有不同的权限..只有用户名密码正确..并且用户的权限和用户名相匹配才能正确的登录..否则不能登录。登录时的系统主界面如图5-1所示:图5-1登录界面5.2主界面模块界面设计在用户登录成功后将进入系统的装界面..本系统的大部分功能都在主界面里面..主界面主要由选项卡设计的..可以显得直观..而且易于操作..充分体会到了员工的感受..主界面主要包括:员工的基本信息、加班情况、缺勤情况、基本工资、扣除工资、加班工资、总工资、查询、修改、添加、浏览以及考勤等..如果登录类型不是管理员..查询、修改、浏览、添加用户等按钮将不能使用..进入之后如果有什么不明白的还可以点击帮助系统。普通员工登录后并不是什么都不可以修改..而是可以修改自己的密码以及一些基础信息。主要设计如图5-2所示:33 图5-2主界面5.3员工管理模块设计5.3.1员工修改信息界面设计普通员工能对自己的姓名、性别进行修改..其他信息均只能有管理员修改..本系统信息修改都在主界面进行..不会有专门用于修改的界面节约了空间。如果修改成功将会有文字提示。如图5-3所示:33 图5-3信息修改界面5.3.2员工密码修改界面设计一般员工或者管理员登录成功后..都可以对自己的密码进行修改。进入密码修改界面后..首先让员工对其原密码进行确认..如果输入不正确..修改按钮将不能使用..从而保证了他人密码的安全性..其次..对员工新密码进行判断..如果两次新密码不一致..也会导致修改按钮不能使用..只有且当原密码和新密码输入都满足系统时才能修改密码。充分保证了系统的安全及其稳定..为了保证系统与用户之间的交互性..如果员工修改密码失败或者成功都会有提示..并且为了醒目..提示会用不同颜色的字体显示出来。密码修改的设计图如5-4所示:图5-4修改密码界面33 5.3.3员工考勤管理界面设计这是普通员工的主要功能..通过点击考勤按钮将考勤的信息上传到数据库..考勤信息包括:是否考勤、考勤时间、考勤状态等。系统将对员工考勤的时间进行判断..如果不是系统要求之内的考勤时间..考勤将会失败。如果考勤时间和上班时间不对应..虽然能成功考勤..但是将会在员工考勤状态里记为迟到。如图5-5所示:图5-5员工考勤管理界面员工的大体功能就这三项了..以下将介绍管理的具体信息。5.4管理员管理模块设计本系统管理员分为系统管理员和总管理员..对于系统管理员功能包括:查询功能、修改功能、浏览功能以及添加新用户。系统管理员只能对员工一定的信息进行修改不是全部。其他的一些信息只能由总管理员进行修改。多级权限充分保证了系统的安全和稳定性。由于系统管理员和总管理员功能相差不大..所以下面主要介绍总管理员的一些功能。但是总管理员没有修改自己信息和考勤的功能..我想总管理员的具体信息和考勤应交给他的领导。33 5.4.1管理员查询界面设计管理员能通过员工编号或者姓名对员工进行查询..如果编号格式不正确或者不存在将不能查询..并且通过文字在界面上显示出来。界面如图5-6和5-7所示:图5-6查询界面(通过员工编号)图5-7查询界面(通过员工姓名)33 5.4.2修改功能界面设计管理员通过对员工进行查询并可以对其信息进行浏览如有不正确的信息管理员能进行修改..修改的信息包括员工基本信息、缺勤情况、加班情况以及考勤情况..总管理员能修改除了员工编号外员工所有信息..系统管理员能修改员工的工资信息..不能修改员工的基本信息以及考勤信息。修改成功或者失败将会有文字提示出来。界面如图5-8所示:图5-8修改功能界面5.4.3浏览功能界面设计管理员通过登录系统点击浏览按钮能浏览所有员工的信息..如果发现信息有不对的地方..可以通过浏览所示表中的员工编号或者姓名查询出来..对其进行修改。具体界面如图5-9所示:33 图5-9浏览功能界面5.4.4添加功能界面设计总管理员和系统管理员都有添加用户的功能..点击主界面中添加用户按钮能弹出添加用户的界面..添加的时候系统会对已有员工和添加的员工进行比较如果发现重复将不能添加。如果添加所需要的信息为空或者错误也不能添加..具体界面如5-10所示:图5-10添加功能界面33 6系统测试系统测试主要包括:1、功能测试。即测试软件系统的功能是否正确..其依据是需求文档..如《产品需求规格说明书》。由于正确性是软件最重要的质量因素..所以功能测试必不可少。2、健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力..二是恢复能力。6.1系统测试方法系统测试既是软件开发阶段的最后一项活动..又是软件质量保证的最后一项措施。系统测试..英文是SystemTesting。是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起..进行信息系统的各种组装测试和确认测试..系统测试是针对整个产品系统进行的测试..目的是验证系统是否满足了需求规格的定义..找出与需求规格不符或与之矛盾的地方..从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置..然后进行改正。是基于系统整体需求说明书的黑盒类测试..应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件..还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。6.2本系统测试6.2.1登录模块测试登录模块要求输入的员工姓名、密码和登录类型和数据库表中的记录相同才能进入主界面。当输入的用户名、密码和登录类型为空或者不正确时..是不能进入主界面的。出错提示如图6-1所示:图6-1登录错误提示只有输入正确的用户名、密码和登录类型才能进入主界面进行操作。测试用例:33 1、用户名为空..密码为空登录类型为员工(数据库不存在的用户名和密码)。2、用户名为123456..密码为123456..登录类型为员工(数据库中不存在的用户名和密码)。3、用户名为张飞..密码为123456..登录类型为总管理员(登录类型与数据库中所对应的登录类型不匹配)。上面的测试用例均不能进入主界面..可以用用户名为张飞..密码为123456..登录类型为员工进入主界面。6.2.2员工功能模块测试员工在进行密码修改时..只有原密码和新密码都是正确的才能进行修改..如果其中一样有错误都不能进行修改。下面用员工张飞进行测试..张飞的原密码为123456。测试用例:1、原密码为空(密码为空..新密码将不能输入)。2、原密码为123456..第一次新密码654321..第二次新密码为546321(两次密码不一致不能修改)。3、原密码为123456..第一次新密码为12345..第二次新密码为12345(密码长度不对)。测试如图6-2、图6-3和图6-4所示:图6-2修改密码测试0133 图6-3修改密码测试02图6-4修改密码测试03以上密码均不能修改密码..仅且原密码、新密码、确认新密码都为正确时才能成功修改密码。6.2.3管理员模块测试管理员模块主要测试查询功能..只有当所输入的员工编号格式正确或者员工姓名正确时才能查询成功。如果员工姓名按钮没有被选中..则查询文本框将不能输入字母或者汉字..只能输入整型数字。测试用例:1、员工编号为空(数据库中不存在)。2、员工编号为123456789(数据库中不存在)3、当员工姓名按钮没被选中时向文本框中输入汉字。4、员工姓名按钮选中时输入张八。测试结果如图6-5、图6-6、图6-7所示:图6-5查询测试0133 图6-6查询测试02图6-7查询测试03以上测试用例均不能成功查询..只有员工编号、员工编号格式或者员工姓名正确时才能查询成功。6.2.4测试结论本次测试..对已知的各种可能发生的错误进行了验证..系统都能发现。成功的实现了员工和管理的登录功能..员工信息的修改和考勤功能..管理员的查询、添加和浏览功能。但是软件可能某些时候会发现不足与缺陷..需要用户的监督..然后进一步的改进与维护并给予纠正。总的来说..本次测试顺利的通过。33 7结论通过此次设计..我不仅熟悉了以前学习的数据库原理以及现在正在学的C#程序设计和SQLServer教程所学到的知识..而且还初步了解了制作一个比较合理的软件的具体实施步骤。首先要对自己要做的这个软件进行一系列的分析..包括可行性分析..需求分析等。在可行性分析中又包括了对软件开发的经济可行性和技术可行性等分析。需求分析更是对完成一个符合用户需要的软件最重要的必不可少的部分。所以在做需求分析的时候要格外的细心和耐心..尽量站在用户的角度去看需求..这样才能保证交付用户一个满意的软件。或许现在我们只是对系统开发一知半解..只有在具体的实践中才能真正体会到系统开发的过程以及重要性。但是通过这次毕业设计我已经深刻的感觉..开发一个系统最困难的阶段不是写代码编代码..而是对系统进行详尽的分析..而且对系统的分析占用了整个软件开发的很大部分时间。到最后编码过程中..只需要按照需求分析报告中的需求对软件进行编程。总之..这次毕业设计对我的收获是很大的。从中认识到了自己很多的不足..以前的基础知识不足也在这次设计中体现了出来..特别是数据库方面..在对多表进行操作的时候数据的参照完整性完全没有头绪还有触发器也不知道怎么写。幸好有这次毕业设计让我发现了这些问题..这样在以后的开发过程中..对这些比较复杂的问题就有一定的对待策略..而不像第一次开发时这样显得无从下手了。由于这次毕业设计使用的是才开始学的C#..许多知识老师都还没有讲到..所以自己就是在边摸索边前进的过程中实现了该软件。这对自己的自学能力也有一定的锻炼..而且增加了自己对SQLServer2000的使用。对自己有很大的提高。33 致谢本论文的顺利完成..首先要感谢我的导师XXXX老师几个月的悉心指导..论文在撰写的过程中..曾遇到不少困难和问题..例如在系统流程图的绘制方面..在系统功能模块设计方面等等。本论文在撰写过程中..参考了大量的相关著作..包括一些外文书籍..正是由于他们之前所作的积极的努力和探索..使我得以站在“巨人的肩膀”上..在此向其作者表示由衷的谢意!通过这次毕业设计使我学到了不少新知识..接触了很多新事物。通过对美克家具有限公司考勤管理系统进行的需求分析..让自己在软件工程课程中所学习的课程在实际中得到了运用..同时也是对自己以前所学的各种编程知识和数据库知识的一个巩固。在信息产业高速发展的今天..高新技术知识浩如烟海..作为即将步入社会的我们..要想在竞争的激流中稳住脚步..没有丰富的知识是不行的。面对知识体系的不断膨胀..我们必须做到广博而又有所精通..这就使得我们必须学会自学..提高工作效率..灵活应用所学的各种知识。软件开发是一个不断学习新鲜事物的过程..从设计初的不懂到最后能够顺利完成..我体会到在实践中学习的重要性..这对于将来我走上工作岗位具有重要意义。最后要感谢和我一起做毕业设计的同学们..通过与他们的探讨与交流..使我受益匪浅..这也是我能顺利完成论文的一个重要的原因。在此我向他们致以深深的谢意!33 参考文献[1]郑阿奇.SQLServer实用教程(第2版)[M].北京:电子工业出版社..2005.[2]王珊..萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社..2006.[3]金旭亮..吴彬.网站建设教程[M].北京:人民邮电出版社..2003.[4]郭东强.现代管理信息系统[M].北京:清华大学出版社,2006.[5]求是科技.ASP.NET数据库管理系统开发实例导航[M].北京:人民邮电出版社..2004.[6]张海藩.软件工程(第二版)[M].北京:人民邮电出版社..2006.[7]张欣.MicrosoftSQLServer2000ReportingServices[M].北京:清华大学出版社..2005.[8]MarcoBellinaso.C#入门经典[M].北京:清华大学出版社..2002.[9]徐可.VisualC#.NET深入编程[M].北京:希望电子出版社..2001.[10]MatthewReynolds.Windows高级编程—C#编程篇[M].北京:清华大学出版社..2003.33 附录1、登录模块的实现publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton2_Click(objectsender,EventArgse){if(MessageBox.Show("是否退出登录系统?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)this.Close();}privatevoidtextBox2_KeyDown(objectsender,KeyEventArgse){if(e.KeyCode==Keys.Enter)comboBox1.Focus();}publicstaticstringconstr="server=(local);database=MkYgKq_Db;integratedsecurity=sspi";//integratedsecurity=sspi,表明连接时使用的是windows身份验证模式privatevoidbutton1_Click(objectsender,EventArgse){stringstr="select*fromYuangongInfo,BumenInfowhereBumenInfo.员工姓名=""+textBox1.Text+""andYuangongInfo.员工姓名=""+textBox1.Text+""and员工密码=""+textBox2.Text+""and登录类型=""+comboBox1.Text+""";//查询语句Helper01.con=newSqlConnection(constr);//建立数据连接对象Helper01.con.Open();//打开连接Helper01.cmd=newSqlCommand(str,Helper01.con);//建立数据库命令对象Helper01.D_read=Helper01.cmd.ExecuteReader();//执行命令if(Helper01.D_read.Read()){form2.YgName=Helper01.D_read["员工姓名"].ToString();//将员工姓名赋值给YgNameform2.YgNo=Helper01.D_read["员工编号"].ToString();form2.YgSex=Helper01.D_read["性别"].ToString();form2.YgBumen=Helper01.D_read["所在部门"].ToString();form2.GzBianhao=Helper01.D_read["工种编号"].ToString();form2.GongZong=Helper01.D_read["所属工种"].ToString();33 form2.Denglulx=Helper01.D_read["登录类型"].ToString();xiugaimima.YgMima=Helper01.D_read["员工密码"].ToString();form2mdi=newform2();Helper01.con.Close();this.Hide();mdi.Show();}else{MessageBox.Show("用户名、密码错误或者登录类型错误");textBox1.Text="";textBox2.Text="";textBox1.Focus();}}privatevoidtextBox1_KeyDown(objectsender,KeyEventArgse){if(e.KeyCode==Keys.Enter)textBox2.Focus();}2、管理员查询的实现privatevoidbutton5_Click(objectsender,EventArgse)//查询{label52.Text=label53.Text=label51.Text="";Helper01.con=newSqlConnection(Form1.constr);Helper01.con.Open();if(radioButton1.Checked==true){stringstrCx="select*fromYuangongInfo,BumenInfo,GongziInfo,KaoqingInfowhereYuangongInfo.员工编号=""+textBox20.Text+""and";strCx+="BumenInfo.员工编号=""+textBox20.Text+""andGongziInfo.员工编号=""+textBox20.Text+""andKaoqingInfo.员工编号=""+textBox20.Text+""";Helper01.cmd=newSqlCommand(strCx,Helper01.con);Helper01.D_read=Helper01.cmd.ExecuteReader();if(Helper01.D_read.Read()){textBox21.Text=textBox1.Text=label32.Text=label44.Text=label19.Text=Helper01.D_read["员工编号"].ToString();textBox22.Text=textBox2.Text=label20.Text=label33.Text=label45.Text=Helper01.D_read["员工姓名"].ToString();33 textBox6.Text=label21.Text=Helper01.D_read["工种编号"].ToString();textBox3.Text=Helper01.D_read["性别"].ToString();textBox4.Text=Helper01.D_read["所在部门"].ToString();textBox5.Text=Helper01.D_read["所属工种"].ToString();textBox15.Text=Helper01.D_read["基本工资"].ToString();textBox16.Text=textBox14.Text=Helper01.D_read["加班工资"].ToString();textBox11.Text=textBox17.Text=Helper01.D_read["扣除工资"].ToString();Inta=Convert.ToInt16(textBox15.Text)+Convert.ToInt16(textBox14.Text)-Convert.ToInt16(textBox11.Text);textBox18.Text=a.ToString();textBox19.Text=textBox12.Text=textBox8.Text=Helper01.D_read.GetDateTime(22).ToShortDateString();//转换为日期格式textBox29.Text=Helper01.D_read.GetDateTime(30).ToShortDateString().ToString();//考勤所在月份textBox23.Text=Helper01.D_read["上班天数"].ToString();textBox24.Text=Helper01.D_read[26].ToString();//本月加班天数textBox27.Text=Helper01.D_read[27].ToString();//本月缺勤天数textBox25.Text=Helper01.D_read["考勤记录"].ToString();//考勤记录textBox26.Text=Helper01.D_read["考勤时间"].ToString();//考勤时间textBox13.Text=Helper01.D_read["加班天数"].ToString();textBox9.Text=Helper01.D_read["请假类型"].ToString();textBox10.Text=Helper01.D_read["缺勤天数"].ToString();textBox7.Text=Helper01.D_read["员工备注"].ToString();label22.ForeColor=Color.Green;label22.Text="查询成功!";Helper01.con.Close();}else{label22.ForeColor=Color.Red;label22.Text="请输入正确的员工编号!";textBox20.Text="";textBox20.Focus();}}3、管理员修改的实现privatevoidbutton6_Click(objectsender,EventArgse)//修改{try{33 Helper01.con=newSqlConnection(Form1.constr);Helper01.con.Open();stringXiugaiStr2="updateYuangongInfoset员工姓名=""+textBox2.Text.Trim()+"",";XiugaiStr2+="所在部门=""+textBox4.Text.Trim()+"",";XiugaiStr2+="所属工种=""+textBox5.Text.Trim()+"",";XiugaiStr2+="性别=""+textBox3.Text.Trim()+""fromYuangongInfo,GongziInfo,BumenInfo,KaoqingInfo";XiugaiStr2+="whereYuangongInfo.员工编号=""+textBox1.Text+""andBumenInfo.员工编号=""+textBox1.Text+""andGongziInfo.员工编号=""+textBox1.Text+""andKaoqingInfo.员工编号=""+textBox1.Text+""";XiugaiStr2+="updateBumenInfoset工种编号=""+textBox6.Text.Trim()+"",员工姓名=""+textBox2.Text.Trim()+""";XiugaiStr2+="fromYuangongInfo,GongziInfo,BumenInfo,KaoqingInfo";XiugaiStr2+="whereYuangongInfo.员工编号=""+textBox1.Text+""andBumenInfo.员工编号=""+textBox1.Text+""andGongziInfo.员工编号=""+textBox1.Text+""andKaoqingInfo.员工编号=""+textBox1.Text+""";XiugaiStr2+="updateGongziInfoset加班天数=""+textBox13.Text.Trim()+"",缺勤天数=""+textBox10.Text.Trim()+"",";XiugaiStr2+="加班工资=""+textBox14.Text.Trim()+"",请假类型=""+textBox9.Text.Trim()+"",员工姓名=""+textBox2.Text.Trim()+"",";XiugaiStr2+="扣除工资=""+textBox11.Text.Trim()+"",员工备注=""+textBox7.Text.Trim()+"",所在月份=""+textBox19.Text.Trim()+"",";XiugaiStr2+="基本工资=""+textBox15.Text.Trim()+"",总工资=""+textBox18.Text.Trim()+""fromYuangongInfo,GongziInfo,BumenInfo,KaoqingInfo";XiugaiStr2+="whereYuangongInfo.员工编号=""+textBox1.Text+""andBumenInfo.员工编号=""+textBox1.Text+""andGongziInfo.员工编号=""+textBox1.Text+""andKaoqingInfo.员工编号=""+textBox1.Text+""";XiugaiStr2+="updateKaoqingInfoset员工姓名=""+textBox2.Text.Trim()+"",上班天数=""+textBox23.Text.Trim()+"",KaoqingInfo.加班天数=""+textBox24.Text.Trim()+"",";XiugaiStr2+="KaoqingInfo.缺勤天数=""+textBox27.Text.Trim()+"",考勤记录=""+textBox25.Text.Trim()+"",考勤时间=""+textBox26.Text+"",";XiugaiStr2+="KaoqingInfo.所在月份=""+textBox29.Text.Trim()+""fromYuangongInfo,GongziInfo,BumenInfo,KaoqingInfo";XiugaiStr2+="whereYuangongInfo.员工编号=""+textBox1.Text+""andBumenInfo.员工编号=""+textBox1.Text+""andGongziInfo.员工编号=""+textBox1.Text+""andKaoqingInfo.员工编号=""+textBox1.Text+""";Helper01.cmd=newSqlCommand(XiugaiStr2,Helper01.con);Helper01.cmd.ExecuteNonQuery();textBox8.Text=textBox12.Text=textBox19.Text;label32.Text=label44.Text=label19.Text=textBox1.Text;//员工编号label20.Text=label33.Text=label45.Text=textBox2.Text;//员工姓名label21.Text=textBox6.Text;//工种编号label22.ForeColor=Color.Green;label22.Text="修改成功!";33 Helper01.con.Close();}catch(Exceptiont){MessageBox.Show(t.Message);}}33