通讯录系统
2016-04-21 12:54
302 查看
#include<iostream> #include<iostream> #include<fstream> #include<string> #include<iomanip> using namespace std; typedef struct node { string id,name,sex,tele,adre; node *next; }*ptrn; void creatlist(ptrn &e) { ptrn tem,newnode; e=0; tem=e; cout<<"请按照编--号,姓--名,性--别,电--话,地--址的顺序依次输入信息"<<endl; while(1) { newnode=new node; cin>>newnode->id>>newnode->name>>newnode->sex>>newnode->tele>>newnode->adre; if(e==0) { e=newnode; tem=newnode; } else { tem->next=newnode; tem=newnode; } cout<<" | (1)继续添加 |"<<endl; cout<<" | (2)结束添加 |"<<endl; cout<<" | 请输入序号 |"<<endl; cout<<"______________________________________________________________"<<endl; int i; cin>>i; if(i==1) continue; else break; } if(e)tem->next=0; } void serch(ptrn &e) { ptrn tem; tem=e; cout<<" 请输入姓名"<<endl; string ss; cin>>ss; while(tem!=0) { if(tem->name==ss) { cout<<std::left<<setw(10)<<"编号"<<std::right<<setw(6)<<"姓名"<<std::right<<setw(10)<<"性别"<<std::right<<setw(20)<<"电话"<<std::right<<setw(20)<<"地址"<<endl; cout<<std::left<<setw(10)<<tem->id<<std::right<<setw(6)<<tem->name<<std::right<<setw(10)<<tem->sex<<std::right<<setw(10)<<tem->tele<<std::right<<setw(20)<<tem->adre<<endl; } tem=tem->next; } cout<<"___________________________________________________________"<<endl; } void dele(ptrn &e) { ptrn tem; tem=e; cout<<" 请输入要删除人的姓名"<<endl; string nn; cin>>nn; while(tem!=0) { if(e->name==nn) { e=e->next;tem=e; } else { if(tem->next!=0&&tem->next->name==nn) { ptrn tee; tee=tem->next; tem->next=tee->next; delete tee;break; } else { tem=tem->next; } } } } void update(ptrn &e) { ptrn tem; tem=e; cout<<" 请输入所要更新人的姓名"<<endl; string nn; cin>>nn; while(tem!=0) { if(tem->name==nn) { cout<<" 请输入新的电话号码和新的地址"<<endl; cin>>tem->tele>>tem->adre;break; } else { tem=tem->next; } } } void main() { int count=0; ifstream if1("people.dat",ifstream::out|ifstream::app); while(!if1.eof()) { string stunum,stuname,math,english,computer; if1>>stunum>>stuname>>math>>english>>computer; count++; } if1.close(); if(count>2) { ptrn head,tem,newnode; string num,name,see,te,ad; ifstream inf("people.dat",ifstream::out|ifstream::app); head=0; int time=0; while(!inf.eof())//********************************************************* { if(time==0) { time=1; //跳过文件第一行 ptrn newnode1=new node; inf>>num>>name>>see>>te>>ad; continue; }//*********************************************************************** newnode=new node; inf>>num>>name>>see>>te>>ad; newnode->id=num;newnode->name=name; newnode->sex=see; newnode->tele=te; newnode->adre=ad; if(head==0) { head=newnode; tem=head; } else { tem->next=newnode; tem=newnode; } } if(head)tem->next=0; inf.close(); cout<<" | (1)添加联系人 |"<<endl; cout<<" | (2)删除联系人 |"<<endl; cout<<" | (3)更新联系人 |"<<endl; cout<<" | (4)查询联系人 |"<<endl; cout<<" | (5)显示所有联系人 |"<<endl; cout<<" | (6)退出 |"<<endl; cout<<"___________________________________________________________"<<endl; while(1) { cout<<" 请输入序号 "<<endl; int j; cin>>j; if(j==1) { ptrn head1; creatlist(head1); if(head) { tem->next=head1; ofstream ouf("people.dat"); ouf<<std::left<<setw(10)<<"编号"<<std::right<<setw(6)<<"姓名"<<std::right<<setw(10)<<"性别"<<std::right<<setw(20)<<"电话"<<std::right<<setw(20)<<"地址"<<endl; ptrn tem1; tem1=head; while(tem1!=0) { ouf<<std::left<<setw(10)<<tem1->id<<std::right<<setw(6)<<tem1->name<<std::right<<setw(10)<<tem1->sex<<std::right<<setw(20)<<tem1->tele<<std::right<<setw(20)<<tem1->adre<<endl; tem1=tem1->next; } ouf.close(); } cout<<"___________________________________________________________"<<endl; } else if(j==2) { while(1) { dele(head); cout<<" (1)继续删除"<<endl; cout<<" (2)结束删除"<<endl; cout<<" 请输入序号"<<endl; int n; cin>>n; if(n==1) continue; else break; } ofstream ouf1("people.dat"); ouf1<<std::left<<setw(10)<<"编号"<<std::right<<setw(6)<<"姓名"<<std::right<<setw(10)<<"性别"<<std::right<<setw(20)<<"电话"<<std::right<<setw(20)<<"地址"<<endl; ptrn tem1; tem1=head; while(tem1!=0) { ouf1<<std::left<<setw(10)<<tem1->id<<std::right<<setw(6)<<tem1->name<<std::right<<setw(10)<<tem1->sex<<std::right<<setw(20)<<tem1->tele<<std::right<<setw(20)<<tem1->adre<<endl; tem1=tem1->next; } ouf1.close(); cout<<"___________________________________________________________"<<endl; } else if(j==3) { while(1) { update(head); cout<<" (1)继续更新"<<endl; cout<<" (2)结束结束"<<endl; cout<<" 请输入序号"<<endl; int n; cin>>n; if(n==1) continue; else break; } ofstream ouf2("people.dat"); ouf2<<std::left<<setw(10)<<"编号"<<std::right<<setw(6)<<"姓名"<<std::right<<setw(10)<<"性别"<<std::right<<setw(20)<<"电话"<<std::right<<setw(20)<<"地址"<<endl; ptrn tem1; tem1=head; while(tem1!=0) { ouf2<<std::left<<setw(10)<<tem1->id<<std::right<<setw(6)<<tem1->name<<std::right<<setw(10)<<tem1->sex<<std::right<<setw(20)<<tem1->tele<<std::right<<setw(20)<<tem1->adre<<endl; tem1=tem1->next; } ouf2.close(); cout<<"___________________________________________________________"<<endl; } else if(j==4) { while(1) { serch(head); cout<<" | (1)继续查询 |"<<endl; cout<<" | (2)结束查询 |"<<endl; cout<<" | 请输入序号 |"<<endl; cout<<"______________________________________________________"<<endl; int n; cin>>n; if(n==1) continue; else break; } ofstream ouf3("people.dat"); ouf3<<std::left<<setw(10)<<"编号"<<std::right<<setw(6)<<"姓名"<<std::right<<setw(10)<<"性别"<<std::right<<setw(20)<<"电话"<<std::right<<setw(20)<<"地址"<<endl; ptrn tem1; tem1=head; while(tem1!=0) { ouf3<<std::left<<setw(10)<<tem1->id<<std::right<<setw(6)<<tem1->name<<std::right<<setw(10)<<tem1->sex<<std::right<<setw(20)<<tem1->tele<<std::right<<setw(20)<<tem1->adre<<endl; tem1=tem1->next; } ouf3.close(); cout<<"___________________________________________________________"<<endl; } else if(j==5) { ptrn tem1; tem1=head; cout<<std::left<<setw(10)<<"编号"<<std::right<<setw(6)<<"姓名"<<std::right<<setw(10)<<"性别"<<std::right<<setw(20)<<"电话"<<std::right<<setw(20)<<"地址"<<endl; while(tem1!=0) { cout<<std::left<<setw(10)<<tem1->id<<std::right<<setw(6)<<tem1->name<<std::right<<setw(10)<<tem1->sex<<std::right<<setw(20)<<tem1->tele<<std::right<<setw(20)<<tem1->adre<<endl; tem1=tem1->next; } cout<<"___________________________________________________________"<<endl; } else break; } } else { cout<<" | 通讯录为空 |"<<endl; cout<<" | (1)添加联系人 |"<<endl; cout<<" | (2)关闭通讯录 |"<<endl; cout<<" | 请输入序号 |"<<endl; cout<<"___________________________________________________________"<<endl; int m; cin>>m; ptrn head; if(m=1) { creatlist(head); ofstream ouf4("people.dat"); ouf4<<std::left<<setw(10)<<"编号"<<std::right<<setw(6)<<"姓名"<<std::right<<setw(10)<<"性别"<<std::right<<setw(20)<<"电话"<<std::right<<setw(20)<<"地址"<<endl; ptrn tem1; tem1=head; while(tem1!=0) { ouf4<<std::left<<setw(10)<<tem1->id<<std::right<<setw(6)<<tem1->name<<std::right<<setw(10)<<tem1->sex<<std::right<<setw(20)<<tem1->tele<<std::right<<setw(20)<<tem1->adre<<endl; tem1=tem1->next; } ouf4.close(); } } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性