C语言实现通讯录.docx
- 文档编号:8161662
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:12
- 大小:18.10KB
C语言实现通讯录.docx
《C语言实现通讯录.docx》由会员分享,可在线阅读,更多相关《C语言实现通讯录.docx(12页珍藏版)》请在冰豆网上搜索。
C语言实现通讯录
C语言实现通讯录
作者:
clealruo
Email:
tolsw@
运行环境:
Windows7+VC6.0
代码:
//*************************************************************************************
//* 程 序 名:
简易通讯录管理系统 *
//* 作 者:
clearluo
//* email :
tolsw@ *
//* 编制时间:
2011年11月22日—2011年11月25日 *
//* 主要功能:
实现通讯录的姓名、性别、电话、城市、QQ 相关功能。
*
//* 修改时间:
2011年11月26日 *
//*************************************************************************************
#include
#include
#include
#include
#define LEN sizeof(struct member)
FILE *fp;
int numBianhao=0; //全局变量,用于控制通讯录编号
typedef struct member
{
int num; //编号
char name[10]; //姓名
char sex[6]; //性别
char tel[15]; //电话
char city[10]; //城市
char qq[13]; //QQ号码
struct member *next;
}Node;
void jieEnter() //接收单个字符时,判断回车符前是否有其它字符,如有接收
{
char ch;
ch=getchar();
while(ch!
=10)
{
ch=getchar();
}
}
//************************************************************************************
void outTxl(Node *head) //写入文件
{
Node *p1;
fp=fopen("txl.txt","w");
p1=head->next;
while(p1!
=NULL)
{
fprintf(fp,"%d %s %s %s %s %s\n",p1->num,p1->name,p1->sex,p1->tel,p1->city,p1->qq);
p1=p1->next;
}
fclose(fp);
}
Node *inTxl() //读取文件
{
numBianhao=0;
fp=fopen("txl.txt","r");
Node *head, *p1, *p2, *z;
head=(Node *)malloc(LEN);
p1=(Node *)malloc(LEN);
head->next=p1;
p2=head;
while(fscanf(fp,"%d %s %s %s %s %s\n",&p1->num,p1->name,p1->sex,p1->tel,p1->city,p1->qq)!
=EOF)
{
numBianhao++;
p2=(Node *)malloc(LEN);
p1->next=p2;
z=p1;
p1=p2;
p2=z;
}
p2->next=NULL;
fclose(fp);
return head;
}
//**************************************************************************************
//通讯录的创建
void printCreat()
{
printf(" \n");
printf("\t\t$$=============================================$$\n");
printf("\t\t|| ||\n");
printf("\t\t|| 创 建 新 的 通 讯 录 ||\n");
printf("\t\t|| ||\n");
printf("\t\t$$=============================================$$\n");
printf(" \n");
}
Node *Create()
{
char x;
Node *head, *p1, *p2;
head=(Node *)malloc(LEN);
p1=p2=(Node *)malloc(LEN);
head->next=p1=p2;
head->num=numBianhao;
while
(1)
{
printCreat();
p1->num=++numBianhao;
printf("\t\t请 输 入 第 %d 条 记 录 的 信 息 !
\n",p1->num);
printf("\t\t请 输 入 姓 名:
");
scanf("%s",p1->name);
printf("\t\t请 输 入 性 别:
");
scanf("%s",p1->sex);
printf("\t\t请 输 入 电 话:
");
scanf("%s",p1->tel);
printf("\t\t请 输 入 城 市:
");
scanf("%s",p1->city);
printf("\t\t请 输 入 QQ:
");
scanf("%s",p1->qq);
printf("\t\t是 否 继 续 添 加 ?
\n\t\t继 续 添 加 输 入‘Y’,退 出 输 入‘N’");
getchar();
x=getchar();
jieEnter();
if(x=='Y'||x=='y')
{
system("CLS");
}
else
{
system("CLS");
break;
}
p2=(Node *)malloc(LEN);
p1->next=p2;
p1=p1->next;
}
p1->next=NULL;
return head;
}
//************************************************************************************
//添加通讯录
void printAdd()
{
printf(" \n");
printf("\t\t$$=============================================$$\n");
printf("\t\t|| ||\n");
printf("\t\t|| 添 加 新 的 通 讯 录 ||\n");
printf("\t\t|| ||\n");
printf("\t\t$$=============================================$$\n");
printf(" \n");
}
void Add(Node *head)
{
// fp=fopen("txl.txt","a");
Node *p1, *p2;
char x;
p1=head;
while(p1->next!
=NULL) //找到通讯录链表的尾端
{
p1=p1->next;
}
p1->next=(Node *)malloc(LEN);
p1=p1->next;
while
(1)
{
printAdd();
p1->num=++numBianhao;
printf("\t\t请 输 入 第 %d 条 记 录 的 信 息 !
\n",p1->num);
printf("\t\t请 输 入 姓 名:
");
scanf("%s",p1->name);
printf("\t\t请 输 入 性 别:
");
scanf("%s",p1->sex);
printf("\t\t请 输 入 电 话:
");
scanf("%s",p1->tel);
printf("\t\t请 输 入 城 市:
");
scanf("%s",p1->city);
printf("\t\t请 输 入 QQ:
");
scanf("%s",p1->qq);
printf("\t\t是 否 继 续 添 加 ?
\n\t\t继 续 添 加 输 入‘Y’,退 出 输 入‘N’");
getchar();
x=getchar();
jieEnter();
if(x=='Y'||x=='y')
{
system("CLS");
}
else
{
system("CLS");
break;
}
p2=(Node *)malloc(LEN);
p1->next=p2;
p1=p1->next;
}
p1->next=NULL;
// fclose(fp);
// return head;
}
//************************************************************************************
//删除通讯录
void printDelete()
{
printf(" \n");
printf("\t $$===================================================$$\n");
printf("\t || ||\n");
printf("\t || 删 除 某 人 的 记 录 ||\n");
printf("\t || ||\n");
printf("\t $$===================================================$$\n");
printf(" \n");
}
void del(Node *head,Node *d) //找到要删除的结点后删除该结点
{
Node *p,*q;
p=head;
q=d;
while(p->next!
=d)
{
p=p->next;
}
p->next=d->next;
free(q);
while(p->next!
=NULL) //删除后把后面的记录的编号减一
{
p=p->next;
p->num--;
}
numBianhao--; //编号减一
}
void Delete(Node *head)
{
Node *p1;
char name[10],x,xShanchu;
p1=head->next;
while
(1)
{
printDelete();
printf("\t 输 入 要 删 除 的 姓 名:
");
scanf("%s",name);
jieEnter();
while(p1!
=NULL)
{
if(strcmp(name,p1->name)==0)
{
printf("\t 您 要 删 除 的 是:
\n");
// printf(" \n");
printf("\t $-----------------------------------------------------$\n");
printf("\t |编号 姓名 性别 电话\t 城市\t QQ |\n");
printf("\t |-----------------------------------------------------|\n");
printf("\t | %-4d%-8s %s %-13s %-8s %-11s|\n",p1->num,p1->name,p1->sex,p1->tel,p1->city,p1->qq);
printf("\t $-----------------------------------------------------$\n");
// printf(" \n");
printf("\t 确 认 删 除‘Y’,返 回 输 入‘N’:
");
// getchar();
xShanchu=getchar();
jieEnter();
if(xShanchu=='Y'||xShanchu=='y')
{
del(head,p1);//删除
printf("\t 删 除 成 功!
\n");
}
break;
}
p1=p1->next;
}
if(p1==NULL)
{
printf("\t 没 有 找 到 此 人 的 记 录!
\n");
}
printf("\t 继 续 删 除 输 入‘Y’,退 出 输 入‘N’:
");
// getchar(); 前面已经接收了回车符,此处不能再接收了。
x=getchar();
jieEnter();
if(x=='Y'||x=='y')
{
system("CLS");
}
else
{
system("CLS");
break;
}
}
}
//************************************************************************************
//修改通讯录
void printAlter()
{
printf(" \n");
printf("\t $$===================================================$$\n");
printf("\t || ||\n");
printf("\t || 修 改 某 人 的 记 录 ||\n");
printf("\t || ||\n");
printf("\t $$===================================================$$\n");
printf(" \n");
}
void Alter(Node *head)
{
Node *p1;
char name[10],x,xShanchu;
p1=head->next;
while
(1)
{
printAlter();
printf("\t 输 入 要 修 改 的 姓 名:
");
scanf("%s",name);
jieEnter();
while(p1!
=NULL)
{
if(strcmp(name,p1->name)==0)
{
printf("\t 您 要 修 改 的 是:
\n");
// printf(" \n");
printf("\t $-----------------------------------------------------$\n");
printf("\t |编号 姓名 性别 电话\t 城市\t QQ |\n");
printf("\t |-----------------------------------------------------|\n");
printf("\t | %-4d%-8s %s %-13s %-8s %-11s|\n",p1->num,p1->name,p1->sex,p1->tel,p1->city,p1->qq);
printf("\t $-----------------------------------------------------$\n");
// printf("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 通讯录
![提示](https://static.bdocx.com/images/bang_tan.gif)