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

下载本文档

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

文档简介

计算机软件技术基础实验报告班号: 学号: 姓名: 设计说明员工具有一个成员函数来计算薪水 ComputerPay()员工具有数据成员 雇员号 姓名 银行账号从员工类派生三个类,经理,底薪职员,销售职员;分别实现派生类的构造函数、析构函数和其他方法 经理的薪水是按月固定发放; 底薪职员薪水是按工作小时数*每小时工资标准; 销售职员的薪水是底薪+销售额提成30%; 具体标准可自行定义;创建员工的指针数组,并初始化这些指针指向不同的派生对象,并通过对指针数组的循环遍历,来实现对各种对象的基本信息以及薪水的输出使用介绍打开程序后,选择运行文件,根据弹出屏幕的选择进行操作。有5个选择可供使用者选择。选择1,即计算原有员工工资选项后,需要再根据屏幕提示输入工作总时间,每小时工资和销售总金额,从而得到原有员工的工资。选择2,即从屏幕中读取员工信息并计算工资,需要根据屏幕选项选择员工类型。1为经理,2为底薪人员,3为销售人员,4为退出,当输入其他数字时则要求重新选择一次。选择经理填入信息中有是否设定工资的选项,选择是则自行输入工资,否则按默认工资8000处理。选4退出后回到主选择页面。选择3,即从文件中读取信息并计算工资。当三个操作都进行完时(或者进行其中的某一项或者两项后),可选择4将信息输出,信息输出按原有员工、输入员工、文件读入员工三部分来输出。选择5后退出整个程序。源代码一、主函数1、main.cpp/要加入头文件#include #include #include using namespace std;/指定命名空间/自己定义的类,使用时要加入头文件#include Employee.h#include Manager.h#include Wage.h#include Csale.hint main()/定义变量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,hrs0,wg0;CEmployee * pfEmployee60;CEmployee * pEmployeexin60; /定义新加入人员的指针数组/原有人员信息CManager aManager(张三,100001,A123456789);CWage aWage(李四,100002,B123456789);CSale aCSale(王五,100003,C123456789);while(a=1)/选择执行项目cout选择执行项目:endl;cout1、计算原有员工的工资endl;cout2、计算从屏幕中新输入员工的工资endl;cout3、文件中读取员工信息并计算工资endl;cout4、信息以文件形式输出endl;cout5、退出c1;if(c1=1)/计算原有员工薪水/从屏幕读取数据cout请输入数据,各个数据以回车为界endl;couthrs;coutwg;coutsale;aWage.setHours(hrs);aWage.setWage(wg);aCSale.setHours(hrs);aCSale.setWage(wg);aCSale.setSale(sale);m=1;if(c1=2)/输入新员工信息并计算工资n=1;while(j20&h20&k20&b=1)cout选择员工类型endl;/选择员工类型cout1、经理 2、底薪人员 3、销售人员 4、退出c2;switch(c2)case 1:cout请输入数据,各个数据以回车为界endl;coutname;coutno;coutbankno; /读入经理信息/存储经理信息managerj.setName(name);managerj.setbankNo(bankno);managerj.setNo(no);/选择是否设定工资cout是否设定工资?(默认为基本工资8000)endl;cout1、是 2、否c3;if(c3=1)/设定经理工资float salary;coutsalary;managerj.setSalary(salary);if(c3=2)managerj.setSalary(8000);cout工资:;coutmanagerj.ComputerPay(); /计算并输出经理工资pEmployeexiny=&managerj;j+;break;case 2:cout请输入数据,各个数据以回车为界endl;coutname;coutno;coutbankno;couthrs;coutwg; /读入底薪人员信息wageh.setName(name);wageh.setbankNo(bankno);wageh.setNo(no);wageh.setHours(hrs);wageh.setWage(wg); /存储底薪人员信息cout工资:;coutwageh.ComputerPay();pEmployeexiny=&wageh;h+;break;case 3:cout请输入数据,各个数据以回车为界endl;coutname;coutno;coutbankno;couthrs;coutwg;coutsale; /读入销售人员信息Salek.setName(name);Salek.setbankNo(bankno);Salek.setNo(no);Salek.setHours(hrs);Salek.setWage(wg);Salek.setSale(sale); /存储销售人员信息cout工资:endl;coutSalek.ComputerPay();pEmployeexiny=&Salek;k+;break;case 4:b=0;break;default:cout输入错误endl;y+;if(c1=3) /从文件中读取员工信息ifstream infile(CEmployee information.txt);if(!infile)couts; switch (s) /判断员工所属职位,填入相应的数组case 1: /从文件中读入经理信息infileno0;fmanagerl1.setNo(no0);infilech;fmanagerl1.setName(ch);infilech;fmanagerl1.setbankNo(ch);infilesa0;fmanagerl1.setSalary(sa0);pfEmployeel=&fmanagerl1;l1+;break;case 2: /从文件中读入底薪人员信息infileno0;fwagel2.setNo(no0);infilech;fwagel2.setName(ch);infilech;fwagel2.setbankNo(ch);infilehrs0;fwagel2.setHours(hrs0);infilewg0;fwagel2.setWage(wg0);pfEmployeel=&fwagel2;l2+;break;case 3: /从文件中读入销售人员信息infileno0;fSalel3.setNo(no0);infilech;fSalel3.setName(ch);infilech;fSalel3.setbankNo(ch);infilehrs0;fSalel3.setHours(hrs0);infilewg0;fSalel3.setWage(wg0);infilesa0;fSalel3.setSale(sa0);pfEmployeel=&fSalel3;l3+;break;default:break;l+;infile.close();if(c1=4) /以文件形式输出信息/建立指向原有员工信息的指针CEmployee * pEmployee = &aManager, &aWage, &aCSale; ofstream file(CEmployeepay.txt);if(!file) /判断是否能打开文件cerropen error!endl;return 0;elsefile&员工信息及其工资&endl;/输出原有的员工信息与工资file原纪录员工部分endl;switch(m) /判断是否进行原有员工工资的计算,有则输出信息case 1:for(i=0;i3;i+)file编 号:getNo()endl;file姓 名:getName()endl;file银行账号:getBankNo()endl;file工 资: ComputerPay()endl;file*endl;fileendl;break;default:file没有进行原记录员工工资的计算endl;fileendl;fileendl;file新输入员工部分endl; /输出新员工的信息与工资y=y-1;switch(n) /判断是否输入新员工信息,有则输出信息case 1:for(x=0;xy;x+)file编 号: getNo()endl;file姓 名:getName()endl;file银行账号:getBankNo()endl;file工 资:ComputerPay()endl;file*endl;fileendl;break;default:file没有新输入的员工信息endl;fileendl;fileendl;file文件输入员工部分:endl;switch(t) /判断是否输入新员工信息,有则输出信息l=l-1;case 1:for(xf=0;xfl;xf+)file编 号:getNo()endl;file姓 名:getName()endl;file银行账号:getBankNo()endl;file工 资:ComputerPay()endl;file*endl;fileendl;break;default:file没有新输入的员工信息endl;fileendl;file.close(); /关闭文件if(c1=5)a=0;二、员工类1、Employee.h#pragma onceclass CEmployeepublic: CEmployee(void);/构造函数 virtual CEmployee(void);/析构函数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(long no);void setbankNo(char * bankno);2、Employee.cpp#include Employee.h#include /处理字符串的头文件CEmployee:CEmployee(void)CEmployee:CEmployee(void)/.h文件中的声明应该与.cpp源文件中的声明函数类型一致CEmployee:CEmployee(const char * nm, const long no, const char * bankNo) /要进行参数的赋值工作,也就是把参数带进来 /初始化 memset(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:ComputerPay(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/添加类的时候,应添加继承关系,否则带参数的继承函数无法实现class 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.hCManager: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;float 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.hCWage:CWage(void)CWage:CWage(void)void CWage:setHours(float hrs)m_hours = hrs; /设置工作时间void CWage:setWage(float wg)m_wage = wg; /设置每小时工资float CWage:ComputerPay(void)/重新计算薪水float m=m_wage*m_hours;return m;CWage:CWage(const char * nm, const long no, const char * bankNo):CEmployee(nm,no,bankNo)CWage:CWage(float hrs, float wg) /赋值操作 m_wage=wg; m_hours=hrs;五

温馨提示

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

评论

0/150

提交评论