题目描述
通讯录中每一个联系人的内容有:姓名、电话号码、班级、宿舍。由标准输入读入联系人信息,使用线性表中操作实现通讯录管理功能,包括:插入、删除、编辑、查找(按姓名查找);键盘输入一班级,输出通讯录中该班级中所有人的信息。
代码
#include<iostream>
#include<string>
using namespace std;
struct student
{
string name;
string phone;
int classroom;
int room;
};
class myList
{
public:
myList(int initial)//数组初始化
{
arrayLength = initial;
arr = new student[arrayLength];
}
//插入
void insert(string n, string p, int c, int r)
{
student newStudent = { n,p,c,r };
student* newList = new student[arrayLength + 1];
for (int i = 0; i < arrayLength; i++)
{
newList[i] = arr[i];
}
newList[arrayLength] = newStudent;//将新元素插入到数组临时数组最后一项即可
delete[]arr;//释放原数组内存
arr = newList;//用临时数组替换原数组
arrayLength++;
}
//删除
void erase(string n)
{
int index = 0;
bool flag = false;
for (int i = 0; i < arrayLength; i++)//寻找删除位置并判断删除项是否存在
{
if (arr[i].name == n)
{
flag = true;
index = i;
break;
}
}
if (flag)
{
for (int i = index; i < arrayLength - 1; i++)//被删除元素之后的每一项向前移动一位
arr[i] = arr[i + 1];
arrayLength--;
student* newList = new student[arrayLength];
for (int i = 0; i < arrayLength; i++)
{
newList[i] = arr[i];
}
delete[]arr;
arr = newList;
}
}
//编辑
void edit(string n, int k, string value)
{
for (int i = 0; i < arrayLength; i++)
{
if (arr[i].name == n)//找到需要编辑的元素
{
switch (k)//确定需要编辑的内容
{
case 1:
arr[i].phone = value;
break;
case 2:
arr[i].classroom = stoi(value);//为了方便,直接将编辑内容value转换为int形式
break;
case 3:
arr[i].room = stoi(value);
break;
}
break;
}
}
}
//查找
void find(string n)
{
bool flag = false;
for (int i = 0; i < arrayLength; i++)
{
if (arr[i].name == n)
{
flag = true;
break;
}
}
if (flag)
cout << 1 << endl;
else
cout << 0 << endl;
}
void getStudent(int c)//输出某班级全部学生信息
{
for (int i = 0; i < arrayLength; i++)
{
if (arr[i].classroom == c)
{
cout << "姓名:" << arr[i].name << "\t"
<< "电话:" << arr[i].phone << "\t"
<< "班级:" << arr[i].classroom << "\t"
<< "宿舍:" << arr[i].room << endl;
}
}
}
private:
student* arr;
int arrayLength;
};
int main()
{
int time;
cin >> time;
myList list(0);
string n, p,v;
int c, r,kk;
for (int i = 0; i < time; i++)
{
int k;
cin >> k;
switch (k)
{
case 0:
cin >> n >> p >> c >> r;
list.insert(n, p, c, r);
break;
case 1:
cin >> n;
list.erase(n);
break;
case 2:
cin >> n >> kk >> v;
list.edit(n, kk, v);
break;
case 3:
cin >> n;
list.find(n);
break;
case 4:
cin >> c;
list.getStudent(c);
break;
}
}
}