实现一个通讯录:
通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名,性别,年龄,电话,地址。
功能:
1.添加联系人信息
2.删除指定联系人的信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人的信息
6.清空所有联系人
7.以名字排序所有联系人
contact.h文件
#ifndef __CONTACT_H_
#define __CONTACT_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#define Max_people 1000
#define Max_name 20
#define Max_sex 5
#define Max_tele 20
#define Max_adss 20
typedef struct people
{
char name[Max_name]; //联系人姓名
char sex[Max_sex]; //联系人性别
int age; //联系人年龄
char tele[Max_tele]; //联系人电话
char adss[Max_adss]; //联系人地址
}people;
typedef struct contact
{
int count;
people list[Max_people];
}contact,*pCon;
void Initboard(pCon p); //初始化结构体数组
void Add(pCon p); //添加联系人
void show(pCon p); //显示所有联系人
void Del(pCon p); //删除指定联系人
void Modify(pCon p); //修改指定联系人
void Find(pCon p); //查找指定联系人
void Clear(pCon p); //清空所有联系人
void sort(pCon p); //按名字排序所有联系人
#endif
contact.c文件
#define _CRT_SECURE_NO_WARNINGS 1
#include "contacts.h"
int search(pCon p, char* tele) //查找
{
int i = 0;
for (i = 0; i < p->count; i++)
{
if (strcmp(tele, p->list[i].tele) == 0)
{
return i;
}
}
return -1;
}
void Initboard(pCon p) //初始化结构体数组
{
assert(p);
memset(p->list, 0, sizeof(p->list));
p->count = 0;
}
void Add(pCon p) //添加联系人
{
if ((p -> count) == (Max_people))
{
printf("通讯录已满,无法继续添加.\n");
return;
}
printf("请输入姓名:");
scanf("%s", &p->list[p->count].name);
printf("请输入性别:");
scanf("%s", &p->list[p->count].sex);
printf("请输入年龄:");
scanf("%d", &p->list[p->count].age);
printf("请输入电话号码:");
scanf("%s", &p->list[p->count].tele);
printf("请输入地址:");
scanf("%s", &p->list[p->count].adss);
p->count++;
}
void show(pCon p) //显示所有联系人
{
int i = 0;
printf("\t姓名\t性别\t年龄\t号码\t\t地址\n");
for (i = 0; i < p->count; i++)
{
printf("\t%s\t%s\t%d\t%s\t%s\n",
p->list[i].name,
p->list[i].sex,
p->list[i].age,
p->list[i].tele,
p->list[i].adss);
}
}
void Del(pCon p) //删除指定联系人
{
char tele[Max_tele];
printf("请输入您要删除的指定联系人的电话号码:");
scanf("%s", tele);
int i = 0;
i = search(p , tele);
if (i == -1)
{
printf("通讯录中没有此联系人。\n");
}
else
{
for (; i < p->count - 1; i++)
{
p->list[i]= p->list[i + 1];
}
p->count--;
}
}
void Modify(pCon p) //修改指定联系人
{
int i = 0;
char tele[Max_tele];
printf("请输入你要修改的联系人电话:");
scanf("%s", &tele);
i = search(p, tele);
printf("请输入需要修改的姓名:");
scanf("%s", p->list[i].name);
printf("请输入需要修改的性别");
scanf("%s", p->list[i].sex);
printf("请输入需要修改的年龄:");
scanf("%d", &p->list[i].age);
printf("请输入需要修改的号码:");
scanf("%s", p->list[i].tele);
printf("请输入需要修改的地址:");
scanf("%s", p->list[i].adss);
}
void Find(pCon p) //查找指定联系人
{
char tele[Max_tele];
printf("请输入需要查询的电话号码:");
scanf("%s", &tele);
int i = 0;
i=search(p, tele);
if (i == -1)
{
printf("通讯录中没有此人.\n");
}
else
{
printf("\t姓名\t性别\t年龄\t号码\t地址\n");
printf("\t%s\t%s\t%d\t%s\t%s\n", p->list[i].name, p->list[i].sex,p->list[i].age, p->list[i].tele, p->list[i].adss);
}
}
void Clear(pCon p) //清空所有联系人
{
p->count = 0;
printf("删除成功\n");
}
void sort(pCon p) //以名字排序所有联系人
{
int i = 0;
int j = 0;
people tmp;
for (i = 0; i < p->count - 1; i++)
{
for (j = 0; j < p->count -1 - i; j++)
{
if (strcmp(p->list[j].name, p->list[j + 1].name) > 0)
{
tmp = p->list[j];
p->list[j] = p->list[j + 1];
p->list[j + 1] = tmp;
}
}
}
printf("排序完成\n");
}
test.c文件
#define _CRT_SECURE_NO_WARNINGS 1
#include "contacts.h"
void menu()
{
printf("*******************************************\n");
printf("*** 1.Add contact 2.Delete contact ***\n");
printf("*** 3.Find contact 4.Modify contact ***\n");
printf("*** 5.Show contact 6.Clear contact ***\n");
printf("*** 7.Sorting contact 0.Delete contact **\n");
printf("*******************************************\n");
}
int main()
{
contact con ;
int input = 0;
con.count = 0;
Initboard(&con);
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
Add(&con);
break;
case 2:
Del(&con);
break;
case 3:
Find(&con);
break;
case 4:
Modify(&con);
break;
case 5:
show(&con);
break;
case 6:
Clear(&con);
break;
case 7:
sort(&con);
break;
case 0:
return 0;
default:
printf("输入错误,请重新输入:\n");
}
} while (input);
system("pause");
return 0;
}