问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言数据结构:链表的应用--通讯录管理

发布网友 发布时间:2022-05-13 15:38

我来回答

1个回答

热心网友 时间:2023-10-14 18:30

/* HELLO.C -- Hello, world */

#include<stdio.h>
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20]="E:\\txl.txt";
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main( )

{
int m;
creat();
while(1)
{
printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n");
printf("\n\t\t添加,请按1");
printf("\n\t\t查找,请按2");
printf("\n\t\t修改,请按3");
printf("\n\t\t删除,请按4");
printf("\n\t\t输出,请按5");
printf("\n\t\t退出,请按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\n操作完毕,请再次选择!");
}
else
printf("\n\n选择错误,请再次选择!");
}
}

/*输入模块creat( ): 创建通讯录的子函数。*/
void creat()
{
struct person one;
long s1;
/*printf("\n请输入通讯录文件名:");
scanf("%s",filename); */

if((fp=fopen(filename,"at+"))==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);
}

/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/
void 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",one.name,one.tel,one.addr);
}
fclose(fp);
}

/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
printf("\n请输入添加的姓名、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}

/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/
void 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("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}

/*修改模块modify( ):在通讯录中修改某人通讯信息的子函数*/
void modify()
{
int m,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("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:");
scanf("%s%s%s",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);
}

/*删除模块delete( ):在通讯录中删除某人通讯信息的子函数*/
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
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("\n%-10s%-18s%-50s",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);
}
}
}
}
<PIXTEL_MMI_EBOOK_2005>1###########################################################</PIXTEL_MMI_EBOOK_2005>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 用单链表编写简单的通讯录 QQ中的各个业务怎么开啊! 我在医院做的体检,说我的转氨酶60~65,算高吗,会传染吗?对个人健康有影响吗?高人请指点,万分感谢!!! 一个c++程序。用链表做一个学生通讯录。包括子函数,增加通讯录,删除通讯录,查询通讯录,显示全部通 C语言:用链表写通讯录 用链表进行通讯录设计 谷丙转氨酶65算高吗?怎么降低 车载导航与手机连接还需要下什么? 利用链表设计一个通讯录 用C语言建立一个链表实现一个通讯录, 谷丙转氨酶65,肝功能很异常吗? 丙氨酸氨基转移酶是65,还严重啊… 怎么用C语言建立一个链表实现一个通讯录? HFSS仿真过程中停在那里不动是什么原因 安装HFSS 13.0出现问题怎样解决 16G内存,3.2GHZ的I5CPU的台式机XP系统,ansys13.0,计算46万节点,为什么还会出现内存不足?该如何解决? 咸黄瓜的腌制方法是什么? ansys计算内存不足,怎样有好的方法可以解决呢,简单的更好? 常见,女生选择穿人字拖去约会,约会选择穿人字拖有什么好处呢? 卡斯罗犬打猎物怎么样? 今天去无偿献血化验结果说转氨酶偏高达到65了请问这是甚么导致的? C++求用简单链表写一个通讯录管理,要求可以添加、查看、查询、删除 c语言用链表建立通讯录 要求1.能建立,修改和增删学生通讯录 2.能够按多种方式进 您好我家孩子19岁男孩转氨酶高出65,怎么办?怎么引发的 怎么下载车载导航 c语言双向链表通讯录? 我肝功检查转氨酶65,算不算正常?这会传染吗? 用链表编写通讯录 C语言:用链表做通讯录,运行之后发现我只能储存一个联系人 数据结构制作通讯录建立单链表,插入删除,等操作? 利用单向链表存储结构实现同学录的建立;通讯者信息的插入、查询、修改和删除;通讯录链表的输出功能。 C语言数据结构单链表实现通讯录 一周岁的宝宝会做哪些事情? 求修改C语言程序 题目要求 利用链表写一个简单的通讯录,开始输入人名字、电话。 能够进行查找 就行了。 肚脐眼流臭水是怎么回事啊 怎么办 肚脐眼流臭水请问是怎么回事? “肚脐眼流臭水是怎么回事啊” 看到你也有提问了这个 解决了吗 我也遇到了这个情况 怎么办 created by powercreator在浏览器中播放视频突然不能播放了,求大神指点是什么原因? jquery语言 鼠标点左面图片上的热区 就在右边分别显示不同的文字。在线高分等答案! 一个最多可以建多少个群?一个群最多可以加多少人?一个最多加多少人?