- 7.26 MB
- 2022-05-17 13:19:19 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
天道酬勤BusinessSchoolofCentralSouthUniversityBusinessSchoolofCentralSouthUniversity考勤管理系统CheckonWorkattendanceMS<参与学生>学生姓名(Name):学号(StudentID):(四班)1602030409学生姓名(Name):学号(StudentID):(一班)1602030108学生姓名(Name):学号(StudentID):(一班)1602030118全套源程序代码,联系527953900
天道酬勤BusinessSchoolofCentralSouthUniversity目录一、前言二、考勤管理系统功能分析三、模块图及流程图1.模块图2.流程图四、程序源代码及部分程序界面1.程序源代码2.部分程序界面五、附录1.开发人员分工名单2.系统开发参考文献六、结束语
天道酬勤BusinessSchoolofCentralSouthUniversity一、前言无论一种开发工具多么美妙,都需要在实践中不断理解和掌握它!我们剖析数据库开发案例,由浅入深步入DELPHI数据库系统开发世界!没有必要详细研究DELPHI的发展历史,我们目睹的是其作为伟大开发工具的事实。由BORLAND公司出品的DELPHI是一种典型的面向对象的、用于RAP开发的可视化编程语言。它继承了OOP(OrientObjectPascal)语言中优越的全功能平台,以及编程效率高、代码质量好等优点,并解决了诸如VisualBasic等可视化程序设计语言中的代码执行效率低下等问题。我们用DELPHI开发的考勤信息管理系统,涉及文件的操作和管理,数据库的基本查询和操作以及DBChart和PageControl组件的使用。企业员工的考勤的工作不仅工做量大,而且时效性强。过去,企业多采用签到和报表式进行管理效率和透明度较差,随着数据技术的发展以及企业信息化建设的进行,使用计算机管理企业考勤工作以成为大势所趋。基于此,按照软件工程的思想,对考勤信息管理系统进行功能分析:
天道酬勤BusinessSchoolofCentralSouthUniversityl实现系统登陆功能(密码修改功能),并限制不同用户(包括普通工人、人事部门人员、财务部人员以及管理员)登陆所查看的信息;l输入员工基本信息,包括姓名、性别、所属部门等;l浏览和修改员工基本信息;l输入出勤信息;l输入基本工资和奖金信息并计算实际工资;l浏览和修改员工的出勤情况,可同时查看该员工基本信息;l浏览和修改员工的工资情况,可同时查看该员工基本信息;l按实际工资情况查询员工;l按实际出勤情况查询员工;l按姓名信息查询员工;附加功能:l密码修改功能;l帮助说明。由于时间仓促,加上开发人员水平有限,虽然工作认真,但此系统难免有很多疏漏之处,敬请老师批评指正。
天道酬勤BusinessSchoolofCentralSouthUniversity二、考勤管理系统功能分析本程序设计的是一个公司员工每天的考勤管理程序,经过简单扩充成为一个完整的考勤管理系统。下面来说一下本程序的各个模块的功能及数据库的结构。一、本程序由登录界面、员工信息、出勤信息、员工工资、相关查询、密码修改、帮助说明及退出系统五部分组成。登录界面:登录界面产生一个用户的下拉列表(系统管理员、财务部门、人事部门及普通用户),用户可选择相应的用户名称,输入对应的密码进入,选择“取消”终止程序运行。防止用户以外的人看到密码,密码输入框内的密码用“*”屏蔽。员工信息:本界面可实现员工相关信息的修改与添加。出勤信息:本界面可实现员工出勤信息的输入,可参看缺勤情况示意图。员工工资:本界面可实现员工基本工资与实际工资的输入与修改。
天道酬勤BusinessSchoolofCentralSouthUniversity相关查询:可由员工实际工资差位来查看详细工资情况(编号、月份、工资、奖金、实际工资),由出勤天数查看详细出勤情况(编号、月份、出勤、迟到、早退、请假、旷工、实际出勤),由员工姓名查看员工详细情况(编号、姓名、编码、性别、部门、职称、住址、工资)。密码修改:通过阅读密码修改设置信息和旧密码进行密码修改并显示用户身份。帮助说明:本界面显示本系统所有应用信息,可打印本系统相关应用信息。退出系统:本界面显示系统信息(应用操作系统)、程序作者(管理系统的作者)。二、数据库的结构设计本程序用到了三个数据表,一个是员工基本信息表,一个是出勤信息表,一个是工资表,全部存在Paradox数据库中,下面是个数据库表的数据结构:(一)员工基本信息表字段名字段类型字段大小编号(bianhao)文本6姓名(xingming)文本10姓名编码(xingmingbianma)文本5性别(xingbie)文本2部门(bumen)文本12职称(zhicheng)文本12住址(zhuzhi)文本40
天道酬勤BusinessSchoolofCentralSouthUniversity基本工资(jibengongzi)数字(二)出勤情况表字段名字段类型字段大小员工编号(yuangongbianhao)文本6月份(yuefen)文本6应出勤(yingchuqin)数字迟到(chidao)数字早退(zaotui)数字请假数字旷工数字实际出勤数字(三)工资表字段名字段类型字段大小员工编号(yuangongbianhao)文本6月份(yuefen)文本6基本工资(jibengongzi)数字奖金(jiangjin)数字实际工资(shijigongzi)数字三、模块图及流程图基本信息输入退出系统考勤系统主模块图:
天道酬勤BusinessSchoolofCentralSouthUniversity帮助说明退出系统密码修改相关查询员工工资员工信息出勤信息考勤管理系统退出系统程序作者打印本页功能特色说明目录验证码新密码旧密码姓名查询出勤查询工资查询输入记录删除添加删除记录输入数据实际工资员工信息输入删除
天道酬勤BusinessSchoolofCentralSouthUniversity主程序流程图:员工信息、出勤、工资数据库系统退出信息系统帮助说明密码修改设置信息工资、出勤、姓名、查询员工工资输入出勤情况输入主界面用户用户名、密码数据库身份验证N员工信息添加修改Y用户登录流程图
天道酬勤BusinessSchoolofCentralSouthUniversity开始选择用户N输入密码是否正确结束进入主界面Y员工信息流程图
天道酬勤BusinessSchoolofCentralSouthUniversity开始显示结果输入内容继续添加结束判断是否添加YN员工出勤流程图
天道酬勤BusinessSchoolofCentralSouthUniversity开始确认添加YN继续添加显示结果输入内容结束员工工资流程图开始
天道酬勤BusinessSchoolofCentralSouthUniversity输入数据N是否齐全?显示实际工资YN是否输入数据?Y显示YY是否删除记录?是否显示该员工记录?NN显示原有记录结束相关查询流程图
天道酬勤BusinessSchoolofCentralSouthUniversity开始输入数据存在?显示NY结束密码修改流程图开始
天道酬勤BusinessSchoolofCentralSouthUniversity输入密码是否正确N输入新密码Y验证新密码N修改成功Y结束四、程序源代码及部分模块界面1.系统登录模块本窗口共添加了3个Label组件,1个ComboBox
天道酬勤BusinessSchoolofCentralSouthUniversity组件,1个Edit组件,1个Bevel组件,1个Image组件,2个BitBtn组件和1个GroupBox组件,并安排布局如下图。完成了登录窗体的设计之后,需要进行事件的分析和处理。首先对主页中的Label3的OnClick和OnMouseDown事件添加以下的代码,功能是当用户将鼠标移动到该组件上时,出现超链接的效果,同时启动邮件收发程序向指定的电子邮件地址发信息。procedureTPassworddlg.Label4Click(Sender:TObject);beginShellExecute(handle,nil,pchar("mailto:wahaha724@126.com"),nil,nil,sw_shownormal);end;procedureTPassworddlg.FormMouseMove(Sender:TObject;Shift:TShiftState;X,Y:Integer);beginLabel4.Font.Color:=clmaroon;end;接下来在系统登录窗体的OnCreate事件中进行INI
天道酬勤BusinessSchoolofCentralSouthUniversity配置文件的设置与初始化。在事件的右边窗格中双击鼠标,即可打空的事件处理句柄,用户可在此进行编辑。程序代码如下。procedureTPassworddlg.FormCreate(Sender:TObject);vardatafile:file;NumRead,NumWrite,ii:integer;siz:longint;FileOk:boolean;buf:string[60];beginFileOk:=true;assignfile(datafile,"sys.ini");iffileexists("sys.ini")=falsethenfileok:=falseelsebeginreset(datafile);siz:=filesize(datafile);ifsiz<24thenfileok:=false;end;iffileok=falsethenbeginrewrite(datafile,1);buf:="system";blockwrite(datafile,buf,12,numwrite);buf:="system";blockwrite(datafile,buf,12,numwrite);buf:="renshi";blockwrite(datafile,buf,12,numwrite);buf:="renshi";blockwrite(datafile,buf,12,numwrite);buf:="caiwu";blockwrite(datafile,buf,12,numwrite);buf:="caiwu";
天道酬勤BusinessSchoolofCentralSouthUniversityblockwrite(datafile,buf,12,numwrite);closefile(datafile);end;reset(datafile,1);repeatblockread(datafile,buf,12,numread);ifnumread>10thencombobox1.Items.Add(buf);blockread(datafile,buf,12,numread);until(numread=0);closefile(datafile);end;在多数的情况下,用户希望输入密码后直接按Enter键就完成登录过程,进入系统主界面。此时,可在登录窗体的OnKeyPress事件中添加以下代码。procedureTPassworddlg.FormKeyPress(Sender:TObject;varKey:Char);beginifkey=#13thenbeginperform(WM_NEXTDLGCTL,0,0);END;end;在系统登录窗口要进行密码的验证,若输入3次不正确,将禁止用户继续登录,并退出应用程序。代码如下:procedureTmainForm.FormActivate(Sender:TObject);varcmptimes,bn:integer;ss1,ss2:string[200];begincmptimes:=1;ifpasswordin=falsethenbegin
天道酬勤BusinessSchoolofCentralSouthUniversitypasswordin:=true;repeatbn:=passworddlg.showmodal;ifbn=mrokthenbeginss1:=passworddlg.combobox1.text;ss2:=passworddlg.password.text;ifcmppassword(ss1,ss2)thencmptimes:=100elsebegincmptimes:=cmptimes+1;ifcmptimes>3thencloseelsemessagedlg("密码错误,请重新输入,一共三次机会!",mtwarning,[mbok],0);end;endelse{bn=mrcancel}begincmptimes:=100;close;end;until(cmptimes>3);ifpassworddlg.ComboBox1.Text="system"thenbeginmainform.UpdateActions;PageControl1.ActivePage:=tabsheet1;DBNavigator1.Visible:=true;endelseifpassworddlg.ComboBox1.text="renshi"thenbeginmainform.UpdateActions;PageControl1.ActivePage:=tabsheet1;DBNavigator1.Visible:=true;tabsheet3.TabVisible:=false;
天道酬勤BusinessSchoolofCentralSouthUniversityendelseifpassworddlg.ComboBox1.text="caiwu"thenbeginmainform.UpdateActions;PageControl1.ActivePage:=tabsheet3;tabsheet1.TabVisible:=false;tabsheet2.TabVisible:=false;endelseifpassworddlg.ComboBox1.text="guest"thenbeginmainform.UpdateActions;PageControl1.ActivePage:=tabsheet1;DBGrid1.Align:=alclient;DBGrid1.ShowHint:=True;DBGrid1.Hint:="您只有浏览的权利!";DBGrid1.ReadOnly:=True;dbgrid2.ReadOnly:=true;bitbtn1.Visible:=false;bitbtn4.Enabled:=false;bitbtn2.Enabled:=false;tabsheet3.TabVisible:=false;tabsheet5.TabVisible:=false;end;end;end;应该注意的是TabSheet组件有一个TabVaisible属性,该属性用来定义该TabSheet组件是否在PageControl组件中可视,通过给该属性赋值,可限制某些用户对某些信息的浏览和修改。系统登录窗口将在主窗体激活前显示。还要在主窗体的private处添加定义如下:privatepasswordin:boolean;
天道酬勤BusinessSchoolofCentralSouthUniversitytruesalary:real;functioncmppassword(s1:string;s2:string):boolean;{Privatedeclarations}此处定义的password函数用来比较密码,代码如下:functiontmainform.cmppassword(s1:string;s2:string):boolean;vardatafile:file;rt:boolean;numread:integer;buf1,buf2:string[30];beginrt:=false;assignfile(datafile,"system.ini");reset(datafile,1);repeatblockread(datafile,buf1,12,numread);blockread(datafile,buf2,12,numread);if(s1=buf1)and(s2=buf2)thenbeginusername:=s1;userpass:=s2;result:=true;exit;end;until(numread=0);closefile(datafile);cmppassword:=rt;end;就此完成了登录窗体。2.员工信息模块本模块的作用是输入和浏览员工的基本信息,而对于人事部门的用户及管理远登陆还要考虑可以更改员工的基本信息。本模块可以分为两部分,使用Bevel
天道酬勤BusinessSchoolofCentralSouthUniversity组件分开,在系统登陆窗体设计中曾使用过这个组件。事实上,Bevel组件是一个修饰组件,允许用户在窗体中显示线、框和框架,常用于分割显示不同应用组件。可设置组件为凹下和凸起状态。Bevel组件有俩个最重要的属性Shape属性和Style属性。Shape属性该属性定义Bevel组件在窗体中显示的形状。Style该属性确定Bevel组件的显示形状是凹下还是凸起,若其值为bsLowered,则为凹下状态;若值为bsRasised,则Bevel组件呈凸起状态。在Bevel2中添加八个Label组件,六个Edit组件和两个ComboBox组件。完成设置后,再添加一个BitBtn组件BitBtn1,并设置Kind属性为bkOK,camption属性为“输入记录”。在员工信息模块的右半部分添加一个DBGrid组件,一个DataSourcu组件,一个Table组件和一个DBNavigator组件。不是任何一个用户登陆后都可以对员工基本信息进行修改的,因此将Dbnavigator组件的Visible属性设置为False,而对system和renshi两个用户,则在程序运行时,将Visible属性设置为True.根据需要,有时要在数据表内增加一些自定义的字段,常常是根据表中其他字段动态地计算出来的,这些字段可称为计算字段。计算字段是在程序设计中常用的一个手段,它在程序运行时生成,在程序结束时消失,不会在数据表中占用空间。
天道酬勤BusinessSchoolofCentralSouthUniversity最后指出的是,员工编号一般是数字字符,必须要强制用户输入数字字符而不能输入其他字符。Style属性确定了下图输入编号,姓名,性别,职称等如下图运行。
天道酬勤BusinessSchoolofCentralSouthUniversity添加一个BitBtn组件,Caption属性为“输入记录”,代码如下:if(combobox1.text="")or(edit1.text="")or(edit2.text="")or(edit3.text="")or(edit4.text="")or(edit5.text="")or(combobox2.text="")thenbeginMessageDlg("资料输入不全!",mtWarning,[mbOk],0);exit;end;table1.active:=true;withtable1dobeginappend;FieldValues["bianhao"]:=trim(edit1.text);FieldValues["xingming"]:=trim(edit2.text);FieldValues["sex"]:=trim(combobox1.text);fieldvalues["bianma"]:=trim(edit16.Text);FieldValues["zhicheng"]:=trim(edit3.text);FieldValues["bumen"]:=trim(combobox2.text);FieldValues["zhuzhi"]:=trim(edit4.text);FieldValues["gongzi"]:=strtofloat(trim(edit5.text));Post;end;combobox1.text:="男";combobox2.text:="学生办公室";edit1.Text:="";
天道酬勤BusinessSchoolofCentralSouthUniversityedit2.Text:="";edit3.Text:="";edit4.Text:="";edit5.Text:="";edit16.Text:="";end;连接数据库得到如图:Field
天道酬勤BusinessSchoolofCentralSouthUniversity组件有称为字段组件或字段对象,它对应着数据表的字段。它是在打开数据表时动态产生的,并在数据表关闭时自动消失。改组件为字段对象封装了一些行为,常常用于改变数据表中的字段值、转换字段类型、验证用户输入值、定义字段如何显示和编辑、通过在OnCalcFields事件响应过程中编写代码、计算字段以及查询字段。通过字段编辑器可以建立永久性的Field列表Dellphi应用程序使用这些永久性的字段会加入到程序库单元的Tform类型定义中,即使数据表中的基本结构发生了变化。这些字段也一直保留如果原来的程序对象不存在了,那就是Delphi应用程序在运行的过程中给出了错误信息。在Table组件中,Delphi提供了FieldByName方法,可以通过字段名访问字段对象,从而更加方便。永久对象的访问比动态的简单。用户通过Field对象的Value进行从字段对象中读取字段值给变量赋值必须保证其数据类型相匹配,否则会出错guest用户只是作为普通员工的登录。对于员工基本信息数据库只有浏览的权利,没有修改,移动的权利首先选中DBGridl组件,然后选择EditBringtoFront菜单命令,将该组件设置前,然后在主窗体中添加代码。执行程序,这时以guest用户身份登录,则只有DBGrid组件存在,而且起数据是只读的。运行如窗口所示
天道酬勤BusinessSchoolofCentralSouthUniversity3.出勤信息模块出勤信息模块的作用是输入、浏览以及修改员工的出勤信息,并对不同身份登陆的用户提供功能限制。本页使用DbChart组件用来演示员工的缺勤情况,还可实现与“员工基本信息表”的表间联系。本模块主要用到DBChart组件,它来源于Tchart,并继承了Tchart所有的功能。Tchart是TeeChart库中最重要的一个组件,该组件从Tpanel类中继承了所有的属性和方法。DBChart组件不能直接显示各种图表,而要依靠它的子成员Series来实现图表的绘制。DBChart组件的属性、子属性繁多复杂,对属性的设置可以通过EditDBChart对话框来实现。在“出勤信息”TabSheet上添加一个DBChart组件,一个DBGrid组件,一个bevel组件。
天道酬勤BusinessSchoolofCentralSouthUniversity很多时候,用户需要在了解某位员工出勤情况的时候,能够随时查看该员工的基本信息。对于“员工信息”按及到主从表的问题。钮的OnClick事件的处理,涉若在程序设计期就想实现这种关联,用户可在设置MasterSource属性后,单击MasterFields属性右边的“…”按钮,打开:“FiedlLinkDecigner”对话框,在DetailFields和MasterFields列表中建立关联的字段,单击“Add”按钮,则在JoinedFields列表框中就会出现建立关联的字段由于保证各个Tabsheet的独立性,因此最好在代码中实现这种主从表关系,即设置MasterSource和MasterFields属性。设置一个出勤信息按钮而对于Guest用户该按钮是不可用的。单击该按钮可输入某位员工的的出勤信息,输入完毕后,在DBGrid2中将显示添加的记录。单击工具栏上的NewForm按钮新建“输入出勤信息”窗体。打开DBChart的3种方法1.双击DBChart组件2.单击SeriesList属性右边的“…”按钮3.右键单击DBChart组件,弹出的快捷键中选择“EditChart…”。
天道酬勤BusinessSchoolofCentralSouthUniversityDBChart的属性设置如图所示DBChart运行后如下图:AnimatedZoom属性:是一个布尔值,为True,则DBChart组件可以动态的大与缩小。
天道酬勤BusinessSchoolofCentralSouthUniversityAnimatedZoomSteps属性:确定Zoom的部数。是动画属性。SeriesList属性:DBChar组件只提供了一个放置图层表的位置,而本身并不能显示图表,必须在组件中添加。Title属性:用来确定DBChar组件中的标题文本。Legend属性:定义图表的比例设置完DBChart后,连接数据库,数据库如图所示出勤信息模块记录了,公司员工出勤,请假,旷工,迟到与工资之间的联系,它取决于你的工资还有奖金。让管理人员很方便的来管理好公司员工的出勤情况!能更好的让员工们自觉的上班下班!员工出勤信息模块运行如下图:“输入出勤信息”代码如下:
天道酬勤BusinessSchoolofCentralSouthUniversityprocedureTmainForm.BitBtn4Click(Sender:TObject);varrn:integer;beginformchuqin.showmodal;ifrn=mrokthendbgrid2.SetFocus;table2.close;table2.Open;end;“删除信息记录”代码如下:procedureTmainForm.BitBtn2Click(Sender:TObject);varbn:integer;beginbn:=messagedlg("真的要删除?",mtconfirmation,[mbOK,mbcancel],0);ifbn=mrokthentable2.Delete;end;“员工信息”代码如下:procedureTmainForm.BitBtn3Click(Sender:TObject);begintable1.Open;table1.MasterSource:=datasource2;table1.MasterFields:="bianhao";pagecontrol1.ActivePage:=tabsheet1;bitbtn12.Visible:=true;bitbtn12.BringToFront;bitbtn12.SetFocus;dbgrid1.Align:=alclient;dbgrid1.ReadOnly:=true;end;在输入出勤记录中添加一个信息录入,如下图:
天道酬勤BusinessSchoolofCentralSouthUniversity在添加按钮的OnClick事件中添加如下所示代码。procedureTFormchuqin.BitBtn1Click(Sender:TObject);beginifedit1.text=""thenbeginMessageDlg("资料输入不全!",mtWarning,[mbOk],0);exit;end;table1.Open;withtable1dobeginappend;fieldbyname("bianhao").value:=trim(edit1.text);fieldbyname("yuefen").value:=trim("2001"+combobox1.text);fieldbyname("ychuqin").value:=strtoint(trim(edit4.Text));fieldbyname("chidao").value:=strtoint(trim(edit2.text));fieldbyname("zaotui").value:=strtoint(trim(edit3.Text));fieldbyname("qingjia").value:=strtoint(trim(edit5.Text));fieldbyname("kuanggong").value:=strtoint(trim(edit6.Text));post;end;end;4.员工工资模块在窗体中添加1个Panel组件,1个Bevel组件,1个RadioGroup组件,1个ComboBox组件,1个Table组件,1个DataSource组件。4个objectBitBtn8:
天道酬勤BusinessSchoolofCentralSouthUniversityTbitBtn按钮(实际工资、输入数据、删除记录、员工信息),4个Edit按钮(编号、基本工资、奖金、和实际工资的输入)和5个Label组件(编号、月份、基本工资、奖金、和实际工资)。并设计它们的属性。完成设计后,设计的窗体如下图所示:RadioGroup组件是一个代表RadioButton的组,它将几个RadioButton组合在一起,按钮之间在选择上是相互排斥的,当选择其中一个RadioButton
天道酬勤BusinessSchoolofCentralSouthUniversity时,其他按钮的选择状态即被清除。运用该组件,在多选一的事务处理中,是相当有意义的。该组件的继承关系为:TobjoGroup-Tpersistent-Tcomponent-Tcontrol-TwinControl-TcustomControl-TcustomGroupBox-Tcustom-RadioGroup,它有几个重要的属性:▪Columns属性:该属性定义组中的列数,其值可以从1到16,系统默认值为1。▪Items属性:该属性定义各个RadioButton的标题,可以在程序设计时编辑。▪ItemIndex属性:该属性表示用户选择了哪一个RadioButton。它是一个索引值,第一个按钮的索引值为0,第二个为1,依次类推。若返回值为-1,表示用户没有选择按钮。事件分析处理工资的计算分为两部分:一部分是员工的基本工资,另一部分是员工的奖金,与员工出勤之间有较大关系。假定最后的实际工资计算公式为:实际工资=基本工资+奖金×调整系数(出勤)。在“实际工资”按钮的OnClick事件中添加如下的代码:procedureTmainForm.BitBtn5Click(Sender:TObject);beginif(combobox3.text="")or(edit6.text="")or(edit7.text="")or(edit8.text="")thenbeginMessageDlg("资料输入不全!",mtWarning,[mbOk],0);
天道酬勤BusinessSchoolofCentralSouthUniversityexit;end;bitbtn6.Enabled:=true;//激活"输入数据"按钮ifradiogroup1.ItemIndex=0thentruesalary:=strtofloat(edit7.text)+strtofloat(edit8.Text)*0.3;ifradiogroup1.itemindex=1thentruesalary:=strtofloat(edit7.text)+strtofloat(edit8.Text)*0.8;ifradiogroup1.itemindex=2thentruesalary:=strtofloat(edit7.text)+strtofloat(edit8.Text)*1.0;ifradiogroup1.itemindex=3thentruesalary:=strtofloat(edit7.text)+strtofloat(edit8.Text)*1.2;edit9.text:="";edit9.text:=floattostr(truesalary);showmessage("该员工本月的实际工资为"+floattostr(truesalary));end;其中的truesalary变量已在单元文件的private部分定义,程序在执行时,将显示本月该员工的实际工资,同时将该实际工资值添加到“实际工资”编辑框中。另外,“输入数据”按钮的设计状态为不激活,在单击“实际工资”按钮后,则激活该按钮,以便在右边的DBGrid组件中输入员工的工资数据,故加入了“bitbtn6.Enabled:=True;”这行代码。事件的执行结果如下:其次,在“输入数据”按钮的OnClick事件中添加如下的代码,其目的是将用户输入的数据添加到数据表中,同时在DBGrid
天道酬勤BusinessSchoolofCentralSouthUniversity组件中显示出来。procedureTmainForm.BitBtn6Click(Sender:TObject);beginif(combobox3.text="")or(edit6.text="")or(edit7.text="")or(edit8.text="")thenbeginMessageDlg("资料输入不全!",mtWarning,[mbOk],0);exit;end;table3.active:=true;//打开表withtable3dobeginappend;//在末尾添加空记录FieldValues["bianhao"]:=trim(edit6.text);FieldValues["yuefen"]:=trim("2001"+combobox3.text);FieldValues["jiangjin"]:=strtofloat(trim(edit8.text));FieldValues["gongzi"]:=strtofloat(trim(edit7.text));FieldValues["sgongzi"]:=strtofloat(trim(edit9.Text));Post;end;combobox3.text:="";//以下清空用户输入信息edit6.Text:="";edit7.Text:="";edit8.Text:="";edit9.Text:="";bitbtn6.Enabled:=false;//使"输入数据"按钮处于不活动状态end;第三,在“删除记录”按钮的OnClick事件中添加如下的代码,目的是使有权限的用户(system和caiwu)删除员工的工资信息记录,用户单击该按钮,则执行结果如下图:
天道酬勤BusinessSchoolofCentralSouthUniversityprocedureTmainForm.BitBtn7Click(Sender:TObject);varbn:integer;beginbn:=messagedlg("真的要删除吗?",mtconfirmation,[mbOK,mbcancel],0);ifbn=mrokthentable3.Delete;//删除记录end;最后,与“出勤信息”页相似,对于指定编号的用户可以查看其对应的员工信息,只需在“员工信息”按钮的OnClick事件中添加如下的代码:procedureTmainForm.BitBtn8Click(Sender:TObject);begintable1.Open;table1.MasterSource:=datasource3;table1.MasterFields:="bianhao";//设置主从表pagecontrol1.ActivePage:=tabsheet1;//切换到员工信息页bitbtn13.Visible:=true;//使"返回"按钮可见bitbtn13.BringToFront;bitbtn13.SetFocus;dbgrid1.Align:=alclient;dbgrid1.ReadOnly:=true;end;5.相关查询模块
天道酬勤BusinessSchoolofCentralSouthUniversity本页可实现员工工资和出勤查询,还可以依据员工姓名编码查询该员工的基本信息。(关于工资、出勤、姓名)的流程图。本页在TabSheet4上添加3个GroupBox组件,3个BitBtn组件,3个DBGrid组件,3个Query组件,3个DataSouree组件,4个UpDown组件和7个Label组件。添加组件后如下图:本页的事件处理是3个位图按钮的OnClick事件,单击这些按钮完成各自的查询功能。在工资查询部分的位图按钮的OnClick事件添加以下代码:procedureTmainForm.BitBtn11Click(Sender:TObject);beginwithquery2do
天道酬勤BusinessSchoolofCentralSouthUniversitybeginclose;//关闭QuerySQL.clear;//清空SQL属性sql.Add("select*fromsalarywheresgongzibetween:p1and:p2");//添加SQL语句params[0].AsInteger:=strtoint(trim(edit13.Text));params[1].Asinteger:=strtoint(trim(edit14.Text));//SQL参数传递prepare;//准备查询open;//开始查询end;edit13.Text:="";//清空编辑框内容edit14.Text:="";end;其次,在Query组件的SQL属性中添加了查询语句:select*fromsalarywheresgongzibetween:p1and:p2,其中查询变量p1和p2由用户在两个编辑框中输入的内容赋值,最后查询结果通过DBGrid组件显示。在出勤查询部分的位图按钮的OnClick事件中添加以下代码:procedureTmainForm.BitBtn10Click(Sender:TObject);beginwithquery3dobeginclose;//关闭Querysql.Clear;//清空SQL属性sql.Add("select*fromondutywhere(ychuqin-chidao*0.5-zaotui*0.5-qingjia*0.3-kuanggong)between:p1and:p2");//添加SQL语句query3.params[0].AsInteger:=strtoint(trim(edit11.Text));query3.params[1].Asinteger:=strtoint(trim(edit12.Text));//SQL参数传递query3.Active:=true;//开始查询end;end;
天道酬勤BusinessSchoolofCentralSouthUniversity最后在“开始查询”按钮的OnClick事件中添加以下代码,通过姓名编码查找某位员工的基本信息。procedureTmainForm.BitBtn9Click(Sender:TObject);beginwithquery1dobeginclose;//关闭Querysql.Clear;//清空SQL属性sql.Add("select*frominformation.db");//添加SQL语句sql.Add("whereBianma=:p1");parambyname("p1").asstring:=trim(edit15.Text);//SQL参数传递prepare;//准备查询open;//开始查询end;edit15.Text:="";end;edit15.Text:="";end;输入代码之后,单击工具栏上的“Run”快捷键或按F9
天道酬勤BusinessSchoolofCentralSouthUniversity键,用户登录之后切换到“相关查询”页,输入一定的查询条件,就可获得如下图所显示结果。6.密码修改模块本模块的设计使用了Delphi的Cabvas类,用于滚动显示“密码使用须知”,增加程序的易用性。(1).实现滚动文字基本思路:选择一个有Tcavas类的组件,如Image,然后用某种颜色填充画布,接着使用其他颜色显示固定尺寸的字符串,同时使用Timer组件控制不断地改变字符串的位置。由于原来位置的字符串不能自动消失,所以需要用颜色覆盖多余部分,这样即可实现平滑的文字滚动效果。Ststem页的Timer组件是一个定时器组件,如果用户指定了一定的时间间隔,应用系统每阁一定的时间就触发一次OnTimer事件,通过编写OnTimer事件句柄,就可以实现定时处理某些动作。该组件的继承关系为:TObject-Tpersistent-Tcomponent。Timer组件有两个重要的属性Enabled和Interval。Enabled属性:该属性是个布尔值量,用于激活定时器。若其值为True,则定时器每阁一定的时间间隔,就触发一次OnTimer事件。
天道酬勤BusinessSchoolofCentralSouthUniversityInterval属性:该属性用于定义时间间隔,以毫秒为单位,默认值为1000。若该属性为0,则表示禁止定时器。在TabSheet5中添加1个GroupBox组件,1个Image组件,1个Timer组件和2个Label组件。其中的Label组件用于显示登录的用户名。添加组件之后的才窗体如下图:在TabSheet5的OnShow事件中添加如下代码:procedureTmainForm.TabSheet5Show(Sender:TObject);begintimer1.Enabled:=true;timer1.Interval:=50;image1.BringToFront;x:=image1.Height+20;ifusername="system"then
天道酬勤BusinessSchoolofCentralSouthUniversitylabel25.Caption:="系统管理员";ifusername="renshi"thenlabel25.Caption:="人事部门员工";ifusername="caiwu"thenlabel25.Caption:="财务部门员工";tabsheet5.Repaint;image1.Canvas.Brush.Color:=clbtnface;pic:=rect(0,0,image1.Width,image1.Height);image1.Canvas.FillRect(pic);end;在Timer的OnTimer事件中添加如下的代码,用于实现滚动文字效果:procedureTmainForm.Timer1Timer(Sender:TObject);beginx:=x-1;ifx<-160thenx:=image1.Height+20;image1.Canvas.Font.Size:=11;image1.canvas.Font.color:=clblue;image1.Canvas.TextOut(10,x,"有关本系统密码设置说明");image1.Canvas.Font.color:=clblack;image1.canvas.TextOut(10,x+15,"系统默认创建四个账户");image1.canvas.TextOut(10,x+30,"设置密码时,请遵循以下策略:");image1.canvas.TextOut(10,x+45,"1.用户首次登录,立即修改密码;");image1.canvas.TextOut(10,x+60,"2.最好不要使用生日、电话等");image1.canvas.TextOut(10,x+75,"别人熟悉的名称或数字;");image1.canvas.TextOut(10,x+90,"3.密码不要与用户名相同;");image1.canvas.TextOut(10,x+105,"4.最好使用字母和数字的混合;");image1.canvas.TextOut(10,x+120,"5.隔一段时间要修改密码;");w:=image1.Canvas.TextWidth("5.隔一段时间要修改密码;");h:=image1.Canvas.TextHeight("5.隔一段时间要修改密码;");image1.Canvas.Pen.Color:=clbtnface;image1.Canvas.MoveTo(10,h+x+15-2);image1.Canvas.LineTo(10+w,h+x+15-2);end;
天道酬勤BusinessSchoolofCentralSouthUniversity程序中的变量x,w,h需要定义为全局变量,即在implementation模块前定义(Varx,w,h:integer;pic:Trect;)。完成以上代码可实现滚动文字效果,如下图:(2).其他设计本项的主要工作是完成密码修改工作。在“密码修改”页里添加1个GroupBox组件,1个BitBtn组件,3个Label组件和3个Edit组件。添加如上代码后效果如下图:
天道酬勤BusinessSchoolofCentralSouthUniversity接下来,需要进行事件分析处理。由于在“旧密码“编辑框(Edit10)中有输错的可能,因此在其OnExit事件添加如下代码,以便给出提示。procedureTmainForm.Edit10Exit(Sender:TObject);begina1:=trim(edit10.Text);ifuserpass<>a1thenbeginMessagedlg("旧密码不正确,请重新输入!",mtwarning,[mbok],0);edit10.Text:="";edit10.SetFocus;end;end;旧密码输入错误提示如下图:
天道酬勤BusinessSchoolofCentralSouthUniversity同样,在“验证新密码”编辑框中的字符串要与“新密码”编辑框中的字符串完全一致,否则也是不允许的。最后,需要在“确定”按钮的OnClick事件中完成密码修改工作,添加如下代码:procedureTmainForm.BitBtn14Click(Sender:TObject);vardf:file;numread:integer;beginassignfile(df,"system.ini");reset(df,1);whilenoteof(df)dobeginblockread(df,ss,12,numread);ifss=usernamethenbeginblockwrite(df,a2,12,numread);messagedlg("您的密码已经修改!",mtconfirmation,[mbok],0);exit;end;blockread(df,ss,12,numread);end;closefile(df);end;
天道酬勤BusinessSchoolofCentralSouthUniversity修改密码结果窗体如下图:7.帮助说明模块帮助说明模块采用的是采用的是流行的双窗格形式,易于浏览和演示。该界面是TreeView和RichEdit组件的综合应用事例。(1).TreeViewTreeView组件是一个使用广泛的组件它以树状结构方式显示列表信息。典型的应用为Windows下的资源管理器。TreeView组件的树状结构中有一系列的节点,每个接点包括标签和一个可选图象,每个接点又有一系列的子接点,用鼠标,可以将接点展开和重叠。TreeView组件的重要可由TreeViewItemsEditor对话框来完成。双击TreeView组件或单击其Items属性右边的“…”按钮,均可以打开这个对话框,向TreeView组件中添加列表内容。如下图:
天道酬勤BusinessSchoolofCentralSouthUniversity单击NewItem或NewSubItem按钮可建立不同的新列表,同时在Text编辑框中输入名称,并选择合适的ImageIndex指定位图图象,完成设置后点OK。TreeView组件的几个重要属性、事件和方法如下:Images属性:该属性确定与TreeView组件节点位图图标相连的图像列表。可以为每一个节点添加一个关联的图标,更加直观的表现项目的内容。Items属性:该属性的类型为TtreeNodes,保存着TreeView组件中的独立节点列表。要在运行期间访问某个节点,可加入代码:My:=TreeView1。Items[1];Selected属性:当用户选择从一个节点到另一个节点改变时,触发该事件。
天道酬勤BusinessSchoolofCentralSouthUniversity在本程序中,还需要添加一个ImageList组件,打开图象列表对话框,然后单击“Add“按钮,将合适的位图图标加入到“Images”列表框中,如下图,系统会自动为每个位图增加索引接下来,打开TreeViewItemsEditor对话框,指定Image
天道酬勤BusinessSchoolofCentralSouthUniversityIndex为2,即为手形图标,然后单击OK按钮,关闭该对话框。在TreeView的Images属性中选择ImageList1。则此时的窗口如下:设置RichEdit组件RichEdit组件是一个标准的RTF编辑器,它允许用户输入变化的字体形式和段落格式的文本。RichEdit组件的几个重要属性和方法如下:Lines属性:该属性定义文本框中的一个独立行。Lines是一个Tstrings类型的对象,运用它的方法可以对字符串进行增加、删除、修改等操作。Paragraph属性:该属性用于设置段落格式。段落格式是一个TparaAttributes类型的对象。PlainText属性:该属性用来定义文本的格式,是一个无格式文本还是RTF格式的文本。SelText属性:该属性表示所选择的文本字符串。Clear方法:该方法用于删除文本框的所有文本。Print方法:该方法用于打印文本框内的内容。其定义为:procedurePrint(constCaption:string);其中的Caption参数用于定义出现在打印纸上的标题名。
天道酬勤BusinessSchoolofCentralSouthUniversity本程序中添加一个RichEdit组件和一个BitBtn组件。在“打印本页”按钮的OnClick事件中添加代码,完成用户打印需求,并将打印纸的标题设置为“考勤信息管理系统-用户帮助”。3.事件的分析处理TreeView组件的AbsoluteIndex属性是指某个接点的绝对位置,也就是该接点与第一个接点之间的距离,在Delphi中第一个接点为Item[0],其他依次类推。另外,由于RichEdit组件的Lines属性为TStrings类型,故可以使用TStrings类型的方法LoadFromFile,用指定的文件填充文本。LoadFromFile方法定义为:procedureLoadFromFile;本程序代码中载入的文本文件都是事选编辑好的文档,注意他们的保存位置应应与源程序在一个目录下,编译时才会出错。最后完成的“帮助说明”页的执行结果如下图:
天道酬勤BusinessSchoolofCentralSouthUniversity“打印本页”代码如下:procedureTmainForm.BitBtn15Click(Sender:TObject);beginrichedit1.Print("考勤信息管理系统-用户帮助");end;procedureTmainForm.Button1Click(Sender:TObject);varx:cardinal;beginx:=winexec("rundll32.exeshell32.dll,Control_RunDLLSysdm.cpl,,0",9);end;procedureTmainForm.Button3Click(Sender:TObject);varr:integer;
天道酬勤BusinessSchoolofCentralSouthUniversitybeginr:=messagedlg("真要退出系统吗?",mtconfirmation,[mbOK,mbCancel],0);ifr=mrokthenapplication.Terminateelseexit;end;8.退出系统模块本模块的设计用于提供附加信息和终止程序运行的功能。在TabSheet7页面上添加一个Label组件,1个Bevel组件和3个Button组件。设置完它们的属性后,其设计结果窗口参见下图:
天道酬勤BusinessSchoolofCentralSouthUniversity接下来,在“系统信息”按钮的OnClick事件中添加如下的代码,用于显示Windows控制面板中的“系统”属性。在“程序作者”按钮的OnClick事件中添加代码,显示有关程序作者的信息。最后在“退出系统”按钮的OnClick事件中添加代码,结束程序的运行。“系统信息”代码如下:procedureTmainForm.Button1Click(Sender:TObject);varx:cardinal;beginx:=winexec("rundll32.exeshell32.dll,Control_RunDLLSysdm.cpl,,0",9);end;运行如下图:
天道酬勤BusinessSchoolofCentralSouthUniversity“程序作者”代码如下:procedureTmainForm.Button2Click(Sender:TObject);beginzuozheform.showmodal;end;运行如下图:“退出系统”代码如下:procedureTmainForm.Button3Click(Sender:TObject);varr:integer;beginr:=messagedlg("真要退出系统吗?",mtconfirmation,[mbOK,mbCancel],0);ifr=mrokthenapplication.Terminateelseexit;end;
天道酬勤BusinessSchoolofCentralSouthUniversity运行如下图:
天道酬勤BusinessSchoolofCentralSouthUniversity五、附录1.开发人员分工名单:陈宇(登录界面、密码修改模块、员工信息、出勤信息模块)吴慧慧(员工工资、相关查询模块、数据库制作)谢婧(帮助说明、退出系统模块、PPT制作)2.系统开发参考文献《Delphi软件项目开发实例》◆电子工业出版社□赵万军王兴东等编著《Delphi数据库系统设计与开发》◆清华大学出版社□张春林马成勇刘均编著《Delphi数据库系统开发实例与解析》◆高等教育出版社□张翰文齐锦刚王建中编著
天道酬勤BusinessSchoolofCentralSouthUniversity六、结束语在使用DELPHI制作考勤信息管理系统中,我们遇到了很多问题,都在制作过程中逐一解决,由于我们所掌握的知识有限,我们制作的考勤信息管理系统还有不足,再以后的学习过程中我们会不断努力,去完善自己,能做出更好的作品。在这一个月的制作过程中,我们学到了比以前更多的知识,得到了许多朋友的帮助。计算机在不断发展,计算机语言也在不断的更新,DELPHI提供了灵活的可视化设计工具,将可视化界面与面向对象技术完美、紧密的结合起来,并封装了Windows编程的复杂性。它的优势之一是开发数据库应用程序。在这方面,它不但提供了大量的数据库组件并配有数据库引擎BDE,能通过SQLLinks和ODBC等访问多种数据库,同时提供了强大的开发网络数据库的能力。面向对象程序设计是Delphi开发程序的基础。它将人们认识世界过程中普遍采用的思维方法应用到程序设计中。面向对象的程序设计涉及到对象、封装、类、继承和多态等几个基本概念。在制作考勤信息管理系统中,我们遇到了很多的问题,感谢魏淇、小潘子、Michael给予我们的帮助!陈宇2006.10.7
您可能关注的文档
- 计算机应用专业毕业论文--考勤管理系统的设计
- 毕业设计(论文)-基于C++的考勤管理模式研究
- 毕业设计(论文)-员工考勤管理系统
- 毕业论文--企业考勤管理系统
- 学校考勤管理细则
- 数据库课程设计-职工考勤管理信息系统
- 毕业设计(论文)-C++6.0考勤管理系统设计
- (精品)中控考勤管理系统标准版操作演示图
- 毕业设计(论文)-ASP企业考勤管理系统
- 考勤管理系统设计开题报告
- 考勤管理系统
- 关于加强员工考勤管理工作的几点思考
- 5考勤管理业务流程第五章
- 毕业论文--基于指纹识别技术的考勤管理系统
- 毕业论文--基于指纹识别的考勤管理系统
- 毕业论文--公司考勤管理系统
- 2018最新公司考勤管理制度-(8593)
- 毕业论文--基于WEB的学生考勤管理系统