C语言实现通讯录—静态顺序表

实现一个通讯录; 

平台:VS2008,

通讯录可以用来存储1000个人的信息,每个人的信息包括: 

姓名、性别、年龄、电话、住址 

提供方法: 
1. 添加联系人信息 
2. 删除指定联系人信息 
3. 查找指定联系人信息 
4. 修改指定联系人信息 
5. 显示所有联系人信息 
6. 清空所有联系人 
7. 以名字排序所有联系人

//通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 
#include<stdio.h>
#include <string.h>
#pragma warning(disable:4996)
#define  N 20
typedef struct AddressBook{
	char _name[N];
	char _sex[2];
	int _age;
	char _number[20];
	char _adress[100];
}AB;
void AddPerson();//1、添加联系人信息 
void DeletePerson();//2、删除指定联系人信息
void FindPerson();//3、查找指定联系人信息
void ChangePerson();//4、修改指定联系人信息
void PrintfAllPerson();//5、显示所有联系人信息
void ClearAllPerson();//6、清空所有联系人
void SortPersonByName();//7、以名字排序所有联系人

void AddPerson(struct AddressBook * p,int& cnt){
	AB* pTemp = p;
	int  i=0;
	char name[N];
	char sex[2];
	int age;
	char number[20];
	char address[100];
	//for(i =0;i<cnt;i++){
	//	pTemp++;
	//}
	printf("Please enter name:");
	scanf("%s",name);
	strcpy(pTemp[cnt]._name,name);
	printf("Please enter sex:");
	scanf("%s",sex);
	strcpy(pTemp[cnt]._sex,sex);
	printf("Please enter age:");
	scanf("%d",&age);
	pTemp[cnt]._age = age;
	printf("Please enter number:");
	scanf("%s",&number);
	strcpy(pTemp[cnt]._number,number);
	printf("Please enter address:");
	scanf("%s",address);
	strcpy(pTemp[cnt]._adress,address);
	cnt++;
	printf("储存成功!\n");
}
void DeletePerson(AB* p,int& cnt){
	AB* pTemp = p;
	char ptempname[20];
	printf("请输入想要删除联系人的名字:\n");
	scanf("%s",ptempname);
	for(int i = 0;i<cnt;i++){
		if(strcmp(pTemp[i]._name,ptempname)==0){
			printf("这是第%d个联系人:\n",i+1);
			printf("姓名:%s\n",p[i]._name);
			printf("性别:%s\n",p[i]._sex);
			printf("年纪:%d\n",p[i]._age);
			printf("电话:%s\u",p[i]._number);
			printf("住址:%s\n",p[i]._adress);
		}
	}
	printf("请输入想要更改联系人的编号:\n");
	int number = 0;
	scanf("%d",&number);
	strcpy(p[number-1]._name,p[cnt-1]._name);
	strcpy(p[number-1]._sex,p[cnt-1]._sex);
	p[number-1]._age = p[cnt-1]._age;
	strcpy(p[number-1]._number,p[cnt-1]._number);
	strcpy(p[number-1]._adress,p[cnt-1]._adress);
	cnt--;
	printf("修改成功!");
}
void FindPerson(AB* p,int cnt){
	int flag = 0;
	AB* pTemp = p;
	char name[10];
	printf("请输入你想要查询联系人的名字:");
	scanf("%s",&name);
	for(int i = 0;i<=cnt;i++){
		if(strcmp(pTemp[i]._name,name)==0){
			flag = 1;
			printf("姓名:%s\n",p[i]._name);
			printf("性别:%s\n",p[i]._sex);
			printf("年纪:%d\n",p[i]._age);
			printf("电话:%s\n",p[i]._number);
			printf("住址:%s\n",p[i]._adress);
			}
		}
	if(flag == 0){
		printf("没有此联系人,请重新输入!\n");
	}
}
void ChangePerson(AB* p,int cnt){
	AB* pTemp = p;
	char name[10];
	printf("请输入你想修改联系人的名字:");
	scanf("%s",&name);
	for(int i = 0;i<=cnt;i++){
		if(strcmp(pTemp[i]._name,name)==0){
			printf("这是第%d个联系人:\n",i+1);
			printf("姓名:%s\n",p[i]._name);
			printf("性别:%s\n",p[i]._sex);
			printf("年纪:%d\n",p[i]._age);
			printf("电话:%s\n",p[i]._number);
			printf("住址:%s\n",p[i]._adress);
		}
	}
	int num;
	printf("请输入你要修改的联系人编号:");
	scanf("%d",&num);
	char name2[N];
	char sex[2];
	int age;
	char number[20];
	char address[100];
	printf("Please enter new name:");
	scanf("%s",name2);
	strcpy(pTemp[num-1]._name,name2);
	printf("Please enter new sex:");
	scanf("%s",sex);
	strcpy(pTemp[num-1]._sex,sex);
	printf("Please enter new age:");
	scanf("%d",&age);
	pTemp[num-1]._age = age;
	printf("Please enter new number:");
	scanf("%s",&number);
	strcpy(pTemp[num-1]._number,number);
	printf("Please enter new address:");
	scanf("%s",address);
	strcpy(pTemp[num-1]._adress,address);
	printf("修改成功!");
}
void PrintfAllPerson(AB* p,int cnt){
	AB* pTemp = p;
	int i = 0;
	if(cnt == 0){
		printf("空通讯录!\n");
		return;
	}
	for(i = 0;i<cnt;i++){
		printf("第%d个联系人:\n",i+1);
		printf("姓名:%s\n",pTemp[i]._name);
		printf("性别:%s\n",pTemp[i]._sex);
		printf("年纪:%d\n",pTemp[i]._age);
		printf("电话:%s\n",pTemp[i]._number);
		printf("住址:%s\n",pTemp[i]._adress);
	}
}
void ClearAllPerson(AB*& p,int& cnt){
	int i = 0;
	AB* pTemp = p;
	for(i = 0;i<cnt;i++){
		strcpy(p[i]._adress," ");
		p[i]._age = 0;
		strcpy(p[i]._name," ");
		strcpy(p[i]._number," ");
		strcpy(p[i]._sex," ");
	}
	printf("通讯录已清空!\n");
	cnt = 0;
}
void swap(char* a,char* p){
	char newname[N];
	strcpy(newname,a);
	strcpy(a,p);
	strcpy(p,newname);
}
void SortPersonByName(AB* p,int cnt){
	AB* pTemp = p;
	for(int i = 0;i<cnt;i++){
		for(int j = i;j<cnt;j++){
			if(strcmp(pTemp[i]._name,pTemp[j]._name)>=0){
				swap(pTemp[i]._name,pTemp[j]._name);
			}
		}
	}
		printf("排序成功!\n");
}
void GUI(){
	printf("***************************************************\n");
	printf("* 1、添加联系人            2、删除联系人          *\n");
	printf("* 3、查找联系人            4、修改联系人          *\n");
	printf("* 5、显示联系人            6、清空联系人          *\n");
	printf("* 7、排序联系人            0、退出                *\n");
	printf("***************************************************\n");
}
int main(){
	struct AddressBook s[1000];
	GUI();
	int select = 0;
	int cnt = 0;
	AB* pCur = s;
	while(select != EOF){
		printf("请输入您的选择:");
		scanf("%d",&select);
		switch(select){
		case 1:
			AddPerson(pCur,cnt);
			GUI();
			break;
		case 2:
			DeletePerson(pCur,cnt);
			break;
		case 3:
			FindPerson(pCur,cnt);
			GUI();
			break;
		case 4:
			ChangePerson(pCur,cnt);
			GUI();
			break;
		case 5:
			PrintfAllPerson(pCur,cnt);
			GUI();
			break;
		case 6:
			ClearAllPerson(pCur,cnt);
			GUI();
			break;
		case 7:
			SortPersonByName(pCur,cnt);
			GUI();
			break;
		case 0:
			printf("success exit!\n");
			return 0;		
		default:
			printf("Error input,please input the right number\n");
		}
	}
	return 0;
}

Tip:在代码编辑的时候我建立的是.cpp文件,因为在代码部分有些变量是在用的时候临时定义,所以,如果建立的是.c文件,则需要把每一个函数中的临时变量放在调用之前进行定义。

限于编者水平,本代码有很多不足。

欢迎吐槽,如果有不明白的地方,也可以私信我,我会一一解答。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值