目录
目录
用C语言实现一个通讯录,功能包括增、删、查、改、显示、删除
1、构造通讯录大体框架
搭建大体框架,通过输入input选择功能,代码如下:
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
#define MAX_NAME 10
#define MAX_SEX 3
#define MAX_TELE 13
#define MAX_ADDR 20
#define MAX 100
enum option
{
EXIT,
ADD,
DELE,
SEARCH,
MODIFY,
SHOW,
SORT
};
void menu()
{
printf("---1 ADD---------------\n");
printf("---2 DELE--------------\n");
printf("---3 SEARCH------------\n");
printf("---4 MODIFY------------\n");
printf("---5 SHOW--------------\n");
printf("---6 SORT--------------\n");
printf("---7 EXIT--------------\n");
}
//创建结构体,人的信息
typedef struct PeoInfo
{
char name[MAX_NAME];
int age;
char sex[MAX_SEX];
char tele[MAX_TELE];
char addr[MAX_ADDR];
}PeoInfo;
//创建结构体,通讯录的信息
typedef struct Contact
{
PeoInfo data[MAX];//注意这里是结构体类型PeoInfo
int count;
}Contact;
int main()
{
int input = 0;
Contact con;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case ADD:
break;
case DELE:
break;
case SEARCH:
break;
case MODIFY:
break;
case SHOW:
break;
case SORT:
break;
case EXIT:
printf("退出\n");
break;
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
return 0;
}
2、实现具体功能
2.1 初始化通讯录
contact里的内容全部置0。
这里用到memset函数:标准库:<string.h>;声明为:void *memset(void *str, int c, size_t n);
- str -- 指向要填充的内存块。
- c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
- n -- 要被设置为该值的字符数。
//初始化通讯录,全部置0
void initcontact(Contact* s)
{
assert(s);
s->count = 0;
memset(s->data, 0, sizeof(s->data));
}
2.2 增加功能
选择1 add后开始进行增加功能,代码如下:
void addcontact(Contact* s)
{
assert(s);
if (s->count == MAX)
{
printf("通讯录已满,无法增加\n");
return;
}
printf("请输入要增加的姓名:");
scanf("%s", s->data[s->count].name);
printf("请输入要增加的年龄:");
scanf("%d", &(s->data[s->count].age));
printf("请输入要增加的性别:");
scanf("%s", s->data[s->count].sex);
printf("请输入要增加的电话:");
scanf("%s", s->data[s->count].tele);
printf("请输入要增加的