#include<iostream>
using namespace std;
const int Max = 1000;//通讯录容量最大为1000
struct person
{
//姓名
string name;
//性别
string sex;
//年龄
int age;
//联系电话
string phone;
//家庭住址
string Address;
};
struct personArray
{
struct person total[Max];
};
//添加联系人信息的函数
void Addperson(personArray *p,int *pNumber)
{
int i=*pNumber;
cout << "请输入姓名 ";
cin >> p->total[i].name;
cout << "请输入性别 ";
cin >> p->total[i].sex;
cout << "请输入年龄 ";
cin >> p->total[i].age;
cout << "请输入联系电话 ";
cin >> p->total[i].phone;
cout << "请输入家庭住址 ";
cin >> p->total[i].Address;
*pNumber++;
};
//显示联系人信息
void showperson(personArray *p,int pNumber)
{
for(int i=0;i<pNumber;i++)
{
cout<<"姓名: "<<p->total[i].name<<'\t'<<"性别: "<< p->total[i].sex<<'\t'<<"年龄: "<<p->total[i].age<<'\t'<<"联系电话: "<<p->total[i].phone<<'\t'<<"家庭住址: "<<p->total[i].Address;
}
}
//删除联系人信息
void deleteperson (personArray *p,int *pNumber)
{
cout<<"请输入要删除的联系人的姓名: ";
string name;
cin>>name;
for(int i=0;i<*pNumber;i++)
{
if(name==p->total[i].name)
{
for(int j=i;j<*pNumber-1;j++)
{
p->total[j]=p->total[j+1];
}
*pNumber--;
cout<<"该联系人信息已删除。";
return ;
}
}
cout<<"通讯录里没有这个联系人。";
}
//查找联系人信息
void findperson(personArray *p,int pNumber)
{
cout<<"请输入要查找的联系人的姓名: ";
string name;
cin>>name;
for(int i=0;i<pNumber;i++)
{
if(name==p->total[i].name)
{
cout<<"姓名 :"<<p->total[i].name<<'\t'<<"性别: "<<p->total[i].sex<<'\t'<<"年龄: "<<'\t'<<p->total[i].age<<'\t'<<"联系电话: "<<p->total[i].phone<<'\t'<< "家庭住址: "<<p->total[i].Address<<endl;
return ;
}
}
cout<<"系统未收录这个人的信息。"<<endl;
}
void changedata(personArray *p,int pNumber)
{
cout<<"请输入要修改信息的联系人姓名: ";
string name;
cin>>name;
for(int i=0;i<pNumber;i++)
{
if(p->total[i].name==name)
{
cout<<"现在更新该联系人的信息。";
cout<<"姓名: ";
cin>>p->total[i].name;
cout<<endl;
cout<< "性别: ";
cin>>p->total[i].sex;
cout<<endl;
cout<<"年龄: ";
cin>>p->total[i].age;
cout<<endl;
cout<<"联系电话: ";
cin>>p->total[i].phone;
cout<<endl;
cout<<"家庭住址: ";
cin>>p->total[i].Address;
cout<<endl;
return ;
}
}
cout<<"系统未收录该联系人的信息,无法修改。";
}
//清空联系人的信息
void deleteperson(int * pNumber)
{
cout<<"请谨慎该操作,是否要继续清空联系人信息。";
cout<<"1.确认 2.取消";
int i;
cin>>i;
if(i==1)
{
*pNumber=0;
return ;
}
else
return ;
}
int main()
{
personArray num1;
cout << "欢迎使用通讯录系统\n ";
cout << "1.添加联系人信息" << endl;
cout << "2.显示联系人信息" << endl;
cout << "3.删除联系人信息" << endl;
cout << "4.查找联系人信息" << endl;
cout << "5.修改联系人信息" << endl;
cout << "6.清空联系人信息" << endl;
cout << "0.退出通讯录系统" << endl;
int choose = 0;
int pNumber = 0;
while (true)
{
cin >> choose;
switch (choose)
{
case 1:
if(pNumber<=Max)
{
Addperson(&num1,&pNumber);
cout<<"录入信息成功 ";
}
else
{
cout<<"当前联系人达到上限,请清除部分联系人后再添加 ";
}
break;
case 2:
showperson(&num1,pNumber);
break;
case 3:
deleteperson(&num1,&pNumber);
break;
case 4:
findperson(&num1,pNumber);
break;
case 5:
changedata(&num1,pNumber);
break;
case 6:
deleteperson(&pNumber);
break;
case 0:
return 0;
break;
default:
cout << "现在暂时没有这个功能";
break;
}
}
}
请大佬帮我测试一下这个程序好吗。。。我试了好多次都弄不了其他功能,是不是结构指针的问题啊啊啊啊啊啊啊
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- Basesson 2021-03-05 21:23关注
1.<iostream>里cout和cin的<<和>>运算符没有关于string类型的运算,所以cin>><string>进行时,>>不知道怎么运算,就是不知道怎么把cin得到的流给string类型的变量。
- 可以再引用#include<string>
2.++与--运算和指针*运算放在一起,++与--会先运算,如*pNumber++;,这个会把pNumber+1,再取值,而不是先值,再把值+1
- 可以写成(*pNumber)++
3.在用cin为int类型的age赋值时,建议再加上cin.fail()判断,免得输入流读取失败时,程序进入死循环
-
cin_age: cin >> p->total[i].age; if( cin.fail()) //输入流读取是否失败 { cin.clear(); //清除错误标识 cin.sync(); //清除流数据 goto cin_age; //重新输入 }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥35 平滑拟合曲线该如何生成
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了
- ¥15 链式存储应该如何解决
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站