3、职工综合信息管理系统
要求:设计一个程序来管理职工较全面数据信息,具备数据的输入、查找、删除等功能。具体功能细节可以根据自己理解情况进行增加。
#include <iostream>
#include <string>
using namespace std;
struct yuangong
{
int num;
char name[20];
char sex[10];
yuangong *next;
};
yuangong * creat();
void print(yuangong *head);
yuangong * insert(yuangong *head,yuangong *stud);
yuangong * del(yuangong *head,int num);
void exit();
int n=0;
int main()
{
cout<<" @@@@@@@@@@欢迎使用员工查询系统@@@@@@@@@@ "<<endl;
yuangong * head=creat();
int choice;
cout<<" 请选择要实现的功能: "<<endl;
cout<<endl;
cout<<" %%%%%%%%%% 1:查看员工信息 %%%%%%%%%% "<<endl;
cout<<" &&&&&&&& 2:插入新员工信息 &&&&&&&&& "<<endl;
cout<<" ******* 3:删除员工信息 ******** "<<endl;
cout<<" ?????? 4:欢迎下次使用本系统,再见! ??? "<<endl;
cin>>choice;
while(choice<0||choice>5)
{
cout<<" 输入有误,请重新输入 "<<endl;
cin>>choice;
}
while(choice>=1&&choice<=3)
{
switch(choice)
{
case 1: {
print(head);
cout<<endl;
}
break;
case 2: {
yuangong * pt=new yuangong;
cout<<"请输入要插入员工的信息:"<<endl;
cin>>pt->num>>pt->name>>pt->sex;
head =insert(head,pt);
cout<<"目前员工信息为"<<endl;
print(head);
}
break;
case 3:{
int num ;
cout<<"请输入要删除的工号:" <<endl;
cin>>num;
head=del(head,num);
cout<<"目前员工信息为"<<endl;
print(head);
}
break;
default: break;
}
cout<<"请再次选择其他功能:"<<endl;
cin>>choice;
}
if(choice==4)
exit();
return 0;
}
yuangong * creat()//建立链表
{
cout<<" @@@@@@@@@@请输入员工信息@@@@@@@@@@ "<<endl;
yuangong *head,*p1,*p2;
head=NULL;
p1=new(yuangong);
p2=p1;
cout<<"请输入员工的信息,,当工号为0时,停止输入:"<<endl;
cout<<"员工信息为:"<<endl
<<"工号\t\t\t性名\t\t\t性别"<<endl;
cin>>p1->num>>p1->name>>p1->sex;
while(p1->num!=0)
{
n++;
if(n==1)
head=p1;
else
{
p2->next=p1;
p2=p1;
}
p1=new(yuangong);
cin>>p1->num>>p1->name>>p1->sex;
}
delete p1;
p2->next=NULL;
return head;
}
void print(yuangong *head)//输出链表
{
cout<<"工号\t\t\t姓名\t\t\t性别"<<endl;
yuangong *p;
p=head;
if(p==NULL)
return ;
do
{
cout<<p->num<<"\t\t\t"<<p->name<<"\t\t\t"<<p->sex;
p=p->next;
cout<<endl;
}while(p!=NULL);
}
yuangong * del(yuangong * head,int num)//删除员工信息
{
yuangong *p1,*p2;
if(head==NULL)
{
cout<<"链表为空!"<<endl;
return head;
}
p1=head;
while(num!=p1->num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
cout<<"删除:"<<num<<endl;
n--;
}
else
cout<<"没有发现该员工"<<endl;
return head;
}
yuangong * insert(yuangong * head,yuangong *stu)//插入指定的员工号
{
yuangong *p0,*p1,*p2;
p1=head;
p0=stu;
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
while((p0->num>p1->num)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1)
head=p0;
else
p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
n++;
return head;
}
void exit()
{
cout<<" ?????? 欢迎下次使用本系统,再见! ?????? "<<endl;
}
图片: