//file main.cpp
#include void InitList(Person *&L);//初始化 void Destroy(Person *&L);//全部销毁 bool ListEmpty(Person * L);//判断表是否为空;空=true;非空=false; int ListLength(Person *L);//求表长 void Display(Person *L);//输出 PersonInfo InputInfo(char _name[]);//输入联系人,结构体对象 void Inset(Person *&L,PersonInfo per);//头插法插入 bool FindPerson(Person *L,char _name[]);//判断联系人是否存在 void getPerson(Person *L ,char _name[]);//查找指定联系人 void Delete_data(Person *& L,char _name[]);//删除目标元素 void SaveFile(Person *L );//保存到文件中 void GetFromFile(Person *& L);//读取文件 void Order(); int scan();//扫描输入的数据 void main() { cout<<\"***通讯录***\"< { Inset(list,InputInfo(judgeName)); } break; case 2://输出所有联系人 if(!ListEmpty(list)) { Display(list); } else cout<<\"通讯录为空\"< case 4://删除联系人 cout<<\"请输入姓名: \"; cin>>judgeName; Delete_data(list,judgeName); break; case 5://统计 if (ListEmpty(list)) { cout<<\"通讯录为空\"< void Order() { cout<<\"0.弹出菜单\"< //初始化 void InitList(Person *&L) {//带有头结点,头结点不存放数据 L->next=NULL; } //全部销毁 void Destroy(Person *&L) { Person *pre=L->next,*p=pre->next; while (p!=NULL) { free(pre); pre=p; p=pre->next; } free(pre); L->next=NULL; } //判断表是否为空 bool ListEmpty(Person * L) { return(L->next==NULL); } //求表长 int ListLength(Person *L) { int n=0; Person *p=L; while (p->next!=NULL) { n++; p=p->next; } return n; } //输出 void Display(Person *L) { Person *p=L->next;//头结点不带数据 while (p!=NULL) { cout<<\"姓名: \"< //输入联系人 PersonInfo InputInfo(char _name[]) { PersonInfo p; //p.name=_name; strcpy(p.name,_name); cout<<\"请输入电话号码: \"; cin>>p.phone; cout<<\"请输入电子邮件地址: \"; cin>>p.e_mail; cout<<\"请输入地址: \"; cin>>p.address; cout<<\"已录入完成\"< void Inset(Person *&L,PersonInfo per) { Person * pp=new Person; pp->data=per; pp->next=L->next; L->next=pp; } //判断联系人是否存在 bool FindPerson(Person *L,char _name[]) { Person *p=L->next; while (p!=NULL&&(strcmp(p->data.name,_name)!=0)) { p=p->next; } if (p==NULL) { return false;//没找到 } else { cout<<\"已存在联系人\"< void getPerson(Person *L ,char _name[]) { Person *p=L->next; while (p!=NULL&&(strcmp(p->data.name,_name)!=0)) { p=p->next; } if (p==NULL) { cout<<\"没找到...\"< void Delete_data(Person * & L,char _name[]) { Person * pre=L,*p=L->next; while (p!=NULL && (strcmp(p->data.name,_name)!=0)) { pre=p; p=p->next; } if (p==NULL) { cout<<\"未找到该联系人\"< void SaveFile(Person *L ) { ofstream outfile(\"user.dat\ if (!outfile) { cerr<<\"open error !\"< //读取文件 void GetFromFile(Person *& L) { ifstream infile(\"user.dat\ if (!infile) { return ; } else { Person *s,*r; int i=0,total=0; r=L;//r始终指向头结点 infile>>total; for (i=0;i //file class.cpp //定义通讯录每个人的个人信息结构体类型 struct PersonInfo { char name[20];//姓名 char phone[20];//电话号码 char e_mail[20];//邮箱 char address[50];//地址 }; //定义通讯录链表的结构体类型 struct Person { PersonInfo data; Person * next; }; 因篇幅问题不能全部显示,请点此查看更多更全内容