基于cs模式的人事工资管理系统的设计与实现_第1页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图11主界面程序流程图6.4日常工作模块的设计日常工作主菜单包括人事管理模块,工资管理模块基本模块,人事管理模块又包括员工基本信息维护和员工基本信息查询,可以对其进行打印,数据导出等操作;工资管理模块有出盘和工资短信两个基本功能,其中出盘是按所规定的格式生成与银行进行数据交换的软件,一般为文本文件,这个功能块对整个系统来说至关重要,是联系公司,银行以及公司员工的纽带。6.4.11、功能介绍:多数据库表之间的链接操作是本模块的设计重点,在生成员工工资信息的过程中,为了能够显示工资数据,系统要建立基本参数表、员工资料表、员工薪水账目表之间的连接操作,为了能够按银行格式输出,此模块将要实现的功能是:选择月份出盘,打印工资清单,出软盘与银行接口,一般不准删除历史月份,不能修改,只能查询,如需对本月工资信息进行维护,见新员工工资新增、员工工资修改。成功失败失败是选取出盘的月份确认出盘否成功失败失败是选取出盘的月份确认出盘否是退出选择存盘路径否将该月的数据作为下个月的初始数据插入Ygxjjgb中回滚在Kjcsb中插入一条记录,表示该月已经出盘成功数据存盘成功图12出盘程序流程图出盘回滚如图13所示。出盘发生错误出盘发生错误如果Ygxjjgb已经存在下月数据,删除如果Cjcsb存在该月出盘成功标志,删除图13出盘回滚程序流程图3、程序执行步骤(1)生成出盘数据列表;(2)查看是否有可出盘的数据,有则执行保存,没有给出提示信息;(3)选择出盘路径,执行出盘操作,否则失败;(4)将本月记录作为下月工资初始数据,插入员工薪金结构表,修改控制参数表中的出盘成功标志;(5)若出盘失败,进行出盘回滚,删除存在的下月数据记录以及本月的出盘标志。6.4.2工资查询功能是通过输入月份,使用SQL的多连接查询功能,分别从员工资料表,薪金结构表和基本参数表中显示员工号,员工姓名,以及薪水账目。数据通过DBGrid控件显示出来,最后一行有合计账目显示。此功能结果给工资管理员对工资表的打印,当月工资的出盘提供了原始数据,实现的关键在于SQL的多连接查询功能。下面介绍程序设计步骤。(1)清空DBGrid控件中显示信息。(2)在基本参数表中查询薪水账目,将薪水账目作为显示标题。(3)从员工资料表和薪金结构表中查找与输入月份对应的员工号和姓名,并显示出来。(4)从员工资料表、薪金结构表、基本参数表中连接查询员工号,薪水账目,数目。(5)数据显示表中各列求和统计。6.5系统维护模块设计系统维护模块主要包括部门信息维护、职务信息维护、职称信息维护、工资账目维护、用户管理等几个方面。主要是对员工部门信息、职务信息、职称信息、工资账目信息进行增加、删除等功能,不能修改,若要修改,先删除再增加,当然删除操作会使数据不一致,系统会给以提示。用户管理主要实现新增、删除用户、修改密码等功能。程序流程如下:(1)初始状态下,输入框设置为无效;(2)点击新增按钮后,在输入框中输入要新增的内容,点击提交按钮将信息提交到数据库中;(3)选择某行后,点击删除按钮,系统提示,删除将导致数据的不一致,然后交由用户选择是否删除,若点确定,将此记录从数据库中删除。6.5.1为了保证系统安全,系统初始化时建立一个系统用户其用户名和密码均为小字的system,只有此用户才具有用户管理的功能,其它用户不能访问这个界面,如果要新增用户、删除用户、修改密码只能以此用户登录,当然系统用户可以修改自己的密码,但不能删除自己。修改口令时要输入两次,只有两次一致时才能修改成功。数据来源用户口令表。6.5.2工资结构维护模块要求在同一窗口上实现新员工工资新增和员工工资结构调整,通过在出盘窗口上点击右键选择是新增还是修改员工资信息,动态改变提交按钮上显示的信息,实现调整员工工资结构的目的。使用该功能时,输入员工号按回车,触发查询事件,从基本参数表中取出工资账目信息(包括ID、名称、关系)再从薪水账目中取出数据,显示在表格中,直接在网格中对信息进行修改,系统自动计算应发工资和实发工资。6.6报表系统模块设计采用饼图分析公司的人事状况,实现按性别、职称、职务、学历、部门五种情况分析公司人员的分布情况,直观的分析了公司的人力资源情况,用以辅助公司领导安排人力资源计划,采用DBChart控件可以方便的实现。7系统的实现7.1登陆界面的实现与运行1、登陆窗体实现流程(1)用户输入账号和密码;(2)系统判断密码是否为空(3)系统根据用户名取出用户口令,用户名若不存在,从(1)循环;若密码错误,N=+1,从(2)循环;(4)判断N≤3,若为真,登陆成功。2、模块实现代码Ifedit2.text=”then//判断密码是否输入为空Application.MessageBox(‘密码不能为空,请重新输入!’,’系统提示’,mb_IconInformation+mb_OK);query1.sql.add(‘selectpswdfromyhklbwheredlyh=’+”””+trim(edit1.text)+”””);//根据用户名从用户口令表中取出用户口令Ifedit2.text<>query1.fieldbyname(‘pswd’).asstringiferr_cou=2then//判断是否三次输入错误application.messagebox(‘三次登录的用户名或密码错误’,’系统退出’,mb_IconInformation+mb_OK);frm_main.close;//关闭主窗口,退出系统Application.MessageBox(‘密码或工号不正确’,’请重新输入’,mb_IconInformation+mb_OK);//若密码输入错误,提示重新输入err_cou:=err_cou+1;//输入次数加1dluser:=edit1.text;//给变量赋值,记录登录用户,供其它程序使用3、登陆界面是在系统启动界面消失后出现的,其运行画面如图15所示。7.2数据库设置界面的实现1、数据库设置界面的实现实际上就是系统C/S模式实现的过程,它实现的主要功能为连接局域网上的数据库。界面包括IP地址的设置文本框、服务器设置文本框、数据库设置文本框和三个基本按钮。图15登陆界面2、数据库连接运行窗口如图16所示。图16数据库连接设置窗口图3、数据库设置功能的实现流程及思路(1)填写数据库连接信息;包括IP地址,服务器名称,数据库名称信息的输入。(2)测试连接。首先测试是否能连接到主机地址,然后测试是否能连接到数据库服务器,最后测试数据库服务器中是否有用户所设置的数据库。(3)若连接成功,则将系统中所有ADOConnection组件中的属性修改为新设置的数据,然后退出系统重新登陆。(4)若连接不成功,返回出错信息,并提示用户重新输入连接设置信息。4、实现关键代码:ifadoquery1.connection=falsethenvs_Host:=edit1.text+’.’+edit2.text+’.’+edit3.text+’.’edit4.text;vs_DatabaseName:=edit5.text;withADOConnection1doProvider:='SQLOLEDB.1';//数据库:SQLServerProperties['DataSource'].Value:=vs_Host;//服务器地址Properties['InitialCatalog'].Value:=vs_DatabaseName;//数据库名ADOConnection1.LoginPrompt:=False;ADOConnection1.Provider:='SQLOLEDB.1';Except//未连接上,弹出配置窗口,重新连接showmessage('无法连接数据库!');elseapplication.MessageBox(pchar('无法连接数据库!'),'错误信息',16);application.Terminate;7.3主界面实现与运行7.3.1功能介绍主界面的实现就是用一个MainMenu控件,一个Timer控件,一个ImageList控件来完成的,包括日常工作,系统维护,报表系统几个基本菜单,日常工作包括人事管理,工资管理两个子模块,系统维护包括部门信息维护,工资结构信息维护,用户信息维护等4个子模块,报表系统包括工资报表的生成,人事状况饼图的生成两个子模块。其中工资出盘,工资报表生成模块,工资查询模块是本系统的重要功能。每个基本功能都有对应的快捷图标显示,使用非常方便。7.3.2运行界面主界面运行图如图17所示。7.4员工资料查询功能实现与运行7.4.1功能介绍可以根据不同的条件组合,查询员工的基本信息,查询条件包括所属部门、职称、职务、学历、性别、政治面貌、员工号、姓名,和条件可以任意组合。同时应具有查询标专为无效的员工的作用。系统同时应提供Excel输出和打印的功能。多条件查询是本模块重点考虑的内容,本设计完成了对多字段、多条件的查询。图17主界面运行画面图7.4.2功能实现1、查询功能程序流程及思路如下所示。(1)关闭Query组件;(2)翻译用户输入,动态添加SQL;(3)依次判断是否选择部门,职称,职务,政治面貌,学历,姓名,员工号,性别,姓名,有效标志,若输入,依次在SQL语句中添加输入条件;(4)打开Query组件进行查询;(5)访问数据库,判断是否有所查询记录,若有,窗口显示查询信息,否则,给出提示信息:没有您所选择的员工资料,请确认输入条件是否正确。2、其实现程序如下面程序分析query1.sql.clear;//翻译用户输入,动态添加SQLQuery1.sql.add(‘select*fromygzlbwhere1=1’);IfDBLookupComboBox1.text<>''then//判断是否选择了部门若选择,添加所属部门query1.sql.add('andssbm=:ssbm');query1.parambyname('ssbm').asstring:=DBLookupComboBox1.keyvalue;ifDBLookupComboBox2.text<>''then//判断是否选择了职务,若选择,添加职务条件query1.sql.add('andzw=:zw');query1.parambyname('zw').asstring:=DBLookupComboBox2.keyvalue;ifDBLookupComboBox3.text<>''then//判断是否选择了职称若选择,添加职称条件query1.sql.add('andzc=:zc');query1.parambyname('zc').asstring:=DBLookupComboBox3.keyvalue;ifcombobox1.text<>''//判断是否选择了学历,若选择,添加学历条件query1.sql.add('andxl=:xl');query1.ParamByName('xl').asstring:=combobox1.text;ifcombobox2.text<>''then//判断是否选择了政治面貌若选择,添加政治面貌条件query1.sql.add('andzzmm=:zzmm');query1.ParamByName('zzmm').asstring:=combobox2.text;ifcombobox3.text<>''//判断是否选择了性别若选择,添加性别条件query1.sql.add('andxb=:xb');query1.ParamByName('xb').asstring:=combobox3.text;ifedit1.text<>''//判断是否输入了员工号,若已输入,添加员工号条件query1.sql.add('andygh=:ygh');query1.parambyname('ygh').asstring:=edit1.text;//判断是否输入了姓名若输入,添加员工姓名条件Ifedit2.text<>''thenquery1.sql.add('andxm=:xm');query1.parambyname('xm').asstring:=edit2.textifcheckbox1.checkedthen//有效标志是否选择若选择,只选择标志有效的员工query1.sql.add(‘andyxbz=1’);//若选择,只选择标志有效的员工query1.open;//打开查询ifquery1.isemptythen//判断是来有记录,若无,弹出提示框showmessage(‘没有你所要的员工资料,请确认条件是否正确’);3、运行界面模块运行界面如图18所示。图18员工资料查询界面7.3工资查询功能实现7.3.1功能介绍工资查询功能是管理员需要实现的一项重要功能,查询数据将是打印工资表,进行数据出盘的重要凭证,实现的关键技术在于SQL的多连接操作。7.3.2功能实现功能实现代码如下。StringGrid1.Rows[I].Clear;Sql:='selectmcfromjbcsb'+'wherelx=1';//从基本参数表中取出薪水账目StringGrid1.Cells[J,0]:=Query1.FieldByName('mc').AsString;//将薪水账目显示在stringgrid1控件上做为标题StringGrid1.Cells[1,0]:='姓名';//第一列显示员工号StringGrid1.Cells[0,0]:='工号';//第二列显示员工姓名Sql:='selectdistincta.ygh,a.xmxmfromygzlba,ygxjjgbwhereb.yf='''+Edit1.Text+''''+'anda.ygh=b.ygh';//多连接操作,从员工资料表和薪金结构表中取出员工号和姓名StringGrid1.Cols[0].Add(Query1.FieldByname('ygh').AsString);StringGrid1.Cols[1].Add(Query1.FieldByname('xm').AsString);Sql:='selecta.mc,b.ygh,c.sm,c.ygh,c.xszmidfrom'+'jbcsba,ygzlbb,ygxjjgbcwherec.yf='+''''+Edit1.Text+''''+'anda.id=c.xszmidanda.lx=1'+'andb.ygh=c.ygh';//从员工资料表、薪金结构表、基本参数表中取出员工号、薪水账目、数目IfQuery1.FieldByName('mc').AsString=StringGrid1.Rows[0].Strings[J]thenStringGrid1.Cells[J,I]:=FormatFloat('0.00',Query1.FieldByName('sm').AsFloat);ifTrim(StringGrid1.Cells[I,J])=''thenStringGrid1.Cells[I,J]:='0.00';//各列为空,置为0.00FloatToStr(StrToFloat(StringGrid1.Cells[I,J])+StrToFloat(StringGrid1.Cells[I,StringGrid1.RowCount-1]));//将各列值求和StringGrid1.Cells[I,StringGrid1.RowCount-1]:=FormatFloat('0.00',StrToFloat(StringGrid1.Cells[I,StringGrid1.RowCount-1]));//设定显示格式7.4员工基本信息输入功能实现7.4.1功能介绍完成新员工人事档案的建立,初始状态下所有输入和选择框框均无效,只有点新增按钮后才可用,同时提交按钮变成有效。7.4.2功能实现1、实现关键代码如下所示。qsrq:=FormatDatetime(‘YYYY-MM-DD’,datetimepicker1.Datetime);//出生日期rzsj:=FormatDatetime(‘YYYY-MM-DD’,datetimepicker2.Datetime);//入职时间czdate:=FormatDatetime(‘YYYY-MM-DDHH:MM:SS’,Now);//操作时间ifApplication.MessageBox(‘您确认要提交吗?’,’系统提示’,mb_IconInformation+mb_OK+mb_OKCancel)=IDCancelthenExit;if(Edit1.text=”)or(Edit2.text=”)thenApplication.MessageBox(‘姓名不能为空或员工号不能为空!’,’系统提示’,mb_IconInformation+mb_OK);Iftrim(DBLookupComboBox1.Text)=”thenshowmessage(‘请选择部门’);Iftrim(DBLookupComboBox2.Text)=”thenshowmessage(‘请选择职务’);iftrim(DBLookupComboBox3.Text)=”thenshowmessage(‘请选择职称’);sql:=’select*fromygzlbwhereygh=””+trim(edit1.text)+”””;//根据此员工号是否已存在ifnotquery1.isemptythenshowmessage(‘此员工号已存在,请重新输入员工号’);elsesql:='insertintoygzlb(ygh,xm,xb,xl,qsrq,ssbm,zc,zw,rzsj,sfzh,jtzz,gdlxdh,';+'sjhm,email,zzmm,yxbz,czy,czrq)'+'values('''+Trim(Edit1.Text)+''','''+trim(Edit2.text)+''','+''''+combobox1.text+''','''+combobox3.text+''','''+qsrq+''','''+DBLookupComboBox1.keyvalue+''','+''''+DBLookupComboBox3.keyvalue+''','''+DBLookupComboBox2.keyvalue+''','''+rzsj+''','''+edit3.text+''','+''''+trim(edit4.text)+''','''+trim(edit7.text)+''','''+trim(edit6.text)+''','''+trim(edit5.text)+''','+''''+combobox2.text+''',1,'''+dluser+''','''+czDate+''')';//执行插入操作,往员工资料表中插入一条记录2、运行界面员工基本信息输入运行界面如图19所示。图19新员工资料录入界面7.5出盘模块实现与运行7.5.1功能介绍出盘操作即是调出数据,当月工资数据,通过设置与银行要求格式相应的函数,并对起进行调用,生成与银行接口的文本程序,然后进行相应的参数修改,若发生错误,则进行出盘回滚操作,恢复相应的数据记录。7.5.2功能实现1、执行代码如下所示。IfTrim(StringGrid1.Cols[0].Strings[1])=''then//判断是否有Application.MessageBox('没有可出盘的数据!','系统提示',mb_IconInformation+mb_OK)ifSaveDialog1.Executethen//执行保存Sql:='selectcsdmfromkjcsbwhereyf='//查询控制参数表本月是否有记录+''''+Trim(Edit1.Text)+'''andcsmc=''出盘标志''';IfQuery2.FieldByName('csdm').AsString='0'then//有记录,但未出盘,执行outdiskDateStr:=FormatDateTime('YYYY-MM-DDHH:MM:SS',Now);Sql:='selectyf,ygh,xszmid,smfromygxjjgbwhereyf='''+Edit1.Text+'''';//取出本月工资数据,将本月记录作为下月工资初始数据Sql:='insertintoygxjjgb(yf,ygh,xszmid,sm,czy,czsj)values('+''''+ReturnNextMonth(StrToInt(Trim(Edit1.Text)))+''''+','+''''+Query2.FieldByName('ygh').AsString+''''+','+Query2.FieldByName('xszmid').AsString+','+Query2.FieldByName('sm').AsString+','+''''+dluser+''''+','+''''+DateStr+''''+')';Sql:='updatekjcsbsetcsdm=''1''whereyf='''+Trim(Edit1.Text)+''''+'andcsmc=''出盘标志''';//更新控制参数表IfCopy(Trim(Edit1.Text),5,2)='12'thenNextMonth:=IntToStr(StrToInt(Copy(Trim(Edit1.Text),5,2))+1)+'01'elseNextMonth:=IntToStr(StrToInt(Trim(Edit1.Text))+1);//取下一个月月份Sql:='insertintokjcsb(csdm,yf,csmc)values('//控制参数表插入记录,但标志为0+'''0'','''+NextMonth+''','+'''出盘标志'')';FileDir:=SaveDialog1.FileName;Save_Disk(FileDir);//调用过程保存文本文件Application.MessageBox('出盘成功!','系统提示',mb_IconInformation+mb_OK);//提示出盘成功Application.MessageBox('您未选择存放路径,系统将不出盘!','系统提示',mb_IconInformation+mb_OK);ifCopy(Trim(Edit1.Text),5,2)='12'2、运行界面出盘运行界面如图20所示。图20出盘界面7.6报表生成与打印7.6.1模块实现技术通过Delphi7.0中的QReport组件生成报表,通过报表打印企业人事信息数据。7.6.2功能实现1、程序流程设计系统设计了一个打印设置报表,将打印信息分成若干个报表,然后通过报表中的打印按钮来把要打印的信息传送到打印机。2、程序关键代码Gzdy.adoquery1.Sql:='selectcsdmfromkjcsbwhereyf='//查询控制参数表本月是否有记录+''''+Trim(Edit1.Text)+'''andcsmc=''出盘标志''';gzdy.QuickRep1.Preview;3、运行界面报表生成界面如图22所示。图22系统报表界面图7.7人事饼图分析模块实现与运行7.7.1模块实现技术通过DBChart控件和RadioButton控件的使用,以及对RadioButtonSQL语句的插入,连接数据库中相应的数据表,分按性别生成,按学历生成,按部门生成,按职称生成,按职务生成五种饼图生成情况,生成直观形象的饼状表示图,另外还有3D效果选择框,可以因需求对其进行选择。7.7.2功能实现此功能主要就是对相关控件属性设置,代码如下。Ifradiobutten1checked.ThenQuery1.sql.add(selectcount(*)rs,xbhlfromygzlbgroupbyxb’);Ifradiobutten2checked.ThenQuery2.sql.add(selectcount(*)rs,xlhlfromygzlbgroupbyxl’);Ifradiobutten3.checked.ThenQuery3.sql.add(selectcount(*)rs,ssbmhlfromygzlbgroupbyssbm’);Ifradiobutten4.checked.thenQuery4.sql.add(selectcount(*)rs,zchlfromygzlbgroupbyzc’);Ifradiobutten5.checked.thenQuery5.sql.add(selectcount(*)rs,zwhlfromygzlbgroupbyzw’);DBChart1.View3d:=CheckBox1.checked;DBChart控件进行SeriesList相应属性的设置,即可完成起功能。3、运行界面界面运行图如图21所示。图21人事饼状分析图8毕业设计总结本系统通过自己的努力,经过试用证明,系统基本满足人事工资管理方面的需要。实现了人事管理、工资管理、出盘、代码维护、报表生成等功能,给公司人事管理带来很多方便,在界面上力求做到美观、在操作方面尽量做到满足用户使用习惯。在一个系统开发的过程中编码不是重要的,重要的是分析系统、建立起系统模型。在分析一个系统前,分析人员必须要对将要开发的系统所涉及到的各方面知识有一个认识,然后将系统的模型建立起来。而且一个成功的软件要符合用户的需要,要以用户为中心,开发出用户想要的软件,而不能自以为是,想当然。在编码中,良好的编程风格与习惯是提高工作效率的一个重要方面,而且良好的编程风格与习惯也是使软件便于维护的基础。那如何是良好的编程风格与习惯呢?我认为主要是程序的模块化、必要的注释和完备的设计文档三个方面。所谓模块化就是使程序的功能实现分成多个单独的功能模块,而不能在一大段代码中实现多个功能,如果这样做,别的人是非常难读懂你的程序。必要的注释,显而易

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论