案例2 高校工资管理系统_第1页
案例2 高校工资管理系统_第2页
案例2 高校工资管理系统_第3页
案例2 高校工资管理系统_第4页
案例2 高校工资管理系统_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

PAGE

PAGE202

第7章高校工资管理系统本章对数据库的连接主要采用Borland提供的BDE控件直接连接,无需额外设置。7.1摘要与关键字7.1.1摘要高校工资管理系统主要是高等院校的财务部门作为使用对象而开发的,工资管理作为一个典型的信息管理系统(MIS),其系统开发任务主要包括数据库的设计与维护、客户端应用程序的开发等两个方面。对于前者要求建立起的数据库具有完整性和一致性,且具有一定的数据安全性如用户需要密码才能使用等,而对于后者则要求程序界面友好、功能完备等特点。经过详细的分析,选用Borland公司的Delphi作为前端开发工具,利用其提供的集成开发环境及各种控件,尤其是对数据库的支持完成对数据库的各种操作,达到对图书资料管理的目的。首先建立系统应用原型,然后对原型系统进行需求迭代,不断修正和改进,直到形成用户满意的实际可行系统。7.1.2关键词工资、管理、设计、实现、dbase。7.2引言高校工资管理是高等院校的财务部门都必须切实面对的工作,随着高等院校不断地发展,各高校的规模不断地扩大,教职员工的数量也越来越多,这对高校的工资管理提出了新的要求。使用计算机进行管理成为必然趋势,这不仅仅可以降低管理工作的难度,也可以减少错误和提高效率。工资管理系统作为计算机应用的一个分支,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工资管理的效率。因此,开发一套能够为用户提供规范化的工资管理、充足的信息和快捷的查询手段的工资管理系统,将是非常必要的,也是十分及时的。因此可以把高校工资管理作为毕业设计的题目,正好可以充分利用几年在校所学的各种专业知识开发一个高校工资管理系统来帮助相关部门进行有效的管理。7.3需求分析管理系统开发的起点是需求分析,这是整个系统开发过程中最重要的一步,它决定着开发的成败。7.3.1功能需求高等院校的工资管理系统涉及到教职员工基本信息的录入、修改和删除,工资标准的设定、查询和结算等。经过实际考察和分析,典型的高等院校工资管理系统主要应具有以下基本功能:员工基本信息的录入、修改、删除等功能。工资标准设定功能,具体包括职务工资、职称工资以及其它工资标准的设定。工资信息浏览。员工工资表创建。工资调整管理。工资统计。再进行详细调查,绘制出数据流图,如图7-1所示。图7-1系统数据流图7.3.2安全保密需求为完善系统的管理功能,增加系统用户管理功能,包括系统用户的数据增加、删除和修改。教职员工为系统普通用户,只能运行个人工资查询功能;系统管理员能够运行系统所有功能,从而保证系统数据的安全性。7.3.3开发与运行环境本例的新生报名管理系统开发与运行环境如下:开发环境:WindowsXP开发工具:Delphi8数据库管理系统:dbaseIV运行环境:Windows98/ME/2000/XP7.3.4系统实现过程分析首先根据系统功能分析设计出数据库,包括各个数据表和数据表关系图的详细结构。实现功能模块时,采用先模块化,后集成的方式。即对系统各个功能模块分别独立设计和调试,在创建系统主窗体时再将各个功能模块通过主窗体的菜单系统集成到一起,最后进行系统整体设计调试。在访问数据库时,采用公用数据模块存放访问数据库需要的对象。该模块在各个功能模块中被直接调用,避免对数据库的反复连接,并可减少代码编写,从而提高系统开发效率。7.4系统设计7.4.1系统模块设计根据系统功能分析得到如图7-2所示的系统功能模块结构图。图7-2系统功能模块结构图7.4.2数据库设计对于信息管理系统,数据基本上都是使用数据库进行管理。数据库设计是对保存管理系统数据的数据库结构进行设计,对整个系统的开发具有非常重要的作用。1.数据字典根据系统功能模块结构图以及典型高校工资管理系统的需求,分析得到如下数据字典:系统用户数据:包含的数据项有系统用户名、登录口令和用户级别代码。员工基本信息数据:包含的数据项有编号、姓名、性别、部门、职称、职务、入部门时间、是否专家、是否有住房、是否有独生未成年子女等。职称工资标准数据:包含的数据项有高级、副高、中级、初级、工人等。职务工资标准数据:包含的数据项有正处、副处、正科、副科等。其它工资标准数据:包含的数据项有独补、专家津贴、房贴、一次性补发、其它补贴、扣房租、扣公积金、扣失业险、扣医疗险、扣垃圾费、扣其它等。工资表数据:包含的数据项有工资编号、员工编号、工资代码、工资名称、工资金额等。工资代码数据:包含的数据项有工资代码、工资名称、工资金额等。部门代码数据:包含的数据项有部门代码、部门名称。2.数据库结构设计根据系统需求,分析出实体-关系图,如图7-3所示。图7-3实体-关系图根据实体-关系图和数据字典,设计出工资管理系统数据库中的各个数据表。根据系统用户使用要求得到系统用户数据表,根据工资、员工、部门实体得到员工信息数据表、部门代码数据表、工资结算数据表,根据工资实体属性设计得到职称工资标准数据表、职务工资标准数据表、其它工资标准数据表。数据表名称与结构如下:系统用户数据表:用于保存系统用户的账户信息,数据表命名为“user”,结构见表7-1。表7-1“user”表结构列名数据类型长度索引说明YhmCharacter10是用户名MmCharacter10否密码QxNumber3否权限员工基本信息数据表:用于保存员工与工资管理有关的信息数据,数据表命名为“ygb”,结构见表7-2。表7-2“ygb”表结构列名数据类型长度索引说明BhCharacter10是编号XmCharacter10否姓名BmdmNumber3否部门代码ZwdmNumber3否职务代码ZcdmNumber3否职称代码GzrqDate否工作日期BzCharacter100否备注职务工资标准数据表:用于保存各种职务对应的工资标准数据,数据表命名为“zwdm”,结构见表7-3。表7-3“zwdm”表结构列名数据类型长度索引说明ZwdmNumber3是职务代码ZwmcCharacter10否职务名称ZwgzNumber10.2否职务工资职称工资标准数据表:用于保存各种职称对应的工资标准数据,数据表命名为“zcdm”,结构见表7-4。表7-4“zcdm”表结构列名数据类型长度索引说明ZcdmNumber3是职称代码ZcmcCharacter10否职称名称ZcgzNumber10.2否职称工资其它工资标准数据表:用于保存各种其它工资标准数据,数据表命名为“gzdm”,结构见表7-5。表7-5“gzdm”表结构列名数据类型长度索引说明GzdmNumber3是工资代码GzmcCharacter10否工资名称GzjeNumber10.2否工资金额工资结算数据表:用于保存工资结算数据,数据表命名为“gzb”,结构见表7-6。表7-6“gzb”表结构列名数据类型长度索引说明GzbhCharacter6是工资编号YgbhCharacter10是员工编号GzdmNumber3否工资代码GzmcCharacter10否工资名称GzjeNumber10.2否工资金额部门代码数据表:用于保存各个部门数据,数据表命名为“bmdm”,结构见表7-7。表7-7“bmdm”表结构列名数据类型长度索引说明BmdmNumber3是部门代码BmmcCharacter10否部门名称7.5系统实现7.5.1建立数据库本例数据库使用dbaseIV。建立各数据表的有关内容请参阅相关书籍。7.5.2程序设计1.主窗体设计在Delphi中,新建一个“VCLFormsApplication”,将工程文件保存为“P7_1.bdsproj”。主窗体保存为main.pas,界面设计如图7-4所示(左),包含一个MainMenu组件,菜单设计见图7-4(右)。图7-4主窗体设计界面与主窗体菜单设计窗体组件属性设置见表7-8。表7-8主窗体组件属性设置组件属性值Form1Name='Main_Form'FormStyle=fsMDIFormCaption='新生报名管理系统'MainMenu1主窗体中定义两个全局变量yhm、qx,用于保存登录的用户名和权限代码,便于其它窗体使用。2.用户登录窗体设计在启动工资管理系统之前,显示登录对话框,要求用户输入用户名和密码,只有经过系统管理员授权的用户才能使用系统。用户登录窗体保存为login.pas,界面设计如图7-5所示,包含两个LabeledEdit组件和两个Button组件。图7-5用户登录窗体设计窗体主要组件属性设置见表7-9。表7-9用户登录窗体主要组件属性组件属性值Form2BorderStyle=bsSingleBorderIcons=[biSystemMenu]Name=Login_FormCaption='用户登录窗口'LabeledEdit1EditLabel.Caption='用户名'Name=yhm_LEditLabeledEdit2EditLabel.Caption='密码'PasswordChar=*Name=mm_LEditButton1Caption='确定'Button2Caption='取消'用户登录窗体代码如下:publicloginok:boolean; //定义公用变量,标识登录成功与否……//确定按钮单击事件procedureTlogin_Form.Button1Click(Sender:TObject);varyhm,mm,sqlstr:string;beginyhm:=Trim(yhm_LEdit.Text);mm:=Trim(mm_LEdit.Text);sqlstr:='select*fromuserwhere(yhm='''+yhm+''')and(mm='''+mm+''')';if(Length(yhm)>0)or(Length(mm)>0)thenbeginwithTQuery.Create(nil)dotryClose;SQL.Clear;SQL.Add(sqlstr);Open;//验证用户合法性ifRecordCount>0thenbeginMainForm.yhm:=FieldByName('yhm').AsString;MainForm.qx:=FieldByName('qx').AsString;loginok:=True;endelsebeginloginok:=False;ShowMessage('请确认登录的用户名和密码是否正确!');yhm_LEdit.SelectAll;end;finallyFree;end;Close;endelsebeginShowMessage('请输入登录用户名和密码!');yhm_LEdit.SelectAll;end;end;3.用户管理窗体设计用户管理包括用户数据(包括编号、密码和权限)的添加、删除和浏览等操作。高级管理员可以管理系统中所以的用户数据,而普通用户则只能修改自己的密码。用户管理窗体保存为usergl.pas,界面设计如图7-6所示,包含一个GroupBox组件、两个LabeledEdit组件、一个Label组件、一个ComboBox组件、三个Button组件、一个PopupMenu组件、一个Query组件、一个DataSource组件和一个DBGrid组件。图7-6用户管理窗体设计窗体主要组件属性设置见表7-10。表7-10用户管理窗体主要组件属性组件属性值Form3FormStyle=fsMDIChildBorderStyle=bsSingleBorderIcons=[biSystemMenu]Name=usergl_FormCaption='用户管理'GroupBox1Caption=''Align=alRightLabeledEdit1(GroupBox1)EditLabel.Caption='系统用户名'Name=yhm_LEditLabeledEdit2(GroupBox1)EditLabel.Caption='登录密码'PasswordChar=*Name=mm_LEditLabel1Caption='系统权限'ComboBox1(GroupBox1)Name=qx_CBoxItems='系统用户

