软件工程课程设计-公司人事管理系统.doc_第1页
软件工程课程设计-公司人事管理系统.doc_第2页
软件工程课程设计-公司人事管理系统.doc_第3页
软件工程课程设计-公司人事管理系统.doc_第4页
软件工程课程设计-公司人事管理系统.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

前言 本次软件工程的课程设计我们完成了一个人事管理系统。通过这次课程设计,我们掌握了microsoft visual studio2005和microsoft office access 2003的使用方法和软件设计的方法。这次的课程设计我们实现了人事管理系统的基本数据管理,人事档案管理,数据库管理和系统管理的功能。其中基本数据管理可分为民族档案设置,职工类型设置,文化程度设置,政治面貌设置,部门类别设置,工资类别设置,职称类别设置,职务类别设置这8个部分,人事档案管理可分为人事档案浏览,人事资料查询,人事资料统计这三部分,数据库管理可分为数据库备份和恢复。系统管理可分为用户设置和系统退出。由于时间紧促,还有很多功能没有完成,譬如考试管理和职工的通信录等。通过这次的课程设计,在界面设计上也收获不少,学会了skinplusplus的使用,这使界面的美化变得更容易。我们将继续改进这系统。 广东工业大学课程设计任务书题目名称人事管理系统学生学院计算机学院专业班级05计算机软件工程(3)班姓 名叶伟平学 号3105007360 一、课程设计的内容这次课程设计采用microsoft visual studio2005作为前台应用程序的设计工具,用microsoft office access 2003作为后台数据库,完成一个人事管理系统。实现的主要功能有基础数据管理(民族档案设置,职工类型设置,文化程度设置,政治面貌设置,部门类别设置,工资类别设置,职称类别设置,职务类别设置),人事档案管理(人事档案浏览,人事资料查询,人事资料统计),数据库管理(数据库的备份与恢复)系统管理(设置用户和退出系统)。二、课程设计的要求与数据使用 microsoft visual studio 2005和 microsoft office access 2003完成一个人事管理系统。按照一个企业实际管理中的实际需要实际数据库,选定数据。 三、课程设计应完成的工作1. 独立完成系统的分析、设计、编码、测试工作。2完成设计报告的撰写。四、课程设计进程安排序号设计(论文)各阶段名称地点起止日期1选定本次课程设计及报告的研究课题宿舍2对研究课题进行调查并做出详细的需求分析宿舍日期3收集资料和参考文献图书馆为4认真阅读和学习资料、文献并做出初步构思宿舍一周5制定出整个系统的设计构想、设计思路和方法宿舍左右6进行系统的设计、开发和编写程序代码实验室7对系统进行测试和系统调试实验室8完成整个系统的开发并进行系统维护宿舍9撰写课程设计报告宿舍10最终完成系统修改、论文撰写和表格填写宿舍11上交课程设计报告、系统答辩教学楼2008.6.26-2008.6.27五、应收集的资料及主要参考文献1.郑阿奇/丁有和. visual studio2005教程,北京:机械工业出版社,2006.92.李代平.软件工程.第二版.北京:冶金工业出版社,2006.113.王珊/萨师煊.数据库系统概论.第四版.北京:高等教育出版社,2006.54.李春葆/曾平.数据库原理与应用,北京:清华大学出版社,2005.发出任务书日期:2007年6月10日 指导教师签名:计划完成日期: 2007年6月29日 基层教学单位责任人签章:主管院长签章:目 录课程设计(论文)错误!未定义书签。1.开发环境和相关技术介绍61.1开发环境61.2相关技术介绍62.需求分析62.1系统需求和功能62.2数据字典62.2.1数据项62.2.2数据结构72.3安全性要求83.概念结构设计83.1设计方法和步骤83.2概念结构e-r图83.2 e-r图的有关实体和联系的说明104.逻辑设计104.1 关系模式105.逻辑设计105.1建立数据库105.2建立表106 应用程序设置和代码分析1361配置odbc数据源和添加skin+皮肤1362人事档案浏览1463人事档案查询1864人事资料统计2365数据库备份以及恢复3266设置用户347. 测试方案和测试报告367.1白盒测试367.2黑盒测试367.2.1登陆测试377.2.2人事查询功能测试388.安装说明和使用说明398.1运行条件398.2使用方法399.结 论3910.参考文献391.开发环境和相关技术介绍1.1开发环境系统结构:c/s结构数据库系统:microsoft office access 2003数据库连接方式:odbc连接方式开发工具:microsoft visual studio20051.2相关技术介绍visual studio是微软公司推出的开发环境。是目前最流行的windows 平台应用程序开发环境。目前已经开发到9.0版本,也就是visual studio 2008。 visual studio可以用来创建 windows平台下的windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和office 插件。使用visual studio 2005, 专业开发人员能够:使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境;使用集成的可视化数据库设计和报告工具,创建sql server 2005解决方案;使用visual studio sdk创建可以扩展visual studio ide的工具;专业开发人员喜欢自由的使用.net framework 2.0,它是一种稳健的、功能齐备的开发环境,支持创建扩展visual studio集成开发环境的工具。2.需求分析2.1系统需求和功能设计一个人事管理系统,使系统满足以下需求和功能1)根据企业人事管理的需要,对企业以及企业中员工的信息进行添假删除等操作,并能对人事档案进行浏览,对人事资料进行查询,对人事资料进行统计。为企业的人事管理提供一个便利的管理系统。2)、系统功能包括:a系统管理(设置用户和退出系统)。b基础数据管理(民族档案设置,职工类型设置,文化程度设置,政治面貌设置,部门类别设置,工资类别设置,职称类别设置,职务类别设置)。c人事档案管理(人事档案浏览,人事资料查询,人事资料统计)。数据库管理(数据库的备份与恢复)。2.2数据字典2.2.1数据项1)数据项名称: 用户名简述:用户的名字,没有重复,可以唯一标识每一用户类型:文本长度:502)数据项名称:用户密码简述:用户的密码,用来证验登陆的用户是否合法。类型:文本长度:503)数据项名称:是否管理员简述:描述是否系统管理员类型:是/否取值范围:真/假2.2.2数据结构1)数据结构名称:用户名和密码信息 组成:用户名,密码,是否管理员2)数据结构名称:民族档案设置组成:民族编号,民族名称3)数据结构名称:职工类型设置组成:职工类型编号,职工类型名称4)数据结构名称:文化程度设置组成:文化程度编号,文化程度名称。5)数据结构名称:政治面貌设置组成:政治面貌编号,政治面貌名称6)数据结构名称:部门类别设置组成:部门类别编号,部门类别名称7)数据结构名称:工资类型设置组成:工资类型编号,工资类型名称8)数据结构名称:职称类别设置组成:职称类别编号,职称类别名称。9)数据结构名称:职务类别设置组成:职务类别编号,职务类别名称10)数据结构名称:职工信息组成:职工编号,职工性别,职工年龄,民族,婚姻状况,家庭电话,电子邮箱,手机,籍贯,地址,毕业学校,职称,入职时间,职称类别,部门类别,职务类别。11)数据结构名称:职工的家庭成员组成:编号,员工号,成员姓名,关系,出生日期,工作单位,担任职务,政治面貌2.3安全性要求访问数据库时需要输入登陆帐号和密码。在数据库内设有用户表,登陆系统时会要求输入用户帐号和密码。登陆模块根据输入帐号和密码查用户表,查到匹配记录则允许其登陆系统。用户帐号和密码可以在系统中添加和删除。3.概念结构设计3.1设计方法和步骤采用自底而上的设计方法。先自顶向下地进行需求分析,对人事管理系统的需求进行逐步细化;然后再自底而上地设计概念结构,最终将各个局部应用的概念结构集合成为全局概念结构。3.2概念结构e-r图通过对局部应用的选择,逐一设计出分e-r图,并对各个分e-r图进行合并,生成初步e-r图,消除不必要的系统冗余,可以得出以下人事管理系统e-r图。用户设置民族档案案文化程度政治面貌职称类别工资类别部门类别职工类型职务类别用户名职务名称密码职务编号民族编号民族名称文化程度编号编号文化程度名称工资类别编号工资类别名称 图3.1 人事管理系统的 e-r 图1用户浏览,查询,统计职工表用户名密码职工姓名民族婚姻状况身份证职工编号出生日期 图3.12人事管理系统的 e-r 图23.2 e-r图的有关实体和联系的说明说明:对于人事管理系统的 e-r 图1,一个用户可以设置多个民族的情况,一个民族档案能被多个用户设置。一个用户可以设置多个职工类型,一个职工类型能被多个用户设置。其他的类似。对于图3.12人事管理系统的 e-r 图2,一个用户可以浏览,查询多个职工的档案,一个职工的档案能被多个用户浏览。4.逻辑设计4.1 关系模式由e-r图转换得到的关系模式如下:用户(用户名,密码,是否管理员)民族档案设置(民族编号,民族名称)职工类型设置(职工类型号,职工类型名称)文化程度设置(文化程度编号,文化程度名称)政治面貌设置(政治面貌编号,政治面貌名称)部门类别设置(部门类别编号,部门类别名称)工资类别设置(工资类别编号,工资类别名称)职称类别设置( 职称类别编号,职称类别名称)职务类别设置(职务类别编号,职务类别名称)职工表(职工编号,职工名,出生日期,年龄,民族,婚姻状况,身份证,家庭电话,电子邮箱,手机,籍贯,地址,毕业学校,所在部门,政治面貌,职称类别,职务类别,工资类别,文化程度)职工家庭情况(编号,员工工号,成员姓名,关系,出生日期,所在部门,担任职务,政治面貌,手机)5.逻辑设计5.1建立数据库本设计用microsoft office access 2003作为后台数据库,在ms sql server 2000中创建一个名为manager1的数据库,并在其中建立逻辑设计中涉及的表. 5.2建立表在access中,可以查看所建立的表,并添加适当测试数据5.2.1 用户表 表 5.1522 民族挡案表 表 5.2 523职工类型表 表 5.3524文化程度表 表 5.4 525政治面貌表 表 5.5526部门类别设置表表 5.6 527工资类别表 表 5.7528职称类别表 表 5.8 529职务类别表 5210职工表5211 职工家庭情况表6 应用程序设置和代码分析61配置odbc数据源和添加skin+皮肤本系统使用的是当程序运行时自动配置数据源的方法。实现方法如下:首先在stdafx.h文件中添加 头文件 afxdb.h , #include 和数据库api头文件, #include /odbc数据库api头文件。然后在manager.cpp 的bool cmanagerapp:initinstance() 函数中添加如下代码sqlconfigdatasource(null,odbc_add_dsn, microsoft access driver (*.mdb), dsn=manager10 description=hotel0 filetype=access0 dbq=.manager1.mdb0 );添加皮肤 在manager.cpp中添加 #include .skinsskinplusplus.h在bool cmanagerapp:initinstance() 函数中添加initializeskin(_t(xpcorona.ssk);62人事档案浏览先建立idd_page_baseinfo对话框,之后为此对话框的部分控件建立关联变量,之后再建立idd_dialog_browse对话框,之后为此对话框的部分控件建立关联变量。添加代码实现人事档案浏览功能实现这个功能的主要代码如下:void cbrowsedlg:onbuttonsearch() / todo: add your control notification handler code hereupdatedata(true);if(m_ncondition0)messagebox(请选择查询条件!);m_ctrcondition.setfocus();return;if(m_strcontent=)messagebox(请输入查询内容!);m_ctrcontent.setfocus();return;cstring strsql;if(0=m_ncondition)/按部门查询strsql.format(select * from person where dept=%s,m_strcontent);refreshdata(strsql);else if(1=m_ncondition)/按职工职务查询strsql.format(select * from person where duty=%s,m_strcontent);refreshdata(strsql);else if(2=m_ncondition)/按职工职称查询strsql.format(select * from person where technical=%s,m_strcontent);refreshdata(strsql);else if(3=m_ncondition)/按职工类型查询strsql.format(select * from person where isworker=%s,m_strcontent);refreshdata(strsql);else if(4=m_ncondition)/按工资类别查询strsql.format(select * from person where aboutpay=%s,m_strcontent);refreshdata(strsql);else if(5=m_ncondition)/按职工性别查询strsql.format(select * from person where sex=%s,m_strcontent);refreshdata(strsql);else if(6=m_ncondition)/按婚姻状况查询strsql.format(select * from person where ismarry=%s,m_strcontent);refreshdata(strsql);else if(7=m_ncondition)/按职工民族查询strsql.format(select * from person where folk=%s,m_strcontent);refreshdata(strsql);else if(8=m_ncondition)/按政治面貌查询strsql.format(select * from person where political=%s,m_strcontent);refreshdata(strsql);else if(9=m_ncondition)/按文化程度查询strsql.format(select * from person where education=%s,m_strcontent);refreshdata(strsql);/设置按钮状态m_ctrnewbnt.enablewindow(true);m_ctrdelbnt.enablewindow(true);m_ctrsavebnt.enablewindow(false);m_ctrcancelbnt.enablewindow(false);m_bnew = false;m_ctrmodify.enablewindow(true);m_baseinfodlg.m_ctrid.enablewindow(false);void cbrowsedlg:onbuttonsearch() / todo: add your control notification handler code hereupdatedata(true);if(m_ncondition0)strtemp.format( age = %d ,strtype,m_nage);if(!bnocondition)strsql += and ;strsql += strtemp;bnocondition = false;/messagebox(strsql);if(m_strdept2!=)strtemp.format( dept2 %s %s ,strtype,m_strdept2);if(!bnocondition)strsql += and ;strsql += strtemp;bnocondition = false;if(m_strdept3!=)strtemp.format( dept3 %s %s ,strtype,m_strdept3);if(!bnocondition)strsql += and ;strsql += strtemp;bnocondition = false;if(m_strname!=)strtemp.format( name %s %s ,strtype,m_strname);if(!bnocondition)strsql += and ;strsql += strtemp;bnocondition = false;if(m_strnative!=)strtemp.format( native %s %s ,strtype,m_strnative);if(!bnocondition)strsql += and ;strsql += strtemp;bnocondition = false;if(bnocondition)strsql = select * from person;/messagebox(strsql);m_ctrlist.deleteallitems();m_ctrlist.setredraw(false);if(!m_personset.open(afx_db_use_default_type,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;char buffer20;cstring strtime;int i=0;if(m_personset.iseof()messagebox(没有符合条件的记录!);return;while(!m_personset.iseof()m_ctrlist.insertitem(i,m_personset.m_id);m_ctrlist.setitemtext(i,1,m_personset.m_name);m_ctrlist.setitemtext(i,2,m_personset.m_sex);strtime.format(%d-%d-%d,m_personset.m_birth.getyear(),m_personset.m_birth.getmonth(),m_personset.m_birth.getday();m_ctrlist.setitemtext(i,3,strtime);_itoa(m_personset.m_age,buffer,10);m_ctrlist.setitemtext(i,4,buffer);m_ctrlist.setitemtext(i,5,m_personset.m_ismarry);m_ctrlist.setitemtext(i,6,m_personset.m_duty);m_ctrlist.setitemtext(i,7,m_personset.m_technical);m_ctrlist.setitemtext(i,8,m_personset.m_isworker);m_ctrlist.setitemtext(i,9,m_personset.m_aboutpay);m_ctrlist.setitemtext(i,10,m_personset.m_education);m_ctrlist.setitemtext(i,11,m_personset.m_political);strtime.format(%d-%d-%d,m_personset.m_date2.getyear(),m_personset.m_date2.getmonth(),m_personset.m_date2.getday();m_ctrlist.setitemtext(i,12,strtime);i+;m_personset.movenext();m_personset.close();m_ctrlist.setredraw(true);64人事资料统计主要代码如下:void cstatdlg:onclicklist1(nmhdr* pnmhdr, lresult* presult) / todo: add your control notification handler code herecstring strsql;cstring strvalue=0;cdatabase db;db.open(_t(manager1);crecordset recordset(&db);updatedata(true);/获得统计类型int ntype = m_ctrlist.getselectionmark();int i=0;switch(ntype)case 0:/按性别统计m_ctrresult.deleteallitems();m_ctrresult.deletecolumn(1);m_ctrresult.deletecolumn(0);m_ctrresult.insertcolumn(0,性别);m_ctrresult.insertcolumn(1,人数);m_ctrresult.setcolumnwidth(0,100);m_ctrresult.setcolumnwidth(1,100);strsql=select count(id) as num ,sex from person group by sex;/messagebox(strsql);if(!recordset.open(crecordset:forwardonly,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;while(!recordset.iseof()recordset.getfieldvalue(sex,strvalue);m_ctrresult.insertitem(i,strvalue);recordset.getfieldvalue(num,strvalue);/messagebox(strvalue);m_ctrresult.setitemtext(i,1,strvalue);i+;recordset.movenext();recordset.close();break;case 1:/按年龄统计m_ctrresult.deleteallitems();m_ctrresult.deletecolumn(1);m_ctrresult.deletecolumn(0);m_ctrresult.insertcolumn(0,年龄);m_ctrresult.insertcolumn(1,人数);m_ctrresult.setcolumnwidth(0,100);m_ctrresult.setcolumnwidth(1,100);strsql=select count(id) as num ,age from person group by age;if(!recordset.open(crecordset:forwardonly,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;while(!recordset.iseof()recordset.getfieldvalue(age,strvalue);m_ctrresult.insertitem(i,strvalue);recordset.getfieldvalue(num,strvalue);m_ctrresult.setitemtext(i,1,strvalue);i+;recordset.movenext();recordset.close();break;case 2:/按民族统计m_ctrresult.deleteallitems();m_ctrresult.deletecolumn(1);m_ctrresult.deletecolumn(0);m_ctrresult.insertcolumn(0,民族);m_ctrresult.insertcolumn(1,人数);m_ctrresult.setcolumnwidth(0,100);m_ctrresult.setcolumnwidth(1,100);strsql=select count(id) as num ,folk from person group by folk;if(!recordset.open(crecordset:forwardonly,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;while(!recordset.iseof()recordset.getfieldvalue(folk,strvalue);m_ctrresult.insertitem(i,strvalue);recordset.getfieldvalue(num,strvalue);m_ctrresult.setitemtext(i,1,strvalue);i+;recordset.movenext();recordset.close();break;case 3:/按籍贯统计m_ctrresult.deleteallitems();m_ctrresult.deletecolumn(1);m_ctrresult.deletecolumn(0);m_ctrresult.insertcolumn(0,籍贯);m_ctrresult.insertcolumn(1,人数);m_ctrresult.setcolumnwidth(0,100);m_ctrresult.setcolumnwidth(1,100);strsql=select count(id) as num ,native from person group by native;if(!recordset.open(crecordset:forwardonly,strsql)messagebox(打开数据库失败!,数据库错误,mb_ok);return ;while(!recordset.iseof()recordset.getfieldvalue(native,strvalue);m_ctrresult.insertitem(i,strvalue);recordset.getfieldvalue(num,strvalue);m_ctrresult.setitemtext(i,1,strvalue);i+;recordset.movenext();recordset.close();break;case 4:/按职务类别统计m_ctrresult.deleteallitems();m_ctrresult.de

温馨提示

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

评论

0/150

提交评论