人事信息管理系统的分析与设计毕业论文_第1页
人事信息管理系统的分析与设计毕业论文_第2页
人事信息管理系统的分析与设计毕业论文_第3页
人事信息管理系统的分析与设计毕业论文_第4页
人事信息管理系统的分析与设计毕业论文_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、人事信息管理系统的分析与设计毕业论文目录前言错误!未定义书签。1绪论21问题的提出21.2课题的背景及意义22系统需求分析22系统开发策略22.2系统功能需求分析33系统分析与设计43系统功能模块设计43.2数据库设计er图53.3数据库物理结构表的描述54代码设计与实现64人事信息管理系统代码设计与实现64.2代码开发75软件测试375系统模块测试375.2研究成果386技术难点及解决386一般用户和管理员操作权限问题386.2设置对话框屮static控件字体的大小及颜色,代码如下:446.3设置listcontrol控件的行高,及屏蔽空白行代码实现: 446.4设置照片,代码如下:446.

2、5工资的计算问题497总结及展望49致谢语49参考文献49绪论1.1问题的提出随着计算机和网络技术的广泛应用,人事档案管理系统成为现代企业管理中不 可缺少的一部分。为适应现代企业制度要求,实现企业劳动人事档案管理的科学化 和规范化,从而提出了企事业单位人事档案管理系统开发的课题。1.2课题的背景及意义企事业单位人事档案管理工作是一种繁琐的,务求准确讯速的信息检索工作。 特别是对在岗人员、离退人员、工资发放、职称评定等信息的管理,具有典型的信 息处理管理模式。本设计以人事档案管理为入口点,提出了基于面向对彖的数据库 应用系统开发技术一一visual c+6.0为设计工具,以软件工程设计规则为指导

3、的人 事档案管理系统。该课题基于visual c+6.0数据库应用系统开发技术进行开发,达 到了提高企事业单位人事档案管理信息处理效率的效果。2系统需求分析2.1系统开发策略本系统开发主要采用自顶向下的开发方式,自顶向下的方法模型如下图所示:规范编码测试-生加改进图i.开发模型图2.2系统功能需求分析2.2.1人事档案管理系统的系统分析概述现在的世界是信息的世界,随着信息量越来越大以及计算机技术的发展,计算 机己成为各企事业单位管理的重要工具。人事档案管理是对员工信息、部门信息、 岗位信息、出勤信息、工资信息的管理和快速方便的查询。系统开发主要有以下六个模块组成:a)在人事管理模块中实现了,人

4、员档案管理与人事管理等功能;b)在出勤管理模块中实现了,员工的考勤管理等功能;c)在工资管理模块屮实现了,员工工资的管理等功能;d)在系统管理模块中实现了,有关基本表的更新以及数据的备份和恢复的 管理功能e)在用户管理模块中实现了,有关系统用户管理及权限的分配管理;0最后用帮助模块,让使用者了解本系统,并帮助使用者如何更好的使用 本系统。2.2.2系统流程图本系统的系统流程图如下:tlkk砒if 助扯肃ullft文3系统分析与设计3.1系统功能模块设计模块结构图图3.模块结构图3.2数据库设计er图(详细信息见数据库设计概念模型)3.3数据库物理结构表的描述主要表格如下:(详细见数据库编码)

5、员工:em_employee存放员工基本信息 奖惩记录:em_rewpun_rec 模块划分:em_moduleclass 工资:em.salary 模块划分的值对应表名称模块编号模块名称模块对应值功能描述编码ms_idmsmodulenamemsvalue00001人事管理1控制”人事管理”下 所有的模块00002出勤管理2控制”出勤管理”下 所有的模块00003工资管理4控制”工资管理”下 所有的模块00004系统管理8控制”系统管理”下:基本信息,部门 管理00005用户管理16控制”用户管理”下: 系统操作员管理, 权限管理00006数据库管理32控制“系统管理”下:数据恢复备份, 系

