哈工大计算机软件技术基础_第1页
哈工大计算机软件技术基础_第2页
哈工大计算机软件技术基础_第3页
哈工大计算机软件技术基础_第4页
哈工大计算机软件技术基础_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机软件技术根底实验报告班号: 学号: 姓名: 设计说明员工具有一个成员函数来计算薪水Ø ComputerPay()员工具有数据成员Ø 雇员号Ø 姓名Ø 银行账号从员工类派生三个类,经理,底薪职员,销售职员;分别实现派生类的构造函数、析构函数和其他方法Ø 经理的薪水是按月固定发放;Ø 底薪职员薪水是按工作小时数*每小时工资标准;Ø 销售职员的薪水是底薪+销售额提成30%;Ø 具体标准可自行定义;创立员工的指针数组,并初始化这些指针指向不同的派生对象,并通过对指针数组的循环遍历,来实现对各种对象的根本信息以及薪水的

2、输出使用介绍翻开程序后,选择运行文件,根据弹出屏幕的选择进行操作。有5个选择可供使用者选择。选择1,即计算原有员工工资选项后,需要再根据屏幕提示输入工作总时间,每小时工资和销售总金额,从而得到原有员工的工资。选择2,即从屏幕中读取员工信息并计算工资,需要根据屏幕选项选择员工类型。1为经理,2为底薪人员,3为销售人员,4为退出,当输入其他数字时那么要求重新选择一次。选择经理填入信息中有是否设定工资的选项,选择是那么自行输入工资,否那么按默认工资8000处理。选4退出后回到主选择页面。选择3,即从文件中读取信息并计算工资。当三个操作都进行完时或者进行其中的某一项或者两项后,可选择4将信息输出,信息

3、输出按原有员工、输入员工、文件读入员工三局部来输出。选择5后退出整个程序。源代码一、主函数1、main.cpp/要参加头文件#include <iostream>#include <fstream>#include <string>using namespace std;/指定命名空间/自己定义的类,使用时要参加头文件#include "Employee.h"#include "Manager.h"#include "Wage.h"#include "Csale.h"int ma

4、in()/定义变量int i,c1,c2,x,c3;int j=0,h=0,k=0,a=1,b=1,y=0,m=0,n=0;float hrs,wg,sale;int nm=0, nw=0, ns=0;char name30;long no;char bankno30;CManager manager20;CWage wage20;CSale Sale20;CManager fmanager20; /文件输入局部变量CWage fwage20;CSale fSale20;char ch20;long no0;int l=0,s,t=0,l1=0,l2=0,l3=0,xf;float sa0,h

5、rs0,wg0;CEmployee * pfEmployee60;CEmployee * pEmployeexin60; /定义新参加人员的指针数组/原有人员信息CManager aManager("张三",100001,"A123456789");CWage aWage("李四",100002,"B123456789");CSale aCSale("王五",100003,"C123456789");while(a=1)/选择执行工程cout<<"选择执

6、行工程:"<<endl;cout<<"1、计算原有员工的工资"<<endl;cout<<"2、计算从屏幕中新输入员工的工资"<<endl;cout<<"3、文件中读取员工信息并计算工资"<<endl;cout<<"4、信息以文件形式输出"<<endl;cout<<"5、退出"<<endl;cin>>c1;if(c1=1)/计算原有员工薪水/从屏

7、幕读取数据cout<<"请输入数据,各个数据以回车为界"<<endl;cout<<"工作总时间:"cin>>hrs;cout<<"每小时工资: "cin>>wg;cout<<"销售总金额:"cin>>sale;aWage.setHours(hrs);aWage.setWage(wg);aCSale.setHours(hrs);aCSale.setWage(wg);aCSale.setSale(sale);m=1;if(c

8、1=2)/输入新员工信息并计算工资n=1;while(j<20&&h<20&&k<20&&b=1)cout<<"选择员工类型"<<endl;/选择员工类型cout<<"1、经理 2、底薪人员 3、销售人员 4、退出"<<endl;cin>>c2;switch(c2)case 1:cout<<"请输入数据,各个数据以回车为界"<<endl;cout<<"姓名"

9、;cin>>name;cout<<"编号"cin>>no;cout<<"银行账号"cin>>bankno; /读入经理信息/存储经理信息managerj.setName(name);managerj.setbankNo(bankno);managerj.setNo(no);/选择是否设定工资cout<<"是否设定工资?默认为根本工资8000"<<endl;cout<<"1、是 2、否"<<endl;cin&g

