实现一个通讯录并将信息保存到文本中

来源:互联网 发布:赴港产子知乎 编辑:程序博客网 时间:2024/05/17 05:11

contact.h

#ifndef __CONTACT_H__#define __CONTACT_H__#include <stdlib.h>#include <stdio.h>#define NAME_LEN 20#define SEX_LEN  5#define TELE_LEN  12#define ADDR_LEN 20#define MAX_PEO  1000typedef struct Peo{    char name[NAME_LEN];    int age;    char sex[SEX_LEN];    char tele[TELE_LEN];    char addr[ADDR_LEN];}PEO,*PPEO;typedef struct Contact{    PEO dhb[MAX_PEO];//存储人的信息    int count;//记录有效个数}PCON,*Pcon;void add_peo(Pcon pcon);void del_peo(Pcon pcon);void search(Pcon pcon);void modify(Pcon pcon);void show(Pcon pcon);void clear(Pcon pcon);void init(Pcon pcon);void save(Pcon pcon);#endif

text.c

#include <stdio.h>#include "contact.h"void print_menu(){    printf("*************************************\n");    printf("*****1:add                2:del******\n");    printf("*****3:search             4:modify***\n");    printf("*****5:show               6:clear****\n");    printf("************* 7:save ****************\n");    printf("*************************************\n");}int main(){    PCON con;    int input = 1;    con.count = 0;    init(&con);    while(input)    {        print_menu();        printf("请选择操作:\n");        scanf("%d",&input);        switch(input)        {        case 1:            add_peo(&con);            break;        case 2:            del_peo(&con);            break;        case 3:            search(&con);            break;        case 4:            modify(&con);            break;        case 5:            show(&con);            break;        case 6:            clear(&con);            break;        case 7:            save(&con);            break;        default:            break;        }    }    return 0;}

main.c

#include<stdio.h>#include<string.h>#include"contact.h"int find(char *p, Pcon pcon){    int i = 0;    for(;i < pcon->count; i++)    {        if(strcmp(pcon->dhb[i].name,p) == 0)            return i;    }    return -1;}void add_peo(Pcon pcon){    if(pcon->count < MAX_PEO)    {        printf("请输入姓名、年龄、性别、电话、住址:\n");        scanf("%s",pcon->dhb [pcon->count].name);        scanf("%d",&pcon->dhb [pcon->count].age);        scanf("%s",pcon->dhb [pcon->count].sex);        scanf("%s",pcon->dhb [pcon->count].tele);        scanf("%s",pcon->dhb [pcon->count].addr);    }    pcon->count ++;    printf("存储成功\n");}void del_peo(Pcon pcon){    int i = 0;    int ret = 0;    char name[10];    printf("请输入要删除的名字:\n");    scanf("%s",name);    ret = find(name,pcon);    if(ret == -1)    {        printf("无此联系人\n");    }    else        for(i = ret; i < pcon->count-1; i++)        {            pcon->dhb[i] = pcon->dhb[i + 1];        }        pcon->count--;        printf("删除成功\n");}void search(Pcon pcon){    int i = 0;    int ret = 0;    char name[10];    printf("请输入要查找人的名字:\n");    scanf("%s",name);    ret = find(name,pcon);    if(ret == -1)    {        printf("无此联系人\n");    }    else    {        printf("姓名:%10s\t",pcon->dhb[i].name);        printf("年龄:%10d\t",pcon->dhb[i].age);        printf("性别:%10s\t",pcon->dhb[i].sex);        printf("电话:%10s\t",pcon->dhb[i].tele);        printf("住址:%10s\t",pcon->dhb[i].addr);        printf("\n");    }}void modify(Pcon pcon){    int i = 0;    int ret = 0;    char name[10];    printf("请输入要查找人的名字:\n");    scanf("%s",name);    ret = find(name,pcon);    printf("请输入姓名、年龄、性别、电话、住址:\n");    scanf("%s",pcon->dhb [i].name);    scanf("%d",&pcon->dhb [i].age);    scanf("%s",pcon->dhb [i].sex);    scanf("%s",pcon->dhb [i].tele);    scanf("%s",pcon->dhb [i].addr);    printf("修改成功\n");}void show(Pcon pcon){    int i = 0;    for(; i <pcon->count; i++)    {        printf("姓名:%10s\t",pcon->dhb[i].name);        printf("年龄:%10d\t",pcon->dhb[i].age);        printf("性别:%10s\t",pcon->dhb[i].sex);        printf("电话:%10s\t",pcon->dhb[i].tele);        printf("住址:%10s\t",pcon->dhb[i].addr);        printf("\n");    }}void clear(Pcon pcon){    pcon->count = 0;}void init(Pcon pcon){    int i = 0;    FILE *pfread = fopen("contact.txt","r");        if(pfread == NULL)    {        perror("contact.txt");        exit(EXIT_FAILURE);    }    while(fread(&(pcon->dhb[i]),sizeof(PEO),1,pfread)==1)    {        i++;    }    pcon->count = i;    fclose(pfread);}void save(Pcon pcon){    int i = 0;    FILE *pfwrite = fopen("contact.txt","w");    if(pfwrite == NULL)    {        perror("contact.txt");        exit(EXIT_FAILURE);    }    for(i= 0;i<pcon->count;i++)    {        fwrite(&(pcon->dhb[i]),sizeof(PEO),1,pfwrite);    }    fclose(pfwrite);}
0 0
原创粉丝点击