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

用单链表编写简单的通讯录

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

我来回答

1个回答

热心网友 时间:2023-11-05 19:28

声明: 非原创

/*个人通讯录*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct dataWab{
char name[8];
char telephone[16];
char mobile[16];
char address[16];
char unit[16];
struct dataWab *nextPtr;
}; /*自引用结构,用作通讯录的数据结构*/

typedef struct dataWab DATAWAB;
typedef DATAWAB *DATAWABPTR;
void insertWab(DATAWABPTR*,char[],char[],char[],char[],char[]); /*插入函数*/
void menuWab(void); /*菜单函数*/
void printWab(DATAWABPTR); /*打印所有记录函数*/
void seekWab(DATAWABPTR,char[]); /*查找函数*/
void deleteWab(DATAWABPTR,char[]); /*删除函数*/
void modifyWab(DATAWABPTR,char[]); /*修改函数*/
int test(DATAWABPTR); /*测试函数,测试通讯录内是否有记录*/
void printone(DATAWABPTR); /*打印单条记录函数*/
int controlWab(void); /*程序分支控制函数*/

int main()
{
DATAWABPTR startPtr=NULL;
DATAWABPTR tempPtr;
FILE *fileWab;

char menu; /*菜单操作控制变量*/
char insert; /*插入确认控制变量*/
char modifyName[8]; /*查找时的临时姓名存储*/
char deleteName[8]; /*删除时的临时姓名存储*/
char tempName[8]; /*临时姓名存储*/
char tempTelephone[16]; /*临时电话存储*/
char tempMobile[16]; /*临时手机存储*/
char tempAddress[16]; /*临时地址存储*/
char tempUnit[16]; /*临时单位存储*/
char seekName[8]; /*查找时的临时姓名存储*/

if(!(fileWab=fopen("wab.dat","rb")))
return 0;
tempPtr=(DATAWABPTR)malloc(sizeof(DATAWAB));
while(fread(tempPtr,sizeof(DATAWAB),1,fileWab)==1){
tempPtr->nextPtr=startPtr;
startPtr=tempPtr;
tempPtr=(DATAWABPTR)malloc(sizeof(DATAWAB));
}
fclose(fileWab);

puts("\n\n\t\t欢迎使用个人通讯录1.0\n");
menuWab();
menu=getch();

while(menu!='6'){

switch(menu){

case '1':
printWab(startPtr);
break;
case '2':
while(controlWab()){
printf("\n查找姓名:\n#>");
scanf("%s",seekName);
seekWab(startPtr,seekName);
}
break;
case '3':
while(controlWab()){

puts("\n录入个人信息\n");
printf("姓名:");
scanf("%s",tempName);
printf("\n电话:");
scanf("%s",tempTelephone);
printf("\n手机:");
scanf("%s",tempMobile);
printf("\n地址:");
scanf("%s",tempAddress);
printf("\n单位:");
scanf("%s",tempUnit);
printf("录入正确请按 1 \n#>");
insert=getch();
if(insert=='1')
insertWab(&startPtr,tempName,tempTelephone,tempMobile,
tempAddress,tempUnit);
}
break;
case '4':
while(controlWab()){
printf("\n删除姓名\n#>");
scanf("%s",deleteName);
deleteWab(startPtr,deleteName);
}
break;
case '5':
while(controlWab()){
printf("\n修改姓名\n#>");
scanf("%s",modifyName);
modifyWab(startPtr,modifyName);
}
break;
default:
puts("\n\n输入选项错误,请重新输入\n");
break;
}

menuWab();
menu=getch();
}
if((fileWab=fopen("wab.dat","wb"))==NULL)
return 0;
while(startPtr!=NULL){
fwrite(startPtr,sizeof(DATAWAB),1,fileWab);
startPtr=startPtr->nextPtr;
}
puts("\n\n\t\t谢谢使用个人通讯录1.0,再见\n");
}

void menuWab(void) /*菜单函数*/
{
puts("\t\t\t主菜单");
puts("**********************************************************");
puts("**********************************************************");
puts("**\t<<-1->>所有记录\t\t<<-2->>查找记录\t\t**");
puts("**\t<<-3->>增加记录\t\t<<-4->>删除记录\t\t**");
puts("**\t<<-5->>修改记录\t\t<<-6->>退出程序\t\t**");
puts("**********************************************************");
puts("**********************************************************");
puts("\n请选择 1-6");
printf("#>");
}

void insertWab(DATAWABPTR *tempPtr,char temp2Name[],char temp2Telephone[],
char temp2Mobile[],char temp2Address[],char temp2Unit[])
/*插入函数*/

{
DATAWABPTR newPtr;
newPtr=(DATAWABPTR)malloc(sizeof(DATAWAB));
strcpy(newPtr->name,temp2Name);
strcpy(newPtr->telephone,temp2Telephone);
strcpy(newPtr->mobile,temp2Mobile);
strcpy(newPtr->address,temp2Address);
strcpy(newPtr->unit,temp2Unit);

newPtr->nextPtr=*tempPtr;
*tempPtr=newPtr;
}

void printWab(DATAWABPTR printPtr) /*打印函数*/
{
if(!(test(printPtr))){
printf("\n%8s%16s%16s%16s%16s\n","姓名","电话","手机","住址","单位");

while(printPtr!=NULL){
printf("%8s%16s%16s%16s%16s\n",printPtr->name,printPtr->telephone,
printPtr->mobile,printPtr->address,printPtr->unit);
printPtr=printPtr->nextPtr;
}
}
}

void seekWab(DATAWABPTR seekPtr,char tempName[])

