通讯录 C语言

本文详细介绍了一个基于C++的通讯录系统的设计与实现过程,包括联系人的添加、显示、查询及修改等功能,通过具体代码展示了如何利用类和对象进行信息管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<fstream>
#include<string.h>
#define N 1000                                                                           //通讯录联系人存储最大值 
using namespace std;
static int number=0;                                            
class Addressbook
{
	char nam[15];                                                                        //联系人姓名 
	char tel[15];                                                                        //联系人电话 
	char add[50];                                                                        //联系人住址 
	int p;                                                                               //联系人邮政编码 
	public:
		char *getnam();                                                                  //录入联系人姓名 
		char *gettel();                                                                  //录入联系人电话 
		char *getadd();                                                                  //录入联系人住址 
		int getp();                                                                      //录入联系人邮政编码 
		void show();                                                                     //输出信息 
		void input();                                                                    //录入联系人信息 
		void reinput();                                                                  //重新录入lianxiren信息 
		void alter();                                                                    //改变信息 
		static int getnumber();	
 };
 char *Addressbook::getnam()                                                             //定义录入联系人姓名的函数 
 {
 	return nam;
 }
 char *Addressbook::gettel()                                                             //定义录入联系人电话的函数 
 {
 	return tel;
 }
 char *Addressbook::getadd()                                                             //定义录入联系人住址的函数 
 {
 	return add;
 }
 int Addressbook::getp()                                                                 //定义录入联系人邮编的函数 
 {
 	return p;
 }
 int Addressbook::getnumber()                                                                
 {
 	return number;
  } 
 void Addressbook::show()                                                                //类外定义显示联系人信息的函数 
 {
 	cout<<"联系人姓名:"<<nam<<endl;
 	cout<<endl;
 	cout<<"联系人电话:"<<tel<<endl;
 	cout<<endl;
 	cout<<"联系人住址:"<<add<<endl;
 	cout<<endl;
 	cout<<"联系人邮编:"<<p<<endl;
 	cout<<endl;
 }
 void Addressbook::input()                                                                //类外定义键盘输入联系人信息的函数 
 {
 	char na[25],te[15],ad[25];
	int n;
	cout<<"输入联系人姓名:";
	cin>>na;
	strcpy(nam,na);
	cout<<endl;
	cout<<"输入联系人电话号码:";
	cin>>te;
	strcpy(tel,te);
	cout<<endl;
	cout<<"输入联系人住址:";
	cin>>ad;
	strcpy(add,ad);
	cout<<endl;
	cout<<"联系人邮政编码:";
	cin>>n;
	p=n;
	number++;
 }
 void Addressbook::reinput()                                                                          //类外定义重新输入联系人信息 
 {
 	char te[15],ad[25];int n;
 	cout<<"输入联系人电话号码:";
	cin>>te;
	strcpy(tel,te);
	cout<<endl;
	cout<<"输入联系人住址:";
	cin>>ad;
	strcpy(add,ad);
	cout<<endl;
	cout<<"联系人邮政编码:";
	cin>>n;
	p=n;
	number++;
 }
 void Addressbook::alter()                                                                 //类外定义修改联系人信息的函数
 {  
 	int i;
 	do
	{
	 strcpy(nam,(this+1)->nam);
 	 strcpy(tel,(this+1)->tel);
 	 strcpy(add,(this+1)->add);
 	 p=(this+1)->p;
 	 cout<<"请重新输入联系人信息:"<<endl; 
 	 reinput();
 	 cout<<"返回菜单页面请按0";
	 cin>>i;
	 system("cls");
    }
    while(i);
 }
 void inputl(Addressbook *a)                                                                //类外定义添加联系人信息的函数               
 {
 	int i;
	do
	{
		if(Addressbook::getnumber()==N)
		cout<<"人数已满,无法录入"<<endl;
		a[number].input();
		cout<<"继续录入请按1,否则请按0"<<endl;
		cin>>i;
		system("cls");
	}
	while(i);
 }
 void outputl(Addressbook *a)                                                                //类外定义显示所有联系人信息的函数 
 {
 	int i;
 	do
 	{
 	  cout<<"联系人总数:"<<number<<endl;
 	  for(i=0;i<number;i++)
	    {
	    	cout<<i+1<<".";
		    a[i].show();
		    system("pause");
		    system("cls");
		}
	  cout<<"返回菜单页面请按0"<<endl;
	  cin>>i;
	  system("cls");
    }
    while(i);
 }
 int seek(Addressbook *a,char *na)                                                           //定义按姓名查找联系人信息的函数 
 {
 	int i,j;
	for(i=0;i<N;i++)
 	{
 		if(strcmp(a[i].getnam(),na)==0)
		{j=i;
 		 break;
		}
	};

	return j;
 }
 int seek0(Addressbook *t,char *te)                                                         //定义按电话查找联系人信息的函数
 {
	 int i,j;
	 for(i=0;i<N;i++)
	 {
		 if(strcmp(t[i].gettel(),te)==0)
		 {  j=i;
		    break;
		 }
	 };

	   return j;
 }
 void creatfile(Addressbook *a,char *b)                                                     //定义存储联系人信息的函数 
 {
 	ofstream outfile(b);
 	if(!outfile)
 	cout<<"文件打开错误!"<<endl;
	for(int i=0;i<number;i++)
	{
	   outfile<<"姓名:"<<a[i].getnam()<<endl;
	   outfile<<"联系人电话:"<<a[i].gettel()<<endl;
	   outfile<<"联系人住址:"<<a[i].getadd()<<endl;
	   outfile<<"联系人邮编:"<<a[i].getp()<<endl;
    }
    outfile.close();
 }
 int main()
 {
 	Addressbook addressbook[N];
 	int i;
 	do                                                                                     //读入菜单栏选项 
 	{
 		cout<<"========================欢迎使用通讯录管理系统==============================="<<endl;
		cout<<"                        1.添加联系人信息                                     "<<endl;
		cout<<"                        2.显示所有联系人信息                                 "<<endl;
		cout<<"                        3.按姓名查询联系人信息                               "<<endl;
		cout<<"                        4.按电话查询联系人信息                               "<<endl;
		cout<<"                        5.更改联系人信息                                     "<<endl;
		cout<<"                        0.退出通讯录管理系统         (选择好序号后请按回车键)"<<endl;
		cin>>i;
		switch(i)                                                                          //执行选项功能 
		{
			case 1:
				system("cls");
			    inputl(addressbook);
			    
			    break;
			case 2:
				system("cls");
			    outputl(addressbook);
			    break;
			case 3:
				system("cls");
				cout<<endl;
				cout<<"输入要查询的联系人姓名";
				char na[25];
				int r;
				cin>>na;
				r=seek(addressbook,na);
				addressbook[r].show();
				cout<<"返回菜单页请按0"<<endl;
				cin>>r;
				if(!r)
				  system("cls"); 
				break;
			case 4:
                system("cls");
				cout<<endl;
				cout<<"输入要查询的联系人电话";
				char te[15];
				int u;
				cin>>te;
				u=seek0(addressbook,te);
				addressbook[u].show();
				cout<<"返回菜单页请按0"<<endl;
				cin>>u;
				if(!u)
				  system("cls"); 
			case 5:
				system("cls");
				cout<<endl;
				cout<<"请输入要更改信息的联系人姓名:"<<endl;
				cin>>na;
				u=seek(addressbook,na);
				addressbook[u].alter();
				break;
		 } 
	 }
	 while(i);
	 creatfile(addressbook,"通讯录.txt");
	 return 0;
 }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值