1《面向对象的编程技术》课程设计实验报告(人事管理系统)姓名:学号:班级:指导老师:日期:2010-12-312目录一、设计主题与目的……………………………………………3二、应用程序简介…………………………………………………31.设计目的………………………………………………32.功能介绍………………………………………………33.基本内容………………………………………………34.主要技术………………………………………………45.运行环境………………………………………………5三、界面设计………………………………………………………51.总体设计结构图……………………………………52.类层次图………………………………………………53.主要运行界面及介绍………………………………6四、创新和难点………………………………………………………11五、目前仍存在的问题……………………………………………11六、心得体会…………………………………………………………11附录……………………………………………………………………12使用说明……………………………………………………………123课程设计名称:人事管理系统一、设计主题与目的1、使学生巩固和加强《面向对象程序设计》课程的理论知识。2、使学生掌握C++语言的基本概念、语法、类与对象的使用特点。3、进一步理解和运用面向对象设计的思想和方法。4、使学生掌握调试程序的基本方法及上机操作方法。5、掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。课程设计的思想和方法还可以作为学生做毕业论文时的参考资料。6、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。为学生做毕业设计打好基础。7、培养学生的创新能力和创新思维。学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。二、应用程序简介1.设计目的:制作人数管理系统,创建人事管理数据表,该表反映职工的基本信息,其中包含职工编号、职工姓名、职工性别、所在部门、职工年龄、工作日期、基本工资、职称、简历等字段。并能进行以下操作:①能够输入职工的综合情况的输入;②能够实现对职工信息的删除;③能够实现对职工进行修改;④能够实现对职工进行排序;⑤能够实现对职工进行查询。2.功能介绍:人事管理系统功能有:增加记录,删除记录,修改记录,排序记录,筛选记录。通过主窗体调用其他窗体,主窗口包含了职工信息显示,也包含了对人事管理的操作。在显示的信息下有五个功能选项,一一对应,包括增加记录、删除记录、修改记录、排序记录、筛选记录等功能模块。增加记录可完成对职工记录的录入并记录。删除记录可将当前记录永久删除。修改记录可按具体要求对当前记录进行修改,如对职工编号的修改。排序记录可以在当前使用下,将职工信息按编号的大小顺序排列,以方便查看。筛选记录可以按具体要求筛选出职工信息。3.基本内容:每一个界面属于一个类,类上的选择按钮由该类的成员函数实现,而职工信息则是数据成员,弹出的新界面与上个界面则是组合的关系。主界面的类是CMyView,成员函数有OnButtonAdd()(增加数据),OnButtonDel()(删除数据),OnButtonChange()(修改数据),OnButtonSort()(排序数据),OnButtonFilter()4(筛选数据)。数据库类为CMySet,定义指针对象m_pSet,它的数据成员对应数据库里的成员,修改更新与调用都要使用m_pSet调用数据成员。1).“增加数据”模块:增加一个新的记录。由成员函数OnButtonAdd()实现,点击后将弹出新窗口,该窗口对应的类是CDlgAdd,创建对象Add,在编辑框里输入员工信息,即给CDlgAdd的数据成员赋值,然后再通过CDlgAdd的对象Add将数据成员的值赋给类CMySet,接受的也是类CMySet的对象m_pSet。例如输入职工编号“m_pSet-m_zgbh=Add.m_Addzgbh”。完成后将更新记录集且重新提取数据。2).“删除数据”模块:删除当前数据。由成员函数OnButtonDel()实现,点击删除数据后将直接删除当前显示的信息。3).“修改数据”模块:可按职工编号、职工姓名等字段具体的修改原有记录。由成员函数OnButtonChange()实现,点击后将弹出新窗口,新的窗口所对应的类为CDlgChange,定义对象Dlgchange。它的构建思想与“增加数据”类似,不过这里要输入两个信息,先输入要修改的对象(如“职工编号”),再输入修改后的数据,通过if语句判断,通过类CDlgChange的对象Dlgchange准确的将数据传给CMySet里对应的职工编号。还有一个区别的就是修改工作时间,因为工作时间的数据类型很“特别”(COleDateTime),所以要再新建一个类,即再创建一个窗口,专用来修改时间的。类名为CDlgxgdate,对象Dlgxgdate。4).“排序数据”模块:可按职工编号将信息排序。由成员函数OnButtonSort()实现,点击后系统将把数据按职工编号从小到大将职工信息排列好,但不会保存,只供当前查看使用。5).“筛选数据”模块:对职工的编号、职工姓名、职工性别、职工年龄、所在部门等字段进行精确查找。由成员函数OnButtonFilter()实现,这个函数里也有一个组合,类CDlgQuer(对象Dlgquery),在这个窗口里,“筛选数据”的工作原理“修改数据”基本相似了,但是“查询对象”中并非涵盖了所有信息,只能按职工编号、职工年龄、职工姓名、职工性别、所在部门五个字段进行查找。4.主要技术:本系统覆盖了面向对象设计与数据库系统原理及应用各方面的知识,充分利5用MFC类库与数据库应用技术;利用计算机对人事信息进行管理,具有检索迅速、查找方便、可靠性高等优点。5.运行环境:本设计采用MicrosoftVisualC++6.0编译,并能够在WIN98,WIN2000,WINXP下运行三、界面设计1.总体设计结构图:2.类层次图:3.主要运行界面及介绍:6主界面:主界面包括了显示界面以及各种功能菜单项,显示包括了职工编号。职工姓名等所有信息,菜单项则包括了增加记录、删除记录、修改记录等功能菜单。窗口类名增加记录:增加记录界面与显示界面相似,不过此界面是输入信息,创建一个新的窗口类CDlgAdd,定义一个此类的对象Add,每个编辑框定义一个数据成员如m_Addzgxm。调用m_pSet-AddNew()函数增加数据,然后通过用户向编辑框中输入数据,再将每个编辑框中的内容赋值给对应的量如Add.m_Addzgxm,再由Add.m_Addzgxm将值传给m_pSet-m_zgxm。最后调用m_pSet-Update()函数,更新数据库。7功能源代码:#includeDlgAdd.hvoidCMyView::OnButtonAdd(){CDlgAddAdd;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_Addjl;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()函数,点击“删除记录”后,系统直接将当前显示的职工信息全部删除,因为是点击即删除,并且不会恢复,所以请小心使用。功能源代码:voidCMyView::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和Dlgchange.m_xgnr,比较Dlgchange.8m_xgdx的值决定数据库修改的类型,将Dlgchange.m_xgnr的值赋给对应的变量,对数据进行修改。再创建新的窗口类CDlgxgdate及定义一个数据成员m_date,定义对象Dlgxgdate,通过Dlgxgdate.m_date将时间赋给m_pSet-m_gzsj。在修改记录界面下有两个编辑框,上面是输入所要修改的对象,即职工编号或姓名等信息名称,修改内容里输入所要修改的信息。若输入“工作时间”,则将另弹出修改工作时间的窗口。功能源代码:#includeDlgChange.h#includeDlgxgdate.hvoidCMyView::OnButtonChange(){CDlgChangeDlgchange;CDlgxgdateDlgxgdate;if(Dlgchange.DoModal()==IDOK){m_pSet-Edit();//修改记录集if(Dlgchange.m_xgdx==基本工资)m_pSet-m_jbgz=atof(Dlgchange.m_xgnr);elseif(Dlgchange.m_xgdx==简历)m_pSet-m_jl=Dlgchange.m_xgnr;elseif(Dlgchange.m_xgdx==所在部门)m_pSet-m_szbm=Dlgchange.m_xgnr;9elseif(Dlgchange.m_xgdx==职称)m_pSet-m_zc=Dlgchange.m_xgnr;elseif(Dlgchange.m_xgdx==职工编号)m_pSet-m_zgbh=atof(Dlgchange.m_xgnr);elseif(Dlgchange.m_xgdx==职工年龄)m_pSet-m_zgnl=atof(Dlgchange.m_xgnr);elseif(Dlgchange.m_xgdx==职工姓名)m_pSet-m_zgxm=Dlgchange.m_xgnr;elseif(Dlgchange.m_xgdx==职工性别)m_pSet-m_zgxb=Dlgchange.m_xgnr;elseif(Dlgchange.m_xgdx==工作时间){if(Dlgxgdate.DoModal()==IDOK)m_pSet-m_gzsj=Dlgxgdate.m_date;}else;m_pSet-Update();UpdateData(false);}}排序功能:按职工编号的大小顺序对数据进行排序,最后调用m_pSet-Requery()函数重新读取数据。功能源代码:voidCMyView::OnButtonSort(){m_pSet-m_strSort=职工编号;m_pSet-Requery();UpdateData(FALSE);}筛选记录:创建一个新的窗口类CDlgQuery,定义两个数据成员m_chaxundx和m_chaxunnr。定义一个此类的对象DlgQuery,通过用户向编辑框输入查询类型和查询数值,再将编辑框内容赋值给DlgQuery.m_chaxundx和DlgQuery.m_chaxunnr。比较DlgQuery.m_chaxundx的值决定数据查询的类型,比较lgQuery.m_