⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 employercommunicationmanagement.cpp

📁 使用结构体数据类型
💻 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 + -