员工管理_小型人员信息管理系统_第1页
员工管理_小型人员信息管理系统_第2页
员工管理_小型人员信息管理系统_第3页
员工管理_小型人员信息管理系统_第4页
员工管理_小型人员信息管理系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

成成 绩绩 评评 定定 表表 学生姓名初珊珊班级学号 专 业通信工程课程设计题目 小型人员信息管理系 统的设计与实现 评 语 组长签字: 成绩 日期 20 年 月 日 课程设计任务书课程设计任务书 学 院信息科学与工程专 业通信工程 学生姓名初珊珊班级学号 课程设计题目小型人员信息管理系统的设计与实现 实践教学要求与任务实践教学要求与任务 某小型公司主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现 在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信 息。人员编号基数为 1000,每输入一个人员信息编号顺序加 1。 程序要有对所有人员提升级别的功能。本例中为简单起见,所有人员的初始级别 均为 1 级,然后进行升级,经理升为 4 级,兼职技术人员和销售经理升为 3 级,推销 员认为 1 级。 月薪计算办法是:经理拿固定月薪 8000 元;兼职技术人员按每小时 100 元领取 月薪;兼职推销员的月薪按该推销员当月销售额的 4提成;销售经理即拿固定月薪 也领取销售提成,固定月薪为 5000 元,销售提成为所管辖部门当月销售总额的千分 之五。 要求为每一类人员单独建立文件,并在每个文件中手工录入一些人员基本信息, 并根据这些基本信息计算职工的月薪,并将计算结果保存入相应的磁盘文件中。要求 编写程序实现上述功能,并且可以通过实例演示上述功能。 工作计划与进度安排工作计划与进度安排 第 17 周:分析题目,查阅课题相关资料,进行类设计、算法设计; 第 18 周:程序的设计、调试与实现; 第 19 周:程序测试与分析,撰写课程设计报告,进行答辩验收。 指导教师: 201 年 月 日 专业负责人: 201 年 月 日 学院教学副院长: 201 年 月 日 摘 要 C+是支持面向过程的设计,更是支持基于对象和面向对象的程序设计。类是 C+中十分重要的概念,它是实现面向对象程序设计的基础。本文采用虚基类及其派生 类实现了对小型人员信息的管理,类的封装性和信息隐蔽性可以很好的保护公司员工 的信息,同时采用了 Visual C+ 6.0 的控制台工程和 MFC 工程实现了对员工基本信息 的输入和全部信息的输出及保存。 关键词:信息管理;类;控制台工程;MFC 工程 目 录 1 需求分析.1 2 算法基本原理.1 3 类设计.2 4 基于控制台的应用程序.3 4.1 类的接口设计4 4.2 类的实现7 4.3 主函数设计11 4.4 基于控制台的应用程序测试12 5 基于 MFC 的应用程序.14 5.1 基于 MFC 的应用程序设计15 5.1.1 MFC 程序界面设计.15 5.1.2 MFC 程序代码设计.16 5.2 基于 MFC 的应用程序测试21 结 论.23 参考文献.24 1 需求分析 (1)对小型公司进行小型人员信息操作管理系统。该公司主要有四类人员: 经理、销售经理、兼职技术人员、兼职推销员;定义一个虚基类并且派生四个 子类。 (2)系统需要存储这些人员的姓名、编号、级别、当月薪水,输入基本信 息,计算月薪总额,显示并保存全部信息;每个派生类的构造函数要实现对其 特有数据成员的初始化。 (3)系统具体要求: 编号要求:人员编号基数为 1000,每输入一个员工姓名编号加 1;编 号定义为全局静态变量即可。 级别要求:所有人员的初始级别均为 1 级,然后进行升级,经理升为 4 级,兼职技术人员和销售经理升为 3 级,兼职推销员为 1 级;直接对级别赋 值即可。 月薪要求:经理拿固定月薪 8000 元;兼职技术人员按每小时 100 元领 取月薪;兼职推销员的月薪按该推销员当月销售额的 4提成;销售经理既拿 固定月薪也领取销售提成,固定月薪为 5000 元,销售提成为所管辖部门当月销 售总额的千分之五。 总体要求:为每一类人员单独建立文件,并在每个文件中手工录入一 些人员基本信息,并根据这些基本信息计算职工的月薪,并将计算结果保存入 相应的磁盘文件中。 2 算法基本原理 (1)定义一个员工虚基类 Employmee( ),包括员工姓名、级别、编号月薪 共有的基本数据成员; (2)在基类的基础上派生出经理 Mansger( )类、销售经理 Salemansger( )类、 兼职技术人员 Technology( )类和兼职推销员 Saleman( )类,并在这四个派生类中 添加各自数据成员和成员函数。具体分析如下: 员工编号的可以定义全局静态变量 static int count=0;并且初始化员工 编号 number=1000+count;每输入一个员工的姓名编号加 1。 员工等级按照要求直接赋值即可; 在派生类的构造函数中初始化数据成员并且按照要求计算各成员的月 薪。 (3)定义一个结构体链表 struct Linked,并将链表的头指针头封装在友元 类 Head( )中。 (4)运行时构造对象指针,并存在链表中,利用类中的成员函数来实现对 链表节点的打印、添加、保存。这些操作均作为数据结构中对单链表的操作。 3 类设计 首先定义一个员工基类 Employee,由于要派生出多个子类,所以将其定义 为虚基类;在类外定义全局静态变量,用于记录员工的编号。虚基类 Employee 中的数据成员包括姓名、编号、等级、月薪。虚基类的成员函数包括打印函数 printf( ),并声明友元类。 然后派生出经理 Mansger 类、销售经理 Salemansger 类、兼职技术人员 Technology 类和兼职推销员 Saleman 类。在派生类 Mansger 的构造函数直接对 月薪和等级赋值:月薪 8000,等级 4;在派生类 Salemansger 的构造函数中定义 特有的数据成员:销售总额 sum1,并根据要求计算月薪,等级赋值 3;在派生 类 Technology 的构造函数中定义特有的数据成员:工作时间 time,并根据要求 计算月薪,等级赋值 3;在派生类 Saleman 的构造函数中定义特有的数据成员: 销售额 sum2,并根据要求计算月薪,等级赋值 1。派生类的功能有打印函数 printf( ),储存函数 save( )。 友元类 Head 存放的数据成员有 Linked top,功能有构造函数 Head( )、插入 函数 Insert( )、打印函数 printf( )以及析构函数Head( );其中功能构造函数用来 开辟储存空间,插入函数采用单链表现实信息的输入,打印函数用来输出录入 员工的全部信息,析构函数用来释放空间。 基类与各派生类之间的关系如下图所示: char name30; int number; int level; float wages; Employee() void printf() friend class Head void save() void printf() friend class Head int sum1 Salemansger():Employee() void save () Technology():Employee() float time void printf() friend class Head void save () int sum2 Saleman():Employee() void printf() friend class Head void save () Mansger():Employee() 图 1 Employee 类和其派生类关系的图形表示 在程序实现过程中,各派生类的成员函数需要访问基类 Employee 的数据成 员,利用公有继承方式派生,同时将 Employee 类中的数据成员的访问控制设置 为保护类型。这样,经过公有派生之后,基类的保护成员在派生类中依然是保 护成员,可以被派生类的成员函数访问。 4 基于控制台的应用程序 整个程序分为三部分,各种职员的类,结构体链表以及封装在结构体链表 的类。实现时先生成各种职员的对象指针,之后将生成的对象指针插入到链表 中,最后通过封装类类的成员函数对链表节点进行操作,实现对员工的操作。 4.1 类的接口设计 #include #include #include using namespace std; static int count=0; /全局动态变量,用于记录员工编 号 /定义虚基类 class Employee public: Employee() /构造函数,初始化员工基本信息 coutsum1; wages=5000+0.005*sum1; /计算销售经理工资 void save (); /储存函数 void printf(); /打印函数 friend class Head; protected: int sum1; /销售总额 ; /派生类 Technology class Technology: public virtual Employee public: Technology():Employee() /构造函数定义 level=3; coutsum2; wages=0.04*sum2; /计算销售员工资 void save (); /储存函数 void printf(); friend class Head; protected: int sum2; /销售总额 ; /定义友元类 class Head public: Head(); /构造函数 void Insert(Employee*temp); /单链表的插入函数 void printf(); /打印函数 Head(); /析构函数 private: Linked*top; /单链表的头结点 ; 经过公有派生,四个派生类获得了除构造函数之外的 Employee 类的全部成 员,由于基类的成员是公有和保护类型,因此在派生类中的成员函数中,基类 继承来的成员全部可以访问,而对于建立派生类对象的外部模块来讲,基类的 保护成员是无法访问的。通过保护访问类型和公有的继承方式,实现了基类 Employee 的数据的有效共享和可靠保护。友元类可以实现外部函数对类中数据 成员的调用,在程序中,员工的基本信息的输入,全部信息的保存都是在基类、 派生类的构造函数以及友元类的成员函数中完成,它们的清理工作在友元类析 构函数中完成。 4.2 类的实现类的实现 /基类输出函数 void Employee:printf() coutnext) /链表的头结点的下个结点不为空时,开辟空 间 ttop=ttop-next; ttop-next=new Linked; ttop-next-p=temp; ttop-next-next=0; /链表的输出函数 void Head:printf() Linked*pbuf=top-next; while(pbuf!=NULL) pbuf-p-printf(); /插入打印函数 pbuf=pbuf-next; /链表的析构函数 Head:Head() Linked*ttop,*q; ttop=top-next; while(ttop!=NULL) q=ttop; ttop=ttop-next; delete q; /释放空间 /菜单函数 void menu(Head*Data) int n; coutprintf(); /输出链表节点 break; case 0: break; coutn; switch(n) case 1: M=new Mansger; /构造对象指针 M-save(); /储存对象数据 Data-Insert(M); /将对象指针插入到链表中 break; case 2: S=new Salemansger; /构造对象指针 S-save(); /储存对象数据 Data-Insert(S); /将对象指针插入到链表中 break; case 3: T=new Technology; /构造对象指针 T-save(); /储存对象数据 Data-Insert(T); /将对象指针插入到链表中 break; case 4: S1=new Saleman; /构造对象指针 S1-save(); /储存对象数据 Data-Insert(S1); /将对象指针插入到链表中 break; case 0: break; coutn; switch(n) /多分支语句进行菜单的选择 case 1: menu1( break; case 2: menu( break; case 0: system(“pause“); return; system(“cls“); 在程序的主函数部分,定义一个构造对象以便实现调用。Switch 多分支选 择语句可以选择菜单从而实现输入、打印操作。 4.4 基于控制台的应用程序测试 程序运行结果如图 2-1 和 2-2 所示。 图 2-1 程序运行结果 1 图 2-2 程序运行结果 2 为每类员工保存的文件夹如图 3-1 所示的 Mansger.txt、Salemansger.txt、Saleman.txt、Technology.txt: 图 3-1 存盘文件夹 为经理建立的文件夹打开后如图 3-2 所示: 图 3-2 显示经理文件夹 为销售经理建立的文件夹打开后如图 3-3 所示: 图 3-3 显示销售经理文件夹 为兼职技术人员建立的文件夹打开后如图 3-4 所示: 图 3-4 显示兼职技术人员文件夹 为兼职推销员建立的文件夹打开后如图 3-5 所示: 图 3-5 显示兼职推销员文件夹 从图 2-1 到 3-5 可以看出,在 DOS 界面通过对菜单的选择可以输入和打印 员工的信息。经理只需要输入姓名,销售经理要输入姓名和当月的部门的销售 总额,兼职技术人员要输入姓名和工作时间,兼职推销员要输入姓名和月销售 额,然后选择打印菜单即可输出各类人员的全部信息,而这些信息已经通过程 序的文件输出流以 TXT 的格式保存在了电脑磁盘 F:梁庶芹文件夹中。打开后 便可显示各类员工的全部信息。 5 基于 MFC 的应用程序 MFC 是通过窗口和控件实现输入输出,设置 MFC 界面也很重要,界面的 美观程度直接影响了程序设计的好坏。下面在 MFC 类的框架下加入上述类并实 现人员的信息管理,通过图形界面的输入和输出。 5.1 基于 MFC 的应用程序设计 5.1.1 MFC 程序界面设计 首先在 VC 中建立 MFC AppWizard(exe)工程,名称为 lsq,并在向导的 Step1 中选择 Dialog based,即建立基于对话框的应用程序,如下图 41 和 4-2 所示。 图 4-1 建立 MFC AppWizard(exe)工程 图 4-2 建立基于对话框的应用程序 将对话框资源中的默认对话框利用工具箱改造成如下界面,如图 4-3 所示。 图 4-3 显示员工信息程序界面设计 图 4-3 所示的界面中包含了 5 个 Group Box,7 个 Static Text 控件,5 个 Button 控件,和 15 个 Edit Box 控件,控件的基本信息列表如下表 1 所示。 表 1 控件基本信息 控件类别控件 ID控件 Caption说明 职位 姓名 级别 月薪 Group Box IDC_STATIC 存盘 见图 6 经理 销售经理 技术人员 推销员 销售总额 工作时间 Static TextIDC_STATIC 销售额 见图 6 IDC_BUTTON1 提交 IDC_BUTTON2 Mansger IDC_BUTTON3Salemansger IDC_BUTTON4Technology Botton IDC_BUTTON5 Saleman 见图 6 IDC_JL姓名栏第一个 Edit IDC_XSJL姓名栏第二个 Edit IDC_JSRY姓名栏第三个 Edit IDC_TXY姓名栏第四个 Edit IDC_DJ1级别栏第一个 Edit IDC_DJ2级别栏第二个 Edit IDC_DJ3级别栏第三个 Edit IDC_DJ4级别栏第四个 Edit Edit Box IDC_YX1月薪栏第一个 Edit IDC_YX1月薪栏第二个 Edit IDC_YX1月薪栏第三个 Edit IDC_YX1月薪栏第四个 Edit IDC_XSZE销售总额右边 Edit IDC_GZSJ工作时间右边 Edit IDC_XSE销售额右边 Edit 5.1.2 MFC 程序代码设计 为了能够将对话框界面上的控件能够与代码联系起来,需要为 15 个 Edit Box 控件建立 Member Variables,按 Ctrl+w 键进入 MFC ClassWizard 界面,选 择 Member Variables 选项卡,可显示成员变量设置界面,如图 4-4 所示。 图 4-4 成员变量设置界面 1 通过该界面设置与 15 个 Edit Box 控件对应的成员变量,具体 Type 与 Member 请详见图 4-4 MFC 编写代码也是非常重要的阶段,可以借鉴在设计基于 DOS 界面的控 制台应用程序的代码,并将其作必要的改写,具体改写如下。 各员工的姓名直接在 MFC 界面的姓名档中输入,等级和月薪直接赋值 即可。 修改内容包括: 将显示员工信息的 prinft( )函数去掉,因为在图形界面的程序上已经不 需要连个函数承担输出功能了; 将存盘函数 save( )去掉直接在 MFC 界面的存盘档位每类员工建立文件 夹并保存,仍然使用文件输出流; 菜单函数也不再需要,直接通过对按钮的选择进行输入输出和存盘操 作。 具体代码如下: /为提交键编写的程序,用来实现信息的输出: void CLsqDlg:OnButton1( ) UpdateData(TRUE); if(m_Mansger) /为经理的等级和月薪赋值 m_level1=4; m_wages1=8000; if(m_Salemansger) /为销售经理的等级和月薪赋值 m_level2=3; m_wages2=5000+m_sum2*0.005; if(m_Technology) /为兼职技术人员的等级和月薪赋值 m_level3=3; m_wages3=m_time*100; if(m_Saleman) /为兼职推销员的等级和月薪赋值 m_level4=1; m_wages4=m_sum1*0.04; UpdateData(FALSE); /为经理建立文件夹,将其信息保存在磁盘中 void CLsqDlg:OnButton2() ofstream fs(“f:MFCMansger.txt“); fs“姓名:“m_Mansger“ “等级:“m_level1“ “月薪: “m_wages1endl; /为销售经理建立文件夹,将其信息保存在磁盘中 void CLsqDlg:OnButton3() ofstream fs(“f:MFCSalemansger.txt“); fs“姓名:“m_Salemansger“ “等级:“m_level2“ “ 月薪:“m_wages2endl; /为兼职技术人员建立文件夹,将其信息保存在磁盘中 void CLsqDlg:OnButton4() ofstream fs(“f:MFCTechnology.txt“); fs“姓名:“m_Technology“ “等级:“m_level3“ “月 薪:“m_wages3endl; 为兼职推销员建立文件夹,将其信息保存在磁盘中 void CLsqDlg:OnButton5() ofstream fs(“f:MFCSaleman.txt“); fs“姓名:“m_Saleman“ “等级:“m_level4“ “月薪: “m_wages4endl; 5.2 基于 MFC 的应用程序测试 运行程序后,首先出现的界面如图 5-1 所示。 图 5-1 程序初始运行界面 单击读入数据按钮。结

温馨提示

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

评论

0/150

提交评论