📄 emp_mng.h
字号:
#include <iostream.h>
#include <iomanip.h>
////////////////////////
// 职工信息 //
////////////////////////
struct emp_info
{
int id; //编号
int age; //年龄
int sex; //性别,0为女,1为男
};
////////////////////////
// 链表的一个结点 //
////////////////////////
struct emp_node
{
emp_info data;
emp_node *next;
};
//////////////////////////////////////////////////////////////////////////////////////////////////
//函数:show_all
//功能:输出全部职工信息
//参数:h:链表头结点指针
//////////////////////////////////////////////////////////////////////////////////////////////////
void show_all(emp_node *h)
{
const int L=10;
if(!h)
{
cout<<"目前没有职工\n\n";
return;
}
cout << setw(L) << "编号" << setw(L) << "年龄" << setw(L) << "性别" << endl;
for(;h;h=h->next)
{
cout << setw(L) << h->data.id << setw(L) << h->data.age ;
if(h->data.sex==0)
cout << setw(L) << "女";
else
cout << setw(L) << "男";
cout<<endl;
}
cout<<endl;
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//函数:sum_by_sex
//功能:统计出男女职工人数
//参数:h:链表头结点指针
// male_num:男职工人数
// female_num:女职工人数
//////////////////////////////////////////////////////////////////////////////////////////////////
void sum_by_sex(emp_node *h, int &male_num, int &female_num)
{
male_num=0;
female_num=0;
if(!h) return;
for(;h;h=h->next)
{
if(h->data.sex)
male_num++;
else
female_num++;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//函数:insert
//功能:在尾部插入新职工结点
//参数:h:链表头结点指针
// eid:新职工的编号
// eage:新职工的年龄
// esex:新职工的性别
//返回值:链表头结点指针
//////////////////////////////////////////////////////////////////////////////////////////////////
void insert(emp_node *&h,const int eid,const int eage,const int esex)
{
emp_node *p=h;
emp_node *s=new(emp_node);
s->data.id=eid;
s->data.age=eage;
s->data.sex=esex;
s->next=NULL;
if(!p)
{
h=s;
return;
}
for(; p->next; p=p->next);
p->next=s;
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//函数:del_by_id
//功能:删除指定编号的职工
//参数:h:链表头结点指针
// eid:被删职工的编号
//返回值:操作是否成功
//////////////////////////////////////////////////////////////////////////////////////////////////
int del_by_id(emp_node *&h,int eid)
{
emp_node *p=h;
if(!p) return 0;
if(p->data.id==eid)
{
h=p->next;
delete p;
return 1;
}
for(;p->next;p=p->next)
if(p->next->data.id==eid)
{
emp_node *tp=p->next;
p->next=p->next->next;
p=p->next;
delete tp;
return 1;
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//函数:retire
//功能:删除年龄在60岁以上的男性职工或55岁以上的女性职工,把被删除结点保存在另一个链表中
//参数:h:链表头结点指针
// retire_list:保存退休职工的链表
//////////////////////////////////////////////////////////////////////////////////////////////////
void retire(emp_node *&h, emp_node *&retire_list)
{
emp_node *p=h,*pr=retire_list,*q=NULL;
if(pr)
for(;pr->next;pr=pr->next);
while(p)
{
if( p->data.sex==0 && p->data.age>=55 || p->data.sex==1 && p->data.age>=60 )
{
if(p==h)
h=h->next;
else
q->next=p->next;
if(!pr)
pr=retire_list=p;
else
pr=pr->next=p;
p=pr->next;
continue;
}
q=p;p=p->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -