1、模块开发卷宗模块开发卷宗1标题软件系统名称:学校内部员工工资管理系统。模块名称:用户管理模块、员工信息管理模、工资管理模块、数据统计模块和数据维护模块等。程序编制员签名:陈伟,黄建才修改完成日期: 2007年12月30日卷宗序号:1编排日期: 2007年12月30日2模块开发情况表1 建立程序系统结构 3功能说明员工信息管理模块:员工基本信息模块具有员工信息输入、员工增删、员工信息查询三个功能,员工基本信息包括员工号、员工姓名、员工性别、所在部门、所在岗位、工龄和工资等级等信息。员工增删实现了对数据库中员工信息的增加和删除。员工可以通过员工号或员工姓名对员工信息进行查询。用户管理模块:实现对不
2、同用户管理级别的分类,以及不同级别用户对系统拥有不同权限而对系统进行操作。工资信息管理模块:实现工资表的生成、个人工资查询、工资修改、工资结算、工资统计以及工资表打印等功能。其中按月生成工资表,保存在数据库中。数据统计模块:用户在员工信息管理模块对该员工的工资等级进行输入以后,在工资汇总模块会自动对员工工资进行汇总。用户可以打印出工资汇总表,打印之前可以通过打印预览功能进行打预览。系统维护模块: 系统维护模块包括数据库的恢复与备份,部门信息的维护三个功能,部门信息维护模块主要是进行部门的添加和修改。另外,在本高校工资管理系统中,还包括帮助文件的制作,要求有较为完善的帮助文件,使用说明供用户参考
3、。4设计说明用户管理模块:a. 制定用户的管理级别,管理级别分为管理员和教职员工两类。b. 他们的操作权限不同,管理员是财务部门人员,可以对系统进行一切操作,而教职员工只能进行查询和打印。c. 另外在这个模块中也应该包含添加用户、修改用户信息、修改口令等。员工信息管理模块员工基本信息模块具有员工信息输入、员工增删、员工信息查询三个功能,员工基本信息包括员工号、员工姓名、员工性别、所在部门、所在岗位、工龄和工资等级等信息。员工增删实现了对数据库中员工信息的增加和删除。员工可以通过员工号或员工姓名对员工信息进行查询。工资管理模块根据该公司的工资管理实际情况,本系统将工资结构分为基本工资、浮动工资、
4、工资发放三部分。该模块可以对这三个工资类型设置工资等级,并对每个等级设置工资标准。数据统计模块用户在员工信息管理模块对该员工的工资等级进行输入以后,在工资汇总模块会自动对员工工资进行汇总。用户可以打印出工资汇总表,打印之前可以通过打印预览功能进行打预览。系统维护模块 系统维护模块包括数据库的恢复与备份,部门信息的维护三个功能,部门信息维护模块主要是进行部门的添加和修改,其它功能模块 主要有管理员的添加、修改以及登录信息浏览,调用系统的记事本和计算器等工具。5原代码清单登录到该工资管理系统需要验证管理员和普通员工的身份,界面如下图所示:实现该功能的代码是: if (length(trim(use
5、r.Text)0) or (length(trim(pwd.Text)0) thenbegin if(RadioGroup1.ItemIndex=0)then beginsql:=select adminname,pwd from adminwhere adminname=+user.Text+ and pwd=+pwd.Text+;adoquery_login.Close;adoquery_login.SQL.Clear;adoquery_login.SQL.Add(sql);adoquery_login.SQL.Add(sql);adoquery_login.Open;if adoquer
6、y_login.RecordCount0 then begin ADOQuery_Login.Close; ADOQuery_Login.SQL.Clear; ADOQuery_Login.SQL.Add(insert into Logindetail values(+user.Text+,+管理员+,+datetimetostr(NOW)+); ADOQuery_Login.ExecSQL; frmmain.Show; frmmain.StatusBar1.Panels1.Text:=管理员:+user.Text; loginform.hide;end else begin applicat
7、ion.MessageBox(您输入的用户名或密码错误!,错误提示,mb_ok); user.SetFocus; end; end; if(RadioGroup1.ItemIndex=1)then begin sql:=select employeename from employees where employeename=+user.text+; adoquery_login.Close; adoquery_login.SQL.Clear; adoquery_login.SQL.Add(sql); adoquery_login.SQL.Add(sql); adoquery_login.Op
8、en;if adoquery_login.RecordCount0 then begin ADOQuery_Login.Close; ADOQuery_Login.SQL.Clear; ADOQuery_Login.SQL.Add(insert into Logindetail values(+user.Text+,+普通员工+,+datetimetostr(NOW)+); ADOQuery_Login.ExecSQL; gzfind.Show;loginform.hide;end else begin application.MessageBox(对不起!该用户不存在!,错误提示!,mb_o
9、k); user.SetFocus; end;员工信息管理员工信息的输入界面如下图所示:员工信息的输入实现代码是:if(edit_id.Text=)or(edit_name.Text=)or(combobox_sex.Text=)or (edit_depname.Text=)thenbegin Messagebox(handle,请输入有效的信息!,错误提示信息,MB_OK); exit;end;if (edit_id.gettextlen)8 then begin Messagebox(handle,你输入的员工编号不能大于8位!,错误提示信息,MB_OK); exit; end else
10、begin adoquery.Close; adoquery.SQL.Clear; adoquery.SQL.Add(select * from employees where employeeID=:ygID); adoquery.Parameters.ParamByName(ygID).Value:=strtoint(trim(edit_id.Text); adoquery.Open; if not adoquery.IsEmpty then begin Messagebox(handle,该编号已经存在!,错误提示信息,MB_OK); adoquery.Close; adoquery.F
11、ree; exit; end; try str:=insert into employees(employeeID,employeename,sex,level,departname,hiresdate,bank,bankID,note); str:=str+Values(:ygID,:name,:sex,:level,:departname,:hiresdate,:bank,:bankID,:note); with adoquery do begin close; sql.Clear; sql.Add(str); parameters.ParamByName(ygID).Value:=str
12、toint(trim(edit_id.Text); parameters.ParamByName(name).Value:=trim(edit_name.Text); parameters.ParamByName(sex).Value:=trim(combobox_sex.Text); parameters.ParamByName(level).Value:=trim(combobox_wenhua.Text); parameters.ParamByName(departname).Value:=trim(edit_depname.Text); parameters.ParamByName(h
13、iresdate).Value:=trim(datetostr(datetimepicker1.Date); parameters.ParamByName(bank).Value:=trim(combobox_bank.Text); parameters.ParamByName(bankID).Value:=trim(edit_banknum.Text); parameters.ParamByName(note).Value:=trim(memo_detail.Text); ExecSQL;end; showmessage(添加成功!); btclear.Click; except showm
14、essage(添加失败!请检查数据正确与否?); end; end; end;procedure TYGForm.BitBtn5Click(Sender: TObject);beginif not adotable.IsEmpty thenadotable.Firstelse showmessage(没有员工信息记录,请确定员工信息!);end;员工信息的查询界面如下图: 员工信息的查询实现代码:varsearchfield:String;str:String;begin case RadioGroup1.ItemIndex of 0:searchfield:=employeeID; 1:se
15、archfield:=employeename; 2:searchfield:=level; 3: searchfield:=departname; 4:searchfield:=hiresdate; 5:searchfield:=bank; end; if content.Text= then begin if(messagedlg(您输入的查询内容不能为空!是否要重输?,mtinformation,mbyes,mbno,0)mryes) then close; end else beginadoquery1.Close; adoquery1.SQL.Clear; if searchfiel
16、d=employeeID then str:=select * from employees where +searchfield+=+trim(content.Text) else str:=select * from employees where +searchfield+=+trim(content.Text)+; adoquery1.SQL.Add(str); adoquery1.Active:=true; if adoquery1.RecordCount=0 then begin messagebeep(1); showmessage(没有找到符合条件的记录,请确定查询条件或放弃查
17、询!); if messagedlg(是否继续查询?只有结束查询才能进行其它操作!,mtinformation,mbyes,mbno,0)=mrno then abort; end else begin adotable.Recordset:=adoquery1.Recordset; adotable.Filtered:=false; adotable.Filter:=searchfield+=+content.Text+; adotable.Filtered:=true; adotable.Active:=true; showmessage(共找到了+inttostr(adoquery1.r
18、ecordcount)+条记录!); content.Text:=; end ; 把员工信息查询的结果导到Excel中去,实现代码是:variCount,jCount:Integer;XLApp:Variant;Sheet:Variant;begin screen.Cursor:=crHourGlass; if not VarIsEmpty(XLApp)then beginXLApp.DisplayAlerts:=False;XLApp.Quit;VarClear(XLApp); end; try XLApp:=CreateOleObject(Excel.Application);except
19、screen.Cursor:=crDefault;Exit; end; XLApp.workbooks.add; XLApp.sheetsInNewWorkbook:=1; XLApp.workbooks1.worksheets1.name:=DBGrid2.Name; sheet:=XLApp.workbooks1.worksheetsDBGrid2.Name; sheet.columns.autofit; if not dbgrid2.DataSource.DataSet.Active then begin screen.Cursor:=crDefault; exit; end; dbgr
20、id2.DataSource.DataSet.First; for iCount:=0 to dbgrid2.Columns.Count-1 do sheet.cells1,iCount+1:=dbgrid2.Columns.ItemsiCount.Title.caption; jCount:=1; while not dbgrid2.DataSource.DataSet.Eof do begin for iCount:=0 to dbgrid2.Columns.Count-1 do sheet.cellsjCount+1,iCount+1:=adoquery1.Fieldsicount.As
21、String; inc(jCount); dbgrid2.DataSource.DataSet.Next; end; XlApp.visible:=true; screen.Cursor:=crDefault; end;工资发放管理界面如下图: 工资发放管理工资保存代码实现如下:with tasave dobeginopen;edit;append;if trim(combobox1.Text)= thenbeginApplication.MessageBox(员工编号不能为空,提示,0+64);combobox1.SetFocus;exit;end;if trim(editygname.Te
22、xt)= thenbeginApplication.MessageBox(员工姓名不能为空,提示,0+64);editygname.SetFocus;exit;end;if trim(editjiben.Text)= thenbeginApplication.MessageBox(基本工资不能为空,提示,0+64);editjiben.SetFocus;exit;end;if trim(editzhiwu.Text)= thenbeginApplication.MessageBox(职务不能为空,提示,0+64);editzhiwu.SetFocus;exit;end;if trim(edit
23、gongling.Text)= thenbeginApplication.MessageBox(工龄工资不能为空,提示,0+64);editgongling.SetFocus;exit;end;if trim(edityanglao.Text)= thenbeginApplication.MessageBox(养老保险不能为空,提示,0+64);edityanglao.SetFocus;exit;end;if trim(editjiangjin.Text)= thenbeginApplication.MessageBox(其他奖金不能为空,提示,0+64);editjiangjin.SetFo
24、cus;exit;end;if trim(editzhufang.Text)= thenbeginApplication.MessageBox(住房补助不能为空,提示,0+64);editzhufang.SetFocus;exit;end;if trim(editbaoxian.Text)= thenbeginApplication.MessageBox(保险费不能为空,提示,0+64);editbaoxian.SetFocus;exit;end;if trim(editshenghuo.Text)= thenbeginApplication.MessageBox(生活补助不能为空,提示,0+
25、64);editshenghuo.SetFocus;exit;end;if Application.MessageBox(确定添加记录?,提示,mb_YesNo)=ID_Yesthenbegin tasave.FieldByName(employeeID).AsString:=trim(combobox1.Text); tasave.FieldByName(employeename).AsString:=trim(editygname.Text); tasave.FieldByName(basicwages).AsString:=trim(editjiben.Text); tasave.Fie
26、ldByName(dutywages).AsString:=trim(editzhiwu.Text); tasave.FieldByName(agewages).AsString:=trim(editgongling.Text); tasave.FieldByName(oldage-insurance).AsString:=trim(edityanglao.Text); tasave.FieldByName(others).AsString:=trim(editjiangjin.Text); tasave.FieldByName(housing-subsidy).AsString:=trim(
27、editzhufang.Text); tasave.FieldByName(insurance).AsString:=trim(editbaoxian.Text); tasave.FieldByName(life-subsidy).AsString:=trim(editshenghuo.Text); tasave.FieldByName(worktimes).AsString:=trim(editjiaban.Text); tasave.FieldByName(workwages).AsString:=trim(editday.Text); tasave.FieldByName(asktime
28、s).AsString:=trim(editshijia.Text); tasave.FieldByName(workwages2).AsString:=trim(editday2.Text); tasave.FieldByName(personal-incom).AsString:=trim(editshuilv.Text); tasave.FieldByName(totals).AsString:=trim(editzong.Text); tasave.FieldByName(pays).AsString:=trim(editshifa.Text); tasave.FieldByName(
29、paydate).AsString:=datetostr(datetimepicker1.date); tasave.Post; showmessage(保存数据成功!);end;员工信息统计界面: 员工信息统计实现代码:if radiogroup2.ItemIndex=0 thenbegin adodataset2.Active:=false; adodataset2.CommandText:=select departname as 部门,count(*) as 人数 from employees group by departname; adodataset2.Active:=true; adodataset2.Open;end;if radiogroup2.ItemIndex=1 thenbegin adodataset2.Active:=false; adodataset2.CommandText:=select sex as 性别,count(*) as 人数 from employees group by sex; adodataset2.Active:=true; adodataset2.Open;end;if radiogroup2.Item
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1