C语言实现通讯录系统

C语言实现通讯录系统 【C语言实现通讯录系统】本章我将和大家分享一个简单的通讯录系统
设计要求

我们设计的程序为手机通讯录系统,这是使用C语言写成。 本程序具有和一般的通讯录一样的功能,有最基本的数据添加、修改、查看、删除等功能。

功能设计
  1. 总体设计
    C语言实现通讯录系统
    文章图片

  2. 详细设计
    1. 查找联系人 通过总菜单选择查找联系人,输入需要查找的联系人姓名(或者该联系人姓,或者该联系人名)。 若存在该联系人,则输出该联系人的信息,若通讯录中不存在此联系人,则输出查无此人,并且可以继续从总菜单选择所需要的功能。 2. 添加联系人 通过总菜单选择添加联系人,然后根据提示,依次输入要添加联系人的信息,中间用空格隔开。 3. 删除联系人 通过总菜单选择删除联系人,然后输入联系人的姓名,如通讯录中存在此联系人则输出删除成功,若不存在此联系人,则输出删除失败。 4. 修改联系人 通过总菜单选择修改联系人,然后输入联系人的信息,中间用空格隔开。

  3. 源代码
  • 建立头文件ContactBook.h
#include #include #include#define NAME_MAX 30 #define TEL_MAX 20 #define ADDR_MAX 100#define CONTACT_BOOK_MAX 100typedef struct Contact { char name[NAME_MAX]; char tel[TEL_MAX]; char address[ADDR_MAX]; int age; }Contact; typedef struct ContactBook { Contact array[CONTACT_BOOK_MAX]; int size; }ContactBook; void ContactBookInit(ContactBook* pcb); void ContactBookAdd(ContactBook* pcb, Contact* pc); void ContactBookDel(ContactBook* pcb, char* name); void ContactUpdate(ContactBook* pcb,Contact* pc); Contact* ContactBookSearch(ContactBook* pcb, char* name); void ContactBookPrint(ContactBook* pcb);

  • ContactBook.c
#include"ContactBook.h" #include void ContactBookInit(ContactBook* pcb) { assert(pcb); pcb->size = 0; memset(pcb->array, 0, sizeof(Contact)*CONTACT_BOOK_MAX); } void ContactBookAdd(ContactBook*pcb, Contact* pc) { assert(pcb); assert(pc); if (pcb->size == CONTACT_BOOK_MAX) {printf("通讯录已满\n"); return; } memcpy(&pcb->array[pcb->size], pc, sizeof(Contact)); pcb->size++; } void ContactBookPrint(ContactBook* pcb) { for (int i = 0; i < pcb->size; ++i) {printf("name:%s\n", pcb->array[i].name); printf("addr:%s\n", pcb->array[i].address); printf("tel:%s\n", pcb->array[i].tel); printf("age:%d\n", pcb->array[i].age); printf("\n"); } } void ContactBookDel(ContactBook* pcb, char* name) { assert(pcb); assert(name); int i = 0; for (; i < pcb->size; ++i) {if (strcmp(pcb->array[i].name, name) == 0) { //删除 memmove(pcb->array + i, pcb->array + i + 1, (pcb->size - i - 1)*sizeof(Contact)); break; } } if (i == pcb->size) {printf("删除失败,查无此人\n"); } else {pcb->size--; printf("删除成功\n"); }}void ContactUpdate(ContactBook* pcb, Contact* pc) { assert(pcb); assert(pc); int i = 0; for (; i < pcb->size; ++i) {if (strcmp(pcb->array[i].name, pc->name) == 0) {memcpy(pcb->array + i, pc,sizeof(Contact)); break; } } if (i == pcb->size) {printf("修改失败,查无此人\n"); } else {printf("修改成功\n"); } } Contact* ContactBookSearch(ContactBook* pcb, char* name) { for (int i = 0; i < pcb->size; ++i) {if (strstr(pcb->array[i].name, name) != NULL) {return &pcb->array[i]; } } printf("查无此人\n"); return NULL; }

  • Test.c
#include"ContactBook.h" #include void ContactBookTest() { ContactBook cb; ContactBookInit(&cb); Contact ct1 = { "张飞", "18392977286", "绵竹", 40 }; ContactBookAdd(&cb, &ct1); Contact ct2 = { "关羽", "15129187320", "荆竹", 45 }; ContactBookAdd(&cb, &ct2); ContactBookPrint(&cb); } void Menu() { ContactBook cb; ContactBookInit(&cb); Contact ct1 = { "张飞", "18392977286", "绵竹", 40 }; ContactBookAdd(&cb, &ct1); Contact ct2 = { "关羽", "15129187320", "荆竹", 45 }; ContactBookAdd(&cb, &ct2); int option = 0; do {printf("**********************************\n"); printf("*******1.添加联系人***********\n"); printf("*******2.删除联系人***********\n"); printf("*******3.修改联系人***********\n"); printf("*******4.查找联系人***********\n"); printf("*******5.展示联系人***********\n"); printf("*******0.退出***********\n"); printf("**********************************\n"); scanf("%d", &option); if (option == 1) {printf("请依次输入联系人的姓名、地址、联系方式、年龄:\n"); Contact ct; scanf("%s", ct.name); scanf("%s", ct.address); scanf("%s", ct.tel); scanf("%d", &ct.age); ContactBookAdd(&cb, &ct); printf("添加成功\n"); } else if (option == 2) {printf("请输入要删除联系人的姓名\n"); char name[NAME_MAX]; scanf("%s", name); ContactBookDel(&cb, name); } else if (option == 3) {printf("请依次输入联系人的姓名、地址、联系方式、年龄:\n"); Contact ct; scanf("%s", ct.name); scanf("%s", ct.address); scanf("%s", ct.tel); scanf("%d", &ct.age); ContactUpdate(&cb, &ct); } else if (option == 4) {printf("请输入要查找联系人的姓名\n"); char name[NAME_MAX]; scanf("%s", name); Contact* pc = ContactBookSearch(&cb, name); if (pc) {printf("查找成功\n"); printf("name:%s\n", pc->name); printf("addr:%s\n", pc->address); printf("tel:%s\n", pc->tel); printf("age:%d\n", pc->age); printf("\n"); }} else if (option == 5) {ContactBookPrint(&cb); } else if (option != 0) {printf("无此选项,请重新输入\n"); } } while (option != 0); } int main() { Menu(); return 0; }

    推荐阅读