数据结构通讯录系统源代码Word格式.docx

上传人:b****3 文档编号:7305076 上传时间:2023-05-08 格式:DOCX 页数:20 大小:18.46KB
下载 相关 举报
数据结构通讯录系统源代码Word格式.docx_第1页
第1页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第2页
第2页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第3页
第3页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第4页
第4页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第5页
第5页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第6页
第6页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第7页
第7页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第8页
第8页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第9页
第9页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第10页
第10页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第11页
第11页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第12页
第12页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第13页
第13页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第14页
第14页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第15页
第15页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第16页
第16页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第17页
第17页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第18页
第18页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第19页
第19页 / 共20页
数据结构通讯录系统源代码Word格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构通讯录系统源代码Word格式.docx

《数据结构通讯录系统源代码Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构通讯录系统源代码Word格式.docx(20页珍藏版)》请在冰点文库上搜索。

数据结构通讯录系统源代码Word格式.docx

k=k->

size++;

returnsize;

/*返回其大小*/

voidDataWrite(SLNode*head)

inti;

FILE*fp;

fp=fopen("

Addresslist.dat"

"

wb+"

//打开文件,覆盖以前的文件

for(i=0;

i<

Length(head);

i++)

fwrite(p,sizeof(SLNode),1,fp);

p=p->

fclose(fp);

//关闭文件

voidLoad(SLNode*head)/*初始化*/

SLNode*q,*p,*m;

intcount=0;

rb"

//以读的方式打开二进制文件

//rewind(fp);

if(fp==NULL)

fp=fopen("

if(fp!

=NULL)

{

printf("

通讯录打开失败!

创建新的通讯录!

}

else

创建新的通讯录失败!

exit(0);

else

q=(SLNode*)malloc(sizeof(SLNode));

while(fread(q,sizeof(SLNode),1,fp))

//fread(q,sizeof(SLNode),1,fp);

if(ferror(fp))

{

printf("

error!

break;

}

p=head;

m=(SLNode*)malloc(sizeof(SLNode));

strcpy(m->

name,q->

name);

telnum,q->

telnum);

address,q->

address);

count++;

m->

next=p->

/*将新结点插入队头结点*/

p->

next=m;

memset(q,'

\0'

sizeof(SLNode));

printf("

\t\t\t\t通讯录总联系人数:

%d\n"

Length(head));

intPrintAll(SLNode*head)/*打印所有出所有联系人信息*/

SLNode*q;

q=head->

if(q==NULL)

通讯录为空!

return-1;

for(i=0;

i<

i++)//逐个打印联系人信息

编号:

%d\t姓名:

%s\t号码:

%s\t地址:

%s\n"

i+1,q->

q=q->

return0;

voidANParam(SLNode*head)

/*在带头结点的单链表head的第i(0《i《size)个结点前插入一个存放数据元素x的结点*/

/*插入成功则返回1,失败则返回0*/

SLNode*p,*q;

q=(SLNode*)malloc(sizeof(SLNode));

/*生成新结点由指针p指示*/

请输入新联系人姓名:

"

fflush(stdin);

gets(q->

请输入新联系人的电话号码:

请输入新联系人的地址:

p=head;

q->

p->

next=q;

DataWrite(head);

//将信息以覆盖方式重新写入通讯录中

添加成功!

voidAWParam(SLNode*head,chartelnum[11],charname[10],charaddress[256])//带形参的添加函数

strcpy(q->

name,name);

telnum,telnum);

address,address);

voidDelete(SLNode*head)/*删除带头结点的单链表head的第i(1~n,n为结点个数)个结点*/

/*删除结点的元素有x带回,删除成功返回1,否则返回0*/

SLNode*p,*s;

intchoice,i,m,ret;

if(PrintAll(head))//如果通讯录为空,则无法删除,退出返回主菜单

return;

m=Length(head);

//求当前通讯录人数

请输入你要删除联系人的前面编号:

ret=scanf("

%d"

&

choice);

while(!

ret||choice>

m||choice<

1)//判断输入是否为数字,是否为,若否,则重新输入

请正确输入你要删除联系人的前面编号!

fflush(stdin);

ret=scanf("

p=head;

i=0;

//由于我们打印出来时是由1开始,所以此处定义为0

while(p->

next!

next->

i<

(choice-1))//查找所选择编号前一个结点

p=p->

i++;

s=p->

next=p->

free(s);

//将更新的数据重新写入文件中

删除成功!

voidSBName(SLNode*head)/*查找函数,如果不存在,可添加*/

intchoice;

chartelnum[11],name[10],address[256];

p=head->

请输入你要查找联系人的姓名:

gets(name);

if(!

strcmp(p->

name,name))

姓名:

%s\t电话:

p->

name,p->

telnum,p->

break;

p=p->

if(p==NULL)

错误!

所查找联系人不在通讯录,是否将该联系人添加至通讯录?

请按0确认添加,否则不添加\n"

scanf("

//判断输入是否为数字,且数字范围是1~m之间,否则重新输入

choice)

该联系人姓名:

name);

请输入该联系人的电话:

fflush(stdin);

gets(telnum);

请输入该联系人的地址:

gets(address);

AWParam(head,telnum,name,address);

voidSBTell(SLNode*head)/*查找函数,如果不存在,可添加*/

chartelnum[20],name[10],address[256];

请输入你要查找联系人的号码:

gets(telnum);

telnum,telnum))

