大一下 c + + 上机实验总结(十三)

大一下c + +上机实验总目录:大一下c + +上机实验总结目录


1、某学校教职工的工资计算方法为:
所有教职工都有基本工资。
教师月工资为基本工资+课时补贴,课时补贴根据职称和课时计算。例如,每课时教授补贴50元,副教授补贴30元,讲师补贴20元。
管理人员月薪为基本工资+职务工资。
实验室人员月薪为基本工资+工作日补贴,工作日补贴等于日补贴(假设为20元)×月工作日数。
定义教职工抽象类,派生教师类、管理人员类和实验室类,编写程序测试这个类体系。
提示:(1)定义教职工类staff为一个抽象类,里面包含两个纯虚函数input()和output(),在派生类教师类、管理人员类和实验室类分别具体实现这两个纯虚函数。分析题意,教职工类需要输入姓名 职称 课时;管理人员类需要输入姓名和职务工资;实验室人员类需要输入姓名和工作日数。
(2)在基类教职工类中应该包含共有的一些数据成员,派生类中定义自己特有的数据成员,请自己思考各自应该定义哪些数据成员以及它们的访问权限。
【解答】

#include <iostream>
using namespace std;
class staff 
{
    
	public:
		staff ( double bSalary)
		{
   
			basicSalary=bSalary;
		}
	   virtual void input() = 0;
	   virtual void output() = 0;
	protected:
	    char name[30];
	    double basicSalary;
};
class teacher : public staff
{
    
	public:
	   teacher( int basicsalary=3000 ) : staff( basicsalary ){
    }
	   void input()
	   {
   
		   cout<<"姓名?";
		   cin>>name;
		   cout<<"职称    1,教授    2,副教授    3,讲师   (输入1,2 或 3):";
		   cin>>title;
		   cout<<"课时?";
		   cin>>coursetime;
	   }
	   void output()
		{
   
			double salary;
			switch(title)
			{
   
				case 1:   salary = basicSalary+coursetime*50;  break;
				case 2:   salary=basicSalary+coursetime*30;  break;
				case 3:   salary=basicSalary+coursetime*20;
			}
			cout<<"姓名:"<<name<<"\t本月工资:"<<salary<<endl;	
		}
	protected:
		int coursetime;
		int title;
};
class manage : public staff
{
     
	public:
	    manage( int basicsalary=2500 ) : staff( basicsalary ){
    } 
	   void input()
	   {
   
		   cout<<"姓名?";
		   cin>>name;
		   cout<<"职务工资? ";
		   cin>>jobSalary;
	   }
		 void output()
		{
   
			double salary;
			salary = basicSalary+jobSalary;
			cout<<"姓名:"<<name<<"\t本月工资:"<<salary<<endl;	
		}
	protected:
		double jobSalary;
}; 
class technician : public staff
{
     
	public:
		technician( int basicsalary=2000 ) : staff( basicsalary ){
    }
		void input()
	   {
   
		   cout<<"姓名?";
		   cin>>name;
		   cout<<"工作日?";
		   cin>>workdays;
	   }
		 void output()
		{
   
			double salary;
			salary = basicSalary+workdays*20;
			cout<<"姓名:"<<name<<"\t本月工资:"<<salary<<endl;	
		}
   protected:
		int workdays;
}
  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值