• 716.50 KB
  • 2022-05-17 13:07:24 发布

软件工程综合实验报告(考勤管理系统)

  • 17页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
华北科技学院计算机系综合性实验报告宿迁学院三系综合性实验实验报告课程名称软件工程实验学期2008至2009学年第二学期学生所在系部计算机系年级2专业班级学生姓名学号任课教师郭红实验成绩计算机系制第16页 华北科技学院计算机系综合性实验报告实验题目员工考勤管理系统实验时间2009年5月31日实验地点软件工程实验室一、实验目的通过软件工程综合实验,使学生认识到在软件系统实际开发中运用软件工程方法的意义,加深对软件工程所学知识的理解,初步掌握进行软件系统开发的基本方法,培养学生分析问题、解决实际问题的能力,为毕业设计以及将来从事软件项目开发与管理工作打下一定的基础。二、设备与环境操作系统:WindowsXP/CE。数据库:SQLServer2000。编程工具:DEKPHI7编程环境三、实验内容及分析1需求工程1.1功能需求考勤管理是企业管理中非常重要的一环。作为公司主管考勤的人员能够通过考勤管理系统清楚的看到公司员工编号,姓名,部门以及签到时间、签离时间以及是否迟到、早退等诸多信息。还能够通过所有员工的出勤记录比较来发现企业管理和员工作业方面的诸多问题。更是员工工资及福利待遇方面重要的参考依据。具体操作流程如下:超级用户登录本系统,输入用户名和密码,系统进行验证,验证通过的话进入程序主界面,在主界面对普通用户的信息进行录入,超级用户需要输入普通用户的部门和编号进行录入,经过系统验证通过后该员工签到成功,下班签离时超级用户先输入该普通用户的部门和编号,如果该员工今天已经签到,那样签离成功。同时超级用户可以查询员工所有信息、某段时间内员工的出勤情况。本系统是一个可靠性高、可用性强的系统,能够处理基本的功能和非功能故障。关于用户信息的安全性和保密性提供了基本保障。1.2数据流图用户的需求具体表现在对个人信息的提供、编辑、处理和查询上。这就要求数据库能够满足各种信息的输入、输出和处理。通过分析考勤管理系统的实际内容和要求,得到一下数据流图:第16页 华北科技学院计算机系综合性实验报告图1顶层数据流图第16页 华北科技学院计算机系综合性实验报告图20层数据流图1.3E-R图图3超级用户E-R图图4用户E-R图图5部门E-R图第16页 华北科技学院计算机系综合性实验报告图6总体E-R2.软件设计2.1总体设计本系统的初步结构图如下所示:第16页 华北科技学院计算机系综合性实验报告关于图中的标号,分别表示为:a、登录信息b、不合格登录信息c、不合格签到信息d、签到信息e、不合格签离信息f、签离信息g、不合格删除条件h、删除条件i、查询条件k、不合格查询条件m、合格登录信息n、程序主界面信息l、删除成功信息j、合格删除条件o、查询结果p、合格查询条件q、合格签到信息r、签到成功返回结果s、签离成功返回结果t、合格签离信息优化后的结构图为:其中编号的具体内容为:1、合格的登录信息2、程序主界面3、签到成功的返回信息4、合格的签到信息5、签离成功的返回信息6、合格的签离信息7、合格的删除条件8、删除成功信息9、合格的查询条件10、查询结果2.2数据库设计本系统设计到普通用户,也就是员工,和超级用户两类用户。超级用户可以管理员工的签到签离操作,也可以查询员工的个人情况和出勤情况。员工只需要告诉超级员工自己的部门和编号就可以完成签到和签离操作。根据实际应用的需要,最大限度的提高系统的性能,本系统涉及5张表,分别是超级用户表、普通用户表、部门表、考勤表和考勤历史表。2.2.1表结构分别如下:表1部门表结构第16页 华北科技学院计算机系综合性实验报告名称字段类型为空性备注部门编号BM_NumVarchar(10)否唯一表示部门部门名称BM_NAMEVarchar(20)否部门名称部门人数BM_COUNTint是表2超级用户表结构名称字段类型为空性备注用户名SUserVarchar(10)Notnull唯一标识用户身份密码MMVarchar(10)Notnull每个用户都有密码姓名SNameVarchar(10)Null性别SSexChar(2)Null出生日期SBirDateDatetimeNull籍贯SPlaceVarchar(30)null表3普通用户表结构名称字段类型为空性备注编号NumVarchar(10)Notnull唯一标识用户身份部门AparVarchar(10)姓名CNameVarchar(10)性别SexChar(2)出生日期BirdateDatetime籍贯PlaceVarchar(30)表4考勤表结构名称字段类型为空性备注序列号SeqintNotnull唯一标识记录序列,自增长编号NO.Varchar(10)Notnull普通用户编号签到时间GtimeVarchar(50)Notnull签离时间OtimeVarchar(50)Null表5考勤历史表名称字段类型为空性备注记录号LSeqintNutnull唯一标识记录序列,自增长第16页 华北科技学院计算机系综合性实验报告编号NumVarchar(10)Notnull普通用户编号日期wDateDatestampNotnull签到时间gtimeVarchar(50)Notnull签离时间otimeVarchar(50)Notnull是否迟到WlateBitNotnull1迟到,0未迟到是否早退WearlyBitNotnull1早退,0未早退是否缺勤WOutBitNotnull1缺勤,0未缺勤2.2.2这个表之间一定存在这某种相互制约的关系,下图为各表之间的关系图:2.2.3用到的比较重要的存储过程、触发器以及索引。在主界面,当用户选择签到点击“确定”按钮后,执行将数据插入到考勤表中的存储过程wat_insert代码为:useygkqgocreateprocwat_insert@numvarchar(10),@gtimedatetimeasinsertintoworker_attend(num,gtime)values(@num,@gtime)Go当用户选择签离,并且点击确认按钮后,执行将该员工的信息插入到考勤表中的存储过程otime_insert代码为:useygkqgocreateprocotime_insert@numvarchar(10),@otimevarchar(50)asupdateworker_attendsetotime=@otime第16页 华北科技学院计算机系综合性实验报告wherenum=@numGo2.3详细设计本系统是用delphi制作完成的。具体实现如下A、超级用户需要先输入自己的用户名和密码,等待系统验证通过后才能登录系统主界面。超级用户的用户名和密码是存放在数据库中的一个表中的。所以运行本程序时要先连接数据库。B、在系统主界面超级用户可以实现普通用户签到操作和签离操作,可以对普通用户的出勤情况进行修改和查询。超级用户对普通用户进行签到操作时,要先输入该员工的部门编号,然后输入该员工的编号。点击确认后系统将本人的签到时间插入到考勤表中。员工的部门编号以及员工的编号也是存储在数据库中的,在员工输入之后会核对员工输入信息的正确性。进行签离操作是针对已经签到的员工进行的,所以如果用户选择的员工编号没有出现在考勤表中则拒绝进行操作。C、主界面对信息的查询。对信息的查询包括员工个人信息、员工出勤信息和部门信息。这个是通过在一个新窗体中打开数据库中的表实现的。对于比较详细的查询操作,这里没有暂时实现该功能。D、主界面对考勤信息的删除操作。删除操作包括删除当天所有签到信息、签离信息以及删除某个人的信息。这个是通过存储过程来实现的。3系统实现3.1展示屏的设计在一个窗体上放一张图片,然后在图片上加相应的文字说明,增加一个timer控件,在timer的ontime编写相应的代码。效果图为:第16页 华北科技学院计算机系综合性实验报告3.2登录界面的设计登录界面需要用户名和密码的验证,因此需要连接数据库,需要用到相应的控件,连接上数据库,在“确定”按钮的单击事件中输入相应代码:varsuser,password:string;beginsuser:=form2.Edit1.Text;password:=form2.Edit2.Text;adoquery1.Close;adoquery1.SQL.Clear;adoquery1.SQL.Add("selectsuser,mmfromSUserwheresuser="+""""+suser+""""+"andmm="+""""+password+"""");adoquery1.Open;ifadoquery1.RecordCount=0thenbeginapplication.MessageBox("用户名与密码错误,请重新输入","提示",mb_ok);edit1.SetFocus;endelsebeginform2.Hide;form3.Show;end;end;将该窗体的边界风格设置为bsnone,效果图为:第16页 华北科技学院计算机系综合性实验报告3.3主界面的设计控件的放置如下图所示,在“部门”组合框的ondropdown事件中获得数据库中关于部门的信息,代码为:vari,j:integer;begincombobox1.Clear;adoquery1.sql.Clear;adoquery1.SQL.Add("selectdistinct*fromdep");//从数据库的dep表中读取数据adoquery1.Open;j:=adoquery1.RecordCount;//recordcount为读取的记录数ifj>0thenbeginadoquery1.first;fori:=0toj-1dobegincombobox1.Items.Add(adoquery1.FieldList[0].asstring);//增加部门编号adoquery1.Next;end;endelseapplication.MessageBox("没有部门的信息","提示",mb_ok);end;“编号”组合框的代码同上面的类似,这里就不予列列出。该界面的关键功能是“确认”按钮,单击此按钮后将数据插入到考勤表中,并且显示该员工的个人信息和其是否迟到早退的情况,代码为:adoquery1.SQL.Clear;adoquery1.SQL.Add("select*fromcuserwherenum="""+combobox2.Text+"""");adoquery1.Open;//获取输入的员工号的记录ifadoquery1.RecordCount>0thenbeginedit1.Text:=(adoquery1.FieldList[2].asstring);//显示员工相关信息edit2.Text:=(adoquery1.FieldList[1].asstring);edit3.Text:=(adoquery1.FieldList[3].asstring);edit4.Text:=(adoquery1.FieldList[4].asstring);ifradiobutton3.Checkedthenbegin//签到操作withADOStoredProc1dobeginClose;//将这条记录插入到考勤表中ProcedureName:="wat_insert";Parameters.Clear;Parameters.Refresh;Parameters.ParamByName("@num").Value:=combobox2.Text;Parameters.ParamByName("@gtime").Value:=time();第16页 华北科技学院计算机系综合性实验报告ExecProc;end;//判断是否迟到ifformatdatetime("hh:mm:ss",time)<=("9:00:00")thenedit5.Text:="是"elseedit5.Text:="否"endelseifradiobutton4.Checkedthenbegin//选择签离操作adoquery1.SQL.Clear;adoquery1.SQL.Add("select*fromworker_attendwherenum="""+combobox2.Text+"""");adoquery1.Open;ifadoquery1.RecordCount>0thenbeginwithADOStoredProc1dobeginClose;ProcedureName:="otime_insert";Parameters.Clear;Parameters.Refresh;Parameters.ParamByName("@num").Value:=combobox2.Text;Parameters.ParamByName("@otime").Value:=time();//插入签离时间ExecProc;end;//判断是否早退ifformatdatetime("hh:mm:ss",time)<=("18:00:00")thenedit6.Text:="是"elseedit6.Text:="否"endelseapplication.MessageBox("该人没有签到不能签离!","出错啦!",mb_ok)endelseapplication.MessageBox("请选择签到还是签离","提示",mb_ok);//没有选择签离还是签到endelsebeginapplication.MessageBox("没有该员工!","提示",mb_ok);combobox2.SetFocus;“删除当前所有签到记录”按钮与“删除所有签离记录”按钮的单击事件的代码相似。“所有员工信息”、“查询当天记录”、“查询所有记录”和“部门信息”按钮的单击事件代码相似。主界面的设计如下图所示,第16页 华北科技学院计算机系综合性实验报告3.4查询结果显示的界面这几个界面的实现只要是通过控件实现的,所以只显示一个,为员工信息:另外系统中难免会输入有错误的地方,这时候提示很重要,这里只显示一个出错提示,如下所示:实现这个的代码为:application.Messagebox("","",mb_ok).引号中输入相信的内容既可4、测试结果第16页 华北科技学院计算机系综合性实验报告4.1登录模块测试登录模块输入的用户名和密码是要求和数据库中SUser表中的记录相同才能进入主界面的。当输入空的用户名和密码以及不正确的用户名和密码时,是不能进入主界面的。出错提示如下图所示:只有输入正确的用户名和密码才成进入主界面进行操作。测试用例:用户名空密码空(数据库中不存在的用户名和密码)用户名23423423密码空(数据库中不存在的用户名和密码)用户名admin密码8787676(用户名和密码字段不匹配)上面的测试用例都不能进去主界面,可以用adminadmin进去主界面。4.2主界面模块测试4.2.1签到测试员工签到时可以自己输入部门编号和员工编号,也可以从下拉列表中进行选择。当然下拉列表中的信息是直接从数据库中的表读出的不可能有错。如果员工自己输入部门编号和员工编号的话是可能出错的。测试用例:部门89898(数据库中不存在)员工9008989(数据库中不存在)部门00001(数据库中存在)员工opopop(数据库中不存在)部门00001(数据库中存在)员工0000201(数据库中存在但是不是该部门的数据),测试结果为:成功签到后,系统显示是否迟到,如下图:4.2.2签离操作员工签离时可以自己输入部门编号和员工编号,也可以从下拉列表中进行选择。输入错误的员工信息时如签到操作时的提示,这里不在截图表示。第16页 华北科技学院计算机系综合性实验报告当员工输入了正确的部门和员工编号时,但是该员工还没有签到,但员工现在选择签离操作,这个不允许的,这里给出提示,如下所示:签离成功后,系统显示是否早退,如图:4.2.3删除操作可以选择删除当日所有签到记录和所有签离记录也可以选择删除某个人的记录,删除当天某个人的记录的时候,必须保证这个人已经签到了,早考勤表中存在。如果不存在,会有如下提示:测试用例:空当删除成功时会有如下提示:测试用例:0000201(已经进行签到的员工编号)4.2.4查询操作进行查询操作时要确认连接到数据库中,所以要输入系统的用户名和密码,dba和sql。否则程序会出错。这个我没有能力做处理。进行详细查询时,需要输入部门号和查询时间段,当用户输入了错误的时间,或者考勤历史表中没有时间的记录时给出提示:第16页 华北科技学院计算机系综合性实验报告5、总结通过这次实验,我们不仅熟悉了我们以前学习的数据库原理以及现在正在学习的delphi程序设计和sqlsever教程所学到的知识,而且我们还初步了解了制作一个比较合理的软件的具体实施步骤。首先要对自己要做的这个软件进行一系列的分析,包括可行性分析,需求分析等。在可行性分析中又包括了对软件开发的经济可行性、技术可行性和法律可行性等的分析。需求分析更是对完成一个符合用户需求的软件最重要的必不可少的部分。所以在做需求分析的时候要格外的细心和耐心,保证尽量了解用户对软件的需求,这样才能保证交付用户一个满意的软件。我相信学习软件工程对以后的工作中的项目开发一定会有很大的作用。或许现在我们还只是对软件工程一知半解,只有在具体的实践中才能真正理会软件工程这门课的重要性。但是经过这次课程设计我已经深刻的感觉,开发一个系统最困难的阶段不是写代码编代码,而是对系统进行详尽的分析,而且对系统的分析占用了整个软件开发的很大部分时间。到最后的编码过程中,只需要按照需求分析报告中的功能需求对软件进行编程。总之,这次实验对我们的收获还是挺大的。我们从中了解到了开发一个软件的大致过程,从而在以后开发的过程中,对那些很重要的比较复杂的部分就有一定的对待策略,而不像第一次开发时这样显得无从下手,总是改变自己刚开始设定的软件的模式。由于这次实验做的比较早,许多delphi的知识老师还没有讲到,所以自己就是在边摸索边前进的过程中实现该软件的。这对自己的自学能力也有一定的锻炼,而且增加了自己对sqlserver2000的使用。对自己有很大的提高。6、附录实现本系统参考书籍有:Delphi程序设计教程第二版机械工业出版社Delphi课程设计案例精编清华大学出版社Sqlserver教程清华大学出版社软件工程清华大学出版社第16页 华北科技学院计算机系综合性实验报告教师评价评定项目ABCD评定项目ABCD选题合适方法可行分析从实际出发内容完整图表齐全图表正确规范软件结构合理模块算法正确报告规范布局合理文字流畅其他:评价教师签名:年月日第16页