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

本文档介绍如何实现一个通讯录系统,能存储1000个人的详细信息,包括姓名、性别、年龄、电话和住址。通过结构体来存储联系人数据,提供添加、查找、删除和修改联系人的功能。添加联系人时采用直接传址方式,删除操作实际上将联系人信息设为NULL。此外,还包含了一个展示所有有效联系人的函数。

创建结构体

typedef struct address{
	char Name[10];
	int Sex;
	int Age;
	char Num[12];
	char Address[32];


}List;

 

 添加联系人代码  直接传址传参,只不过主函用的结构体数组

void addinfor(List *l){  //添加联系人
	//int s , age, num, add;
	printf("请输入用户姓名:");
	scanf("%s", l->Name);
	printf("\n请输入用户性别(1.男 , 2.女):");
	scanf("%d", &(l->Sex));
	printf("\n请输入用户年龄:");
	scanf("%d", &(l->Age));
	printf("\n请输入用户的电话号码:");
	scanf("%s", l->Num);
	printf("\n请输入用户的地址:");
	scanf("%s", l->Address);

}

寻找联系人,传入数组地址,循环遍历,当strcmp等于1时即为找到,返回1

int searchfor(List l,char *s){  //寻找函数,返回1
	if (strcmp(l.Name, s) == 0){
		return 1;
	}else{
		return 0;
	}

}

删除联系人,这里的删除联系人,是一个伪删除,把当前的联系人名设为NULL,最后show结构体时跳过联系人名为NULL的即可

void DelList(List *l){   //删除联系人,要删除的联系人姓名设置成NULL
	printf("输入你要删除的联系人:");
	char s[10];
	scanf("%s", s);
	for (int i = 0; i<2; i++){
		if (searchfor(l[i],s)){
			
			strcpy(l[i].Name, "NULL");
			printf("删除成功\n");
			return;
		}	
	}
	printf("查无此人\n");
}

show函数,跳过NULL的显示

void showlist(List l){  //show函数
	if (strcmp(l.Name ,"NULL")==0) {
		return;
	}
	printf("\n姓名:%s", l.Name);
	if (l.Sex == 1){
		printf("\n性别: 男");
	}
	else{
		printf("\n性别: 女");
	}
	printf("\n年龄:%d", l.Age);
	printf("\n电话号码:%s", l.Num);
	printf("\n地址:%s", l.Address);
}

修改联系人,套用search函数与添加的函数

void changeList(List *l){  //修改联系人
	printf("输入你要修改的联系人:");
	char s[10];
	scanf("%s", s);
	for (int i = 0; i < 10; i++){
		if (searchfor(l[i], s)){
			printf("\n请输入修改后的内容");
			addinfor(&(l[i]));
			break;
		}
	}
}

完整代码

#include<stdio.h>
#include<Windows.h>
#include<string.h>
#pragma warning(disable:4996)

typedef struct address{
	char Name[10];
	int Sex;
	int Age;
	char Num[12];
	char Address[32];


}List;

void addinfor(List *l){  //添加联系人
	//int s , age, num, add;
	printf("请输入用户姓名:");
	scanf("%s", l->Name);
	printf("\n请输入用户性别(1.男 , 2.女):");
	scanf("%d", &(l->Sex));
	printf("\n请输入用户年龄:");
	scanf("%d", &(l->Age));
	printf("\n请输入用户的电话号码:");
	scanf("%s", l->Num);
	printf("\n请输入用户的地址:");
	scanf("%s", l->Address);

}

void showlist(List l){  //show函数
	if (strcmp(l.Name ,"NULL")==0) {
		return;
	}
	printf("\n姓名:%s", l.Name);
	if (l.Sex == 1){
		printf("\n性别: 男");
	}
	else{
		printf("\n性别: 女");
	}
	printf("\n年龄:%d", l.Age);
	printf("\n电话号码:%s", l.Num);
	printf("\n地址:%s", l.Address);
}

int searchfor(List l,char *s){  //寻找函数,返回1
	if (strcmp(l.Name, s) == 0){
		return 1;
	}else{
		return 0;
	}

}

void changeList(List *l){  //修改联系人
	printf("输入你要修改的联系人:");
	char s[10];
	scanf("%s", s);
	for (int i = 0; i < 10; i++){
		if (searchfor(l[i], s)){
			printf("\n请输入修改后的内容");
			addinfor(&(l[i]));
			break;
		}
	}
}

void DelList(List *l){   //删除联系人,要删除的联系人姓名设置成NULL
	printf("输入你要删除的联系人:");
	char s[10];
	scanf("%s", s);
	for (int i = 0; i<2; i++){
		if (searchfor(l[i],s)){
			
			strcpy(l[i].Name, "NULL");
			printf("删除成功\n");
			return;
		}	
	}
	printf("查无此人\n");
}


int main(){
	List l[100];
	for (int i = 0; i < 2; i++){
		addinfor(&(l[i]));
	}
	//addinfor(&l); //添加信息
	printf("\n");
	DelList(l);
	for (int j = 0; j < 2; j++){
		showlist(l[j]); //show方法
	}

	FILE* log = fopen("log.txt", "wb");   //文件写入
	for (int i = 0; i < 2; i++){
		if (l[i].Name != "NULL"){
			fwrite(&l[i], sizeof(List), 1, log);
		}
	}
	fclose(log);

	log = fopen("log.txt", "rb");
	for (int i = 0; i < 2; i++){
		fread(&l[i], sizeof(List), 1, log); // 读1个结构
	}
	fclose(log);
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值