10、t;>c3;if(c3=1)/设定经理工资float salary;cout<<"设定工资"cin>>salary;managerj.setSalary(salary);if(c3=2)managerj.setSalary(8000);cout<<"工资:"cout<<managerj.ComputerPay(); /计算并输出经理工资pEmployeexiny=&managerj;j+;break;case 2:cout<<"请输入数据,各个数据以回车为界"&

11、lt;<endl;cout<<"姓名"cin>>name;cout<<"编号"cin>>no;cout<<"银行账号"cin>>bankno;cout<<"工作总时间"cin>>hrs;cout<<"每小时工资"cin>>wg; /读入底薪人员信息wageh.setName(name);wageh.setbankNo(bankno);wageh.setNo(no);wag

12、eh.setHours(hrs);wageh.setWage(wg); /存储底薪人员信息cout<<"工资:"cout<<wageh.ComputerPay();pEmployeexiny=&wageh;h+;break;case 3:cout<<"请输入数据,各个数据以回车为界"<<endl;cout<<"姓名"cin>>name;cout<<"编号"cin>>no;cout<<"银行账

13、号"cin>>bankno;cout<<"工作总时间"cin>>hrs;cout<<"每小时工资"cin>>wg;cout<<"销售总金额"cin>>sale; /读入销售人员信息Salek.setName(name);Salek.setbankNo(bankno);Salek.setNo(no);Salek.setHours(hrs);Salek.setWage(wg);Salek.setSale(sale); /存储销售人员信息cout&

14、lt;<"工资:"<<endl;cout<<Salek.ComputerPay();pEmployeexiny=&Salek;k+;break;case 4:b=0;break;default:cout<<"输入错误"<<endl;y+;if(c1=3) /从文件中读取员工信息ifstream infile("CEmployee information.txt");if(!infile)cout<<"没有该文件"return 0;elset=

