Lenguaje C para realizar el sistema de libreta de direcciones

Lenguaje C para realizar el sistema de libreta de direcciones

En este capítulo, compartiré contigo unos requisitos de diseño de sistema de libreta de direcciones simples

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

diseño de características

  1. Diseño general
    Estructura de la libreta de direcciones

  2. diseño detallado

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

  • Cree el archivo de encabezado ContactBook.h
#include<assert.h>
#include<stdlib.h>
#include<string.h>

#define NAME_MAX 30
#define TEL_MAX 20
#define ADDR_MAX 100

#define CONTACT_BOOK_MAX 100

typedef 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);

  • ContactoBook.c
#include"ContactBook.h"
#include<stdio.h>
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<stdio.h>
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;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45796387/article/details/113006568
Recomendado
Clasificación