⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 通讯录管理源代码.c

📁 通讯录管理源代码
💻 C
字号:
#include <stdio.h>
#include <string.h>
struct person   /*声明一个结构体类型,包括name(姓名)、tel(电话号码)、addr(地址)*/
{
char  name[18];
char  tel[15];
char  addr[50];
};
char filename[20];   /*声明文件名*/
FILE *fp;            /*定义文件型指针变量*/
/*对各模块函数进行声明*/
void create();
void output();
void search();
void append();
void modify();
void delet();
/*主函数*/
main()
{
int m;
create();             /*调用creat(用于创建通讯簿)函数*/ 
while(1)
    {         /*输出菜单*/
    printf("\n\n添加,请按1");
    printf("\n查找,请按2");
    printf("\n修改,请按3");
    printf("\n删除,请按4");
    printf("\n输出,请按5");
    printf("\n退出,请按0\n");
    scanf("%d",&m);
    if(m>=0&&m<=5)
    { 
        switch(m)
        {
        case 1 : append();    /*调用append(用于添加通讯录条目)函数*/
            break;
        case 2 : search();    /*调用search(用于查找通讯录条目)函数*/
            break;
        case 3 : modify();    /*调用modify(用于修改通讯录条目)函数*/
            break;
        case 4 : delet();     /*调用delete(用于删除通讯录条目)函数*/
            break;
        case 5 : output();    /*调用output(用于输出通讯录条目)函数*/
            break;
        //case 0 : exit();    /*用于退出*/
        }
        printf("\n\n操作完毕,请再次选择!");
    }
    else
        printf("\n\n操作错误,请重新选择!");
    }    
}
/*以下为功能函数*/
void create()                 /*定义creat(用于创建通讯簿)函数*/
{
struct person one;
//long s1;
printf("\n 请输入通讯簿名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
  printf("\n不能建立通讯簿!");
  //exit();
}
fprintf(fp,"%-10s%-20s%-50s%\n","姓名","电话号码","住址");
printf("\n请输入姓名,电话号码及住址(以0结束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}

void output()     /*定义output(用于输出通讯录条目)函数*/
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
  printf("\n不能打开通讯簿!");
  //exit();
}
printf("\n\n%20s\n","通 讯 簿");
while(!feof(fp))
    {
    fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
    printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
    }    
fclose(fp);
}

void append()    /*定义append(用于添加通讯录条目)函数*/
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
  printf("\n不能打开通讯簿!");
  //exit();
}
printf("\n请输入添加的姓名,电话号码及住址\n");
scanf("%s%s%s\n",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
fclose(fp);
}

void search()    /*定义search(用于查找通讯录条目)函数*/
{
int k=0;
char namekey[8];
struct person one;
printf("\n请输入要查找的姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
  printf("\n不能打开通讯簿!");
  //exit();
}
while(!feof(fp))
{
    fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
    if(!strcmp(namekey,one.name))
    {
    printf("\n\n已查找到,记录为:");
    printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
    k=1;
    }
}
if(!k)
printf("\n\n对不起!通讯簿中没有此人。");
fclose(fp);
}
// 修改以前的打开方式!
void modify()   /*定义modify(用于修改通讯录条目)函数*/
{
int k=0;
long offset;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
  printf("\n不能打开通讯簿!");
  //exit();
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(strcmp(namekey,one.name))
    {
    k=1;
    break;
    }
}
if(k)
    {
    printf("\n已找到,记录为:");
    printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
    printf("\n请输入新姓名,电话号码及住址:");
    scanf("%s%s%s\n",one.name,one.tel,one.addr);
    fseek(fp,offset,SEEK_SET);
    printf("%ld",ftell(fp));
    fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
    }
else
    printf("\n对不起!通讯簿中没有此人");
fclose(fp);
}

void delet()   /*定义delet(用于删除通讯录条目)函数*/
{
int m,k=0;
long offset1;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
  printf("\n不能打开通讯簿!");
  //exit();
}
while(!feof(fp))
    {
    offset1=ftell(fp);
    fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
    if(!strcmp(namekey,one.name))
        {
        k=1;
        break;
        }
    }

if(k)
    {
    printf("\n已找到,记录为:");
    printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
    printf("\n确实要删除,按1,不删除,按0:");
    scanf("%d",&m);
    if(m)
        {
        fseek(fp,offset1,SEEK_SET);
        fprintf(fp,"%-10s%-20s%-50s%\n","","","");
        }
    }

else
    printf("\n对不起!通讯簿中没有此人");
fclose(fp);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -