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;