静态版通讯录的实现

来源:互联网 发布:上海网络教研 编辑:程序博客网 时间:2024/06/05 17:48

首先也是自定义头文件,函数实现部分还有测试函数
头文件部分:

#ifndef  __CONTACT_H__#define  __CONTACT_H__#define  MAX_NAME   20#define  MAX_SEX     5#define  MAX_TELE   12#define  MAX_ADDR  100#define  MAX      1000typedef struct PeoInfo//定义结构体包括名字 年龄 性别 电话 地址{    char name[MAX_NAME];    int age;    char sex[MAX_SEX];    char tele[MAX_TELE];    char addr[MAX_ADDR];}PeoInof;typedef struct Con{    PeoInof con[MAX];    int sz;}Con,*pCon;enum input{    EXIT,    ADD,    DELETE,    SEARCH,    MODIFY,    SHOW,    EMPTY,    SORT};void init(pCon Con);//初始化通讯录void add(pCon Con);//添加联系人void delete(pCon Con);//删除联系人void search(pCon Con);//查找联系人void modify(pCon Con);//修改联系人void show(pCon Con);//显示联系人void empty(pCon Con);//清空通讯录void sort(pCon Con);//排序联系人#endif

函数实现部分:

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>#include "contact.h"void init(pCon Con)//初始化通讯录{    memset(Con->con, 0, MAX*sizeof(PeoInof));    Con->sz = 0;}int  find_peo(pCon Con,char *name){    int i = 0;    if (Con->sz == 0)    {        printf("通讯录为空,不能查找联系人!\n");    }    else    {        for (i = 0; i < Con->sz; i++)        {            if (strcmp(Con->con[i].name, name) == 0)                return i;        }    }    return -1;}void add(pCon Con)//添加联系人{    if (Con->sz == MAX)    {        printf("通讯录已满,不能再添加!\n");    }    else    {        printf("请输入姓名:");        scanf("%s", Con->con[Con->sz].name);        printf("请输入年龄:");        scanf("%d", &Con->con[Con->sz].age);        printf("请输入性别:");        scanf("%s", Con->con[Con->sz].sex);        printf("请输入电话:");        scanf("%s", Con->con[Con->sz].tele);        printf("请输入地址:");        scanf("%s", Con->con[Con->sz].addr);        Con->sz++;        printf("添加联系人成功!\n");    }}void delete(pCon Con)//删除指定联系人{    if (Con->sz == 0)    {        printf("通讯录为空,不能进行删除!\n");    }    else    {        int i = 0;        int ret = 0;        char name[MAX_NAME] = { 0 };        printf("请输入要删除人的姓名:");        scanf("%s",name);        ret = find_peo(Con, name);        if (ret != -1)        {            for (i = ret; i < Con->sz - 1; i++)            {                Con->con[i] = Con->con[i + 1];            }            Con->sz--;            printf("删除成功!\n");        }        else        {            printf("没有此联系人!\n");        }    }}void search(pCon Con)//查找指定联系人{    int i = 0;    int ret = 0;    char name[MAX_NAME] = { 0 };    printf("请输入要查找的人的姓名:");    scanf("%s",name);    ret = find_peo(Con, name);    if (ret != -1)    {        printf("%5s %5d %5s %5s %5s\n",             Con->con[ret].name,            Con->con[ret].age,            Con->con[ret].sex,            Con->con[ret].tele,            Con->con[ret].addr);    }    else    {        printf("没有找到指定联系人!\n");    }}void modify(pCon Con)//修改指定联系人{    int i = 0;    int ret = 0;    char name[MAX_NAME] = { 0 };    printf("请输入要修改的人的姓名:");    scanf("%s",name);    ret = find_peo(Con,name);    if (ret != -1)    {        printf("%5s %5s %5s %5s %5s\n", "name", "age", "sex", "tele", "addr");        scanf("%5s%5d%5s%5s%5s",             Con->con[ret].name,           &Con->con[ret].age,            Con->con[ret].sex,            Con->con[ret].tele,            Con->con[ret].addr);        printf("修改成功,修改后为:\n");        printf("%5s %5d %5s %5s %5s\n",            Con->con[ret].name,            Con->con[ret].age,            Con->con[ret].sex,            Con->con[ret].tele,            Con->con[ret].addr);    }    else    {        printf("没有此联系人!\n");    }}void show(pCon Con)//显示联系人{    int i = 0;    for (i = 0; i < Con->sz; i++)    {        printf("%5s %5d %5s %5s %5s\n",             Con->con[i].name,            Con->con[i].age,            Con->con[i].sex,            Con->con[i].tele,            Con->con[i].addr);    }}void empty(pCon Con)//清空通讯录{    Con->sz = 0;    printf("完成清空!\n");}void sort(pCon Con)//排序{    int i = 0;    if (Con->sz == 0)    {        printf("通讯录为空!\n");    }    else    {        for (i = 0; i<Con->sz - 1; i++)        {            int j = 0;            for (j = 0; j<Con->sz - 1 - i; j++)            {                if (strcmp(Con->con[j].name, Con->con[j + 1].name)>0)                {                    PeoInof tmp = Con->con[j];                    Con->con[j] = Con->con[j + 1];                    Con->con[j + 1] = tmp;                }            }        }        printf("排序完成!\n");    }}

主函数的测试部分:

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include "contact.h"void menu(){    printf("***********************************************\n");    printf("************** 1.添加联系人信息 ***************\n");    printf("************** 2.删除指定联系人 ***************\n");    printf("************** 3.查找指定联系人 ***************\n");    printf("************** 4.修改指定联系人 ***************\n");    printf("************** 5.显示所有联系人 ***************\n");    printf("************** 6.清空所有联系人 ***************\n");    printf("************** 7.排序所有联系人 ***************\n");    printf("************** 0.退出           ***************\n");    printf("***********************************************\n");}int main(){    menu();    Con my_con;    init(&my_con);    int input = 0;    while (input)    {        printf("请输入要执行的操作:");        scanf("%d",&input);        switch (input)        {        case ADD:            add(&my_con);            break;        case DELETE:            delete(&my_con);            break;        case SEARCH:            search(&my_con);            break;        case MODIFY:            modify(&my_con);            break;        case SHOW:             show(&my_con);            break;        case EMPTY:            empty(&my_con);            break;        case SORT:            sort(&my_con);            break;          case EXIT:            break;        default:        printf("请输入正确选项\n");            break;        }    }    system("pause");    return 0;}
0 0
原创粉丝点击