实现一个通讯录,可以用来存储1000个人的信息,每个人的信息包括:姓名,年龄,性别,电话,住址

实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址

提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息

5. 显示所有联系人信息
6. 清空所有联系人

#include"contact.h"


int add_contact(pContact pcon)
{
    if(pcon->count_user ==MAX)
	{
		printf("通讯录已满!");
		return -1;
	}
	else
	{
	printf("请输入名字:");
	scanf("%s",pcon->people[pcon->count_user].name );
    printf("请输入性别:");
	scanf("%s",pcon->people[pcon->count_user].sex);
    printf("请输入年龄:");
	scanf("%d",&pcon->people[pcon->count_user].age);
    printf("请输入电话:");
	scanf("%s",pcon->people[pcon->count_user].tel);
    printf("请输入地址:");
	scanf("%s",pcon->people[pcon->count_user].add );
	pcon->count_user++;
    }
	return 0;
    
}
int del_contact(pContact pcon)
{
	int i=0;
	 int rel=search_contact(pcon);
		 if(rel!=-1)
		 {
	         for(i=rel;i<pcon->count_user-1;i++)
			 {
				 pcon->people[i] =pcon->people [i+1];
			 }
             pcon->count_user--;
		     return 1;
		 }
		 else
		 {
		     printf("不存在!");
		     return -1;
		 }
}
int  search_contact(pContact pcon)
{
	int i;
    char name[NAME_LIGHT];
	printf("请输入要查找的名字:");
	scanf("%s",name);

	for(i=0;i<pcon->count_user;i++)
	{
		if(strcmp(pcon->people[i].name ,name)==0)
		{
          printf("\tname\tsex\tage\ttel\tadd\n");
           printf("%10s",pcon->people[i].name );
	       printf("%5s",pcon->people[i].sex);
	       printf("%10d",pcon->people[i].age );
	       printf("%10s",pcon->people[i].tel );
	       printf("%10s\n",pcon->people[i].add );
			return 1;
		}
	}

    return -1;
}

int modify_contact(pContact pcon)
{
    int rel=search_contact(pcon);
	if(rel!=-1)
	{
	    printf("请输入姓名:");
		scanf("%s",pcon->people[pcon->count_user ].name);
		printf("请输入性别:");
		scanf("%s",pcon->people[pcon->count_user].sex );
		printf("请输入年龄:");
		scanf("%d",&pcon->people[pcon->count_user].age);
		printf("请输入电话:");
		scanf("%s",pcon->people[pcon->count_user ].tel );
		printf("请输入地址:");
		scanf("%s",pcon->people[pcon->count_user ].add );
        return 1;
	}
	else
	{
	printf("输入错误!");
	return -1;

	}
}

int show_contact(pContact pcon)
{
   int i;
   printf("\tname\tsex\tage\ttel\tadd\n");
   for(i=0;i< pcon->count_user;i++)
   {
       printf("%10s",pcon->people[i].name );
	   printf("%5s",pcon->people[i].sex);
	   printf("%10d",pcon->people[i].age );
	   printf("%10s",pcon->people[i].tel );
	   printf("%10s\n",pcon->people[i].add );
	   
   }

   printf("\n");
   return 0;
}

int clear_contact(pContact pcon)
{
     pcon->count_user =0;
	 return 1;

}
#ifndef CONTACT_H
#define CONTACT_H

#endif

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define NAME_LIGHT 10
#define SEX_LIGHT   4
#define TEL_LIGHT  20
#define ADD_LIGHT  30
#define MAX 1000

struct peopleInfo
{
       char name[NAME_LIGHT];
	   char sex[SEX_LIGHT];
	   int  age;
	   char tel[TEL_LIGHT];
	   char add[ADD_LIGHT];

};
 struct contact 
 {
       struct peopleInfo people[MAX];
	   int count_user;
 };
typedef struct contact  *pContact;

int add_contact(pContact pcon);
int del_contact(pContact pcon);
int search_contact(pContact pcon);
int modify_contact(pContact pcon);
int show_contact(pContact pcon);
int clear_contact(pContact pcon);
#include"contact.h"
int main()
{
    int n;
	struct contact people;
    people.count_user=0;
	printf("请输入一个数:");
	scanf("%d",&n);
	switch(n)
	{
	case 1:
		add_contact(&people);
		break;
	case 2:
		del_contact(&people);
		break;
	case 3:
		search_contact(&people);
		break;
	case 4:
		clear_contact(&people);
		break;
	case 5:
		modify_contact(&people);
		break;
	case 6:
		show_contact(&people);
		break;
	default:
		printf("输入错误!");
		break;
	}
   
	return 0;

}




