大家好,请问一下这个代码要怎么改才能将用姓名和电话号码都可以查询信息
```c++
#include<iostream>
#include<math.h>
#include<cstring>
#include<fstream>
#include<iomanip>
using namespace std;
#define maxsize 20
#define ok 1
#define error 0
typedef struct{ //通讯录信息数据类型
long long int number;
char name[20];
char address[20];
}infor;
typedef struct{ //哈希表的创建函数
infor *elem;
int length;
}hashtable;
int Inithash(hashtable &h) //初始化哈希表
{
h.elem = new infor[maxsize];
if(!h.elem)
exit(0);
h.length = maxsize;
for(int i = 0; i < maxsize; i++)
h.elem[i].number = 0;
return ok;
}
int hash(long long int key) //求关键词的值
{
return int(key%100/5);
}
int Inserthash(hashtable &h,infor e) //插入哈希表
{
int i,j = 1;
i = hash(e.number);
if(h.elem[i].number == 0){
strcpy(h.elem[i].address,e.address);
strcpy(h.elem[i].name,e.name);
h.elem[i].number = e.number;
}
else{
while(1)
{
if(i + j*j < 20 && i + j*j >= 0){
if(h.elem[i + j*j].number == 0){
strcpy(h.elem[i + j*j].address,e.address);
strcpy(h.elem[i + j*j].name,e.name);
h.elem[i + j*j].number = e.number;
break;
}
else{
if(i - j*j < 20 && i - j*j > 0){
if(h.elem[i - j*j].number == 0){
strcpy(h.elem[i - j*j].address,e.address);
strcpy(h.elem[i - j*j].name,e.name);
h.elem[i - j*j].number = e.number;
break;
}
else{
j++;
continue;
}
}
else{
j++;
continue;
}
}
}
else{
j++;
continue;
}
}
}
}
int searchhash(hashtable h,long long int number,infor &e) //查找号码所对应的信息
{
int i,j = 1;
i = hash(number);
if(h.elem[i].number == number){
strcpy(e.address,h.elem[i].address);
strcpy(e.name,h.elem[i].name);
e.number = h.elem[i].number;
}
else{
while(1)
{
if(i + j*j < 20 && i + j*j >= 0){
if(h.elem[i + j*j].number == number){
strcpy(e.address,h.elem[i + j*j].address);
strcpy(e.name,h.elem[i + j*j].name);
e.number = h.elem[i + j*j].number;
break;
}
else{
if(i - j*j < 20 && i - j*j > 0){
if(h.elem[i - j*j].number == number){
strcpy(e.address,h.elem[i - j*j].address);
strcpy(e.name,h.elem[i - j*j].name);
e.number = h.elem[i - j*j].number;
break;
}
else{
j++;
continue;
}
}
else{
j++;
continue;
}
}
}
else{
j++;
continue;
}
}
}
}
int main()
{
ofstream ofile;
ofile.open("d:\\myfile.txt");
hashtable h;
Inithash(h);
infor e;
while(1){
cout<<"-------------------------------------"<<endl;
cout<<"功能选项:1.录入 2.查找 3.退出"<<endl;
cout<<"-------------------------------------"<<endl;
cout<<"输入功能选项:";
int i;
cin>>i;
if(i == 1){
cout<<"输入电话号码:";
cin>>e.number;
cout<<"输入姓名:";
cin>>e.name;
cout<<"输入地址:";
cin>>e.address;
Inserthash(h,e);
ofile<<e.number<<" "<<e.name<<" "<<e.address<<endl;
}
else if(i == 2){
cout<<"输入待查找号码:";
cin>>e.number;
infor e2;
searchhash(h,e.number,e2);
cout<<"该号码主人姓名:";
cout<<e2.name<<endl;
cout<<"该号码主人住址:";
cout<<e2.address<<endl;
}
else if(i == 3){
cout<<"成功退出系统!";
break;
}
else
cout<<"指令错误!"<<endl;
}
return 0;
}
```