m0_73345210 2022-08-19 11:09 采纳率: 0%
浏览 33

C语言做简单的电子通讯录

#include <stdio.h>
#include <stdlib.h>
#define N 100 /假定有 100 个联系人/
struct record
{
int number;/联系人编号/
char name[20];/联系人姓名/
char postnum[30];/联系人电子邮件/
char homeaddr[60];/联系人地址/
char telephone[13];/联系人电话/
}records[N];
void input()
{
int i,count=0;//定义一个循环变量以及记录通讯录中联系人个数的变量//
char ch[2];//字符数组用来记录用户的输入//
FILE *fp;//定义指向文件的指针变量//
if((fp=fopen("records.txt","a+"))==NULL)//调用fopen函数创建一个新的文本来保存联系人信息//
{
printf("can not open!\n");
return;

/添加联系人/
for (i = 0; i < count; i++)
fwrite(&records[i],N, 1, fp);
printf("please input(y/n)");//提示用户输入//
scanf("%s", ch);
while (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)//判断用户是否需要输入//
{
printf("name:");
scanf("%s", &records[count].name);
void Add_People(char name[20])
{
for(int j=0;j<=i;j++)
if(strcmp(records[j].name,name)>0) break;
for(int n=i;n>=j;n--)
{strcpy(records[n+1].name,records[n].name);
strcpy(records[n+1].postnum,records[n].postnum);
strcpy(records[n+1].homeaddr,records[n].homeaddr);
strcpy(records[n+1].telephone,records[n].telephone);
}
i++;
strcpy(records[j].name,name);
printf("\n 请输入联系人的邮编:");
scanf("%s",records[j].postnum);
printf("\n 请输入联系人的家庭地址:");
scanf("%s",records[j].homeaddr);
printf("\n 请输入联系人的电话:");
scanf("%s",records[j].telephone);
printf("添加成功!\n");
}
/按照名字搜寻/
int Search_Name(char namestr[20])
{
int j;/不考虑同名的人/
for(j=0;j<=i;j++)
{
if(strcmp(namestr,records[j].name)==0)
break;
}
return j; /返回联系人在数组中的下标/
}
/删除联系人/
void DeletePeo()
{
char nametemp[20];
int tp,n;
if(i<1)
{
printf("\n 没有删除的记录\n");
return;
}
printf("请输入您要查找的联系人的姓名:");
scanf("%s",nametemp);
n=Search_Name(nametemp);
if(n==-1)
{
printf("查找失败!\n");
return;
}
printf("确认要删除吗?确认按 1,否则按任意键返回上一级菜单!\n");
scanf("%d",&tp);
if(tp==1)
{
int j;
for(j=n+1;j<=i;j++)
{
strcpy(records[j-1].name,records[j].name);
strcpy(records[j-1].postnum,records[j].postnum);
strcpy(records[j-1].homeaddr,records[j].homeaddr);
strcpy(records[j-1].telephone,records[j].telephone);
}
i--;/联系人总数减 1/
}

/修改联系人信息/
void Change(char name[20])
{
int n,m;
char string[60];
n=Search_Name(name);
if(n>i) {printf("您查找的联系人不存在!\n");return;}
Data_Show(n);
printf("请选择你要修改的资料:\n1->修改联系人姓名;\n2->修改联系人邮编;\n3->修改联系人地址;\n4->修改联系人电话;\n5->退出!\n\n");
scanf("%d",&m);
while(m!=5)
{
switch(m)
{
case 1: printf("请输入新的姓名:");
scanf("%s",string);
strcpy(records[n].name,string);
break;
case 2: printf("请输入新的邮编:");
scanf("%s",string);
strcpy(records[n].postnum,string);
break;
case 3: printf("请输入新的地址:");
scanf("%s",string);
strcpy(records[n].homeaddr,string);
break;
case 4: printf("请输入新的电话:");
scanf("%s",string);
strcpy(records[n].telephone,string);
break;
case 5:return;
}
printf("请继续选择你要修改的资料:\n1->修改联系人姓名;\n2->修改联系人邮编;\n3->修改联系人地址;\n4->修改联系人电话;\n5->退出!\n\n");
scanf("%d",&m);
}
}

void main()
{
int ch,m,n,j;
char tp,nametemp[20];
Data_Up();/把文件数据导入内存/
i--;
printf(" 欢迎使用通信录:\n");
printf("请选择您需要的操作:\n");
printf("1->修改;\n2->查看所有的联系人;\n3->删除联系人;\n4->查询联系人;\n5->添加联系人;\n6->保存;\n7->退出\n\n");
scanf("%d",&ch);
while(ch!=7)
{
switch(ch)
{
case 1:
printf("请输入要修改的联系人姓名:");
scanf("%s",nametemp);
Change(nametemp);
break;
case 2: for( m=0;m<=i;m++)Data_Show(m); break;
case 3:
DeletePeo();break;
case 4:
printf("请输入你要查询的人的姓名:");
scanf("%s",nametemp);
n=Search_Name(nametemp);
if(n>i) printf("没有您要找的联系人!\n");
else Data_Show(n);
break;
case 5:
printf("请输入待添加的联系人的姓名:");
scanf("%s",nametemp);
Add_People(nametemp);break;
case 6:
printf("保存数据吗?确定按 8 键,否则按任意键选择其他操作!\n");
scanf("%d",&tp);
if(tp==8) Data_Save();
break;
case 7:return ;
}
printf("1->修改;\n2->查看所有的联系人;\n3->删除联系人;\n4->查询联系人;\n5->添加联系人;\n6->保存;\n7->退出\n");
scanf("%d",&ch);
}

  • 写回答

1条回答 默认 最新

  • .魚肉 2022-08-19 12:02
    关注

    你这不都写好了吗?可以看一下这个https://blog.csdn.net/weixin_64811333/article/details/125333242

    评论

报告相同问题?

问题事件

  • 创建了问题 8月19日

悬赏问题

  • ¥25 主成分分析中的第一第二主成分分别代表哪些参数
  • ¥15 oracle数据库查询语句问题
  • ¥15 有没有c++绘制算法的佬们吗救孩一下
  • ¥15 android 蓝牙闪退
  • ¥15 绝缘子污秽comsol仿真参数
  • ¥15 Fatal error in Process MEMORY
  • ¥15 labelme生成的json有乱码?
  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时