动态通讯录

来源:互联网 发布:手机测谎软件 编辑:程序博客网 时间:2024/05/21 22:30

动态通讯录:

**提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人**

具体实现如下:

头文件:contact.h

#ifndef __CONTACT_H__#define __CONTACT_H__#define BIG 100#include <stdio.h>#include <string.h>#include <stdlib.h>#include <Windows.h>typedef struct Man {    char name[20];    char sex[10];    int age;    char address[30];    char tel[20];}Man;typedef struct Contact {    Man* start;    int count;    int info;}Contact;void menu();void init_con(Contact* pcon);int cmp_con(Contact* pcon,char* name);void check_con(Contact* pcon);void add_con(Contact* pcon);void del_con(Contact* pcon);void find_con(Contact* pcon);void mod_con(Contact* pcon);void show_con(Contact* pcon);void empty_con(Contact* pcon);void sort_con(Contact* pcon);#endif //CONTACT_H__

contact.c :

#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"void menu(){    printf("***********************************\n");    printf("**********1:添加   2:删除**********\n");    printf("**********3:查找   4:修改**********\n");    printf("**********5:显示   6:清空**********\n");    printf("**********7:排序   0:退出**********\n");    printf("***********************************\n");}void init_con(Contact* pcon){    pcon->start = (Man*)malloc(20 * sizeof(Man));    if(pcon->start == NULL)    {        printf("空间不足\n");        return;    }    pcon->count = 0;    pcon->info = BIG;}void check_con(Contact* pcon){    Contact *temp;    if(pcon->count == pcon->info)    {        temp = (Contact *)realloc(pcon->start,BIG*sizeof(Man));        if(temp == NULL)        {            printf("空间不足\n");            return;        }        else        {            pcon->start = temp;            pcon->info += BIG;        }    }}int cmp_con(Contact* pcon,char* name){    int i = 0;    for(i=0;i<pcon->count;i++)    {        if(strcmp(pcon->start[i].name,name) == 0)        {            return i;        }    }    return -1;}void add_con(Contact* pcon){    check_con(pcon);    if(pcon->count == pcon->info)    {        printf("已存满\n");        return;    }    else    {        printf("请输入姓名>");        scanf("%s",pcon->start[pcon->count].name);        printf("请输入性别>");        scanf("%s",pcon->start[pcon->count].sex);        printf("请输入年龄>");        scanf("%d",&pcon->start[pcon->count].age);        printf("请输入地址>");        scanf("%s",pcon->start[pcon->count].address);        printf("请输入电话>");        scanf("%s",pcon->start[pcon->count].tel);    }    printf("信息录入完毕\n");    pcon->count++;}void del_con(Contact* pcon){    char name[20];    int input = 0;    int ret = 0;    int i = 0;     printf("请输入要删除那个人的姓名>");    scanf("%s",name);    ret = cmp_con(pcon,name);    if(ret == -1)    {        printf("没有此人的信息\n");        return;    }    printf("****** 确定要删除? ******\n");    printf("******1:删除 2:取消******\n");    printf("请选择>");    scanf("%d",input);    if(input == 2)    {        printf("取消成功\n");        return;    }    for(i=ret;i<pcon->count-1;i++)    {        Man temp;        temp = pcon->start[i];        pcon->start[i] = pcon->start[i+1];        pcon->start[i+1] = temp;    }    printf("删除完毕\n");}void find_con(Contact* pcon){    int ret = 0;    char name[20];    printf("请输入要查找那个人的姓名>");    scanf("%s",name);    ret = cmp_con(pcon,name);    if(ret == -1)    {        printf("没有此人\n");        return;    }    printf("\n");    printf("姓名为: %s\n",pcon->start[ret].name);    printf("性别为: %s\n",pcon->start[ret].sex);    printf("年龄为: %d\n",pcon->start[ret].age);    printf("地址为: %s\n",pcon->start[ret].address);    printf("电话为: %s\n",pcon->start[ret].tel);    printf("\n");}void mod_con(Contact* pcon){    char name[20];    int ret = 0 ;    printf("请输入要修改那个人的姓名>");    scanf("%s",name);    ret = cmp_con(pcon,name);    if(ret == -1)    {        printf("没有此人\n");        return;    }    printf("请输入姓名>");    scanf("%s",pcon->start[pcon->count].name);    printf("请输入性别>");    scanf("%s",pcon->start[pcon->count].sex);    printf("请输入年龄>");    scanf("%d",&pcon->start[pcon->count].age);    printf("请输入地址>");    scanf("%s",pcon->start[pcon->count].address);    printf("请输入电话>");    scanf("%s",pcon->start[pcon->count].tel);    printf("修改完毕\n");}void show_con(Contact* pcon){    int i = 0;    for (i = 0; i <(pcon->count); i++)    {        printf("\n");        printf("姓名为:%s\n",pcon->start[i].name);        printf("性别为:%s\n",pcon->start[i].sex);        printf("年龄为:%d\n",pcon->start[i].age);        printf("地址为:%s\n",pcon->start[i].address);        printf("电话:%s\n",pcon->start[i].tel);        printf("\n");    }    printf("输出完毕\n");}void empty_con(Contact* pcon){    pcon->count = 0;    printf("清空完成\n");}void sort_con(Contact* pcon){    int i = 0;    int j = 0;    for(i=0;i<pcon->count-1;i++)    {        for(j=0;j<pcon->count-1-i;i++)        {            if(strcmp(pcon->start[j].name,pcon->start[j+1].name)>0)            {                Man temp;                temp = pcon->start[j];                pcon->start[j] = pcon->start[j+1];                pcon->start[j+1] = temp;            }        }    }    printf("排序完成\n");}

test.c :

#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"int main(){    Contact my_con;    int input = 0;    void (* p[8])(Contact *pcon) = {NULL,add_con,del_con,find_con,mod_con,show_con,empty_con,sort_con};    init_con(&my_con);    do     {        menu();        printf("请选择>");        scanf("%d",&input);        if((input>0)&&(input<=7))        {            p[input](&my_con);        }        else        {            printf("选择错误\n");        }    } while (input);    free(my_con.start);    return 0;}

这里写图片描述

原创粉丝点击