C语言程序设计员工资,c语言程序设计工资管理系统。要有工资录入,统计..._人力资源师_帮考网...

}

void Output(ofstream& ofs)

{

ofs

double Incoming()

{

return Salary+Allowance+Hours*20;

}

};

class College

{

private:

Person *PL;

void Clear();

int College::Find(int ID,Person **p1,Person **p2);

public:

College(); //构造

~College(); //析构

void Add(); //增加职工

void Delete(); //删除职工

void Modify(); //修改职工

void Print(); //输出职工信息

void Save(); //职工信息存盘

void Load(); //职工信息装入

};

College::College() //构造函数(创建1个头结点的链表)

{

Person *p=new Teacher;

PL=p;

cout< Load();

}

College::~College() //析构函数(仅保留1个头结点)

{

Person *p=PL;

while(p) //逐个删除结点,包括头结点

{

PL=p->next;

delete p;

p=PL;

}

PL=0;

}

void College::Add() //增加职工

{

cout< //查找尾结点

Person *p=PL;

while(p->next)p=p->next;

int ch;

cout<>ch;

//创建新结点,录入数据,连接到链表

Teacher *pt;

Assistant *pa;

Manager *pm;

Teacher_Assistant *pta;

Manager_Teacher *pmt;

switch(ch)

{

case 0: pt=new Teacher; pt->Input();

p->next=pt;

break;

case 1: pa=new Assistant; pa->Input();

p->next=pa;

break;

case 2: pm=new Manager; pm->Input();

p->next=pm;

break;

case 3: pta=new Teacher_Assistant; pta->Input();

p->next=pta;

break;

case 4: pmt=new Manager_Teacher; pmt->Input();

p->next=pmt;

break;

default: return;

}

}

void College::Clear() //清除所有的职工结点(仅保留头结点)

{

Person *p=PL->next;

while(p)

{

PL->next=p->next;

delete p;

p=PL->next;

}

}

//查找职工结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针)

int College::Find(int ID,Person **p1,Person **p2)

{

*p1=PL->next;

*p2=PL;

while(*p1)

{

if((*p1)->No==ID)

break; //找到

else

{

*p2=*p1; //继续查找

*p1=(*p1)->next;

}

}

return *p1?1:0;

}

void College:elete() //删除职工

{

cout< int No;

Person *p1,*p2;

cout<>No;

if(!Find(No,&p1,&p2))

{

cout< }

else

{

p2->next=p1->next; //连接

delete p1;

cout< }

}

void College::Modify() //修改职工

{

cout< int No;

Person *p1,*p2;

cout<>No;

if(!Find(No,&p1,&p2))

{

cout< }

else

{

p1->Output(); //输出原来的职工信息(做提示)

p1->Input(); //输入新的职工信息(更新)

cout< }

}

void College:rint() //输出职工信息

{

cout< cout< Person *p=PL->next;

if(!p)

{

cout< return;

}

while(p) //遍历链表,输出职工信息

{

p->Output();

p=p->next;

}

}

void College::Save() //职工信息存盘

{

ofstream f("erson.dat",ios:ut); //打开文件

//遍历输出至文件

Person *p=PL->next;

while(p)

{

p->Output(f);

p=p->next;

}

f.close(); //关闭文件

cout

void Collegead() //职工信息装入

{

char buf[81]; //临时空间

int Duty; //人员类型

Person *p2; //新建结点的指针

long t; //读写位置

//清除现有结点(保留头结点)

Clear();

//打开文件

ifstream f("erson.dat",ios::in);

//建立结点,读数据

Person *p=PL; //尾结点指针

while(1)

{

//读取人员类型

t=f.tellg();

f>>buf>>buf>>Duty;

if(f)

{

//根据人员类型创建新结点

switch(Duty)

{

case 0: p2=new Teacher; break;

case 1: p2=new Assistant; break;

case 2: p2=new Manager; break;

case 3: p2=new Teacher_Assistant; break;

case 4: p2=new Manager_Teacher; break;

default: f.close(); return;

}

p->next=p2;

p=p->next;

f.seekg(t);

p->Input(f);

}

else

break;

}

//关闭文件

f.close();

}

void main()

{

char ch;

College c; //定义大学对象

//显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数

do

{

cout< cout< cout< cout< cout< cout< cout< cout< cin>>ch;

switch(ch)

{

case ''1'': c.Add(); break;

case ''2'': c.Delete();break;

case ''3'': c.Modify();break;

case ''4'': c.Print(); break;

case ''5'': c.Save(); break;

case ''6'': c.Load(); break;

}

}while(ch!=''7'');

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值