通讯录管理系统071何荣贤.docx

上传人:b****3 文档编号:3750855 上传时间:2022-11-25 格式:DOCX 页数:18 大小:377.33KB
下载 相关 举报
通讯录管理系统071何荣贤.docx_第1页
第1页 / 共18页
通讯录管理系统071何荣贤.docx_第2页
第2页 / 共18页
通讯录管理系统071何荣贤.docx_第3页
第3页 / 共18页
通讯录管理系统071何荣贤.docx_第4页
第4页 / 共18页
通讯录管理系统071何荣贤.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

通讯录管理系统071何荣贤.docx

《通讯录管理系统071何荣贤.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统071何荣贤.docx(18页珍藏版)》请在冰豆网上搜索。

通讯录管理系统071何荣贤.docx

通讯录管理系统071何荣贤

《数据结构》实验报告

题目:

实验七通讯录管理系统

学号:

2010810071

班级:

计算1013

日期:

2011.12.13

姓名:

何荣贤

指导老师:

杨艳华

一、实验目的:

本次的实验目的在于使读者深入了解查找表的特性,掌握各种查找方法,以便在实际问题背景下灵活运用他们;并且回顾文件操作的使用。

二、实验环境:

本次试验在VC++环境下调试。

三、实验内容与完成情况:

1.问题描述

编程完成通讯录的一般性管理工作,如通讯录中记录的增加、修改、查找、删除、输出等功能。

2.基本要求

一个完整的系统应具有以下功能:

⑴每个记录包含姓名、电话号码、住址等个人信息;

⑵将建立的通讯录以磁盘文件的形式存储,所有的通讯录管理活动均以文件操作的方式进

行;

⑶在查找通讯录中的记录时,以记录的“姓名”为查找关键字进行查找。

3.程序代码

#include

#include

#include

#include

#defineheader1"|---------------------电话簿-----------------------|\n"

#defineheader2"|num|name|phonenum|address|\n"

#defineheader3"|-------|----------|---------------|---------------|\n"

#defineend"|----------------------结束------------------------|"

#defineN100

typedefstructtele

{

intnum;

charname[10];

charphonenum[15];

charaddress[20];

}telebook;

voidmenu()