6、统初始化4代码设计与实现4.1人事信息管理系统代码设计与实现4.1.1系统主界面不規主页 人爭告理 岀勤莒理 工资莒湮用戶莒理 丟统帘肋人事管理系娩扳权所 ft 2008-2010n川岬施人?杨华num"damage pjformation system*" author: yanah" etna也 xlnyuyanahus 严图4.系统主界面图4.1.2数据库表关联定义详细信息见数据库物理模型4.1.3模块间的关系人事管理模块对员工的各种基木信息进行管理,考勤管理对员工的上下班情况 及请假加班等情况进行管理,工资管理对员工的基木工资、工资构成、税率管理、 补贴管

7、理及员工的月度工资管理,月度工资通过考勤管理里的加班情况、出勤情况、 请假情况、出差情况核算加班费、请假扌ii费、出差补贴等。系统管理主要管理单个 的基本表项、部门管理、数据备份与恢复等。用户管理对系统的用户操作权限及密 码修改管理。4.2代码开发4.2.1 cdlglogin 窗 口图5.登录界面图登录对话框通过读取数据库屮用户名和密码对用户输入的用户名和密码进行校 验,如果用户名或密码为空或错误当用户点击登录时弹岀如下提示:图6.用户名输入提不图图7.密码输入提示图图&密码错误提示图图9.用户名错误提示图 如果非法输入次数超过6次,将弹出如下提示:图10.登录出错提示图系统将自动退

8、出登录,用户输入的密码通过调用ccrypt加密类cy的生成密钥 函数cy.key_creator(suserpassword),调用加密函数对密码进行加密 cy.encrypt(suserpassword),将加密后的密码与数据库中保存的用户名对应密码进行 比较,如果相等的话根据用户表中该用户的权限显示该用户能够管理的模块,其它 模块设置为灰色不可点击。管理员用户可以操作系统的所有模块。4.2.2加密类函数的主要代码生成密钥函数:void ccrypt:key_creator(cstring s) /生成常量 c1,c2 以及加密解密 keyint i,j;unsigned short k=0

