通讯录 C语言

#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;
 }


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您解答关于通讯录C语言程序设计代码的问题。根据您提供的引用内容,以下是一个通讯录C语言程序设计的简单示例: 首先,创建三个文件:text.c(实现测试的逻辑),contact.c(函数实现),contact.h(函数声明)。 在contact.h文件中,我们可以声明一些函数原型和结构体,例如: ```c #ifndef CONTACT_H #define CONTACT_H #define MAX_NAME_LENGTH 50 #define MAX_PHONE_LENGTH 20 typedef struct { char name[MAX_NAME_LENGTH]; char phone[MAX_PHONE_LENGTH]; } Contact; void addContact(Contact* contacts, int* count); void displayContacts(Contact* contacts, int count); void searchContact(Contact* contacts, int count, char* name); void deleteContact(Contact* contacts, int* count, char* name); #endif ``` 在contact.c文件中,我们可以实现这些函数,例如: ```c #include <stdio.h> #include <string.h> #include "contact.h" void addContact(Contact* contacts, int* count) { if (*count >= MAX_CONTACTS) { printf("通讯录已满,无法添加新联系人。\n"); return; } Contact newContact; printf("请输入联系人姓名:"); scanf("%s", newContact.name); printf("请输入联系人电话:"); scanf("%s", newContact.phone); contacts[*count] = newContact; (*count)++; printf("联系人添加成功。\n"); } void displayContacts(Contact* contacts, int count) { if (count == 0) { printf("通讯录为空。\n"); return; } printf("通讯录中的联系人:\n"); for (int i = 0; i < count; i++) { printf("姓名:%s,电话:%s\n", contacts[i].name, contacts[i].phone); } } void searchContact(Contact* contacts, int count, char* name) { for (int i = 0; i < count; i++) { if (strcmp(contacts[i].name, name) == 0) { printf("联系人找到:姓名:%s,电话:%s\n", contacts[i].name, contacts[i].phone); return; } } printf("未找到该联系人。\n"); } void deleteContact(Contact* contacts, int* count, char* name) { int found = 0; for (int i = 0; i < *count; i++) { if (strcmp(contacts[i].name, name) == 0) { found = 1; for (int j = i; j < *count - 1; j++) { contacts[j] = contacts[j + 1]; } (*count)--; printf("联系人删除成功。\n"); break; } } if (!found) { printf("未找到该联系人。\n"); } } ``` 在text.c文件中,我们可以编写测试逻辑,例如: ```c #include <stdio.h> #include "contact.h" int main() { Contact contacts[MAX_CONTACTS]; int count = 0; int choice; char name[MAX_NAME_LENGTH]; do { printf("\n通讯录操作菜单:\n"); printf("1. 添加联系人\n"); printf("2. 显示所有联系人\n"); printf("3. 查找联系人\n"); printf("4. 删除联系人\n"); printf("0. 退出\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: addContact(contacts, &count); break; case 2: displayContacts(contacts, count); break; case 3: printf("请输入要查找的联系人姓名:"); scanf("%s", name); searchContact(contacts, count, name); break; case 4: printf("请输入要删除的联系人姓名:"); scanf("%s", name); deleteContact(contacts, &count, name); break; case 0: printf("程序已退出。\n"); break; default: printf("无效的选择。\n"); break; } } while (choice != 0); return 0; } ``` 这是一个简单的通讯录C语言程序设计示例,其中包含了添加联系人、显示所有联系人、查找联系人和删除联系人等功能。您可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值