问题:通讯录管理程序。通讯录是由通讯录条目组成的。…
子问题:通讯录条目由姓名、多个电话(各种类型的电话)组成的,。可以进行输入、输出、修改姓名、修改电话。
分析:
(1)多个电话及其类型可用字符串动态数组存储。
int telCount;
string *tels;
string *telType;
(2)用构造函数完成多个电话的初始化。
tels = new string[num];
telType = new string[num];
(3)在析构函数中完成内存的回收。
delete []tels;
delete []telType;
(4)其它相应的函数也要做修改。
/**析构函数与构造函数**/
#include <iostream>
#include<string>
using namespace std;
class CommEntry
{
public:
CommEntry(int num=20)//用构造函数完成多个电话的初始化
{
telType=new string[num];//电话类型
tels=new string[num];//多个电话
}
~CommEntry()//在析构函数中完成内存的回收
{
delete[]tels;
delete[]telType;
};
void input();
void output();
void setName(string nm);
void setTel(string t,int iNum);
string getName();
string getTel(int iNum);
private:
int telcount;
string name;
string *tels;
string *telType;
};
void CommEntry::input()
{
char c;
cout << "姓名:" << endl;
cin >> name;
for(telcount=0;; telcount++)
{
cout << "电话类型:" << endl;
cin >>telType[telcount] ;
cout << "电话:" << endl;
cin >> tels[telcount];
cout<<"是否还输入电话信息(Y/N):";
cin>>c;
if(c=='n'||c=='N')
break;
}
}
void CommEntry::output()
{
int i;
cout << "姓名" << "\t" << "电话" <<"\t\t"<< "电话类型:" << endl;
for(i=0; i<=telcount;i++)
{
cout << name << "\t" << tels[i]<<"\t" <<telType[i] << endl;
}
}
void CommEntry::setName(string nm)
{
cout << "将姓名修改为:" << endl;
cin >> nm;
name = nm;
}
void CommEntry::setTel(string t,int iNum)
{
cout << "请输入修改第几个电话,共有" << telcount+1 << "个电话:"<<endl;
cin>>iNum;
cout << "将第"<<iNum<<"个电话修改为:" << endl;
cin >> t;
tels[iNum-1] = t;
}
string CommEntry::getName()
{
return name;
}
string CommEntry::getTel(int iNum)
{
cin>>iNum;
cout<<"获得第"<<iNum<<"个电话:"<<endl;
return tels[iNum];
}
int menu()
{
int i;
cout << endl;
cout << "*******************************************" << endl;
cout << " 1.输入通讯录条目 "<< endl;
cout << " 2.输出通讯录条目 "<< endl;
cout << " 3.修改姓名" << endl;
cout << " 4.修改电话" << endl;
cout << " 0.退出 "<< endl;
cout << "*******************************************" << endl;
cout << "请选择(0-4):";
while(1)
{
cin >> i;
if(i >= 0 && i <= 4)
break;
else
{
cout << "序号不存在,请重新输入!" << endl;
continue;
}
}
return i;
}
int main()
{
int t = 1;
CommEntry person;
string nm,tl;
int iNum;
while(t != 0)
{
t = menu();
switch(t)
{
case 1:
person.input();
break;
case 2:
person.output();
break;
case 3:
person.setName(nm);
break;
case 4:
person.setTel(tl,iNum);
break;
case 0:
break;
}
}
return 0;
}
本文介绍了如何使用C++构建一个通讯录管理程序,通讯录条目包括姓名和多个不同类型的电话。通过构造函数动态初始化电话及类型字符串数组,并在析构函数中进行内存释放。此外,还提到了其他相关函数的修改需求。
实验三&spm=1001.2101.3001.5002&articleId=108763513&d=1&t=3&u=f040c1f95741409ab1f38ab73a80e8bc)
2106

被折叠的 条评论
为什么被折叠?