好的,这是一个比较具体的问题,我可以为您提供一个大体的思路代码框架。 1. 定义联系结构体 联系结构体包括姓名性别年龄电话号码、住址信息。 ``` struct Contact { char name[20]; char sex[5]; int age; char phone[20]; char address[50]; }; ``` 2. 定义通讯录结构体 通讯录结构体包括联系数组、联系个数等信息。 ``` struct AddressBook { struct Contact contacts[100]; int count; }; ``` 3. 实现增加联系功能 增加联系功能包括输入联系信息将联系信息存入通讯录数组中。 ``` void addContact(struct AddressBook *book) { printf("请输入姓名:"); scanf("%s", book->contacts[book->count].name); printf("请输入性别:"); scanf("%s", book->contacts[book->count].sex); printf("请输入年龄:"); scanf("%d", &book->contacts[book->count].age); printf("请输入电话号码:"); scanf("%s", book->contacts[book->count].phone); printf("请输入住址:"); scanf("%s", book->contacts[book->count].address); book->count++; printf("联系已添加!\n"); } ``` 4. 实现删除联系功能 删除联系功能需要输入要删除的联系姓名,然后在通讯录数组中查找并删除该联系。 ``` void deleteContact(struct AddressBook *book) { char name[20]; printf("请输入要删除的联系姓名:"); scanf("%s", name); int i; for (i = 0; i < book->count; i++) { if (strcmp(name, book->contacts[i].name) == 0) { int j; for (j = i; j < book->count - 1; j++) { book->contacts[j] = book->contacts[j + 1]; } book->count--; printf("联系已删除!\n"); return; } } printf("未找到该联系!\n"); } ``` 5. 实现查找联系功能 查找联系功能需要输入要查找的联系姓名,然后在通讯录数组中查找并输出该联系信息。 ``` void findContact(struct AddressBook *book) { char name[20]; printf("请输入要查找的联系姓名:"); scanf("%s", name); int i; for (i = 0; i < book->count; i++) { if (strcmp(name, book->contacts[i].name) == 0) { printf("姓名:%s\n", book->contacts[i].name); printf("性别:%s\n", book->contacts[i].sex); printf("年龄:%d\n", book->contacts[i].age); printf("电话号码:%s\n", book->contacts[i].phone); printf("住址:%s\n", book->contacts[i].address); return; } } printf("未找到该联系!\n"); } ``` 6. 实现修改联系信息功能 修改联系信息功能需要输入要修改的联系姓名,然后在通讯录数组中查找并修改该联系信息。 ``` void modifyContact(struct AddressBook *book) { char name[20]; printf("请输入要修改的联系姓名:"); scanf("%s", name); int i; for (i = 0; i < book->count; i++) { if (strcmp(name, book->contacts[i].name) == 0) { printf("请输入新的姓名:"); scanf("%s", book->contacts[i].name); printf("请输入新的性别:"); scanf("%s", book->contacts[i].sex); printf("请输入新的年龄:"); scanf("%d", &book->contacts[i].age); printf("请输入新的电话号码:"); scanf("%s", book->contacts[i].phone); printf("请输入新的住址:"); scanf("%s", book->contacts[i].address); printf("联系信息已修改!\n"); return; } } printf("未找到该联系!\n"); } ``` 7. 实现排序功能 排序功能可以按照联系姓名年龄进行排序。 ``` void sortContact(struct AddressBook *book) { int choice; printf("请选择排序方式(1.按姓名排序 2.按年龄排序):"); scanf("%d", &choice); int i, j; struct Contact temp; if (choice == 1) { for (i = 0; i < book->count - 1; i++) { for (j = 0; j < book->count - 1 - i; j++) { if (strcmp(book->contacts[j].name, book->contacts[j + 1].name) > 0) { temp = book->contacts[j]; book->contacts[j] = book->contacts[j + 1]; book->contacts[j + 1] = temp; } } } } else if (choice == 2) { for (i = 0; i < book->count - 1; i++) { for (j = 0; j < book->count - 1 - i; j++) { if (book->contacts[j].age > book->contacts[j + 1].age) { temp = book->contacts[j]; book->contacts[j] = book->contacts[j + 1]; book->contacts[j + 1] = temp; } } } } else { printf("无效的选择!\n"); return; } printf("通讯录已按照您的要求排序!\n"); } ``` 8. 实现打印通讯录功能 打印通讯录功能可以输出通讯录每个联系信息。 ``` void printContact(struct AddressBook *book) { int i; for (i = 0; i < book->count; i++) { printf("姓名:%s\n", book->contacts[i].name); printf("性别:%s\n", book->contacts[i].sex); printf("年龄:%d\n", book->contacts[i].age); printf("电话号码:%s\n", book->contacts[i].phone); printf("住址:%s\n", book->contacts[i].address); printf("\n"); } } ``` 以上就是一个简单的用 C 语言实现通讯录功能的代码框架。需要注意的是,这只是一个基础的实现,还有很多细节问题需要考虑,比如输入格式的判断、防止数组越界等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值