C语言简易通讯录的实现代码

本文实例为大家分享了C语言简易通讯录的具体代码,供大家参考,具体内容如下

通讯录的实现:

一.介绍:

运用C语言的数组、指针、结构体等相关知识:实现一个简易的通讯录:

此通讯录的大概内容为:通讯录可存储1000个人的信息:

每个人的基本信息有:名字+ 年龄+性别 + 电话+ QQ + 地址此通讯录所具有的功能:增加+ 删除 + 查询 + 修改 + 排序 + 退出

此通讯录在设计时:总共设计了三个文件:

contact.h: 类型的声明和函数的声明

contact.c:函数功能的具体实现

test.c: 测试文件

二.具体实现:

1. contact.h:

此文件中定义该通讯录中所设计的功能的函数声明以及两个结构体:

PeoInfo:存储通讯录中每个人的基本信息

Contact:存储通讯录中的数据以及通讯录中的已存储的人数

具体代码实现如下:

////类型的声明+函数的声明// #include <stdio.h>#include <string.h> #define MAX 1000 #define MAX_NAME 20#define MAX_TELE 12#define MAX_ADDR 100#define MAX_QQ 12#define MAX_SEX 5 typedef struct PeoInfo{ char name[MAX_NAME]; char tele[MAX_TELE]; char addr[MAX_ADDR]; char qq[MAX_QQ]; char sex[MAX_SEX]; short age;}PeoInfo; //通讯录typedef struct Contact{ PeoInfo data[MAX];//数据 int sz;//有效个数}Contact;  //添加一个人的信息void add_contact(Contact* pc); //显示通讯录中的信息void show_contact(Contact* pc); //删除指定的联系人void del_contact(Contact* pc); //查找指定联系人void search_contact(Contact* pc); //修改指定联系人void modify_contact(Contact* pc); //排序通讯录的数据void sort_contact(Contact* pc); 

2. contact.c:

此文件是该通讯录所设计的功能的具体实现:具体包括:

(1) 添加一个人的信息 void add_contact(Contact* pc);

(2)显示通讯录中的信息 void show_contact(Contact* pc);

(3)删除指定的联系人 void del_contact(Contact* pc);

(4)查找指定联系人 void search_contact(Contact* pc);

(5)修改指定联系人 void modify_contact(Contact* pc);

(6)排序通讯录的数据 void sort_contact(Contact* pc);

具体代码实现如下:

#define _CRT_SECURE_NO_WARNINGS 1 #include "contact.h" void add_contact(Contact* pc){ if (pc->sz == MAX) { printf("通讯录已满\n"); } else { printf("请输入名字:>"); scanf("%s", pc->data[pc->sz].name); printf("请输入电话:>"); scanf("%s", pc->data[pc->sz].tele); printf("请输入地址:>"); scanf("%s", pc->data[pc->sz].addr); printf("请输入QQ:>"); scanf("%s", pc->data[pc->sz].qq); printf("请输入性别:>"); scanf("%s", pc->data[pc->sz].sex); printf("请输入年龄:>"); scanf("%d", &(pc->data[pc->sz].age));  pc->sz++; printf("添加成功\n"); }} void show_contact(Contact* pc){ int i = 0; printf("%10s %12s %20s %5s %12s %5s\n", "名字", "电话", "地址", "年龄", "QQ", "性别"); for (i = 0; i < pc->sz; i++) { printf("%10s %12s %20s %5d %12s %5s\n", pc->data[i].name, pc->data[i].tele, pc->data[i].addr, pc->data[i].age, pc->data[i].qq, pc->data[i].sex); }} static int find_peo_by_name(Contact* pc, char name[]){ int i = 0; for (i = 0; i < pc->sz; i++) { if (strcmp(name, pc->data[i].name) == 0) { return i;//找到了,返回下标 } } return -1;//找不到} void del_contact(Contact* pc){  if (pc->sz == 0) { printf("抱歉,通讯录为空\n"); } else { char name[MAX_NAME] = { 0 }; printf("请输入要删除人的名字:>"); scanf("%s", name); //1. 找到指定的联系人的位置 int pos = find_peo_by_name(pc, name); if (pos == -1) { printf("很遗憾,删除的人不存在\n"); } else { //2. 删除 int j = 0; for (j = pos; j < pc->sz - 1; j++) { pc->data[j] = pc->data[j + 1]; } pc->sz--; printf("删除成功\n"); } }}  void search_contact(Contact* pc){ char name[MAX_NAME] = { 0 }; printf("请输入要查找人的名字:>"); scanf("%s", name); int pos = find_peo_by_name(pc, name); if (pos == -1) { printf("查无此人\n"); } else { printf("%10s %12s %20s %5s %12s %5s\n", "名字", "电话", "地址", "年龄", "QQ", "性别"); printf("%10s %12s %20s %5d %12s %5s\n", pc->data[pos].name, pc->data[pos].tele, pc->data[pos].addr, pc->data[pos].age, pc->data[pos].qq, pc->data[pos].sex); }}  void modify_contact(Contact* pc){ char name[MAX_NAME] = { 0 }; printf("请输入要修改人的名字:>"); scanf("%s", name); int pos = find_peo_by_name(pc, name); if (pos == -1) { printf("查无此人\n"); } else { printf("请输入新的名字:>"); scanf("%s", pc->data[pos].name); printf("请输入新的电话:>"); scanf("%s", pc->data[pos].tele); printf("请输入新的地址:>"); scanf("%s", pc->data[pos].addr); printf("请输入新的QQ:>"); scanf("%s", pc->data[pos].qq); printf("请输入新的性别:>"); scanf("%s", pc->data[pos].sex); printf("请输入新的年龄:>"); scanf("%d", &(pc->data[pos].age)); }} void sort_contact(Contact* pc){ int i = 0; int j = 0; for (i = 0; i < pc->sz - 1; i++) { int flag = 1;//假设已经有序 for (j = 0; j < pc->sz - 1 - i; j++) { if (strcmp(pc->data[j].name, pc->data[j + 1].name) > 0) { PeoInfo tmp = pc->data[j]; pc->data[j] = pc->data[j + 1]; pc->data[j + 1] = tmp; flag = 0; } } if (1 == flag) { break; } }}

3.test.c

此文件是对该通讯录的功能实现的测试文件:包括菜单的打印,根据用户的输入,输出相关信息以及该通讯录功能的完整流程的实现等。

具体代码实现如下:

#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h" //测试文件//通讯录1000个人的信息:名字+ 年龄+ 电话 + 地址+ QQ + 性别 //增 删 查 改 排序 退出#define _CRT_SECURE_NO_WARNINGS 1  void menu(){ printf("*******************************\n"); printf("****** 1. add  2. del * ***\n"); printf("****** 3. search 4. modify ***\n"); printf("****** 5. sort 6. show ***\n"); printf("******  0. exit  ***\n"); printf("*******************************\n");} enum Option{ EXIT, ADD, DEL, SEARCH, MODIFY, SORT, SHOW}; //first_name//FirstName void test(){ //创建的通讯录 Contact con = { 0 }; int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: add_contact(&con); break; case DEL: del_contact(&con); break; case SORT: sort_contact(&con); break; case SHOW: show_contact(&con); break; case SEARCH: search_contact(&con); break; case MODIFY: modify_contact(&con); break; case EXIT: printf("退出通讯录\n"); break; default: printf("选择错误\n"); break; } } while (input);}int main(){ test();// return 0;}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

流转的时光,都成为命途中美丽的点缀,

C语言简易通讯录的实现代码

相关文章:

你感兴趣的文章:

标签云: