1、面向对象的编程技术课程设计实验报告( 人事管理系统 )姓 名: 学 号: 班 级: 指导老师: 日 期: 2010-12-31 目录一、 设计主题与目的3二、应用程序简介31.设计目的3 2.功能介绍33.基本内容34. 主要技术45. 运行环境5三、界面设计51总体设计结构图52.类层次图53. 主要运行界面及介绍6四、创新和难点11五、目前仍存在的问题11六、心得体会11附录12使用说明12课程设计名称:人事管理系统一、 设计主题与目的1、使学生巩固和加强面向对象程序设计课程的理论知识。2、使学生掌握+语言的基本概念、语法、类与对象的使用特点。3、进一步理解和运用面向对象设计的思想和方法。
2、4、使学生掌握调试程序的基本方法及上机操作方法。5、掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课程设计的思想和方法还可以作为学生做毕业论文时的参考资料。6、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为学生做毕业设计打好基础。7、培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。二、应用程序简介1.设计目的: 制作人数管理系统,创建人事管理数据表,该表反映职工的基本信息,其中包含职工编号、职工姓名、职工性别、所在部门、职工年龄、工作日期、基本工资、职称、简历等字段。并能进行以下操作: 能够输入职工的综合情况的
3、输入; 能够实现对职工信息的删除; 能够实现对职工进行修改; 能够实现对职工进行排序; 能够实现对职工进行查询。2.功能介绍:人事管理系统功能有:增加记录,删除记录,修改记录,排序记录,筛选记录。通过主窗体调用其他窗体,主窗口包含了职工信息显示,也包含了对人事管理的操作。在显示的信息下有五个功能选项,一一对应,包括增加记录、删除记录、修改记录、排序记录、筛选记录等功能模块。增加记录可完成对职工记录的录入并记录。删除记录可将当前记录永久删除。修改记录可按具体要求对当前记录进行修改,如对职工编号的修改。排序记录可以在当前使用下,将职工信息按编号的大小顺序排列,以方便查看。筛选记录可以按具体要求筛选
4、出职工信息。3.基本内容: 每一个界面属于一个类,类上的选择按钮由该类的成员函数实现,而职工信息则是数据成员,弹出的新界面与上个界面则是组合的关系。主界面的类是CMyView,成员函数有OnButtonAdd()(增加数据),OnButtonDel()(删除数据),OnButtonChange()(修改数据),OnButtonSort()(排序数据),OnButtonFilter()(筛选数据)。数据库类为CMySet,定义指针对象m_pSet,它的数据成员对应数据库里的成员,修改更新与调用都要使用m_pSet调用数据成员。1)“增加数据”模块:增加一个新的记录。由成员函数OnButtonAd
5、d()实现,点击后将弹出新窗口,该窗口对应的类是CDlgAdd,创建对象Add,在编辑框里输入员工信息,即给CDlgAdd的数据成员赋值,然后再通过CDlgAdd的对象Add将数据成员的值赋给类CMySet,接受的也是类CMySet的对象m_pSet。例如输入职工编号“m_pSet-m_zgbh=Add.m_Addzgbh”。完成后将更新记录集且重新提取数据。2)“删除数据”模块:删除当前数据。由成员函数OnButtonDel()实现,点击删除数据后将直接删除当前显示的信息。3)“修改数据”模块:可按职工编号、职工姓名等字段具体的修改原有记录。由成员函数OnButtonChange()实现,点
6、击后将弹出新窗口,新的窗口所对应的类为CDlgChange,定义对象Dlgchange。它的构建思想与“增加数据”类似,不过这里要输入两个信息,先输入要修改的对象(如“职工编号”),再输入修改后的数据,通过if语句判断,通过类CDlgChange的对象Dlgchange准确的将数据传给CMySet里对应的职工编号。还有一个区别的就是修改工作时间,因为工作时间的数据类型很“特别”(COleDateTime),所以要再新建一个类,即再创建一个窗口,专用来修改时间的。类名为CDlgxgdate,对象Dlgxgdate。4)“排序数据”模块:可按职工编号将信息排序。由成员函数OnButtonSort(
7、)实现,点击后系统将把数据按职工编号从小到大将职工信息排列好,但不会保存,只供当前查看使用。5)“筛选数据”模块:对职工的编号、职工姓名、职工性别、职工年龄、所在部门等字段进行精确查找。由成员函数OnButtonFilter()实现,这个函数里也有一个组合,类CDlgQuer(对象Dlgquery),在这个窗口里,“筛选数据”的工作原理“修改数据”基本相似了,但是“查询对象”中并非涵盖了所有信息,只能按职工编号、职工年龄、职工姓名、职工性别、所在部门五个字段进行查找。4. 主要技术:本系统覆盖了面向对象设计与数据库系统原理及应用各方面的知识,充分利用MFC类库与数据库应用技术;利用计算机对人事
8、信息进行管理,具有检索迅速、查找方便、可靠性高等优点。5. 运行环境:本设计采用Microsoft Visual C+6.0编译,并能够在WIN98,WIN2000,WINXP下运行三、 界面设计1 总体设计结构图:2 类层次图:3 主要运行界面及介绍:主界面:主界面包括了显示界面以及各种功能菜单项,显示包括了职工编号。职工姓名等所有信息,菜单项则包括了增加记录、删除记录、修改记录等功能菜单。窗口类名增加记录:增加记录界面与显示界面相似,不过此界面是输入信息,创建一个新的窗口类CDlgAdd,定义一个此类的对象Add,每个编辑框定义一个数据成员如m_Addzgxm。调用m_pSet-AddNe
9、w()函数增加数据,然后通过用户向编辑框中输入数据,再将每个编辑框中的内容赋值给对应的量如Add. m_Addzgxm,再由Add. m_Addzgxm将值传给m_pSet-m_zgxm。最后调用m_pSet-Update()函数,更新数据库。功能源代码:#include DlgAdd.hvoid CMyView:OnButtonAdd() CDlgAdd Add;if (Add.DoModal()=IDOK) m_pSet-AddNew();m_pSet-m_gzsj=Add.m_Addgzsj;m_pSet-m_jbgz=Add.m_Addjbgz;m_pSet-m_jl=Add.m_Ad
10、djl;m_pSet-m_szbm=Add.m_Addszbm;m_pSet-m_zc=Add.m_Addzc;m_pSet-m_zgbh=Add.m_Addzgbh;m_pSet-m_zgnl=Add.m_Addzgnl;m_pSet-m_zgxm=Add.m_Addzgxm;m_pSet-m_zgxb=Add.m_Addzgxb;m_pSet-Update();m_pSet-Requery();m_pSet-MoveLast();UpdateData(false); 删除记录:调用m_pSet-Delete()函数,点击“删除记录”后,系统直接将当前显示的职工信息全部删除,因为是点击即删除
11、,并且不会恢复,所以请小心使用。功能源代码:void CMyView:OnButtonDel() m_pSet-Delete();m_pSet-MoveNext();if(m_pSet-IsEOF()m_pSet-MoveLast();if(m_pSet-IsBOF()m_pSet-SetFieldNull(NULL);UpdateData(FALSE);修改记录:创建一个新的窗口类CDlgChange,定义两个数据成员m_xgdx和m_xgnr。定义一个此类的对象Dlgchange,通过用户向编辑框输入修改类型和修改内容,将编辑框内容赋值给Dlgchange. m_xgdx 和Dlgchan
12、ge. m_xgnr,比较Dlgchange. m_xgdx的值决定数据库修改的类型,将Dlgchange. m_xgnr的值赋给对应的变量,对数据进行修改。再创建新的窗口类CDlgxgdate及定义一个数据成员m_date,定义对象Dlgxgdate,通过Dlgxgdate. m_date将时间赋给m_pSet-m_gzsj。在修改记录界面下有两个编辑框,上面是输入所要修改的对象,即职工编号或姓名等信息名称,修改内容里输入所要修改的信息。若输入“工作时间”,则将另弹出修改工作时间的窗口。功能源代码:#include DlgChange.h#include Dlgxgdate.hvoid CM
13、yView:OnButtonChange() CDlgChange Dlgchange;CDlgxgdate Dlgxgdate;if (Dlgchange.DoModal()=IDOK) m_pSet-Edit();/修改记录集if(Dlgchange.m_xgdx=基本工资)m_pSet-m_jbgz=atof(Dlgchange.m_xgnr);else if(Dlgchange.m_xgdx=简历)m_pSet-m_jl=Dlgchange.m_xgnr;else if(Dlgchange.m_xgdx=所在部门)m_pSet-m_szbm=Dlgchange.m_xgnr;else
14、if(Dlgchange.m_xgdx=职称)m_pSet-m_zc=Dlgchange.m_xgnr;else if(Dlgchange.m_xgdx=职工编号)m_pSet-m_zgbh=atof(Dlgchange.m_xgnr);else if(Dlgchange.m_xgdx=职工年龄)m_pSet-m_zgnl=atof(Dlgchange.m_xgnr);else if(Dlgchange.m_xgdx=职工姓名)m_pSet-m_zgxm=Dlgchange.m_xgnr;else if(Dlgchange.m_xgdx=职工性别)m_pSet-m_zgxb=Dlgchange
15、.m_xgnr;else if(Dlgchange.m_xgdx=工作时间)if (Dlgxgdate.DoModal()=IDOK)m_pSet-m_gzsj=Dlgxgdate.m_date;else;m_pSet-Update();UpdateData(false); 排序功能:按职工编号的大小顺序对数据进行排序,最后调用m_pSet-Requery()函数重新读取数据。功能源代码:void CMyView:OnButtonSort() m_pSet-m_strSort=职工编号;m_pSet-Requery();UpdateData(FALSE);筛选记录:创建一个新的窗口类CDlgQ
16、uery,定义两个数据成员m_chaxundx和m_chaxunnr。定义一个此类的对象DlgQuery,通过用户向编辑框输入查询类型和查询数值,再将编辑框内容赋值给DlgQuery. m_chaxundx和DlgQuery.m_chaxunnr。比较DlgQuery. m_chaxundx的值决定数据查询的类型,比较lgQuery.m_chaxunnr的值,对数据进行查询。查询界面与修改界面相似,所以用法也相似。功能源代码:#include DlgQuery.hvoid CMyView:OnButtonFilter() CDlgQuery Dlgquery;if(Dlgquery.DoMod
17、al()=IDOK)m_pSet-MoveFirst();while (!m_pSet-IsEOF()if(Dlgquery.m_chaxundx=职工编号)if(m_pSet-m_zgbh=atof(Dlgquery.m_chaxunnr)UpdateData(FALSE);return;if(Dlgquery.m_chaxundx=职工年龄)if(m_pSet-m_zgnl=atof(Dlgquery.m_chaxunnr)UpdateData(FALSE);return;if(Dlgquery.m_chaxundx=职工姓名)if(m_pSet-m_zgxm=Dlgquery.m_cha
18、xunnr)UpdateData(FALSE);return;if(Dlgquery.m_chaxundx=职工性别)if(m_pSet-m_zgxb=Dlgquery.m_chaxunnr)UpdateData(FALSE);return;if(Dlgquery.m_chaxundx=所在部门)if(m_pSet-m_szbm=Dlgquery.m_chaxunnr)UpdateData(FALSE);return;m_pSet-MoveNext();四、创新和难点:根据指导书上的模板,运行时增加数据出现了问题,新数据不是添加进去,而是覆盖了当前数据。我当时不知道改从何入手,因为我并不清楚到
19、底错在哪里,最后决定再建一个对话框,将数据一个个的传入,再经过多次调试和修改后,终于成功了。这次的成功不仅令我很有成就感,也使得后面的完善部分功能更加的顺利。经过增加数据的成功改进后,我在修改时间以及在筛选上都用了类似的方法,虽然很麻烦,但也还可以使用,这已经让我非常的满足了,我很高兴能够解决这些问题。五、目前仍存在的问题: 虽然我将增加记录的功能完善了,并且增加和改进了另一些功能,但这个程序目前仍然存在一个问题,就是在修改和筛选上,都是CSRING,但是职工编号等都是整型或浮点型,我在网上找到了atof,它能使字符串转换成了数字,这也许算是解决了问题,但我觉得并不完美,肯定还有更好的方法,只
20、是我还没找到而已。六、心得体会:此次面向对象课程设计,巩固加深了我对面向对象设计的理解和使用。虽然人事管理系统属于此次课程设计中最简单的题目,但对于基础薄弱的我无疑是加深和巩固基础的最佳选择。通过这次的课程设计,我也学会了如何工程化地编写一个系统软件。首先要对软件的需求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。软件实现上,将各个功能独立出来采用功能模块的设计思想。我们编写程序的过程是辛苦与快乐的,软件设计思想很重要,只要我们在编程,就必须学习新的先进设计思想。课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能
21、力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。这次的课程设计也使我明白了许多深刻的道理:“看上去困难的事情,不一定是真实的,实际情况只有自己动手才能知道”。 实践是唯一的真理。附录:使用说明: 双击.exe文件进入人事管理系统,将会弹出主界面,主界面上半部分是职工的主要信息,下半部分则是操作功能的按钮。 点击“增加记录”,弹出新的窗口,上面的职工信息显示和主界面类似,不过这个是输入信息,将所要的信息对应的输入进去,按下确定键,即可保存。 点击“删除记录”,系统直接将当前显示的职工信息全部删除,因为是点击即删除,并且不会恢复,所以请小心使用。 点击“修改记录”,弹出对话框,在此对话框内有两个编辑框,“修改对象”对应的是输入你所想要修改的职工信息名称,如“职工编号”,“修改内容”则是输入修改后的信息,如“111”。如果修改“工作时间”,将又会弹出新的对话框,在新的对话框内输入工作时间。 点击“排序记录”,系统直接按职工编号的大小顺序进行排序,以方便浏览。 点击“筛选记录”,弹出一个类似于“修改记录”的子对话框,操作方法也与“修改记录”大致相同,不同点在于“筛选记录”的“查询对象”只能是职工编号、职工姓名、职工性别、职工年龄和所在部门,对应的“查询内容”也限定于此。12