实现通讯录 ‘增’ ‘删’ ‘查’ ‘改’ 四个功能
下面是静态
头文件所应包含的内容:
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <assert.h>
typedef struct infor//通讯录个人信息
{
char name[256];
char num[256];
}infor;
typedef struct
{
infor mem[50];//通讯录人数
int mem_index; //通讯录索引--下标
}member;
void Menu();//菜单
void Init(member *m);//初始化通讯录
void Insert(member *m);//添加联系人
void Delete(member *m);//删除联系人
void Display(member *m);//显示联系人
void Find(member *m);//查找联系人
void Modify(member *m);//修改联系人
void Clear(member *m);//清空联系人
接下来是主函数:
#define _CRT_SECURE_NO_WARNINGS
#include "test.h"
int main()
{
member m;
Init(&m);
typedef void(*T)(member *m);
T menu[] = {
Insert,Delete,Display,Find,Modify,Clear};
int choice = 0;
Menu();
printf("\n请输入接下来要操做的选项!\n");
scanf("%d", &choice);
while (1)
{
if (choice == 0)
{
printf("再见!\n");
system("pause");
break;
}
menu[choice - 1](&m);
printf("\n请输入接下来要操做的选项!\n");
scanf("%d", &choice);
}
system("pasuse");
return 0;
}
这有一个技巧使用“转移表”;好多初学者可能会用 if 或者 switch 但是写起来还比较麻烦,不如这个方便;
1.初始化联系人
void Init(member *m)//初始化联系人
{
if (m == NULL)
{
return;
}
m->mem_index = 1;
}
2.添加和删除功能
void Insert(member* m)//添加联系人
{
if (m == NULL)
{
return;
}
infor *p = &(m->mem[m->mem_index]);
printf("亲,输入新的联系人的姓名\n");
scanf("%s", p->name);
printf("输入联系电话号码\n");
scanf("%s", p->num);
++(m->mem_index);//下标加1
printf("添加成功!\n"