9、;cl=l;c2=l;for(i=0,j=s.getlength()-1 ;(i!=j)&&(i!=j+l);i+,j)cl=int(si)a(cl«8);c2=int(s|j)a(c2«8);de_key=(c 1 *c2/s.getlength()&(k);en_key=de_key;加密函数:cstring ccrypt:encrypt(cstring s) / 加密函数cstring result,str,back;int i,j;ch二s;result=s; /初始化结果字符串for(i=0; i<s.getlength(); i+)

10、 /依次对字符串中各字符进行操作 /resulti=sia(en_key»8); /将密钥移位后与字符异或result.setat(i, s.getat(i)a(en_key»8);if(i<s .getlength()-1)en_key = (short)(resulti+en_key)*c 1+c2); / 产生下一个密钥 s二result;/保存结果for(i=0; i<s.getlength(); i+) / 对加密结果进行转换j=si; /提取字符/将字符转换为两个字母保存str=“12”;设置str长度为2/str0=65+j/26;/str| 1

11、=65+j%26;/back += str;str.setat(o, 65+j/26);str.setat(l, 65+j%26);back += str;return back;加密函数的实现:cstring ccrypt:decrypt(cstring s)/ 解密函数cstring result,str,back;int i,j;/result.emptyo; / 清除结果for(i=0; i < s.getlength()/2; i+) /将字符串两个字母一组进行处理 j = (s2*i-65)*26;j+=s2*i+l-65;st=t;设置str长度为1str=j;result

12、+=str; 追加字符,还原字符串s=result; /保存中间结果for(i=0; i<s.getlength(); i+) /依次对字符串中各字符进行操作/resulti=(unsigned int)sia(de_key»8); / 将密钥移位后与字符异或 result.setat(i, (byte)s.getat(i)a(de_key»8);if(i<s.getlength()de_key = (short)(si+de_key)*cl+c2); / 产生下一个密钥return result;您人孚台系妖櫃式切第d彖统主页系统主页版权所有20082010人

13、事管理系疣x人爭首理 岀勤昔理 工资笞理 系竝管建 用户咎理 系统帮助""mmf twfcomatthm"恤"r vannh ia f fma4* yizgvwhzecrra rm图11 管理员登录后主界面人爭管理人员档案管理职称评定管理奖惩管理培训记录管理人爭变动管理考评管理福利品领取.管理/=白今乙、亠咨社图12.左侧人事管理树型图出勤管理考勤记录谙假记录加班记录出差记录月度考勤记录图13左侧出勤管理树型图工资管理工资构成项目管理节日补贴管理月度工资管理税率管理基本工资等级管理图14.左侧工资管理树型图4.2.4人事管理人事管理是对员工基本信息、人事

14、变动信息、培训信息等的录入、删除、修改、 查询、导岀等的操作,主要包括以下几个部分:人员档案管理是对员工的基本信息的管理,方便对员工的管理;界面(见下图)职称评定管理记录员工的职称评定情况;奖惩管理记录员工的奖惩情况及奖惩原因;培训记录管理记录员工的培训情况;人事变动管理记录员工的调动情况;考评管理记录员工的考评情况、结果、时间等;福利品领取管理记录员工领取福利品的情况;培训项目管理说明:对于公司为提供员工素质和能力而进行的培训项目进行添 加、修改、删除管理,主要包括培训名称、培训地点、培训内容、培训开始吋间、培训结束时间、培训单位、培训费用等的管理。考评项目管理说明,公司增加的各种对员工的考

15、核管理。对于员工进行考核, 从而保证对员工的各种晋升及工资的调整进行管理。福利品管理,对于公司在节fi时发放给员工的福利品进行添加修改等管理。底鼻人年营理紊统二b直系场主页员工基本倍息一览农览训记录甘理序丄妙名ikq更多解科©直箇 -w员工状恣培姻狀况行政级别专业岗位工种001宋国志部门四川未婚处级计第机网络官理员002东东山西左职己婚科级对外翻薛会计003西西o祁门简明汉英词戲深圳具他处级生物制药会计004明明branch安徽待畔高异部级对外翻译思序员005meoartmm待能蔑异部级对外翻译程序员006杨华des湖北葵职未婚e级计算机网谿言玫员007qweesection安微待聘

16、离异部级对外翻译出纳008qvr男党员阿昌族安微离异部级对外翻译出纳009121男党员阴昌族安備离异部级对外詡译出纳员工j所有创部门订所有旦员工畑d所衬 n肉位工种"所有二1行政级跖i所有rwanl修改| 加 |导出|i孚管理塔训项目苕理出動営理人审善理系统euail: sunyuoygghu卵oil. comnuw 13:15:21图15.人员档案管理图当操作员选中一条记录双击或点击增加(修改)等按钮是将弹出图16 单个员工信息图操作员可以在此对话框上查看、修改、增加新的员工详细信息。用户点击增加 按钮后,系统自动生成员工编号(此处员工编号是从数据库中读取第一个最大未用 的编号),

17、代码如下:strsql.format("select empid from em_employee order by empid asc"); m_precordset=ado.getrecordset(_bstr_t(strsql);while(! m_precordset->adoeof)vbefld=atoi(lpctstr)(_bstr_t)m_precordset->getcollect("empid"); m_precordset->movenext();if(m_precordset->adoeof)break;va

18、ftid=atoi(lpctstr)(_bstr_t)m_precordset->getcollect(nempid");if(vaftid-vbefld)>l)vid=vbefid;break;贞 m_precordset->adoeof)vid=vbefid;vid+=l;vempid.format(n%05dh,vid);插入员工基本信息时,基本信息比如彖民族、专业、籍贯等信息可以通过从下 拉菜单中选择,而不用手工输入,信息中有关时间的信息可以通过点击下拉框选择 时间来设置。当员工插入完成后点击保存退岀。coneemprec对话框中“上一个”按钮代码如下:st

19、rsql.format(mselect * from em_employee");m_precordset=ado.getrecordset(_bstr_t(strsql);while(!m_precordset->adoeof)vempid=(lpctstr)(_bstr_t)m_precordset->getcollect(',empid"); if(vempid=m_empid)break;elsem_precordset->movenext();m_precordset->moveprevious();if(m_precordset-

20、>adobof)m_precordset->mo velast();vempid=(lpctstr)(_bstr_t)m_precoi'dset>getcollect(”empid”);当目前已经是最后一个员工时,自动显示第一个员工的相关信息。“下一个”同 理自动显示最后一个员工信息。员工社会关系、员工辅助信息、员工个人经历的界面差不多类似,如下序号姓名与本人关系联系方式工作单位备注001宋江兄南海无002杨武兄州暂时empty上一个 下一个 増加 保存 删除 打印 退出员工基本信息r 员工辅肋信息员工个人经历林双击

21、修改林編号:姓名:与本人关系:联系方式:工作单位:备注:増加保存删除图17.员工社会关系、员工辅助信息、员工个人经历图 获取选中行代码如下:pos = m_empinfb.getfirstselecteditemposition(); if(!pos)return;index= m_empinfo.getnextselecteditem(pos); / 得到项目索引dlg.empid = m_empinfo.getitemtext(index, 1); 获取员工编号人事管理模块中职称评定管理、奖惩管理、培训记录管理、人事变动管理、考 评管理、福利品领取管理等界面类似,界面如下:员工职称佶昌一览

22、表pf001002003004姓名职称昭昭中级工程帅明明面级工程师小小毀授小小离版工程帅wwwww职待奖勵1丄oop 9000 00 ¥ 1 00¥取傅方犬jkww 考评ww取彳曰期2008-4-42008 <1 a 2008-11-152008-4-4恥用单位四丿ii点礼大半w备注収彳写于进步w员工mt名2取得方:取徇曰期.2008-4-13陋用俎位保有bw涂图1&职称评定管理、奖惩管理、培训记录管理、人事变动管理、考评管理、福利品领取管理等界面图4.2.5出勤管理出勤管理主要包括考勤记录、请假记录、加班记录、出差记录、刀度考勤记录 五个部分。考勤记录是负责

23、对员工的上下班时间进行记录,包括添加、删除、修改;计算 工作吋间假记录记录员工请假次数,在核算员工工资时将根据请假次数进行工资核算; 加班记录记录员工加班的时间、日期及加班类型,核算工资时将根据加班类型 及加班时间核算加班工资;出差记录记录员工的出差类型、出差地点、出差开始时间、出差结束时间、出 差任务等,其中出差类型及时间将在工资核算时计算出差补贴;月度考勤记录记录了员工一个月中累积加班时间、累计请假时间、累计旷工次 数、累计出差吋间、迟到早退次数,其中累计矿工次数及累计迟到早退次数也将在 工资核算中扌ii除相应金额。*双击修改*编号2员工蛀名,开始时间:2008- 4-13结束时间:200

24、8- 4-13批准人:请假理由:増加保存删除打印退出考勤记录1请假记录j加班记录出差记录月度考勤记录序员工蛀名开始时间结束时间批准人请假理由001东东2007-10-102007-10-20宋国志生病002哈哈2008-2-32008-2-5宋国志提前回家过年图19.员工出勤管理图4.2.6工资管理工资管理主要包括对工资等级、工资构成项目、税率管理、节h补贴、月度工 资等管理。工资等级,对工资等级的添加、修改、删除,主要是方便用人事管理对员工工 资的添加、修改,通过对工资等级的修改可以对员工同一等级进行批量修改。工资构成项目,是对于工资由哪些项0构成的管理及这些项目是税前还是税后 及加、减等的

25、管理。界面如下:一工资枸成项目一嵬表一序丁工资顼目编号丨工资项目名沐工資全颔加孫j稅前紐后00100008木电补贴200. 00¥加税后00200003住房公积全200. 00 ¥孫税后00300006夫业保验150.00¥税馬00400001浮动工資1000.00¥加税前00500007主x保险320.00¥加税前00600002养老保险300.00¥税前00700004工伤保险270.00¥00800005医疗保险450. 00¥税前00900009意外保验124. 00¥图20 .工资构成图税率管理

26、,是对员工应纳税的税率及纳税金额的上下限、速算扣除数等的管理,方便月度工资屮核算税后工资。节口补贴管理,是公司对于员工各种法定节口及员工生口发放给员工的补贴。月度工资管理,实现了对员工的月度工资的添加、修改、删除、查询、导出到 excel等的管理,基本工资是根据是人事管理哪里读取的,加班费通过加班类型及加 班时间计算,出差补贴按照每种出差类型的补贴*次数的和,额外税前是通过工 资管理员设置的,设置界面如下图1),应发工资计算公式:应发工资金额二基本工 资+加班费+出差补助请假扣款+额外税前项,额外税后、节日补贴是通过工资管理 员设置的,设置界面如下图2),税后工资计算公式:税后工资二应发工资金

27、额纳税 金额;税金额计算公式:纳税金额二应纳税金额*适合税率速算扌ii除数而应纳税金额 二应发工资金额纳税基数(1000);实发工资二税后工资+稅后应加项税后应扣项+纳税 基数。月度工资管理的主界面:员工月度工姿一览点一导岀工资值息血发工資t员工,所宙月份j所有序姓名月份|基本工資加班费出差补贴请假扣款额外税前|001 宋国志2008年1月5000. 00¥0060. 00 ¥-824. 00¥4116. 00¥002 东东2008年2月3000.00¥2730. 00¥0005730. 00¥003 明明2008年4月15

28、00. 00¥300. 00¥1500. 00¥0876. 00¥4176. 00¥拿拿双击修改祸増加图21月度工资管理图 jt i工衣项目名猝加减加加减减减减1 2 3 4 5 6 o o o o o o o o o o o o 浮动工茨1000.00生育保险320.00倉外保险124.00养老保险300.00工伤保险270.00医疗保险450.00图22 额外税前计算图i口口口q更各解釋參血g<额外o額外简明汉英词典superfluity003失业保险合计* 0 ¥胃金板(¥加减|200. 00加j200. 00减

29、150. 00减图23额外税后计算图月度工资表导出至excel效果如下图:icrosoxce亘文件a)1) mx(x) «aq)格式 工臭cd j?«««)带肋qp二"帕宙£心迭 岂w“址; ««kb3国哆潅3aabcdefghijk*1 ej工賣事号員工号妊名月份基本工資尊级基岀基补點iftfil扣款篠外12 w0000100001未国志200琳1月正氏三级工茨5000.00¥0.00 ¥0.00¥60.00 ¥-824.53 *00200004r 00002东东200拜2

