通讯录静态版本

来源:互联网 发布:凭都网软件 编辑:程序博客网 时间:2024/06/14 08:06

contact.h

#ifndef _CONTACT_H__#define _CONTACT_H__# include<stdio.h># include <stdlib.h>#define MAX 1000#define MAX_NAME 10#define MAX_SEX 5#define MAX_TELE 20#define MAX_ADDR 30typedef struct PeoInfo//个人信息结构体{    char name[MAX_NAME];    int age;    char sex[MAX_SEX];    char tele[MAX_TELE];    char addr[MAX_ADDR];}PeoInfo;typedef struct Contact//通讯录信息结构体{    PeoInfo contact[MAX];//可添加的信息量    int sz;//用于记录添加的信息量}Contact, *pContact;void InitContact(pContact pcon);void AddContact (pContact pcon);void ShowContact(const pContact pcon);void DelContact(pContact pcon);#endif //_CONTACT_H__

contact.c

#define _CRT_SECURE_NO_WARNINGS 1# include "contact.h"void InitContact(pContact pcon){    pcon->sz = 0;    memset(pcon->contact, 0, sizeof(pcon->contact));}void AddContact(pContact pcon){    if (pcon->sz == MAX)    {        printf("通讯录已满!");        return;//不返回什么值吗?为何还要返回?    }    printf("请输入名字:>");    scanf("%s", pcon->contact[pcon->sz].name);    printf("请输入年龄:>");    scanf("%d", &(pcon->contact[pcon->sz].age)); //注意加&    printf("请输入性别:>");    scanf("%s", pcon->contact[pcon->sz].sex);     printf("请输入电话:>");    scanf("%s", pcon->contact[pcon->sz].tele);    printf("请输入地址:>");    scanf("%s", pcon->contact[pcon->sz].addr);    pcon->sz++;    printf("添加成功!\n");//有一个反馈信息会更好}void ShowContact(const pContact pcon){    int i = 0;    printf("%12s\t%4s\t%5s\t%12s\t%12s\n", "name", "age", "sex", "tele", "addr");    for (i = 0; i < pcon->sz; i++)    {        printf("%12s\t%4d\t%5s\t%12s\t%12s\n",            pcon->contact[i].name,            pcon->contact[i].age,            pcon->contact[i].sex,            pcon->contact[i].tele,            pcon->contact[i].addr);    }}static int FindEntry(pContact pcon, char name[]){    int i = 0;    for (i = 0; i < pcon->sz; i++)    {        if (strcmp(name, pcon->contact[i].name) == 0)        {            return i;        }    }    return -1;}void DelContact(pContact pcon){    int pos = 0;    char name[MAX_NAME] = { 0 };    if (pcon->sz == 0)    {        printf("通讯录已空\n");        return;    }    printf("请输入您想要删除的记录\n");    scanf("%s", &name);    pos = FindEntry(pcon, name);    if (pos == -1)    {        printf("您想要删除的记录不存在!\n");    }    else    {        memmove(pcon->contact + pos,                 pcon->contact + pos + 1,                (pcon->sz - pos - 1)*sizeof(PeoInfo));        pcon->sz--;        printf("删除成功!\n");    }}

test.c

#define _CRT_SECURE_NO_WARNINGS 1# include "contact.h"enum Op{    EXIT,    ADD,    DEL,    SEARCH,    MODIFY,    SHOW,    EMPTY,    SORT};void menu(){    printf("*******************************************\n");    printf("*******  1、add      2、  del     *********\n");    printf("*******  3、search   4、  modify  *********\n");    printf("*******  5、show     6、  empty   *********\n");    printf("*******  7、stop     0、  sort    *********\n");    printf("*******************************************\n");}test(){    int input = 0;    Contact my_con;//将添加的信息和信息量封装后创建的一个变量    InitContact(&my_con);//想传结构体就传其地址    do    {        menu();        printf("请选择:>");        scanf("%d", &input);        switch (input)        {        case ADD:            AddContact(&my_con);            break;        case DEL:            DelContact(&my_con);            break;        case SEARCH:            break;        case MODIFY:            break;        case SHOW:            ShowContact(&my_con);            break;        case EMPTY:            break;        case SORT:            break;        case EXIT:            break;         default:             printf("选择错误,请重新输入!");            break;        }    } while (input);}int main(){    test();    system("pause");    return 0;}