{

system("cls");

printf("\n\n\n");/*输出主菜单*/

printf("\t\t|*****欢迎进入电话薄管理系统!

*****|\n");

printf("\t\t|********************menu********************|\n");

printf("\t\t||\n");

printf("\t\t|1增加2读取|\n");

printf("\t\t||\n");

printf("\t\t|3查找4修改|\n");

printf("\t\t||\n");

printf("\t\t|5删除6排序|\n");

printf("\t\t||\n");

printf("\t\t|0退出|\n");

printf("\t\t|********************************************|\n");

}

voidprintheader()/*输出菜单头*/

{

printf(header1);

printf(header2);

printf(header3);

}

intadd(telebooktemp[])

{

inti;intm=0;

FILE*fp;

system("cls");

if((fp=fopen("D:

\\rex.txt","ab+"))==NULL)

{

printf("打开文件有误!

");

exit(0);

}

printf("每次输入一百个人的信息!

\n");

printf("如果输入0退出输入!

\n");

for(i=m;i<(100+m);i++)

{

printf("num:

");

scanf("%d",&temp[i].num);

if(temp[i].num==0)

break;

printf("name:

");

scanf("%s",&temp[i].name);

printf("phonenum:

");

scanf("%s",&temp[i].phonenum);

printf("address:

");

scanf("%s",&temp[i].address);

fwrite(&temp[i],sizeof(structtele),1,fp);

}

m+=100;

fclose(fp);

system("cls");

return0;

}

intread(telebooktemp[])

{

intcount,i;

FILE*fp;

system("cls");

if((fp=fopen("D:

\\rex.txt","ab+"))==NULL)

{

printf("打开文件有误!

");

exit(0);

}

printheader();

for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。

*/

if(count==0)

printf("\n\n\n\t\t文件内没有信息!

\n\n\n");

for(i=0;i

printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);

printf(end);

fclose(fp);

return0;

}

intfind1(telebooktemp[])/*电话号码查询*/

{

inti,count,t=0;charn[20];

FILE*fp;

system("cls");

read(temp);

printf("\n");

if((fp=fopen("D:

\\rex.txt","ab+"))==NULL)

{

printf("打开文件有误!

");

exit(0);

}

printf("输入要查找的号码:

");

scanf("%s",n);

printf("\n\n");

printheader();

getchar();

for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。

*/

for(i=0;i

{

if(strcmp(temp[i].phonenum,n)==0)

{

t=1;

printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);

/*输出查询到的信息*/

}

}

if(t==0)

{

printf("\a\n\n\t\t没有要查找的信息..........!

\n\n\n");

printf(end);

return0;

}

printf(end);

fclose(fp);

return0;

}

intfind2(telebooktemp[])/*姓名查询*/

{

inti,count,t=0;

chara[20];

FILE*fp;

system("cls");

read(temp);

printf("\n");

if((fp=fopen("D:

\\rex.txt","ab+"))==NULL)

{

printf("打开文件有误!

");

exit(0);

}

printf("输入要查找的名字:

");

scanf("%s",a);

getchar();

printf("\n\n");

printheader();

for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。

*/

for(i=0;i

{

if(strcmp(temp[i].name,a)==0)

{

t=1;

printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);

/*输出查询到的信息*/

}

}

if(t==0)

{

printf("\a\n\n\t\t没有要查找的信息..............!

\n\n\n");

printf(end);

return0;

}

printf(end);

fclose(fp);

return0;

}

voidfind()

{

intn;

telebookmessage1[20];

system("cls");

printf("\n");

while

(1)

{/*输出查找函数主菜单*/

printf("\n\n\n\n");

printf("|-------查找功能------|\n");

printf("||\n");

printf("|1按电话号码查找|\n");

printf("||\n");

printf("|2按姓名查找|\n");

printf("||\n");

printf("|0退出|\n");

printf("||\n");

printf("|---------结束--------|\n");

printf("输入您的查找方式:

");

scanf("%d",&n);

switch(n)

{

case1:

find1(message1);break;

case2:

find2(message1);break;

case0:

return;break;

}

getchar();

system("cls");

}

}

intchange(telebooktemp[])

{

inti,count,t=0;

FILE*fp;

structtelene[10];

system("cls");

read(temp);

printf("\n");

printf("按序号修改\n");

if((fp=fopen("D:

\\rex.txt","ab+"))==NULL)

{

printf("打开文件有误!

");

exit(0);

}

printf("输入新内容:

\n");

printf("num:

");

scanf("%d",&ne[0].num);

printf("name:

");

scanf("%s",&ne[0].name);

printf("phonenum:

");

scanf("%s",&ne[0].phonenum);

printf("address:

");

scanf("%s",&ne[0].address);

for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。

*/

fclose(fp);

for(i=0;i

{

if(temp[i].num==ne[0].num)/*用新信息替换*/

{

t=1;

temp[i].num=ne[0].num;

strcpy(temp[i].name,ne[0].name);

strcpy(temp[i].phonenum,ne[0].phonenum);

strcpy(temp[i].address,ne[0].address);

getchar();

printf("\n\n\t\t\t修改成功..........!

");

}

}

if(t==0)

{

getchar();

printf("\n\n\t\t\t没有要修改的信息.........!

");

return0;

}

fp=fopen("D:

\\rex.txt","wb+");

for(i=0;i

fwrite(&temp[i],sizeof(structtele),1,fp);

fclose(fp);

return0;

}

intdel(telebooktemp[])

{

inti,j,count,t=0;charname1[20];

FILE*fp;

system("cls");

read(temp);

printf("\n");

if((fp=fopen("D:

\\rex.txt","ab+"))==NULL)

{

printf("打开文件有误!

");

exit(0);

}

printf("输入要删除的人名:

");

scanf("%s",name1);

for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。

*/

fclose(fp);

for(i=0;i

{

if(strcmp(temp[i].name,name1)==0)

{

for(j=i;j

{/*删除找到的信息*/

t=1;

temp[j].num=temp[j+1].num;

strcpy(temp[j].name,temp[j+1].name);

strcpy(temp[j].phonenum,temp[j+1].phonenum);

strcpy(temp[j].address,temp[j+1].address);

}

count--;

printf("\n\n\n\t\t\t删除成功..................!

");

}

}

if(t==0)

{

getchar();

printf("\a\n\n\n\t\t\t没有要删除的信息..................!

");

return0;

}

getchar();

fp=fopen("D:

\\rex.txt","wb+");

for(i=0;i

fwrite(&temp[i],sizeof(structtele),1,fp);

fclose(fp);

return0;

}

intpaixu(telebooktemp[])

{

inti,j,count;

telebooktmp;

FILE*fp;

system("cls");

read(temp);

printf("\n");

fp=fopen("D:

\\rex.txt","ab+");

for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。

*/

fclose(fp);

for(i=0;i

{

for(j=count-2;j>=i;j--)

if(temp[j+1].num

{

tmp=temp[j+1];

temp[j+1]=temp[j];

temp[j]=tmp;

}

}

fp=fopen("D:

\\rex.txt","wb+");

for(i=0;i

fwrite(&temp[i],sizeof(structtele),1,fp);

fclose(fp);

read(temp);

return0;

}

voidmain()

{

telebookmessage[N];

intn;

while

(1)

{

menu();

printf("输入您的选择:

");

scanf("%d",&n);

getchar();

switch(n)

{

case1:

add(message);break;

case2:

read(message);break;

case3:

find();break;

case4:

change(message);break;

case5:

del(message);break;

case6:

paixu(message);break;

case0:

exit(0);break;

}

getchar();

}

printf("pressentercontinue...............");

}

4.结果显示:

四、实验小结及体会:

1、本实验使我能更熟练地运用文件、指针进行程序设计。

2、本实验使我更深入了解了查找表的特性,掌握了各种查找方法

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

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1