您的位置:首页 > 编程语言 > C语言/C++

通讯录系统

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++ 通讯录系统