该联系人电话号码:

telnum);

请输入该联系人的姓名:

gets(name);

voidDestroy(SLNode**head)

/*因为单链表的结点空间是在程序运行中申请的,而系统只负责自动收回程序中静态分配的内存空间,所以在程序退出前释放动态申请的内存空间*/

SLNode*p,*p1;

p=*head;

while(p!

=NULL)/*通过循环释放所有的动态开辟的内存空间*/

p1=p;

free(p1);

*head=NULL;

voidAlter(SLNode*head)

intchoice,num,i,m;

if(PrintAll(head))//通讯录为空无法进行修改,退出返回主菜单

请输入你要更改的信息人的前面编号:

//获取当前通讯录人数

i=scanf("

num);

//判断是否输入数字

while(!

i||num>

m||num<

1)//判断输入是否为数字,若否,则重新输入

请正确输入你要更改的信息人的前面编号!

//p指向第一个联系人

for(i=0;

if((i+1)==num)

lable1:

请输入你要更改的信息:

1、姓名\t2、号码\t3、地址\t0、全部修改\n"

m=scanf("

while(!

m||choice>

3||choice<

0)//判断输入是否为数字,若否,则重新输入

请正确输入选项!

fflush(stdin);

m=scanf("

switch(choice)

case1:

请输入新姓名:

gets(p->

case2:

请输入新号码:

case3:

请输入新地址:

default:

以下是刚更改的信息,请确认:

是否继续更改该联系人?

继续修改请按0,否则保存修改!

输入:

scanf("

if(!

gotolable1;

else

DataWrite(head);

//将修改后的文件全部写入通讯录中

intmenu()

intret,i;

\t\t******************通讯录******************\n\n"

\t\t1、查找联系人\t"

2、添加联系人\n\n"

\t\t3、显示所有联系人信息\t"

4、删除联系人\n\n"

\t\t5、更改联系人信息\t"

6、退出\n\n"

\t\t**************请选择相应功能**************\n"

\t\t输入对应功能编号:

ret);

i||ret>

6||ret<

1)//判断输入是否为数字,若否,则重新输入

\t\t请正确输入功能编号!

i=scanf("

returnret;

voidDeleteAll(SLNode*head)

//已创建新的文件覆盖以前的文件,一达到清除目的

Destroy(&

head);

Initiate(&

//初始化单链表,创建新的头结点

清除成功!

测试主函数:

#include<

stdio.h>

stdlib.h>

string.h>

windows.h>

#include"

LinkList.h"

intmain()

intchoice=0,ret;

SLNode*head;

chars[500]="

\t\t**谢谢使用**\n"

a[]="

\t\t华中农业大学楚天学院通讯录系统\n"

;

system("

title华中农业大学楚天学院通讯录系统"

color30"

while(choice<

strlen(a))

putchar(a[choice]);

Sleep(80);

choice++;

Load(head);

while

(1)

switch(menu())

case1:

system("

cls"

if(head->

next==NULL)

break;

请选择查找方式:

1、姓名\t2、电话号码\t3、退出\n"

ret=scanf("

while(!

3||choice<

1)

{

printf("

输入有误!

请正确选择查找方式!

fflush(stdin);

ret=scanf("

}

switch(choice)

case1:

SBName(head);

break;

case2:

SBTell(head);

case3:

default:

case2:

ANParam(head);

case3:

PrintAll(head);

case4:

请选择删除方式:

1、清空通讯录\t2、删除指定联系人\n"

ret=scanf("

ret||choice<

1||choice>

2)

输入错误!

请正确选择删除方式!

if(choice==1)

DeleteAll(head);

elseif(choice==2)

Delete(head);

case5:

Alter(head);

case6:

choice=0;

while(choice<

strlen(s))

putchar(s[choice]);

Sleep(80);

choice++;

default:

请重新输入!

//清除动态申请空间

pause"

return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2