通过前面关于结构体及相关自定义类型的学习,我们就可以写上一个通讯录这样的程序,该程序有如下要求:
人的信息:
✅为了使咱们的程序更加的清晰易懂,我们可以将该工程分为三个文件:
test.c
-测试代码contact.h
-声明contact.c
-实现“contact.h
”
#pragma once
//类型的声明
#include
#include
#include
#define Max 100
#define NAME_MAX 10
typedef struct PepInfo
{
char name[NAME_MAX];
int age;
char sex[5];
char tele[12];
char addr[20];
}PInfo;
typedef struct Contact
{
PInfo data[Max];
int sz;//用于记录当前通讯录中存放了多少个人的信息
}Contact;
//初始化通讯录
void InitContact(Contact* c);
“contact.c
”
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
void InitContact(Contact *c)
{
assert(c);
c->sz = 0;
memset(c->data, 0, sizeof(c->data));
}
“test.c
”
//文件用于测试通讯录的基本功能。
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"//自己定义的头文件用""
void menu()
{
printf("***********************************\n");
printf("********1.增加联系人***************\n");
printf(" \n");
printf("********2.删除指定联系人的信息*****\n");
printf(" \n");
printf("********3.查找指定联系人的信息*****\n");
printf(" \n");
printf("********4.修改指定联系人的信息*****\n");
printf(" \n");
printf("********5.排序通讯录的信息*********\n");
printf(" \n");
printf("********6.显示所有联系人的信息*****\n");
printf(" \n");
printf("********0.退出程序*****************\n");
printf("***********************************\n");
}
enum Option
{
EXIT,
ADD,
DEL,
SEARCH,
MODIFY,
SHOW,
SORT
};
int main()
{
int input = 0;
Contact con;
//初始化函数
InitContact(&con);
do
{
menu();
printf("请输入你的选择:>");
scanf("%d", &input);
switch (input)
{
case ADD:
break;
case DEL:
break;
case SEARCH:
break;
case MODIFY:
break;
case SHOW:
break;
case SORT:
break;
case EXIT:
printf("退出通讯录\n");
break;
default:
break;
}
} while (input);
return 0;
}
“contact.h
”
//显示所有联系人
void ShowContact(const Contact* c);
“contact.c
”
void ShowContact(const Contact* c)
{
assert(c);
if (c->sz == 0)
{
printf("通讯录为空,无需打印!\n");
}
int i = 0;
printf("%-20s%-5s%-5s%-12s%-30s\n", "姓名", "年龄", "性别", "电话", "地址");
for (int i = 0; i < c->sz; i++)
{
printf("%-20s%-5s%-5s%-12s%-30s\n",
c->data[i].name, c->data[i].age, c