15、1;while(!infile.eof() /在文件信息被全部读完前读取文件中的信息infile>>s; switch (s) /判断员工所属职位,填入相应的数组case 1: /从文件中读入经理信息infile>>no0;fmanagerl1.setNo(no0);infile>>ch;fmanagerl1.setName(ch);infile>>ch;fmanagerl1.setbankNo(ch);infile>>sa0;fmanagerl1.setSalary(sa0);pfEmployeel=&fmanagerl1;

16、l1+;break;case 2: /从文件中读入底薪人员信息infile>>no0;fwagel2.setNo(no0);infile>>ch;fwagel2.setName(ch);infile>>ch;fwagel2.setbankNo(ch);infile>>hrs0;fwagel2.setHours(hrs0);infile>>wg0;fwagel2.setWage(wg0);pfEmployeel=&fwagel2;l2+;break;case 3: /从文件中读入销售人员信息infile>>no0;f

17、Salel3.setNo(no0);infile>>ch;fSalel3.setName(ch);infile>>ch;fSalel3.setbankNo(ch);infile>>hrs0;fSalel3.setHours(hrs0);infile>>wg0;fSalel3.setWage(wg0);infile>>sa0;fSalel3.setSale(sa0);pfEmployeel=&fSalel3;l3+;break;default:break;l+;infile.close();if(c1=4) /以文件形式输出信息

18、/建立指向原有员工信息的指针CEmployee * pEmployee = &aManager, &aWage, &aCSale; ofstream file("CEmployeepay.txt");if(!file) /判断是否能翻开文件cerr<<"open error!"<<endl;return 0;elsefile<<"&&&员工信息及其工资&&&"<<endl;/输出原有的员工信息与工资file<&

19、lt;"原纪录员工局部"<<endl;switch(m) /判断是否进行原有员工工资的计算,有那么输出信息case 1:for(i=0;i<3;i+)file<<"编 号:"<<pEmployeei->getNo()<<endl;file<<"姓 名:"<<pEmployeei->getName()<<endl;file<<"银行账号:"<<pEmployeei->getBankNo(

20、)<<endl;file<<"工 资: "<<pEmployeei->ComputerPay()<<endl;file<<"*"<<endl;file<<endl;break;default:file<<"没有进行原记录员工工资的计算"<<endl;file<<endl;file<<endl;file<<"新输入员工局部"<<endl; /输出新员工的信息

21、与工资y=y-1;switch(n) /判断是否输入新员工信息,有那么输出信息case 1:for(x=0;x<y;x+)file<<"编 号: "<<pEmployeexinx->getNo()<<endl;file<<"姓 名:"<<pEmployeexinx->getName()<<endl;file<<"银行账号:"<<pEmployeexinx->getBankNo()<<endl;file&l

22、t;<"工 资:<<pEmployeexinx->ComputerPay()<<endl;file<<"*"<<endl;file<<endl;break;default:file<<"没有新输入的员工信息"<<endl;file<<endl;file<<endl;file<<"文件输入员工局部:"<<endl;switch(t) /判断是否输入新员工信息,有那么输出信息l=l-1;

23、case 1:for(xf=0;xf<l;xf+)file<<"编 号:"<<pfEmployeexf->getNo()<<endl;file<<"姓 名:"<<pfEmployeexf->getName()<<endl;file<<"银行账号:"<<pfEmployeexf->getBankNo()<<endl;file<<"工 资:"<<pfEmployee

24、xf->ComputerPay()<<endl;file<<"*"<<endl;file<<endl;break;default:file<<"没有新输入的员工信息"<<endl;file<<endl;file.close(); /关闭文件if(c1=5)a=0;二、员工类1、Employee.h#pragma onceclass CEmployeepublic: CEmployee(void);/构造函数 virtual CEmployee(void);/析构函数

25、private: char m_name30;/一般的类内变量 long m_no; char m_bankNo20;public: /带参数的构造函数,为了防止更改,可加const CEmployee(const char * nm, const long no, const char * bankNo); long getNo(void); char * getName(void); char * getBankNo(void); /需要被重载的函数virtual float ComputerPay(void);void setName(char * name);void setNo(lo

26、ng no);void setbankNo(char * bankno);2、Employee.cpp#include "Employee.h"#include <string> /处理字符串的头文件CEmployee:CEmployee(void)CEmployee:CEmployee(void)/.h文件中的声明应该与.cpp源文件中的声明函数类型一致CEmployee:CEmployee(const char * nm, const long no, const char * bankNo) /要进行参数的赋值工作,也就是把参数带进来 /初始化 memse

27、t(m_name,0,30); memset(m_bankNo,0,20); /赋值操作 strcpy(m_name,nm); m_no=no; strncpy(m_bankNo,bankNo,19);long CEmployee:getNo(void) /get函数,得到编号信息 return m_no;char * CEmployee:getName(void) /get函数,得到名字信息 return m_name;char * CEmployee:getBankNo(void) /get函数,得到银行账号信息 return m_bankNo;float CEmployee:Comput

28、erPay(void) return 0;void CEmployee:setName(char * name) /set函数,将name中的名字信息赋值到m_name中strcpy(m_name,name);void CEmployee:setNo(long no)m_no=no;void CEmployee:setbankNo(char * bankno)strncpy(m_bankNo,bankno,19);三、经理类1、Manager.h#pragma once#include "Employee.h"/添加类的时候,应添加继承关系,否那么带参数的继承函数无法实现c

29、lass CManager : public CEmployeepublic: CManager(void); virtual CManager(void);CManager(const char *nm, const long no, const char * bankNo);private:float m_salary;/经理的工资public:void setSalary(float salary);float ComputerPay(void);2、Manager.cpp#include "Manager.h"#include "Employee.h&qu

30、ot;CManager:CManager(void): m_salary(0)CManager:CManager(void)/带参数的构造函数,要继承CEmployee的带参数的构造函数/直接完成赋初值,并设定经理的薪水CManager:CManager(const char *nm, const long no, const char * bankNo):CEmployee(nm,no,bankNo)m_salary = 8000;/为了从外部可以进行员工设定,跟get函数类似void CManager:setSalary(float salary)m_salary = salary;flo

31、at CManager:ComputerPay(void)return m_salary;四、底薪人员类1、Wage.h#pragma once#include "employee.h"/继承CEmployeeclass CWage :public CEmployeepublic:CWage(void);virtual CWage(void);private:float m_hours;float m_wage;public:void setHours(float hrs);void setWage(float wg);float ComputerPay(void);CWage(const char * nm, const long no, const char * bankNo);CWage(float hrs, float wg);2、Wage.cpp#include "Wage.h"CWage:CWage(void)CWage:CWage(void)void CWage:setHours(float hrs)m_hours = hrs; /设置工作时间void

温馨提示

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

评论

0/150

提交评论