30、月正氏二级工茨3000.00¥2730. 00 ¥0.00¥0.00 ¥0.04 *0030000300004明明200细月1500.00¥300. 00 ¥1500.00¥0.00 ¥876.0,图24.工资表导出样式图查询时的通过选择下拉框中的员工姓名或月份查看工资信息,当选择变化时通 过调用selecteconditionseto®数改变查询条件,然后调用displaytxt()显示查询后的 结果,selecteconditionset()主要代码;void csalary:selectecondi

31、tionset()updatedata(true);condition_sql="n;m_condition_month.getwindowtext(vcondition_month); m_condition_name.getwindowtext(vcondition_name);if(vcondition_name!=h 所有”) vcondition_empid=ds.namelbid(vcondition_name); condition_sql=condition_sql+uandem_salary.empid=m'4-vcondition_empid+',

32、h,;/em_s alary.empidif(vcondition_month!="所有”)condition_sql=condition_sql+"andsalmonth=m,+vcondition_month+;refreshdata();updatedata(false);查 询 语 句: vsql=”select salid,em_salary.empid empid,empname,salmonth,em_employee.sgsalarygrade"vsql=vsql+nsgsalarygrade,sgsalarysum,salovertimepay,

33、salgoonerrandssubsidy" vsql=vsql+n,salleavepenalty,salatherbeftr,saloughtsalary,salatherafttr,salfeastsubsidyn;vsql=vsql+n,saltaxaftersalary,salfactsalary,trtaxrate,saltaxsum,saldate,salidiograph,salremark ”;vsql=vsql4-"fromem_employee,em_salary,em_salarygrade whereem_employee.empid=em_sal

34、ary.empidn;vsql 二 vsql+”andem_salarygrade.sgsalarygrade=em_employee.sgsalarygrade ”;vsql=vsql+(_bstr_t)condition_sql;vsql二vsql+” order by salmonth asc"导岀excel主要代码如下:void csalary:onsalaryout()/ todo: add your control notification handler code here连接数据库adoconn ado;ado.oninitadoconn();/提取数据库中员工信息定

35、义操作excel必要的对象colevariant voptional(long)disp_e_paramnotfound, vt_error);.application objapp;workbooks objbooks;_workbook objbook;worksheets objsheets;-worksheet objsheet;range objrange;创建excel对象objapp.createdispatch("excel.applicationn);objbooks=objapp.getworkbooks(); 返回工作簿对象/打开指定excel文件cstring

36、 path;/获取当前应用程序的完整文件名,包含完整路径getmodulefilename(null,path.getbuffersetlength(max_path+1 ),max_path);取得最后一个,去掉文件名,从而获取当前应用程序的工作路径int pos = path.reversefind('v);path = path.left(pos+l);/在当前应用程序的工作路径下打开emplnfo.xls文件objbook.attachdispatch(objbooks.add(_variant_t(path + "salary.xls"); objshee

37、ts=objbook.getsheets();/定义第一个sheet为对象 objsheet=objsheets.getitem(_variant_t)short(l); objrange.attachdispatch(objsheet.getcells(),true);/读取临时表中的记录_recordsetptr m_rs;_bstr_t vsql;vsql 二"selectsalid,em_salary.empidempid,empname,salmonth,em_employee.sgsalarygrade"vsql 二 vsql+”sgsal ary grade,

38、sgsalary sum,salo vertimepay,salgoonenandssubsidy" vsql=vsql+",salleavepenalty,salatherbeftr,saloughtsalary,salatherafttr,salfeastsubsidy"vsql=vsql+n,saltaxaftersalary,salfactsalary,trtaxrate,saltaxsum,saldate,salidiograph,salremark ”;vsql=vsql+"from em_employee,em_salary,em_sala

39、rygrade whereem_employee.empid=em_salary.empidu;vsql=vsql+"andem_salarygrade.sgsalarygrade=em_employee.sgsalarygrade ”;vsql=vsql+(_bstr_t)condition_sql;vsql=vsql+” order by salmonth asc"m_rs = ado.getrecordset(vsql);/生成标题栏 objrange.setitem(_variant_t(long)(l),_variant_t(long)(l),_variant_t

40、(h 序 号");objrange.setitem(_variant_t(long)( 1 ),_variant_t(long)(2),_variant_tc'工资编 号”);objrange.setitem(_variant_t(long)( 1 ),_vai*iant_t(long)(3),_variant_t(” 员工编 号”);objrange.setitem(_variant_t(long)(l),_variant_t(long)(4),_variant_t("姓 名n);objrange.setitem(_variant_t(long)(l),_vari

41、ant_t(long)(5),_variant_t("月份");objrange.setitem(_variant_t(long)(l),_variant_t(long)(6),_variant_t("基本工 资等级”);objrange.setitem(_variant_t(long)(l),_variant_t(long)(7),_variant_t(h 基本工资”);objrange.setitem(_variant_t(long)(l ),_variant_t(long)(2 l),_variant_t(u 备 注”);/记录总数int irowcount

42、 = 0;while(! m_rs->adoeof)/把列值放入excel指定单元格cstring str;str. format(” 03d”,irowcount+1);objrange.setitem(_variant_t(long)(irowcount+2),_variant_t(long)(l),_variant_t( str);str = (lpctstr)(_bstr_t)m_rs->getcollect(hsalidu);/ 工资编号 objrange.setitem(_variant_t(long)(irowcount4-2),_variant_t(long)(2)

43、,_varia nt_t(str);str = (lpctstr)(_bstr_t)m_rs->getcollect(nempidn);/ 员工编号 objrange.setitem(_variant_t(long)(irowcount-t-2),_variant_t(long)(3),_varia nt_t(str);str = (lpctstr)(_bstr_t)m_rs->getcollect(,empnameh);/ 员工姓名 objrange.setitem(_variant_t(long)(irowcount4-2),_variant_t(long)(4),_varia

44、 nt_t(str);str 二(lpctstr)(_bstr_t)m_rs->getcollect(hsalmonthh);/月份 objrange.setitem(_variant_t(long)(irowcount+2),_variant_t(long)(5),_varia nt_t(str);str = (lpctstr)(_bstr_t)m_rs->getcollectc,sgsalarygradeh);/ 基本工资 等级objrange.setitem(_variant_t(long)(irowcount+2),_variant_t(long)(6),_varia nt

45、_t(str);str = (lpctstr)(_bstr_t)m_rs->getcollect(nsgsalarysumh);/ 基本工资 str.format("%0.2fy ",atof(str); str = (lpctstr)(_bstr_t)m_rs->getcollect("salremark");/ 备注objrange.setitem(_variant_t(long)(irowcount+2),_variant_t(long)(21),_vari ant_t(str);irowcount+; m_rs->movenex

46、t();设置excel为可见 objapp.setvisible(true);/释放句柄objrange.releasedispatch(); objsheet.releasedispatch(); objsheets.releasedispatch(); objbook.releasedispatch();objbooks.releasedispatch();objapp.releasedispatch(); ado.exitconnect();4.2.7系统管理系统管理主要包括对系统屮的单项表格进行修改、添加,部门管理、数据备份 恢复、数据压缩等管理。基本信息管理,对数据库中单项表格进行修

47、改、添加,如对民族、专业、学历 等的操作;部门管理,对部门信息进行添加、修改、删除,选中部门信息添加时,将弹出 下图2),弹出的对话框中部门编号及上级部门编号都是从数据库中读取的,部门编 号是读取系统中第一个未用的部门编号,界面如下:图25.部门管理图图26.部门信息修改图当用户选择部门点击删除时,如果该部门包含下级部门就会弹出“此部门包含 下级部门,不能删除”的提示,如果该部门包含员工吋就会弹出“此部门包含员工 不能删除”的提示,提示如下图:图27.部门删除提示(包含有下级部门)图图2&部门删除提示(包含员工)图?丿是否iw除当躬部门'硏发刃?取消图29 部门删除提示图数据备

48、份与恢复,对数据库信息进行维护,保证数据损坏时能够还原,数据备 份时,将记录在数据库中备份表格em_backup表格中,该表格存储了数据库保存的 备份id,备份时间,及备份路径;备份对话框界面如下:图30.数据备份恢复图备份说明:为了防止数据冗余,每天备份的最大数量为99999,备份吋将弹出 文件保存对话框,文件名是自动根据备份口期及当天备份编号生成的,用户可以选 择更改备份名称,备份名称如“备份数据backup2008-04-15-19-55-00001",备份 成功后会提示备份成功。数据恢复时也将弹出似文件打开对话框,用户可以选择备份文件*占31文件,点 击打开后开始恢复,数据库

49、恢复需要几分钟时间。数据备份主要代码:生成数据备份id函数cstring cbakeupdlg: :producebackupid()连接数据库adoconn m_adoconn;m_adoconn.oninitadoconn();设置select语句_bstr_t vsql;ctime tt=ctime: :getcurrenttime();cstring rq=m.fonnat(”ymd”);cstring str_tt=tt.format(nbackup%y-%m-%d-%h-%m-h);vsql = ” select backup_id from em_backup where bac

50、kup_date='"+ rq +n,order by backup_idn;执行selete语句_recordsetptr m_precordset;m_precordset = m_adoconn.getrecordset(vsql);执行select语句if(m_precordset->adoeof)return (str_tt+noooolh);else_variant_t value;cstring str,sub;for(int i=l;i<99999;i+)value=m_precordset->getcollect("backup_

51、id");str=(char*)(_bstr_t)value;sub=str.mid(23);int number=atoi(sub);if(number!=i)break;m_precordset->movenext();if(m_precordset->adoeof)i+;break;if(i=99999)messagebox(n今日备份数量大于 99999 了”,”错误”,mb_okcancel | mbjconquestion |mb_systemmodal);return cstring('m,);str.format(n%05dn,i);str tt=

52、str tt+str;return str_tt;m_adoconn.exitconnect();数据备份函数void cbakeupdlg:onbackup()/ todo: add your control notification handler code herecstring id=this->producebackupid();cstring backname = ”备份数据"+id;连接数据库adoconn m_adoconn;m_adoconn.oninitadoconn();设置select语句_bstr_t vsql;cfiledialogdlg(false,nbakn,backname,ofn.hidereadonlyiofn.overwriteprompt/c.ba k)”);dlg.m_ofn.lpstrt

温馨提示

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

评论

0/150

提交评论