赞
踩
为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
操作分为查询(query)、修改(modify)、添加(add)、删除(del)、打印(print)
1.查询:输入员工姓名,输出员工信息,若员工不存在,输出“NOT FOUND!”
2.修改:输入员工姓名、要修改的属性、修改信息。姓名为name、电话为tel、邮箱为email。
3.添加:输入员工编号、姓名、电话号码、邮箱。
4.删除:输入员工姓名,将其从通讯录中删除。
5.打印:输出通讯录。
[输入]
第一行是一个整数n(1<=n<=100),表示通讯录原有n个人。接下来n行是员工信息,每行有编号、姓名、电话号码、邮箱四个员工属性。
接下来输入一个整数m(1<=m<=100),表示有m次操作。接下来是m行操作,每行为一次操作,操作如题意所示。
数据保证编号、姓名不重复;编号小于200且升序给出,名字只由小写字母组成,电话只由数字组成,邮箱只由数字、小写字母、“@”、“.”组成;名字、电话、邮箱字符串长度都不超过20。
[输出]
对于每个query和print,输出查询或打印结果。
#include <iostream>
using namespace std;
typedef struct
{
int number;
string name;
string phoneNumber;
string e_mail;
}StaffInfo;
typedef struct SNode
{
StaffInfo data;
struct SNode *next;
}SNode, *LinkList;
void InitList(LinkList &L)
{
L = new SNode; //生成新结点作为头结点
L->next = NULL; //头结点指针域置空
}
void add_CinStaffInfo(LinkList &L, StaffInfo staffData) { LinkList r, s; r = L;//尾指针r指向头结点 while(r->next && (r->next->data.number < staffData.number)) { r = r->next; } if(r->next == NULL) { s = new SNode;//生成新结点 s->data = staffData; s->next = NULL; r->next = s; } }
void add(LinkList &L) { StaffInfo data; LinkList p = L->next; cin>>data.number; while(p) { if(data.number == p->data.number) { cout<<"error"<<endl; } p = p->next; } cin>>data.name; LinkList q = L->next; while(q) { if(data.name == q->data.name) { cout<<"error"<<endl; } q = q->next; } cin>>data.phoneNumber; cin>>data.e_mail; add_CinStaffInfo(L, data); }
void print(LinkList &L)
{
LinkList p = L->next;
while(p)
{
cout<<p->data.number<<" "<<p->data.name<<" "<<p->data.phoneNumber<<" "<<p->data.e_mail<<endl;
p = p->next;
}
}
void query(LinkList L, string name)//查询 { LinkList p = L->next; while(p && p->data.name != name) { p = p->next; } if(!p) { cout<<"NOT FOUND!"<<endl; } else { cout<<p->data.number<<" "<<p->data.name<<" "<<p->data.phoneNumber<<" "<<p->data.e_mail<<endl; } }
void modify(LinkList &L, string name)//修改 { LinkList p = L; string str, sstr; while(p->next) { if(name == p->next->data.name) { cin>>str; if(str == "name") { cin>>sstr; LinkList q = L; while(q->next) { if(sstr == q->next->data.name) { cout<<"NOT FOUND!"<<endl; break; } q = q->next; } if(q->next == NULL) { p->next->data.name = sstr; break; } } if(str == "tel") { cin>>sstr; LinkList q = L; while(q->next) { if(sstr == q->next->data.phoneNumber) { cout<<"NOT FOUND!"<<endl; break; } q = q->next; } if(q->next == NULL) { p->next->data.phoneNumber = sstr; break; } } if(str == "email") { cin>>sstr; LinkList q = L; while(q->next) { if(sstr == q->next->data.e_mail) { cout<<"NOT FOUND!"<<endl; break; } q = q->next; } if(q->next == NULL) { p->next->data.e_mail = sstr; break; } } } else { p = p->next; } } }
void del(LinkList &L, string name)//删除 { LinkList p = L; LinkList q; while(p->next) { if(name == p->next->data.name) { q = p->next; p->next = q->next; delete q; } p = p->next; } if(!p) { cout<<"NOT FOUNT!"<<endl; } }
int main() { LinkList L; InitList(L); int n, m; string operate, nname; cin>>n; while(n--) { add(L); } cin>>m; while(m--) { cin>>operate; if(operate == "del") { cin>>nname; del(L, nname); } else if(operate == "query")//chaxun { cin>>nname; query(L, nname); } else if(operate == "modify")//修改 { cin>>nname; modify(L, nname); } else if(operate == "add") { add(L); } else if(operate == "print") { print(L); } } return 0; }
2
1 aaa 13579246811 aaa@gmail.com
2 csl 13579246833 cls@gmail.com
9
del aaa
query aaa
query csl
modify csl email clsnb@gmail.com
query csl
add 3 cnz 01234567890 cnznb@gmail.com
modify cnz name cnznb
modify cnznb tel 13579246822
print
NOT FOUND!
2 csl 13579246833 cls@gmail.com
2 csl 13579246833 clsnb@gmail.com
2 csl 13579246833 clsnb@gmail.com
3 cnznb 13579246822 cnznb@gmail.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。