实现通讯录的思路如下:
1.程序运行起来时用户首先要看到菜单栏选项并且对应菜单栏所给出的选项做出选择,这里我们简单设计一个Menu()函数可以让用户看见可选项目;
2.用户可选的范围应该是1~7,为了避免用户做出超出范围的选择我们可以用switch语句来判断用户的选择若用户输入的数字非法还可以让用户继续选择,而继续选择这个动作需要用到while语句,用户对通讯录的不断操作也需要用到while语句;
3.用户选择不同的选项,程序就要调用对应的函数来实现其功能并且我们对switch语句进行优化,如果直接对输入的数字进行判断的话我们还需要对照直接设计的菜单栏选项对捕捉到的用户选择做出判断需要不是参考菜单栏,为了解决这个问题,我们用枚举的方法来提高代码的可读性;
enum menu
{
ADD = 1,
SHOW,
MODIFIES,
FIND,
DELETE,
SORT,
EXITS,
};
4.接下来我们对通讯录的功能一一实现,不难想到要对通讯录中的联系人信息进行操作就必须要有存放联系人信息的载体,而每个联系人信息则又包含姓名,年龄,性别,电话号码,地址这些信息,所以我们首先自定义一个message类型,然后创建一个message数组来存放联系人信息,数组的大小由我们自行设定最好用#define来设定num的大小可以做到一改全改。
#define num 100
typedef struct s
{
int age;
char name[10];
char number[20];
char sex[5];
char adress[20];
}message;
5.添加联系人功能:要想添加联系人就得对保存所有联系人信息的数组进行操作并且还要知道把新建的联系人信息存入数组的第几个元素中,所以这个AddMessage函数应该接收这两个参数,考虑到要统计通讯录中联系人的个数并且在添加联系人成功后该个数应该++,所以在创建联系人数组的同时应该同时定义一个变量来告诉一些功能函数通讯录中联系人的个数并且在addMessage这个函数中还需要对这个变量的值进行+1操作所以我们应该向这个函数传入该变量的地址达到修改变量值的目的。
void MyScanf(message arr[num], int* i)
{
printf("请输入联系人姓名:\n");
scanf("%s", (arr[*i].name));
printf("请输入联系人年龄:\n");
scanf("%d", &(arr[*i].age));
printf("请输入联系人电话号码:\n");
scanf("%s", (arr[*i].number));
printf("请输入联系人性别:\n");
scanf("%s", (arr[*i].sex));
printf("请输入联系人地址:\n");
scanf("%s", (arr[*i].adress));
}
void AddMessage(message arr[num],int* i )
{
MyScanf(arr,i);
(*i)++;
}