通讯录设计.docx
- 文档编号:23233433
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:16
- 大小:17.16KB
通讯录设计.docx
《通讯录设计.docx》由会员分享,可在线阅读,更多相关《通讯录设计.docx(16页珍藏版)》请在冰豆网上搜索。
通讯录设计
#include
#include
#include
//usingnamespacestd;
classPerson
{
protected:
charName[20];//姓名
charcity[20];//城市
inteip;//邮编
charstate[20];//国家
charstreet[20];//街道
Person*next,*prior;
public:
Person(char*Name,inteip,char*state,char*city,char*street)
{strcpy(this->Name,Name);
strcpy(this->state,state);
strcpy(this->city,city);
strcpy(this->street,street);
this->eip=eip;
}
friendclassManage;
};
classManage
{
private:
Person*person;
public:
Manage()
{
person=NULL;
Load();
}
~Manage()
{
Person*p;
p=person;
while(p)
{
p=p->next;
deleteperson;
person=p;
}
person=0;
}
voidFind(charName[20]);//按姓名查找
voidAdd();//添加加信息
voidDelete();//删除信
voidsearch();//查询信息
voidSave();//保存数据
voidLoad();//读入数据
voiddisplay();//显示信息
voidModify(charName[20]);
voidOutput(Person*p)
{
cout<<"\t\t姓名:
"< cout<<"\t\t邮政: "< cout<<"\t\t国家: "< cout<<"\t\t城市: "< cout<<"\t\t街道"< cout< } }; voidManage: : Add() { Person*p,*p2;//新结点指 charstate[20]; charcity[20]; charstreet[20]; inteip; charname[20]; charc; cout<<"\n**新增学生通讯录**\n"; //输入学生信息 cout<<"输入姓名: \t"; cin>>name; cout< cout<<"输出邮政: \t"; cin>>eip; cout<<"输入国家: \t"; cin>>state; cout< cout<<"输入城市: \t"; cin>>city; cout<<"输入街道: \t"; cin>>street; cout< p=newPerson(name,eip,state,city,street); p->next=0; //学生结点加入链表 if(person)//若已经存在结点 { p2=person; while(p2->next)//查找尾结点 { p2=p2->next; } p->prior=p2; p2->next=p;//连接 } else//若不存在结点(表空) { person=p;//连接 } cout<<"\t\t\t***添加成功***\n"< while (1) { cout<<"是否继续添加(Y/N)"< cin>>c; if(c=='Y') { Add(); return; } else return; } } voidManage: : Delete()//删除人员 { Person*p1,*p2; intcount=0; charName[20]; p1=person; cout<<"请输入要删除人的名字: "< cin>>Name; if(person) { while(p1) { if(strcmp(p1->Name,Name)==0) { count++; Output(p1); if(p1==person)//若要删除的结点是第一个结点 { if(p1->next==NULL) { person=NULL; p1=NULL;//把p1置空,不然会死循环! } else{ person=p1->next; person->prior=NULL; deletep1; p1=person; } } else//若要删除的结点是后续结点 { p2=p1->next; if(p2==NULL) { p1->prior->next=NULL; } else { p1->prior->next=p1->next; p1->next->prior=p1->prior; } deletep1; p1=p2;//替代原先的"p1=p1->next" } cout<<"\t\t***删除成功***\n"; } else p1=p1->next; } if(count==0) cout<<"查无此人无法删除\n"; } } voidManage: : Save()//数据写入到文件 { ofstreamfPerson("tongxun.txt",ios: : out); charc; cout<<"\n保存数据,是否继续? [Y/N]: "; cin>>c; if(c! ='Y') return; Person*p=person; while(p) { fPerson< p=p->next; } fPerson.close(); cout<<"\n保存成功...\n"; cout<<"输出数据"< display(); } voidManage: : Load()//数据读入 { ifstreamfPerson; Person*p=person; charName[20],state[20],city[20],street[20]; inteip; fPerson.open("tongxun.txt",ios: : in); fPerson>>Name>>eip>>state>>city>>street; while(fPerson.good()) { p=newPerson(Name,eip,state,city,street); p->next=0; //员工结点加入链表 if(person)//若已经存在结点 { Person*p2; p2=person; while(p2->next)//查找尾结点 { p2=p2->next; } p2->next=p;//连接 } else//若不存在结点(表空) { person=p;//连接 } fPerson>>Name>>eip>>state>>city>>street; } fPerson.close(); } voidManage: : Find(charName[20]) { Person*p1; intcount=0; p1=person; while(p1) { if(strcmp(p1->Name,Name)==0) { count++; Output(p1); } p1=p1->next; } if(count) { cout<<"\t查询成功! ! ! "< cout<<"\n共找到"< } else cout<<"\n\t\t未找到该学生! ! ! \n"< } voidManage: : search() { charc; charName[20]; do{ cout<<"1按名字查找,2退出查找"< cin>>c; cout< switch(c) { case'1': { cout<<"输入姓名Name: "; cin>>Name; Find(Name); };break; case'2': break; default: cout<<"输入有误请重新输入! ! ! \n"< } }while(c! ='1'&&c! ='2'); cout<<"\t\t\t***查找成功***\n"< cout<<"是否继续查找(Y/N)"< cin>>c; if(c=='Y') search(); else return; } voidManage: : display() { Person*p; p=person; while(p) { cout< p=p->next; cout< } } voidManage: : Modify(charName[20]) { Person*p1; charc,name[20]; p1=person; while(p1) { if(strcmp(p1->Name,Name)==0) break; else { p1=p1->next; } } if(p1! =NULL)//若找到结 { cout<<"所要修改的学生的信息如下: \n"< Output(p1); cout<<"1.修改姓名2修改邮政3修改国家4修改城市,5修改街道,6退出修改\n"< cout<<"请选择(1-6)要修改的信息\n"< cin>>c; if(c! ='6') cout<<"请输入新的信息: "; switch(c) { case'1': cin>>p1->Name;break; case'2': cin>>p1->eip;break; case'3': cin>>p1->state;break; case'4': cin>>p1->city;break; case'5': cin>>p1->street;break; default: break; } cout<<"\t***修改成功***\n"< cout<<"\t修改后的信息如下"< Output(p1); cout<<"是否继续修改(Y/N): "< cin>>c; if(c=='Y') { cout<<"请输入要修改人员的name: "; cin>>name; cout< Modify(name); return; } else return; } else//未找到结点 cout<<"未找到该学生! \n"; } intmain() { Managem; charname[20]; intc; cout<<"★*******★★★★★★*******★"< cout<<"****★辽宁科技大学计11-2班通讯录★************"< cout<<"★*******★★★★★★*******★"< do { cout<<"=========================================="< cout<<"★☆\t1.新增通讯录\t☆★"< cout<<"★☆\t2.删除通讯录\t☆★"< cout<<"★☆\t3.查询详细信息\t☆★"< cout<<"★☆\t4.保存数据\t☆★"< cout<<"★☆\t5.输出信息\t☆★"< cout<<"★☆\t6.修改信息\t☆★"< cout<<"=========================================="< cout<<"0-退出\t请选择(1-6): "; cin>>c; switch(c) { case1: m.Add();break; case2: m.Delete();break; case3: { m.search(); };break; case4: m.Save();break; case5: m.display();break; case6: cout<<"请输入要修改的人员的姓名"< cin>>name; m.Modify(name); } }while(c! =0); chars; cout<<"\n★是否要保存您的所有操作(Y/N): "< cin>>s; if(s=='Y') m.Save(); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 设计