永发信息网

用C语言编写一个通讯录管理程序

答案:2  悬赏:10  手机版
解决时间 2021-07-17 04:08

通讯录中的每个数据记录应包括以下内容:序号,姓名,电话,地址等内容。要求实现如下功能:
1.能够显示所有的已录通讯录
2.能够实现新记录的录入
3.能够实现任何一条记录的删除
4.实现任意一条记录的修改
5.可以根据姓名,电话或地址查询相关信息
6.系统的退出

要求:至少二百行

最佳答案

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


#define Node struct node


Node
{
char szName[20];
char szPhoneNum[12];
Node *next;
};
Node *strpHead;
Node *strpCurrent;


void HandleChoice_f(int );
void AddRecord_f();
void InsertNode_f(Node *);
Node *InsertPoint_f(char *);
void MakeNewHead_f(Node *);
void AddToEnd_f(Node *);
void MoveToEnd_f();
void DisplayList_f();
void DeleteRecord_f();
void DelHead_f();
void DelEnd_f(Node *);
void DelMid_f(Node *);
int VerifyDel_f();
void DelNode_f(Node *);
void DelList_f();
void SearchByName_f();
void WriteFile_f();
void LoadFile_f();
void Help_f();


int main()
{
int nChoice;
printf( "Welcome to PhoneBook 1.0 for dos and freedos\n");
printf( "Press Enter To Continue\n");
system("pause");
system("cls");


strpHead = NULL;
LoadFile_f();
do
{
printf( "1 - Add record\n");
printf( "2 - Display all records\n");
printf( "3 - Search for friend by name\n");
printf( "4 - Delete record\n");
printf( "5 - Help\n");
printf( "6 - Exit program\n");
printf( "Enter choice: ");
scanf("%d", & nChoice);
HandleChoice_f(nChoice);
} while(nChoice != 6);
return 0;
}

void HandleChoice_f(int nChoice)
{
switch(nChoice)
{
case 1:
AddRecord_f();
break;
case 2:
DisplayList_f();
break;
case 3:
SearchByName_f();
break;
case 4:
DeleteRecord_f();
break;
case 5:
Help_f();
break;
case 6:
WriteFile_f();
if(strpHead != NULL)
{
DelList_f();
}
break;
default :
printf("Invalid choice\n");
break;
}
}

void AddRecord_f()
{
Node *strpNew;
strpNew=(Node *)malloc(sizeof(Node));


getchar();
printf( "Name: ");
gets(strpNew->szName);
printf( "Phone Number: ");
gets(strpNew->szPhoneNum);
InsertNode_f(strpNew);
system("cls");
}

void InsertNode_f(Node *strpNew)
{
Node *strpFront;
Node *strpBack;
system("cls");
if(strpHead == NULL)
{
strpNew->next = NULL;
strpHead = strpNew;
}
else
{
if(strcmp(strpNew->szName, strpHead->szName) < 0)
{
MakeNewHead_f(strpNew);
}
else
{
strpCurrent = InsertPoint_f(strpNew->szName);
strpFront = strpCurrent;
strpBack = strpCurrent->next;
if(strpBack == NULL)
{
AddToEnd_f(strpNew);
}
else
{
strpFront->next = strpNew;
strpNew->next = strpBack;
}
}
}
}


Node *InsertPoint_f(char *szName)
{
char szTempName[20];
Node *strpTemp;
int nTemp;
if(strpHead->next != NULL)
{
strpCurrent = strpHead;
strpTemp = strpCurrent->next;
strcpy(szTempName, strpTemp->szName);

nTemp = strcmp(szName,szTempName);
while((nTemp > 0) && (strpCurrent->next !=NULL))
{
strpCurrent = strpTemp;

if(strpCurrent->next != NULL)
{
strpTemp = strpCurrent->next;
strcpy(szTempName, strpTemp->szName);
nTemp = strcmp(szName,szTempName);
}
}
}
else
{
strpCurrent = strpHead;
}
return(strpCurrent);
}



void MakeNewHead_f(Node*strpNew)
{
Node *strpTemp;
strpTemp = strpHead;
strpNew->next = strpTemp;
strpHead = strpNew;
}


void AddToEnd_f(Node *strpNew)
{
strpNew->next = NULL;
MoveToEnd_f();
strpCurrent->next = strpNew;
}

void MoveToEnd_f()
{
strpCurrent = strpHead;
while(strpCurrent->next != NULL)
{
strpCurrent = strpCurrent->next;
}
}

全部回答
是那个面的答案 稍微改一下就行了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
广州本地有哪些好的装修方面的论坛么
诛仙 任务
我空间的取消个人中心没有了,好友动态也没有
现在好用的WIN7系统,推荐下,在线等!高分求
<天鹅飞去鸟不归>可以对出一个下联吗!
帮我起个个性签名
口哨怎么才能吹响
有喉结怀孕了有没有引响?
n96的短信用USB传送到电脑上面能不能看,如果
“梓懿”是什么意思?
<急>谁邀请我开通QQ牧场呀
辽宁大连的中国移动彩铃可以几首循环播放么
最新oppo手机广SJ-M的歌曲叫什么名字
NWlink IPX/SPX/NETBIOS协议在哪下载?
从临沂去汕头的汽车票多少钱?
推荐资讯
梦幻打书出意见
齐达内、亨利、里贝里都各自姓什么
在哪里可以看到自己的QQ旋风积分?
很喜欢收集各种各类的东西,那比较适合什么样
中国象棋网.网址是什么?用手机可以上吗?
我种了颗枫树~第六天结了一个果实。。第七天
夏天为什么总会感到疲劳?
怎么才能改掉懒的毛病?
QQ拼音的心符号
问道神秘多长时间刷一次?
民工在京讨薪
双胞胎的妈妈是不是有两个肚脐眼?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?