📄 employercommunicationmanagement.cpp
字号:
/*使用结构体数据类型,以链式存储单位员工的通讯信息
(职工号,姓名,性别,住宅电话,工作电话,手机,小灵通),
要求实现对员工的通讯管理。主要功能有通讯信息输入、查询、删除、修改等操作。*/
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iomanip>
#include <conio.h>
using namespace std;
//struct定义
typedef struct{
int No; //职工号
char name[8]; //姓名
char gener[3]; //性别
char homecall[9]; //住宅电话
char officecall[9]; //工作电话
char mobilecall[12];//手机
char littlecall[9]; //小灵通
}elem;
typedef struct Emp{
elem empl; //结构体型的职工信息结点
Emp *next; //结构体型的职工信息指针
}Emp;
//初始化
Emp *init(Emp *H)
{
H=new Emp;
H->next=NULL;
return H; //返回Emp
}
//建立,输入
void creat(Emp *H)
{
cout<<endl;
int n;
int num;
char na[8];
char gen[3];
char home[9];
char office[9];
char mobile[12];
char little[9];
Emp *p,*q=H;
cout<<"输入要新建的职工信息的个数N:";
cin>>n;
cout<<"输入职工信息"<<"\n"<<"(职工号,姓名,性别,住宅电话,工作电话,手机,小灵通)"
<<"\n"<<"并以回车结束:"<<endl;
for(int i=0;i<n;i++)
{
p=new Emp;
cin>>num;
getchar();
gets(na);
gets(gen);
gets(home);
gets(office);
gets(mobile);
gets(little);//按顺序输入新建职工信息
p->empl.No=num;
strcpy(p->empl.name,na);
strcpy(p->empl.gener,gen);
strcpy(p->empl.homecall,home);
strcpy(p->empl.officecall,office);
strcpy(p->empl.mobilecall,mobile);
strcpy(p->empl.littlecall,little);
p->next=NULL;
q->next=p;
q=p;
}
}
//插入
void insert(Emp *H)
{
if(H->next==NULL) //判断是否为空表
{
cout<<"没有职工信息!"<<endl;
exit (-1);
}
else
{ cout<<endl;
Emp *p,*q;
cout<<"insert:";
q=new Emp;
p=H->next;
while(p)
{
if(p->next==NULL)
{
cout<<"输入职工信息"<<"\n"
<<"(职工号,姓名,性别,住宅电话,工作电话,手机,小灵通)"
<<"\n"<<"并以回车结束:"<<endl;
cin>>q->empl.No;getchar();
gets(q->empl.name);
gets(q->empl.gener);
gets(q->empl.homecall);
gets(q->empl.officecall);
gets(q->empl.mobilecall);
gets(q->empl.littlecall);
q->next=NULL;
p->next=q;
cout<<"insert success!"<<endl;
return;
}
p=p->next;
}
cout<<"insert failed!"<<endl;
return;
}
}
//输出结构体中各项
void out_struct(Emp *p)
{
if(p)
{
cout<<setiosflags(ios_base::left)
<<setw(8)<<p->empl.No
<<setw(8)<<p->empl.name
<<setw(5)<<p->empl.gener
<<setw(10)<<p->empl.homecall
<<setw(10)<<p->empl.officecall
<<setw(14)<<p->empl.mobilecall
<<setw(10)<<p->empl.littlecall
<<resetiosflags(ios_base::left)<<endl;
}
}
//显示职工信息
void print(Emp *H)
{
if(H->next==NULL)//判断是否为空表
{
cout<<"没有职工信息!"<<endl;
exit(-1);
}
cout<<endl;
cout<<"显示职工信息"<<endl;
Emp *p;
p=H->next;
cout<<"***********************单位员工通讯信息***********************"<<endl;
cout<<setiosflags(ios_base::left)
<<setw(8)<<"职工号"
<<setw(8)<<"姓名"
<<setw(5)<<"性别"
<<setw(10)<<"住宅电话"
<<setw(10)<<"工作电话"
<<setw(14)<<"手机"
<<setw(10)<<"小灵通"<<endl;
while(p!=NULL)
{
out_struct(p);
p=p->next;
}
}
//查询
void search(Emp *H)
{
cout<<endl;
cout<<"查询职工信息"<<endl;
int x;
Emp *p;
p=H;
if(H->next==NULL)//判断是否为空表
{
cout<<"没有职工信息!"<<endl;
exit (-1);
}
else{
cout<<"1-按职工号查找";
cout<<"2-按姓名查找";
cout<<"输入查询条件的编号:";
cin>>x;
switch(x)//选择性查找
{
case 1:
p=p->next;
int num;
cout<<"输入职工号:";
cin>>num;
while(p)
{
if(p->empl.No==num)
{
cout<<"你所查找的职工信息为:"<<endl;
out_struct(p);//输出
return;
}
else
p=p->next;
}
cout<<"没有此职工信息!"<<endl;
break;
case 2:
p=p->next;
char name[7];
cout<<"输入职工姓名:";
cin>>name;
while(p)
{
if(!strcmp(p->empl.name,name))
{
cout<<"你所查找的职工信息为:"<<endl;
out_struct(p);//输出
return;
}
else
p=p->next;
}
cout<<"没有此职工信息!"<<endl;//查找无结果
break;
default:
cout<<"错误的编号!"<<endl;
break;
}
return;
}
}
//删除
void Delete(Emp *H)
{
if(H->next==NULL)//判断是否为空表
{
cout<<"没有职工信息!"<<endl;
exit(-1);
}
else
{
Emp *p,*q,*r;
cout<<endl;
cout<<"删除"<<endl;
p=H->next;
q=H;
cout<<"1-按职工号查找"<<"\n";//查找条件
cout<<"2-按姓名查找"<<"\n";
cout<<"输入查询条件的编号:";
int x;
cin>>x;
switch(x)
{
case 1:
int num;
cout<<"输入职工号:";
cin>>num;
while(p)
{
if(p->empl.No==num)
{
cout<<"你所查找的职工信息为:"<<endl;
out_struct(p);
r=p->next;
q->next=r;
delete p;
cout<<"删除成功!"<<endl;
return;
}
else
{
p=p->next;
q=q->next;
}
}
cout<<"没有此职工信息!"<<endl;
break;
case 2:
char name[7];
cout<<"输入职工姓名:";
cin>>name;
while(p)
{
if(!strcmp(p->empl.name,name))
{
cout<<"你所查找的职工信息为:"<<endl;
out_struct(p);
r=p->next;
q->next=r;
delete p;
cout<<"删除成功!"<<endl;
return;
}
else
{
p=p->next;
q=q->next;
}
}
cout<<"没有此职工信息!"<<endl;
break;
default:
cout<<"错误的字符!"<<endl;
break;
}
}
return;
}
//修改表
void update(Emp *H,Emp *p)
{
if(H->next==NULL)//判断是否为空表
{
cout<<"没有职工信息!"<<endl;
exit(-1);
}
cout<<endl;
cout<<"1---修改职工号;"<<"\n"
<<"2---修改姓名;"<<"\n"
<<"3---修改性别;"<<"\n"
<<"4---修改住宅电话;"<<"\n"
<<"5---修改工作电话;"<<"\n"
<<"6---修改手机;"<<"\n"
<<"7---修改小灵通;"<<"\n"
<<"8---结束修改!"<<endl;
int x;
cout<<"输入修改表编号:";
cin>>x;
while(x)//循环修改表
{
switch(x)
{
case 1:
int num;
cout<<"输入职工号:";
cin>>num;
p->empl.No=num;
break;
case 2:
char name[7];
cout<<"输入职工姓名:";
cin>>name;
strcpy(p->empl.name,name);
break;
case 3:
char gener[2];
cout<<"输入职工性别:";
cin>>gener;
strcpy(p->empl.gener,gener);
break;
case 4:
char home[9];
cout<<"输入职工住宅电话:";
cin>>home;
strcpy(p->empl.homecall,home);
break;
case 5:
char office[9];
cout<<"输入职工的工作电话:";
cin>>office;
strcpy(p->empl.officecall,office);
break;
case 6:
char mobile[12];
cout<<"输入职工的手机号码:";
cin>>office;
strcpy(p->empl.mobilecall,mobile);
break;
case 7:
char little[9];
cout<<"输入职工的小灵通号码:";
cin>>office;
strcpy(p->empl.littlecall,little);
break;
case 8:
cout<<"结束修改!"<<endl;
return;
default:
cout<<"选择错误!"<<endl;
break;
}
cout<<"输入修改编号:";
cin>>x;
}
}
void modify(Emp *H)//修改函数
{
cout<<"修改"<<endl;
int x;
Emp *p;
p=H;
if(H->next==NULL) //判断是否为空表
{
cout<<"没有职工信息!"<<endl;
exit (-1);
}
else{
cout<<"1-按职工号查找"<<endl;
cout<<"2-按姓名查找"<<endl;
cout<<"输入查找编号:";
cin>>x;
switch(x)
{
case 1:
p=p->next;
int num;
cout<<"输入职工号:";
cin>>num;
while(p)
{
if(p->empl.No==num)
{
cout<<"查找到!"<<endl;
update(H,p);
cout<<"修改成功!"<<endl;
return;
}
else
p=p->next;
}
cout<<"没有此职工信息!"<<endl;
break;
case 2:
p=p->next;
char name[7];
cout<<"输入职工姓名:";
cin>>name;
while(p)
{
if(!strcmp(p->empl.name,name))
{
cout<<"查找到!"<<endl;
update(H,p);
cout<<"修改成功!"<<endl;
return;
}
else
p=p->next;
}
cout<<"没有此职工信息!"<<endl;
break;
default:
cout<<"错误的字符!"<<endl;
break;
}
return;
}
}
void main()//主函数进行测试
{
Emp *H;
H=new Emp;
H=init(H);
int x;
cout<<endl;
cout<<" 职工信息管理功能表"<<endl;
cout<<" 1-新建职工信息"<<endl;
cout<<" 2-显示职工信息"<<endl;
cout<<" 3-查找职工信息"<<endl;
cout<<" 4-删除职工信息"<<endl;
cout<<" 5-修改职工信息"<<endl;
cout<<" 6-插入职工信息"<<endl;
cout<<" 7-结束程序,退出!"<<endl;
cout<<endl;
cout<<"输入你要进行的任务编号:";
cin>>x;
while(x)//循环表
{
switch(x)
{
case 1:
creat(H);
break;
case 2:
print(H);
break;
case 3:
search(H);
break;
case 4:
Delete(H);
break;
case 5:
modify(H);
break;
case 6:
insert(H);
break;
case 7:
cout<<"程序结束"<<endl;
return;
default:
cout<<"错误的功能号!"<<endl;
return;
}
cout<<"输入你要进行的任务编号:";
cin>>x;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -