用C语言制作一个简单的通讯录系统(内含录入,显示,保存到文件3个函数)

#include<stdio.h>
#include<string.h>
FILE *fp;
#define LEN sizeof(struct client)\\定义LEN
struct client
{
    char name[3];
    char  addres[20];
    int number;
}cli[100];//定义通讯录客户信息结构
void input()//输入函数
{
    int j=0;
    char ch[3];
    void save();
    void show();//声明save和show函数
    printf("是否录入数据(y/n):");
    scanf("%s",ch);
    while(strcmp(ch,"y")==0)
    {
    printf("请输入录入通讯录的客户姓名:");
    scanf("%s",cli[j].name);
    printf("请输入录入通讯录的客户地址:");
    scanf("%s",cli[j].addres);
    printf("请输入录入通讯录的客户电话:");
    scanf("%d",&cli[j].number);
    j++;
    printf("是否继续录入(y/n)");
    scanf("%s",&ch);
    }
    printf("结束录入\n");
    save(j);
    show();//录入信息后自动保存和显示
}

void save(j)//保存到文件函数
{
    int m=0;
    int i=0;
    if((fp=fopen("a.txt","wb"))==NULL)//保存到a.txt文件,如有需要可自行定义
    {
        printf("文件不能打开");
        return;
    }
    for(m=0;m<j;m++)
    {
    if(fwrite(&cli[m],LEN,1,fp)!=1)
    {
        printf("保存失败");
        getchar();
    }
    else
    {
        printf("%s保存成功\n",cli[m].name);
    }
    }
    fclose(fp);
}
void show()//显示所有通讯录信息
{
    int i;
    int m=0;
    if((fp=fopen("a.txt","rb"))==NULL)
    {
        printf("文件不能打开");
        return;
    }
    while(!feof(fp))
    {
        if(fread(&cli[m],LEN,1,fp)==1)
        {
            m++;
        }
    }
    fclose(fp);
    if(m==0)
    printf("文件内没有数据");
    printf("姓名\t地址\t电话\n");
    for(i=0;i<m;i++)
    {
    printf("%s\t%s\t%d\n",cli[i].name,cli[i].addres,cli[i].number);
    }
}
void menu()//菜单函数
{
    printf("\t###########通讯录系统###########\n");
    printf("\t0.退出系统\n");
    printf("\t1.录入信息(自动保存到a.txt文件)\n");
    printf("\t2.显示所有信息\n");
    printf("\t###########通讯录系统###########\n");
}

void main()
{
    int n;
    menu();
    scanf("%d",&n);
    if(n>0)
    {
    while(n)
    {
        switch(n)
        {
        case 1:input();break;
        case 2:show();break;
        default:printf("输入错误,请输入0-2的操作编号");break;
        }
    scanf("%d",&n);
    }
    }
    else if(n==0)
        exit(0);

}
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值