/*
功能:通讯录
日期:2013-09-23
*/
#include <iostream>
#include <string.h>
using namespace std;
typedef struct Address
{
char name[30];
int number;
}Address;
void viewMenu();
void Menu();
int insertStudentNode(Address *peop,int n,int m);
void printLinkList(Address *p,int n);
void findAndName(Address *p,char *q,int n);
void findAndTele(Address *p,int n,int m);
void editAndName(Address *p,char *q,int n);
void editAndTele(Address *p,int n,int m);
int main(void)
{
char chiose,ch,nAme[30];
int n=10,i=0,num;
Address *peop = new Address[i] ;
do
{
viewMenu();
cin >> chiose;
switch(chiose)
{
case 'A':
cout <<"请输入联系人个数:"<<endl;
cin>>n;
i +=n;
insertStudentNode(peop,n,i);
break;
fflush(stdin);
case 'F':
{
Menu();
cin>>ch;
switch(ch)
{
case 'N':
cout <<"请输入要查的姓名:"<<endl;
cin>>nAme;
findAndName(peop,nAme,i);
break;
case 'T':
cout <<"请输入要查的电话:"<<endl;
cin>>num;
findAndTele(peop,num,i);
break;
case'Q':
break;
fflush(stdin);
}
}
case 'M':
{
Menu();
cin>>ch;
switch(ch)
{
case 'N':
cout <<"请输入要查的姓名::"<<endl;
cin>>nAme;
editAndName(peop,nAme,i);
break;
case 'T':
cout <<"请输入要查的电话:"<<endl;
cin>>num;
editAndTele(peop,num,i);
break;
case'Q':
break;
fflush(stdin);
}
}
case 'P':
printLinkList(peop,i);
break;
case 'Q':
break;
default:
break;
}
fflush(stdin);
}while('Q'!=chiose);
delete[] peop;
system("pause");
return 0;
}
/************************************************************************
函数名:viewMenu()
功能:显示菜单--提示用户选择哪种操作
参数:无
返回值:无
************************************************************************/
void viewMenu()
{
cout<<" 欢迎使用通讯录系统 "<<endl;
cout<<"-----------------------------------------------------"<<endl;
cout<<" 添加请按:A 修改请按:Mn"<<endl;
cout<<" 查询请按:F 浏览请按:P n"<<endl;
cout<<" 退出请按:Q n" <<endl;
cout<<"-----------------------------------------------------"<<endl;
cout<<" 请选择您的操作:"<<endl;
}
/************************************************************************
函数名:Menu()
功能:显示内部菜单--提示用户选择哪种操作
参数:无
返回值:无
************************************************************************/
void Menu()
{
cout<<" 欢迎使用通讯录系统 "<<endl;
cout<<"-----------------------------------------------------"<<endl;
cout<<" 按姓名:N 按电话:Tn"<<endl;
cout<<" 退出请按:Q n" <<endl;
cout<<"-----------------------------------------------------"<<endl;
cout<<" 请选择您的操作:"<<endl;
}
/************************************************************************
函数名:insertStudentNode(StudentNode *aHead)
功能:插入成绩
参数:Address *peop 首地址
int n 输入的个数
int m 总个数
返回值:0。
************************************************************************/
int insertStudentNode(Address *peop,int n,int m)
{
int i;
cout <<"请输入联系人姓名及电话:"<<endl;
if (n==m)
{
for (i=0;i<n;i++)
{
cin >>peop[i].name;
cin >>peop[i].number;
}
}
else
{
for (i=m-n;i<m;i++)
{
cin >>peop[i].name;
cin >>peop[i].number;
}
}
return 0;
}
/************************************************************************
函数名:printLinkList
功能:输出所有信息
参数:Address *p 首地址
int m 总数
返回值:无
************************************************************************/
void printLinkList(Address *p,int m)
{
int i;
for (i=0;i<m;i++)
{
cout<<p[i].name<<" "<<p[i].number<<endl;
}
}
/************************************************************************
函数名:findAndName
功能:按姓名查询
参数:Address *p 首地址
char *q 要查的姓名
int n 总数
返回值:0
************************************************************************/
void findAndName(Address *p,char *q,int n)
{
int i=0;
for (i=0;i<n;i++)
{
if (strcmp(q,p[i].name)==0)
{
cout<<"找到了!姓名及电话为:"<<endl;
cout<<p[i].name<<" "<<p[i].number<<endl;
}
}
}
/************************************************************************
函数名:findAndTele
功能:按电话查询
参数:Address *p 首地址
int n 要查的电话
int m 总个数
返回值:0
************************************************************************/
void findAndTele(Address *p,int n,int m)
{
int i=0;
for (i=0;i<n;i++)
{
if (n==p[i].number)
{
cout<<"找到了!姓名及电话为:"<<endl;
cout<<p[i].name<<" "<<p[i].number<<endl;
}
}
}
/************************************************************************
函数名:editAndName
功能:按姓名修改
参数:Address *p 首地址
char *q 要修改的姓名
int n 总数
返回值:0
************************************************************************/
void editAndName(Address *p,char *q,int n)
{
int i=0;
for (i=0;i<n;i++)
{
if (strcmp(q,p[i].name)==0)
{
cout<<"请输入新数据,姓名及电话为:"<<endl;
cin>>p[i].name;
cin>>p[i].number;
}
}
}
/************************************************************************
函数名:editAndTele
功能:按电话修改
参数:Address *p 首地址
int n 要修改的电话
int m 总个数
返回值:0
************************************************************************/
void editAndTele(Address *p,int n,int m)
{
int i=0;
for (i=0;i<n;i++)
{
if (n==p[i].number)
{
cout<<"请输入新数据,姓名及电话为:"<<endl;
cin>>p[i].name;
cin>>p[i].number;
}
}
}