/*查找函数*/
{
if(!(test(seekPtr))){
while(seekPtr!=NULL){

if(!(strcmp(tempName,seekPtr->name))){
printone(seekPtr);
seekPtr=seekPtr->nextPtr;
}
else
seekPtr=seekPtr->nextPtr;
}
}
}

void deleteWab(DATAWABPTR deletePtr,char deleteName[])
/*删除函数*/
{
DATAWABPTR tempPtr,forePtr;
forePtr=deletePtr;
tempPtr=deletePtr->nextPtr;
while(tempPtr!=NULL){
if(!(strcmp(tempPtr->name,deleteName))){
forePtr->nextPtr=tempPtr->nextPtr;
free(tempPtr);
break;
}
else{
forePtr=tempPtr;
tempPtr=tempPtr->nextPtr;
}
}
}

void modifyWab(DATAWABPTR modifyPtr,char modifyName[])
/*修改函数*/
{
if(!(test(modifyPtr))){
while(modifyPtr!=NULL){
if(!(strcmp(modifyName,modifyPtr->name))){
printf("请输入新姓名:");
scanf("%s",modifyPtr->name);
printf("\n请输入新电话:");
scanf("%s",modifyPtr->telephone);
printf("\n请输入新手机:");
scanf("%s",modifyPtr->mobile);
printf("\n请输入新地址:");
scanf("%s",modifyPtr->address);
printf("\n请输入新单位:");
scanf("%s",modifyPtr->unit);
break;
}
else
modifyPtr=modifyPtr->nextPtr;
}
}
}

int test(DATAWABPTR testPtr)
{
if(testPtr==NULL)
puts("通讯录内没有任何记录");
else
return 0;
return 1;
}

void printone(DATAWABPTR printone)
{
printf("\n%8s%16s%16s%16s%16s\n","姓名","电话","手机","住址","单位");
printf("%8s",printone->name);
printf("%16s",printone->telephone);
printf("%16s",printone->mobile);
printf("%16s",printone->address);
printf("%16s\n",printone->unit);
}

int controlWab(void)
{
puts("继续执行请按 1");
if(getch()=='1')
return 1;
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
倩碧黄油适合哪种肤质的人使用? 倩碧有哪些护肤品比较受女性青睐? 倩碧紧致面霜适合哪些肤质的人使用? 倩碧护肤品适合什么肤质使用? 哪些肤质的人适合使用倩碧卓越润肤乳? 学校发的移动卡,套餐38的送一年宽带 现在卡不想用了,貌似宽带合约没到期... ...我居住浙江,有一个广西的移动卡,移动卡上还捆绑有宽带 我现在在外地我想注销移动卡或者联通卡怎么注销,回不到办卡的地方。 上海最建议去三个景点 为什么叫北京鸭篮球 QQ中的各个业务怎么开啊! 我在医院做的体检,说我的转氨酶60~65,算高吗,会传染吗?对个人健康有影响吗?高人请指点,万分感谢!!! 一个c++程序。用链表做一个学生通讯录。包括子函数,增加通讯录,删除通讯录,查询通讯录,显示全部通 C语言:用链表写通讯录 用链表进行通讯录设计 谷丙转氨酶65算高吗?怎么降低 车载导航与手机连接还需要下什么? 利用链表设计一个通讯录 用C语言建立一个链表实现一个通讯录, 谷丙转氨酶65,肝功能很异常吗? 丙氨酸氨基转移酶是65,还严重啊… 怎么用C语言建立一个链表实现一个通讯录? HFSS仿真过程中停在那里不动是什么原因 安装HFSS 13.0出现问题怎样解决 16G内存,3.2GHZ的I5CPU的台式机XP系统,ansys13.0,计算46万节点,为什么还会出现内存不足?该如何解决? 咸黄瓜的腌制方法是什么? ansys计算内存不足,怎样有好的方法可以解决呢,简单的更好? 常见,女生选择穿人字拖去约会,约会选择穿人字拖有什么好处呢? 卡斯罗犬打猎物怎么样? 三星手机为什么搜索不到蓝牙耳机 C语言数据结构:链表的应用--通讯录管理 今天去无偿献血化验结果说转氨酶偏高达到65了请问这是甚么导致的? C++求用简单链表写一个通讯录管理,要求可以添加、查看、查询、删除 c语言用链表建立通讯录 要求1.能建立,修改和增删学生通讯录 2.能够按多种方式进 您好我家孩子19岁男孩转氨酶高出65,怎么办?怎么引发的 怎么下载车载导航 c语言双向链表通讯录? 我肝功检查转氨酶65,算不算正常?这会传染吗? 用链表编写通讯录 C语言:用链表做通讯录,运行之后发现我只能储存一个联系人 数据结构制作通讯录建立单链表,插入删除,等操作? 利用单向链表存储结构实现同学录的建立;通讯者信息的插入、查询、修改和删除;通讯录链表的输出功能。 C语言数据结构单链表实现通讯录 一周岁的宝宝会做哪些事情? 求修改C语言程序 题目要求 利用链表写一个简单的通讯录,开始输入人名字、电话。 能够进行查找 就行了。 肚脐眼流臭水是怎么回事啊 怎么办 肚脐眼流臭水请问是怎么回事? “肚脐眼流臭水是怎么回事啊” 看到你也有提问了这个 解决了吗 我也遇到了这个情况 怎么办 created by powercreator在浏览器中播放视频突然不能播放了,求大神指点是什么原因? jquery语言 鼠标点左面图片上的热区 就在右边分别显示不同的文字。在线高分等答案!