C++源代码[精彩]
- 格式:pdf
- 大小:639.88 KB
- 文档页数:21
C++源代码 #include
#include
#include
#include
using namespace std;
//全局数据,对象
double CSalary;
double SSalary;
double APSalary;
int ID; //员工工号(要保证唯一)
class Person //教师类
{
protected:
int No; //编号
char Name[20]; //姓名
char Sex[10]; //性别
char Tel[20]; //联系方式
char Nation[30]; //国籍
int Duty; //职位
double Earning; //收入
Person *next;
public:
Person(char ID,char *Name,int Duty)
{
this->Duty=Duty;
strcpy(this->Name,Name);
this->No=ID;
} virtual void CalcSalary()=0;
virtual void Output()=0;
friend class College;
};
class Cservant:public Person //文员类
{
private:
double Workload; //上个月完成工作量
public:
Cservant(char ID,char *Name,int Duty,double
Workload):Person(ID,Name,Duty)
{
this->Workload=Workload;
}
double GetWorkload()
{
return Workload;
}
void SetWorkload(double Amount)
{
this->Workload=Amount;
}
void CalcSalary()
{
Earning=CSalary+(Workload-20)*20;
}
void Output()
{ CalcSalary();
cout<
}
};
class Salesman:public Person
{
private:
double Workload;
public:
Salesman(char ID,char *Name,int Duty,double
Workload):Person(ID,Name,Duty)
{
this->Workload=Workload;
}
double GetWorkload()
{
return Workload;
}
void SetWorkload(double Amount)
{
this->Workload=Amount;
}
void CalcSalary()
{
Earning=SSalary+(Workload-15)*20+150; //
}
void Output() {
CalcSalary();
cout<
}
};
class ACman:public Person //助教类
{
private:
double Workload; //上个月完成工作量
public:
ACman(char ID,char *Name,int Duty,double
Workload):Person(ID,Name,Duty)
{
this->Workload=Workload;
}
double GetWorkload()
{
return Workload;
}
void SetWorkload(double s)
{
Workload=s;
}
void CalcSalary()
{
Earning=250+APSalary+CSalary+(Workload-15)*20;
}
void Output()
{ CalcSalary();
cout<
}
};
class APman:public Person //副教授类
{
public:
APman(char ID,char *Name,int Duty):Person(ID,Name,Duty){}
void CalcSalary()
{
Earning=APSalary+250;//250为行政补贴
}
void Output()
{
CalcSalary();
cout<
}
};
class CSman:public Person //讲师
{
private:
double Workload;//
public:
CSman(char ID,char *Name,int Duty,double
Workload):Person(ID,Name,Duty) {
this->Workload=Workload;
}
double GetWorkload()
{
return Workload;
}
void SetWorkload(double Amount)
{
this->Workload=Amount;
}
void CalcSalary()
{
Earning=(Workload-25)*20+CSalary+150+SSalary;
}
void Output()
{
CalcSalary();
cout<
}
};
class College //
{
private:
Person *Worker; //员工表
void Clear(); //清除内存中数据
public:
College()
{ Worker=0;
Load();
}
~College()
{
Person *p;
p=Worker;
while(p)
{
p=p->next;
delete Worker;
Worker=p;
}
Worker=0;
}
void Find(char Name[20]);//按姓名查找
void Find(int ID);//按编号查找
void Add(); //增加人员
void Delete(); //删除人员
void Modify(); //修改人员
void Query(); //查询人员
void Set(); //基础数据设置
void Save(); //数据存盘(包括基础数据,人员数据)
void Load(); //数据装入(包括基础数据,人员数据)
};
void College::Clear() //清除内存中人员数据(内部使用)
{ Person* p=Worker;
while(p)
{
Worker=p->next;
delete p;
p=Worker;
}
}
void College::Find(char Name[20])
{
}
void College::Add()
{
Person *p; //新结点指针
int Duty;
char Name[20];
char Sex[10]; //性别
char Tel[20]; //联系方式
char Nation[30]; //国籍
double Workload;
cout<<"\n** 新增员工 **\n";
//输入员工信息
cout<<"输入工号:"; cin>>ID;
cout<<"输入职位(1-文员 2-助教 3-讲师 4-副教授 5-教授):";
cin>>Duty;
cout<<"输入姓名:"; cin>>Name;
cout<<"输入性别:"; cin>>Sex;