普通用户'Button1(GroupBox1)Name=cmdmodiCaption='修改'Button2(GroupBox1)Name=cmdaddCaption='添加'Button3(GroupBox1)Name=cmddelCaption='删除'Query1DataSource1DataSet=Query1DBGrid1DataSource=DataSource1Align=alClient用户管理窗体主要代码如下:type……procedurenewll;//自定义过程实现数据刷新publicadd:boolean;end;usesmain;procedureTusergl_Form.newll;begin//查询用户表Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('select*fromuser');Query1.Open;//根据用户存在与否,设置按钮的可用性ifQuery1.RecordCount>0thenbegincmdmodi.Enabled:=True;cmddel.Enabled:=True;cmdadd.Enabled:=True;endelsebegincmdmodi.Enabled:=False;cmddel.Enabled:=False;cmdadd.Enabled:=True;end;end;procedureTusergl_Form.FormShow(Sender:TObject);beginnewll;end;procedureTusergl_Form.FormClose(Sender:TObject;varAction:TCloseAction);beginAction:=caFree;MainForm.N11.Enabled:=True;end;procedureTusergl_Form.FormCreate(Sender:TObject);beginadd:=False;end;//实现数据与文本框的绑定procedureTusergl_Form.DBGrid1CellClick(Column:TColumn);beginifQuery1.RecordCount>0thenbeginyhm_LEdit.Text:=Query1.FieldByName('yhm').AsString;mm_LEdit.Text:=Query1.FieldByName('mm').AsString;qx_CBox.ItemIndex:=Query1.FieldByName('qx').AsInteger;end;end;//实现用户修改功能procedureTusergl_Form.cmdmodiClick(Sender:TObject);varid,yhm,qx,mm,sqlstr:string;begin//数据合法性检查yhm:=Trim(yhm_LEdit.Text);ifLength(yhm)<1thenbeginShowMessage('系统用户名不能为空');exit;end;mm:=Trim(mm_LEdit.Text);ifLength(mm)<1thenbeginShowMessage('系统用户的密码不能为空');exit;end;qx:=IntToStr(qx_CBox.ItemIndex);id:=Query1.FieldByName('id').AsString;//执行检验用户名是否有重复的SQL语句sqlstr:='select*fromuserwhere(yhm='''+yhm+''')and(id<>'''+id+''')';withTQuery.Create(nil)dobegintryClose;SQL.Clear;SQL.Add(sqlstr);Open;ifRecordCount>0thenbeginShowMessage('修改的系统用户名有重复,请重新输入!');exit;endelsebegin//执行修改系统用户信息的SQL语句sqlstr:='updateusersetyhm='''+yhm+''',mm='''+mm;sqlstr:=sqlstr+''',qx='''+qx+'''where(id='''+id+''')';Close;SQL.Clear;SQL.Add(sqlstr);ExecSQL;end;finallyFree;end;ShowMessage('成功修改系统用户!');newll;end;end;//实现用户添加功能procedureTusergl_Form.cmdaddClick(Sender:TObject);varid,yhm,qx,mm,sqlstr:string;begin//判断是否处于添加状态ifaddthenbeginyhm:=Trim(yhm_LEdit.Text);ifLength(yhm)<1thenbeginShowMessage('系统用户名不能为空');exit;end;mm:=Trim(mm_LEdit.Text);ifLength(mm)<1thenbeginShowMessage('系统用户的密码不能为空');exit;end;qx:=IntToStr(qx_CBox.ItemIndex);id:=Query1.FieldByName('id').AsString;sqlstr:='select*fromuserwhere(yhm='''+yhm+''')';withTQuery.Create(nil)dobegintryClose;SQL.Clear;SQL.Add(sqlstr);Open;//判断添加的用户名是否有重复ifRecordCount>0thenbeginShowMessage('添加的系统用户名有重复,请重新输入!');exit;endelse//用户名无重复,添加用户记录beginsqlstr:='insertintouser(yhm,mm,qx)values('''+yhm+''','''+mm+''','''+qx+''')';Close;SQL.Clear;SQL.Add(sqlstr);ExecSQL;end;finallyFree;end;ShowMessage('成功添加系统用户!');newll;cmdadd.Caption:='添加';end;endelsebegincmdadd.Caption:='保存';add:=True;yhm_LEdit.Clear;mm_LEdit.Clear;qx_CBox.ItemIndex:=0;end;end;//实现系统用户删除功能procedureTusergl_Form.cmddelClick(Sender:TObject);varid:string;begintryifMessageDlg('确认要删除选中的系统用户吗?',mtConfirmation,[mbYes,mbNo],0)=mrYesthenbeginid:=Query1.FieldByName('id').AsString;withTQuery.Create(nil)dobegintryClose;SQL.Clear;SQL.Add('deletefromuserwhereid='''+id+'''');ExecSQL;finallyFree;end;end;ShowMessage('成功删除系统用户');newll;end;exceptend;end;4.修改密码窗体设计用户登录后可以自己修改密码,这样既能保证系统的安全性,同时又减少了系统管理员的工作量。修改密码窗体保存为password.pas,界面设计如图7-7所示,包含三个Label组件、三个Edit组件和两个Button组件。图7-7修改密码窗体设计窗体主要组件属性设置见表7-11。表7-11修改密码窗体主要组件属性组件属性值Form4FormStyle=fsMDIChildBorderStyle=bsSingleBorderIcons=[biSystemMenu]Name=Password_FormCaption='修改密码'Edit1Text=''PasswordChar=*Edit2Text=''PasswordChar=*Edit3Text=''PasswordChar=*Button1Caption='确定'Name=cmdokButton2Caption='取消'Name=cmdclose修改密码窗体主要代码如下:usesmain;//确定按钮单击事件procedureTpassword_Form.cmdokClick(Sender:TObject);varyhm,oldpass,newpass,qrpass,sqlstr:string;beginyhm:=Trim(MainForm.yhm);oldpass:=Trim(omm_LEdit.Text);newpass:=Trim(nmm_LEdit.Text);//数据合法性检验ifLength(newpass)<3thenbeginShowMessage('密码由3--20个字符组成!!');exit;end;qrpass:=Trim(qmm_LEdit.Text);ifLength(qrpass)<3thenbeginShowMessage('密码由3--20个字符组成!!');exit;end;if(newpass<>qrpass)thenbeginShowMessage('确认密码不相同,请确认!!');exit;end;sqlstr:='select*fromuserwhere(yhm='''+yhm+''')and(mm='''+oldpass+''')';withTQuery.Create(nil)dobegintryClose;SQL.Clear;SQL.Add(sqlstr);Open;//判断输入的原密码是否正确ifRecordCount<1thenbeginShowMessage('原密码错误,你不能修改--'+yhm+'--用户的密码!!!');exit;end;//生成修改密码的SQL语句sqlstr:='updateusersetmm='''+newpass+'''where(yhm='''+yhm+''')';SQL.Clear;SQL.Add(sqlstr);ExecSQL;finallyFree;end;end;ShowMessage('密码修改成功!');Close;end;procedureTpassword_Form.FormClose(Sender:TObject;varAction:TCloseAction);beginClose;MainForm.N12.Enabled:=True;end;5.员工信息管理窗体设计员工信息管理功能是新生数据检索功能。员工信息管理窗体保存为yggl.pas,界面设计如图7-8所示,包含一个GroupBox组件、一个Label组件、一个ComboBox组件、一个Query组件、一个DataSource组件、一个DBGrid组件、一个PopupMenu组件和两个Button组件。图7-8员工信息管理窗体设计窗体主要组件属性设置见表7-12。表7-12员工信息管理窗体主要组件属性组件属性值Form5FormStyle=fsMDIChildName=yggl_FormCaption='员工管理'GroupBox1Caption='员工检索条件'Align=alTopLabel1(GroupBox1)Caption='选择员工部门'ComboBox1(GroupBox1)Name=bmdm_CBoxButton1(GroupBox1)Caption='确定'Name=cmdokButton2(GroupBox1)Caption='取消'Name=cmdclosePopupMenu1MenuItem1Name=N11Caption='添加员工'MenuItem2Name=N12Caption='修改员工'MenuItem3Name=N13Caption='删除员工'Query1DataSource1DataSet=Query1DBGrid1DataSource=DataSource1Align=alClient员工信息管理窗体主要代码如下:publicmodi:boolean;xcaption:string;end;usesmain,ygxx;procedureTyggl_Form.FormClose(Sender:TObject;varAction:TCloseAction);beginAction:=caFree;MainForm.N21.Enabled:=True;end;//确定按钮单击事件procedureTyggl_Form.cmdokClick(Sender:TObject);varbmdm,sqlstr:string;begin//生成检索所有员工的SQL语句ifbmdm_CBox.ItemIndex=0thenbeginsqlstr:='selecta.*,b.bmmc,c.zcmc,d.zwmcfromygba,bmdmb,';sqlstr:=sqlstr+'zcdmc,zwdmdwhere(a.bmdm=b.bmdm)and(a.zcdm=c.zcdm)';sqlstr:=sqlstr+'and(a.zwdm=d.zwdm)orderbya.bmdm,a.bh';endelse//生成检索某一部门员工的SQL语句beginbmdm:=IntToStr(bmdm_CBox.ItemIndex-1);sqlstr:='selecta.*,b.bmmc,c.zcmc,d.zwmcfromygba,td_bmdmb,';sqlstr:=sqlstr+'td_zcdmc,td_zwdmdwhere(a.bmdm=b.bmdm)and(a.zcdm=c.zcdm)';sqlstr:=sqlstr+'and(a.zwdm=d.zwdm)and(a.bmdm='''+bmdm+''')orderbya.bh';end;Query1.Close;Query1.SQL.Clear;Query1.SQL.Add(sqlstr);Query1.Open;//根据检索结果,修改弹出菜单项的可操作性ifQuery1.RecordCount>0thenbeginN1.Enabled:=True;N2.Enabled:=True;N3.Enabled:=True;endelsebeginN1.Enabled:=True;N2.Enabled:=False;N3.Enabled:=False;end;end;//“添加员工”弹出菜单单击事件procedureTyggl_Form.N1Click(Sender:TObject);begin//设置标识xcaption:='添加员工信息';modi:=False;//打开添加/修改员工信息窗体Application.CreateForm(Tygxx_Form,ygxx_Form);ygxx_Form.ShowModal;end;//“修改员工”弹出菜单单击事件procedureTyggl_Form.N2Click(Sender:TObject);begin//设置标识xcaption:='修改员工信息';modi:=True;//打开添加/修改员工信息窗体Application.CreateForm(Tygxx_Form,ygxx_Form);ygxx_Form.ShowModal;end;//“删除员工”弹出菜单单击事件procedureTyggl_Form.N3Click(Sender:TObject);varid:string;beginifMessageDlg('确认要删除选中的员工信息吗?',mtConfirmation,[mbYes,mbNo],0)=mrYesthenbeginid:=Query1.FieldByName('id').AsString;withTQuery.Create(nil)dobegintryClose;SQL.Clear;SQL.Add('deletefromygbwhereid='''+id+'''');ExecSQL;finallyFree;end;end;ShowMessage('成功删除员工信息');cmdok.Click;end;end;procedureTyggl_Form.cmdcloseClick(Sender:TObject);beginClose;end;procedureTyggl_Form.FormCreate(Sender:TObject);beginwithTQuery.Create(nil)dotryClose;SQL.Clear;SQL.Add('select*frombmdmorderbybmdm');Open;First;//将数据表中的所以部门添加到部门列表中bmdm_CBox.Items.Add('所有部门');whilenotEofdobeginbmdm_CBox.Items.Add(FieldByName('bmmc').AsString);Next;end;bmdm_CBox.ItemIndex:=0;finallyFree;end;end;6.添加/修改员工信息窗体设计添加/修改员工信息窗体保存为ygxx.pas,界面设计如图7-9所示,包含四个Label组件、三个LabeledEdit组件、三个ComboBox组件、一个DateTimePicker组件和两个Button组件。图7-9添加/修改员工信息窗体设计窗体主要组件属性设置见表7-13。表7-13添加/修改员工信息窗体主要组件属性组件属性值Form6FormStyle=fsMDIChildBorderStyle=bsSingleBorderIcons=[biSystemMenu]Name=ygxx_FormCaption='员工信息'LabeledEdit1Name=bh_LEditEditLabel.Caption='编号'LabeledEdit2Name=xm_LEditEditLabel.Caption='姓名'LabeledEdit3Name=bz_LEditEditLabel.Caption='备注'Label1Caption='工作日期'Label2Caption='员工部门'Label3Caption='员工职务'Label4Caption='员工职称'DateTimePicker1Name=rq_DTPComboBox1Name=bmdm_CBoxComboBox2Name=zcdm_CBoxComboBox3Name=zwdm_CBoxButton1Caption='确定'Name=cmdokButton2Caption='取消'Name=cmdclose添加/修改员工信息窗体主要代码如下:usesyggl,data;procedureTygxx_Form.cmdcloseClick(Sender:TObject);beginClose;end;procedureTygxx_Form.FormCreate(Sender:TObject);beginCaption:=yggl_Form.xcaption;withTQuery.Create(nil)dotry//初始化部门列表框Close;SQL.Clear;SQL.Add('select*frombmdmorderbybmdm');Open;First;whilenotEofdobeginbmdm_CBox.Items.Add(FieldByName('bmmc').AsString);Next;end;bmdm_CBox.ItemIndex:=0;//初始化职务列表框Close;SQL.Clear;SQL.Add('select*fromzwdmorderbyzwdm');Open;First;whilenotEofdobeginzwdm_CBox.Items.Add(FieldByName('zwmc').AsString);Next;end;zwdm_CBox.ItemIndex:=0;//初始化职称列表框Close;SQL.Clear;SQL.Add('select*fromzcdmorderbyzcdm');Open;First;whilenotEofdobeginzcdm_CBox.Items.Add(FieldByName('zcmc').AsString);Next;end;zcdm_CBox.ItemIndex:=0;finallyFree;end;//修改状态时,初始化员工信息ifyggl_Form.modithenbeginbh_LEdit.Text:=yggl_Form.Query1.FieldByName('bh').AsString;xm_LEdit.Text:=yggl_Form.Query1.FieldByName('xm').AsString;bz_LEdit.Text:=yggl_Form.Query1.FieldByName('bz').AsString;zcdm_CBox.ItemIndex:=yggl_Form.Query1.FieldByName('zcdm').AsInteger;zwdm_CBox.ItemIndex:=yggl_Form.Query1.FieldByName('zwdm').AsInteger;bmdm_CBox.ItemIndex:=yggl_Form.Query1.FieldByName('bmdm').AsInteger;gzrq_DTP.DateTime:=yggl_Form.Query1.FieldByName('gzrq').AsDateTime;end;end;procedureTygxx_Form.cmdokClick(Sender:TObject);varid,bh,xm,gzrq,bz,bmdm,zcdm,zwdm,sqlstr,sqlstr1:string;begin//数据合法性检验bh:=Trim(bh_LEdit.Text);ifLength(bh)<1thenbeginShowMessage('请输入员工编号!');exit;end;xm:=Trim(xm_LEdit.Text);ifLength(xm)<1thenbeginShowMessage('请输入员工姓名!');exit;end;bz:=Trim(bz_LEdit.Text);bmdm:=IntToStr(bmdm_CBox.ItemIndex);zcdm:=IntToStr(zcdm_CBox.ItemIndex);zwdm:=IntToStr(zwdm_CBox.ItemIndex);gzrq:=DateToStr(gzrq_DTP.DateTime);ifyggl_Form.modithen//生成修改员工信息的SQL语句beginid:=yggl_Form.Query1.FieldByName('id').AsString;sqlstr1:='select*fromygbwhere(bh='''+bh+''')and(id<>'''+id+''')';sqlstr:='updateygbsetbh='''+bh+''',xm='''+xm;sqlstr:=sqlstr+''',gzrq='''+gzrq+''',bmdm='''+bmdm;sqlstr:=sqlstr+''',zcdm='''+zwdm+''',zwdm='''+zwdm;sqlstr:=sqlstr+''',bz='''+bz+'''where(id='''+id+''')';endelse//生成添加员工信息的SQL语句beginsqlstr1:='select*fromygbwhere(bh='''+bh+''')';sqlstr:='insertintoygb(bh,xm,gzrq,bmdm,zwdm,zcdm,bz)';sqlstr:=sqlstr+'values('''+bh+''','''+xm+''','''+gzrq;sqlstr:=sqlstr+''','''+bmdm+''','''+zwdm+''','''+zcdm+''','''+bz+''')';end;//执行SQL语句withTQuery.Create(nil)dotryClose;SQL.Clear;SQL.Add(sqlstr1);Open;//检验员工编号是否有重复ifRecordCount>0thenbeginShowMessage('员工的编号有重复,请重新输入!');exit;end;Close;SQL.Clear;SQL.Add(sqlstr);ExecSQL;finallyFree;end;//刷新员工信息yggl_Form.cmdok.Click;Close;end;7.设定职务工资标准窗体设计职务工资标准设定实现对职务工资标准数据表中的各种职务工资进行设置或修改。设定职务工资标准窗体保存为setzw.pas,界面设计如图7-10所示,包含一个GroupBox组件、一个LabeledEdit组件、两个Button组件、一个Query组件、一个DataSource组件和一个DBGrid组件。图7-10设定职务工资标准窗体设计窗体主要组件属性设置见表7-14。表7-14设定职务工资标准窗体主要组件属性组件属性值Form7FormStyle=fsMDIChildName=setzw_FormCaption='设定职务工资标准'GroupBox1Caption=''Align=alRightLabeledEdit1(GroupBox1)Name=je_LEditEditLabel.Caption='工资标准'Button1(GroupBox1)Caption='确定'Name=cmdokButton2(GroupBox1)Caption='取消'Name=cmdcloseQuery1DataSource1DataSet=Query1DBGrid1DataSource=DataSource1Align=alClient设定职务工资标准窗体主要代码如下:procedureTsetzw_Form.FormCreate(Sender:TObject);begin//显示所有职务名称Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('select*fromzwdmorderbyzwdm');Query1.Open;//设置按钮的可操作性ifQuery1.RecordCount>0thencmdok.Enabled:=Trueelsecmdok.Enabled:=False;end;procedureTsetzw_Form.DBGrid1CellClick(Column:TColumn);begin//更新文本框内容je_LEdit.Text:=Query1.FieldByName('zwgz').AsString;end;procedureTsetzw_Form.cmdcloseClick(Sender:TObject);beginClose;end;//保存修改后的职务工资标准procedureTsetzw_Form.cmdokClick(Sender:TObject);varzwdm,sqlstr,zwgz:string;begintryzwgz:=Trim(je_LEdit.Text);ifStrToFloat(zwgz)<=0thenbeginShowMessage('请输入正确的职务工资标准');exit;end;zwdm:=Query1.FieldByName('zwdm').AsString;//执行修改职务工资的SQL语句sqlstr:='updatetd_zwdmsetzwgz='''+zwgz+'''where(zwdm='''+zwdm+''')';withTQuery.Create(nil)dotryClose;SQL.Clear;SQL.Add(sqlstr);ExecSQL;finallyFree;end;//更新数据显示Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('select*fromtd_zwdmorderbyzwdm');Query1.Open;ifQuery1.RecordCount>0thencmdok.Enabled:=Trueelsecmdok.Enabled:=False;exceptShowMessage('请输入合法的职务工资!');end;end;8.设定职称工资标准窗体设计职称工资标准设定实现对职称工资标准数据表中的各种职称工资进行设置或修改。设定职称工资标准窗体保存为setzc.pas,界面设计如图7-11所示,包含一个GroupBox组件、一个LabeledEdit组件、两个Button组件、一个Query组件、一个DataSource组件和一个DBGrid组件。图7-11设定职称工资标准窗体设计窗体主要组件属性设置见表7-15。表7-15设定职称工资标准窗体主要组件属性组件属性值Form8FormStyle=fsMDIChildName=setzc_FormCaption='设定职称工资标准'GroupBox1Caption=''Align=alRightLabeledEdit1(GroupBox1)Name=je_LEditEditLabel.Caption=工资标准Button1(GroupBox1)Caption=确定Name=cmdokButton2(GroupBox1)Caption=取消Name=cmdcloseQuery1DataSource1DataSet=Query1DBGrid1DataSource=DataSource1Align=alClient设定职称工资标准窗体主要代码如下:procedureTsetzc_Form.FormCreate(Sender:TObject);begin//显示所有职称名称Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('select*fromzcdmorderbyzcdm');Query1.Open;//设置按钮的可操作性ifQuery1.RecordCount>0thencmdok.Enabled:=Trueelsecmdok.Enabled:=False;end;procedureTsetzc_Form.DBGrid1CellClick(Column:TColumn);begin//更新文本框内容je_LEdit.Text:=Query1.FieldByName('zcgz').AsString;end;procedureTsetzc_Form.cmdcloseClick(Sender:TObject);beginClose;end;//保存修改后的职称工资标准procedureTsetzc_Form.cmdokClick(Sender:TObject);varzcdm,sqlstr,zcgz:string;begintryzcgz:=Trim(je_LEdit.Text);ifStrToFloat(zcgz)<=0thenbeginShowMessage('请输入正确的职称工资标准');exit;end;zcdm:=Query1.FieldByName('zcdm').AsString;//生成修改职称工资的SQL语句sqlstr:='updatezcdmsetzcgz='''+zcgz+'''where(zcdm='''+zcdm+''')';withTQuery.Create(nil)dotryClose;SQL.Clear;SQL.Add(sqlstr);ExecSQL;finallyFree;end;//更新数据显示Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('select*fromzcdmorderbyzcdm');Query1.Open;ifQuery1.RecordCount>0thencmdok.Enabled:=Trueelsecmdok.Enabled:=False;exceptShowMessage('请输入合法的职务工资!');end;end;9.其它工资标准设定窗体设计其它工资标准设定实现对工资代码数据表中的各种其它工资进行设置或修改。其它工资标准设定窗体保存为setother.pas,界面设计如图7-12所示,包含一个GroupBox组件、两个LabeledEdit组件、四个Button组件、一个Query组件、一个DataSource组件和一个DBGrid组件。图7-12其它工资标准设定窗体设计窗体主要组件属性设置见表7-16。表7-16其它工资标准设定窗体主要组件属性组件属性值Form9FormStyle=fsMDIChildName=setzc_FormCaption='其它工资标准设定'GroupBox1Caption=''Align=alRightLabeledEdit1(GroupBox1)Name=gzmc_LEditEditLabel.Caption='工资名称'LabeledEdit2(GroupBox1)Name=gzje_LEditEditLabel.Caption='工资金额'Button1(GroupBox1)Caption='添加'Name=cmdaddButton2(GroupBox1)Caption='修改'Name=cmdmodiButton3(GroupBox1)Caption='删除'Name=cmddelButton4(GroupBox1)Caption='关闭'Name=cmdcloseQuery1DataSource1DataSet=Query1DBGrid1DataSource=DataSource1Align=alClient其它工资标准设定窗体主要代码如下:proceduremynew;//自定义过程实现数据刷新publicadd:boolean;end;procedureTsetother_Form.FormCreate(Sender:TObject);beginmynew;add:=False;end;procedureTsetother_Form.mynew;begin//重新打开其它工资标准数据表,更新显示Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('select*fromgzdmorderbygzdm');Query1.Open;//根据查询结果,设置按钮可用性ifQuery1.RecordCount>0thenbegincmdadd.Enabled:=True;cmdmodi.Enabled:=True;cmddel.Enabled:=True;cmdclose.Enabled:=True;endelsebegincmdadd.Enabled:=True;cmdmodi.Enabled:=False;cmddel.Enabled:=False;cmdclose.Enabled:=True;end;end;//添加其它工资标准procedureTsetother_Form.cmdaddClick(Sender:TObject);vargzmc,gzje,sqlstr:string;beginifaddthenbegin//数据合法性检验gzmc:=Trim(gzmc_LEdit.Text);ifLength(gzmc)<1thenbeginShowMessage('请输入工资名次');exit;end;gzje:=Trim(gzje_LEdit.Text);ifLength(gzje)<1thenbeginShowMessage('请输入工资金额');exit;end;sqlstr:='select*fromgzdmwhere(gzmc='''+gzmc+''')';withTQuery.Create(nil)dotryClose;SQL.Clear;SQL.Add(sqlstr);Open;ifRecordCount>0thenbeginShowMessage('输入的工资名称已经存在,请重新输入!');exit;end;//生成添加其它工资标准的SQL语句sqlstr:='insertintogzdm(gzmc,gzje)values('''+gzmc+''','''+gzje+''')';Close;SQL.Clear;SQL.Add(sqlstr);ExecSQL;finallyFree;end;ShowMessage('添加工资名称成功!');mynew;cmdadd.Caption:='添加';endelsebeginadd:=True;cmdadd.Caption:='保存';gzmc_LEdit.Clear;gzje_LEdit.Clear;end;end;procedureTsetother_Form.DBGrid1CellClick(Column:TColumn);begin//更新文本框内容trygzmc_LEdit.Text:=Query1.FieldByName('gzmc').AsString;gzje_LEdit.Text:=Query1.FieldByName('gzje').AsString;exceptend;end;//修改其它工资标准procedureTsetother_Form.cmdmodiClick(Sender:TObject);vargzdm,gzmc,gzje,sqlstr:string;begin//数据合法性检验gzdm:=Query1.FieldByName('gzdm').AsString;gzmc:=Trim(gzmc_LEdit.Text);ifLength(gzmc)<1thenbeginShowMessage('请输入工资名称');exit;end;gzje:=Trim(gzje_LEdit.Text);ifLength(gzje)<1thenbeginShowMessage('请输入工资金额');exit;end;sqlstr:='select*fromgzdmwhere(gzmc='''+gzmc+''')and(gzdm<>'''+gzdm+''')';withTQuery.Create(nil)dotryClose;SQL.Clear;SQL.Add(sqlstr);Open;//判断工资名称是否有重复ifRecordCount>0thenbeginShowMessage('输入的工资名称已经存在,请重新输入!');exit;end;//生成添加其它工资标准的SQL语句sqlstr:='updategzdmsetgzmc='''+gzmc+''',gzje='''+gzje;sqlstr:=sqlstr+'''where(gzdm='''+gzdm+''')';Close;SQL.Clear;SQL.Add(sqlstr);ExecSQL;finallyFree;end;ShowMessage('修改工资名称成功!');mynew;end;//删除其它工资标准procedureTsetother_Form.cmddelClick(Sender:TObject);vargzdm:string;beginifMessageDlg('确认要删除选中的工资名称信息吗?',mtConfirmation,[mbYes,mbNo],0)=mrYesthenbegingzdm:=Query1.FieldByName('gzdm').AsString;withTQuery.Create(nil)dobegintryClose;SQL.Clear;SQL.Add('deletefromgzdmwheregzdm='''+gzdm+'''');ExecSQL;finallyFree;end;end;ShowMessage('成功删除工资名称信息');mynew;end;end;procedureTsetother_Form.cmdcloseClick(Sender:TObject);beginClose;end;10.生成工资表窗体设计生成工资表实现根据高校员工表,生成每月的员工工资表。选择一个日期后,在工资表中检索是否已经创建该月的工资表,如果未创建,根据员工表和工资代码表创建该月的工资表。生成工资表窗体保存为addgzb.pas,界面设计如图7-13所示,包含一个Label组件、一个DateTimePicker组件、两个Query组件和两个Button组件。图7-13生成工资表窗体设计窗体主要组件属性设置见表7-17。表7-17生成工资表窗体主要组件属性组件属性值Form10FormStyle=fsMDIChildBorderStyle=bsSingleBorderIcons=[biSystemMenu]Name=addgzb_FormCaption='生成工资表'Label1Caption='选择生成月份'DateTimePicker1Name=rq_DTPQuery1Query2Button1Caption='确定'Name=cmdokButton2Caption='取消'Name=cmdclose生成工资表窗体主要代码如下:procedureTaddgzb_Form.FormCreate(Sender:TObject);beginrq_DTP.DateTime:=now;end;//确定按钮单击事件procedureTaddgzb_Form.cmdokClick(Sender:TObject);vargzdm,gzmc,gzje,ygbh,gzbh,sqlstr:string;begin//获取日期gzbh:=FormatDateTime('yyyymmdd',rq_DTP.DateTime);//提取年月gzbh:=Copy(gzbh,1,6);//查询工资表sqlstr:='selectgzbhfromgzbwhere(gzbh='''+gzbh+''')';withTQuery.Create(nil)dobegintry

温馨提示

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

评论

0/150

提交评论