电话号码查询系统实验报告 广发基金官网电话号码查询系统
一、 问题描述及分析
写清楚你要实现的是个什么系统,完成的都是什么功能?
实现一个电话号码查询系统,能够完成通讯链表的建立、通讯者的插入、通讯者的查询、显示所有通讯者的信息以及保存通讯录、退出程序等功能。
二、 功能模块及数据结构描述
系统划分成几个模块,几个模块之间是什么调用关系?画出系统结构图
共六个模块:1.增加信息2.显示信息3.查找号码4.清除信息5.保存信息6.退出系统
模块均被主程序调用,除主函数外其他是并列关系。
一、 主要算法流程描述及部分核心算法
主要模块的算法介绍,画出其流程图
void getin(Record* a)
{
//键盘输入各人的信息
printf("输入要添加的个数: ");
scanf("%d",&NUM_BER);
int i;
for(i=0; ielem[pp]=&(a[i]); //求得散列地址,将信息存入
H->count++;
printf("第%d个记录冲突次数为%d。 ",i+1,c); //需要显示冲突次数时输出
}
printf(" 建表完成! 此散列表容量为%d,当前表内存储的记录个数为%d. ",HASHSIZE,H->count);
}
void SearchHash1(HashTable* H,int &c)
{//在通讯录里查找姓名关键字,若查找成功,显示信息//c用来显示冲突次数
NA str;
printf(" 请输入要查找记录的姓名: ");
scanf("%s",str);
int p,pp;
p=Hash1(str);
pp=p;
while((H->elem[pp]!=NULL)&&(eq(str,H->elem[pp]->name)==-1))
pp=collision(p,c);
if(H->elem[pp]!=NULL&&eq(str,H->elem[pp]->name)==1)
{
printf(" 查找成功! 查找过程冲突次数为%d.以下是您需要要查找的信息: ",c);
printf("姓 名:%s 电话号码:%s 联系地址:%s ",H->elem[pp]->name,H->elem[pp]->tel,H->elem[pp]->add);
}
else printf(" 此人不存在,查找不成功! ");
}
void CreateHash2(HashTable* H,Record* a)
{//建表,以电话号码为关键字,建立相应的散列表,并解决相应的冲突
int i,p=-1,c,pp;
for(i=0; ielem[pp]!=NULL)
{
pp=collision(p,c);
if(ppelem[pp]=&(a[i]); //求得散列地址,将信息存入
H->count++;
printf("第%d个记录冲突次数为%d。 ",i+1,c);//需要显示冲突次数时输出
}
printf(" 建表完成! 此散列表容量为%d,当前表内存储的记录个数为%d. ",HASHSIZE,H->count);
}
void SearchHash2(HashTable* H,int &c)
{//在通讯录里查找电话号码关键字,若查找成功,显示信息//c用来记录冲突次数,查找成功时显示冲突次数
NA tele;
printf(" 请输入要查找记录的电话号码: ");
scanf("%s",tele);
int p,pp;
p=Hash2(tele);
pp=p;
while((H->elem[pp]!=NULL)&&(eq(tele,H->elem[pp]->tel)==-1))
pp=collision(p,c);
if(H->elem[pp]!=NULL&&eq(tele,H->elem[pp]->tel)==1)
{
printf(" 查找成功! 查找过程冲突次数为%d.以下是您需要要查找的信息: ",c);
printf("姓 名:%s 电话号码:%s 联系地址:%s ",H->elem[pp]->name,H->elem[pp]->tel,H->elem[pp]->add);
}
else printf(" 此人不存在,查找不成功! ");
}
void Save()
{//保存数据函数
FILE *fp;
if((fp=fopen("c: est.txt", "w"))==NULL)
{
printf(" ERROR opening customet file");
}
fclose(fp);
}
int main(int argc, char* argv[])
{
int c,flag=1;
HashTable *H;
H=(HashTable*)malloc(LEN);
for(int i=0; ielem[i]=NULL;
H->size=HASHSIZE;
H->count=0;
Record a[MAXSIZE];
printf(" 欢迎使用电话号码查找系统 ");
printf(" 1. 添加用户信息 ");
printf(" 2. 读取所有用户信息 ");
printf(" 3. 以姓名建表 ");
printf(" 4. 以电话号码建表 ");
printf(" 5. 查找并显示给定用户名的记录 ");
printf(" 6. 查找并显示给定电话号码的记录 ");
printf(" 7. 清空 ");
printf(" 8. 保存 ");
printf(" 9. 退出程序 ");
printf(" 注意: ");
printf(" Ⅰ.进行5操作前 请先输出3 ");
printf(" Ⅱ.进行6操作前 请先输出4 ");
printf(" ");
printf("请输入你想要的操作:");
printf(" ");
while(1)
{
int num;
scanf("%d",&num);
switch(num)
{
case 1:
getin(a);
break;
case 2:
ShowInformation(a);
break;
case 3:
CreateHash1(H,a); // 以姓名建立散列表
break;
case 4:
CreateHash2(H,a); // 以电话号码建立散列表
break;
case 5:
c=0;
SearchHash1(H,c); //以姓名查找数据
break;
case 6:
c=0;
SearchHash2(H,c); //以电话号码查找数据
break;
case 7:
Cls(a);
break;
case 8:
Save();
break;
case 9:
return 0;
break;
default:
printf("输入错误,请重新输入!");
printf(" ");
}
}
system("pause");
return 0;
}
版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。