自己用c++写的员工通讯录管理系统,经过反复测试,绝对没问题,请放心使用。
1、单位员工通讯录管理系统(线性表的应用)
[问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。 [实现提示] 可以采用单链表的存储结构,如可定义如下的存储结构: typedef struct { /*员工通讯信息的结构类型定义*/ char num[5]; /*员工编号*/ char name[10]; /*员工姓名*/ char phone[15]; /*办公室电话号码*/ char call[15]; /*手机号码*/ }DataType; /*通讯录单链表的结点类型*/ typedef struct node { DataType data; /*结点的数据域*/ struct node *next; /*结点的指针域*/ }ListNode,*LinkList; 截图 增添信息
查询信息
删除信息
修改信息
源代码
#include #include #include \"stdlib.h\" using namespace std; typedef struct { /*员工通讯信息的结构类型定义*/
char num[5];
/*员工编号*/
char name[10];
/*员工姓名*/
char phone[15];
/*办公室电话号码*/
char call[15]; /*手机号码*/ char email[30];//邮箱 }DataType; /*通讯录单链表的结点类型*/ typedef struct node { DataType data;
/*结点的数据域*/
struct node *next;
/*结点的指针域*/ }ListNode,*LinkList; LinkList p,q; LinkList L; int i=0; void InitList(LinkList &L){ L = new ListNode; if(!L) exit(1); L->next=NULL; }
void InsertList(LinkList &L ){ LinkList q= new ListNode; q->next=NULL; if (!q) exit(1);
cout
cin>>q->data.num>>q->data.name>>q->data.phone>>q->data.call>>q->data.email; LinkList p=L; while (p->next!=NULL) p=p->next;
p->next=q; } void shuchu(LinkList L ){ LinkList w=new ListNode; cout
w=L->next; while(w!=NULL) { coutdata.numdata.namedata.phonedata.calldata.email
w=w->next; }
}
void inquire(LinkList L){ char b[10]; cout>b; LinkList r; for(r=L->next;r!=NULL&&strcmp(b,r->data.name);r=r->next){} if(r==NULL)
cout
else {
coutdata.num
coutdata.name
coutdata.phone
coutdata.call
coutdata.email
}
} void xiugai(LinkList &L){ char c[5]; LinkList r,s;
cout>c; for(r=L->next;r!=NULL&&strcmp(c,r->data.num);r=r->next){} if(r==NULL)
cout
else {
cout
s=new ListNode; s->next=NULL;
cin>>s->data.num>>s->data.name>>s->data.phone>>s->data.call>>s->data.email;
{strcpy(r->data.num,s->data.num);
strcpy(r->data.name,s->data.name);
strcpy(r->data.phone,s->data.phone);
strcpy(r->data.call,s->data.call);
strcpy(r->data.email,s->data.email);}
delete s;
coutdata.numdata.namedata.phonedata.calldata.email
}
} void Delete(LinkList &L){ char e[10]; cout>e; LinkList r,t; t=L; for(r=L->next;r!=NULL&&strcmp(e,r->data.name);r=r->next){ t=t->next;} if(r==NULL)
coutnext=r->next; //delete r; cout
int doing(LinkList &N){
cout
cout
cout
cout
int a; cin>>a;
switch(a){ case 1:InsertList(N);break; case 2: inquire(N);break; case 3: xiugai(N);break; case 4: Delete(N);break;
case 5:shuchu(N);break;
default:cout
cout>d; if (d==\'y\'||d==\'Y\') doing(N); //继续操作 return 0; } int main(){ LinkList N; InitList(N);
doing(N); return 0; }