目录
目录
1. 功能介绍
该项目用C语言实现了一个字符界面的通讯录,在终端窗口运行,功能包括对联系人信息的增添,查找(按照姓名),修改,删除,展示,排序(按照年龄)的功能;
该代码的内存为动态分配,会随着输入数据的增多而动态分配,不用担心造成内存浪费的情况;
在结束进程时,程序还能保存联系人数据到本地文件(以二进制形式保存),并在下一次打开时从本地读取到程序内存中。
2. 代码部分
2.1 main函数 - 'test.c'
#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
int main()
{
AddressBook con;
int input = 0;
InitialAddressBook(&con);
do
{
system("cls");
display();
printf("Please input function choice:>");
scanf("%d", &input);
switch (input)
{
case ADD:
addInfo(&con);
break;
case DEL:
delInfo(&con);
break;
case SEARCH:
searchInfo(&con);
break;
case MODIFY:
modifyInfo(&con);
break;
case SHOW:
showInfo(&con);
break;
case SORT:
sortByAgeInfo(&con);
break;
case EXIT:
saveData(&con);
freeMemory(&con);
break;
default:
printf("Invalid input! Please choose again!");
Sleep(1500);
break;
}
} while (input);
}
2.2 结构体定义、函数声明 - 'contact.h'
#define _CRT_SECURE_NO_WARNINGS 1
#define DEFAULT_CAPACITY 3
#define INC_SIZE 2
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
struct PeoInfo
{
char name[10];
int age;
char gender[6];
char number[12];
};
typedef struct PeoInfo PeoInfo;
struct AddressBook
{
PeoInfo* data;
int size;
int capacity;
};
typedef struct AddressBook AddressBook;
enum CHOOSE
{
EXIT,
ADD,
DEL,
SEARCH,
MODIFY,
SHOW,
SORT
};
int InitialAddressBook(AddressBook* p); //In