前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数组版通讯录-C++

数组版通讯录-C++

作者头像
WindCoder
发布2018-09-19 18:22:58
9390
发布2018-09-19 18:22:58
举报
文章被收录于专栏:WindCoder
代码语言:javascript
复制
/*
功能:通讯录
日期: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;
		}
	}

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档