实现一个通讯录;
平台: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文件,则需要把每一个函数中的临时变量放在调用之前进行定义。
限于编者水平,本代码有很多不足。
欢迎吐槽,如果有不明白的地方,也可以私信我,我会一一解答。