功能
- 增加联系人
- 删除联系人
- 修改联系人
- 查找联系人
- 打印全部联系人
- 按姓名排序
- 清空所有联系人
注意
- 使用结构体表示信息,姓名存放与编码方式有关可以strlen一下汉字字符串查看
- 使用结构体存电话本;六度空间理论;表示有多少个元素是有效的;
- 更多注意看代码注释
头文件
#ifndef __CONTACT_H__
#define __CONTACT_H__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NAMELONGTH 1024
#define TELELONGTH 1024
#define BOOKSIZE 200
typedef struct PersonInfr
{
char name[NAMELONGTH];
char tele[TELELONGTH];
}PersonInfr;
typedef struct PhoneBook
{
PersonInfr Book[BOOKSIZE];
unsigned int Size;
}PhoneBook;
typedef void(*fun)(PhoneBook*);
int menu();
void PrintAll(PhoneBook* PhoneBook);
void CleanAll(PhoneBook* PhoneBook);
void InitBook(PhoneBook* PhoneBook);
void AddContact(PhoneBook* PhoneBook);
void FindContact(PhoneBook* PhoneBook);
void SortbyName(PhoneBook* PhoneBook);
void DeletContact(PhoneBook* PhoneBook);
void ChangeContact(PhoneBook* PhoneBook);
#endif
Contact.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"Contact.h"
int menu()
{
int input = 0;
printf("\n");
printf("***1,增加联系人***\n");
printf("***2,删除联系人***\n");
printf("***3,修改联系人***\n");
printf("***4,查找联系人***\n");
printf("***5,打印全部人***\n");
printf("***6,按姓名排序***\n");
printf("***7,清空联系人***\n");
printf("***0,退出**********\n\n");
while (1)
{
printf("请输入你的选择\n");
scanf("%d", &input);
if (input < 8 && input >= 0)
return input;
else
printf("输入非法,重新输入!\n");
}
}
void InitBook(PhoneBook* PhoneBook)
{
PhoneBook->Size = 0;
memset(PhoneBook->Book, 0, sizeof(PhoneBook->Book));
}
static int FindTarget(PhoneBook* PhoneBook, char*target)
{
for (int i = 0; i < PhoneBook->Size; i++)
{
if (!(strcmp(PhoneBook->Book[i].name, target)))
{
return i;
}
}
return -1;
}
void AddContact( PhoneBook* PhoneBook)
{
printf("请输入你要添加的联系人\n");
printf("姓名:\n");
scanf("%s", PhoneBook->Book[PhoneBook->Size].name);
printf("电话:\n");
scanf("%s", PhoneBook->Book[PhoneBook->Size].tele);
PhoneBook->Size++;
}
void DeletContact(PhoneBook* PhoneBook)
{
char target[NAMELONGTH] = { 0 };
printf("请输入你要删除的联系人\n");
printf("姓名:\n");
scanf("%s", &target);
int FindResult = FindTarget(PhoneBook, target);
if (FindResult != -1)
{
printf("删除成功!");
for (int i = FindResult; i < PhoneBook->Size; i++)
{
if (i < (PhoneBook->Size - 1))
{
PhoneBook->Book[i] = PhoneBook->Book[i + 1];
}
}
PhoneBook->Size--;
}
else
{
printf("你输入的名字我找不到==\n");
}
}
void ChangeContact(PhoneBook* PhoneBook)
{
char target[NAMELONGTH] = { 0 };
int choice = 0;
printf("请输入你要修改的联系人\n");
printf("姓名:\n");
scanf("%s", &target);
int FindResult = FindTarget(PhoneBook, target);
if (FindResult != -1)
{
printf("1.重命名 2.修改联系方式\n");
scanf("%d", &choice);
if (choice == 2)
{
printf("修改电话:\n");
scanf("%s", PhoneBook->Book[FindResult].tele);
}
else if (choice == 1)
{
printf("重命名:\n");
scanf("%s", PhoneBook->Book[FindResult].name);
}
else
{
printf("非法输入!\n");
}
}
else
{
printf("你输入的名字我找不到==\n");
}
}
void FindContact(PhoneBook* PhoneBook)
{
char target[NAMELONGTH] = { 0 };
printf("请输入你要查找的联系人\n");
printf("姓名:\n");
scanf("%s", &target);
int FindResult = FindTarget(PhoneBook, target);
if (FindResult != -1)
{
printf("%s:", PhoneBook->Book[FindResult].name);
printf("%s\n", PhoneBook->Book[FindResult].tele);
}
else
{
printf("你输入的名字我找不到==\n");
}
}
void PrintAll(PhoneBook* PhoneBook)
{
for (int i = 0; i < PhoneBook->Size; i++)
{
printf("%s:",PhoneBook->Book[i].name);
printf("%s\n",PhoneBook->Book[i].tele);
}
}
void SortbyName(PhoneBook* PhoneBook)
{
PersonInfr temp;
for (int i = 1; i < PhoneBook->Size; i++)
{
temp=PhoneBook->Book[i];
int j = i - 1;
while (j >= 0 && (strcmp(PhoneBook->Book[j].name, temp.name)>0))
{
PhoneBook->Book[j + 1] = PhoneBook->Book[j];
j--;
}
PhoneBook->Book[j+1] = temp;
}
printf("排序成功!\n");
}
void CleanAll(PhoneBook* PhoneBook)
{
int del = 0;
printf("确定要删除全部联系人吗?0,是 1,否\n");
scanf("%d", &del);
if (!del)
{
PhoneBook->Size = 0;
printf("电话簿已清空!\n");
}
}
main.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"Contact.h"
int main()
{
printf("%s","通话录:");
PhoneBook FirstBook;
InitBook(&FirstBook);
fun ChooseFun[10] = { AddContact,DeletContact,ChangeContact,FindContact,PrintAll,SortbyName,CleanAll};
int choice = 0;
do
{
choice = menu();
if (choice)
{
ChooseFun[choice - 1](&FirstBook);
printf("\n");
ChooseFun[4](&FirstBook);
}
} while (choice);
system("pause");
return 0;
}