📄 catalog.cpp
字号:
//Catalog.cpp
#include "Catalog.h"
#include <iostream>
using namespace std;
int Catalog::itemNum = 0;
//访问Catalog中的Item
Item Catalog::getItem(int i) {
return items[i];
}
//向Catalog中添加Item
void Catalog::addItem(const Item& newItem) {
items.push_back(newItem);
itemNum++;
}
//通过姓名删除Item
void Catalog::removeItemName(string name) {
if(itemNum > 0){
vector<Item>::iterator vi;
vector<Item> temp; //暂时保存要删除的记录
for(vi = items.begin(); vi <= items.end(); vi++){
if(vi->getName() == name){
temp.push_back(*vi);
items.erase(vi);
vi--;
itemNum--;
}
}
if(temp.size() != 0){
cout << "共找到 " << temp.size() << " 条记录。" << endl;
display(temp);
cout << "要删除吗?Y / N:" << "\t";
char input[80];
cin.getline(input, 80);
//错误处理
while(strcmp(input,"Y") != 0 && strcmp(input,"N") != 0 && strcmp(input,"y") != 0 && strcmp(input,"n") != 0 ) {
cout << "输入错误!" << endl;
cout << "要删除吗?Y / N:" << "\t";
cin.getline(input, 80);
}
//若不删除则把刚才删掉的记录加回通讯录
if(strcmp(input,"Y") != 0 && strcmp(input,"y") != 0) {
for(vi = temp.begin(); vi != temp.end(); vi ++)
items.push_back(*vi);
}else
cout << "删除成功!" << endl;
}else
cout << "记录未找到!" << endl; //没有找到要删除的记录
}
}
//通过电话删除Item
void Catalog::removeItemTel(string tel) {
vector<Item>::iterator vi;
vector<Item> temp;
for(vi = items.begin(); vi != items.end(); vi++){
if(vi ->getTelNum() == tel){
temp.push_back(*vi);
items.erase(vi);
vi--;
itemNum--;
}
}
if(temp.size() != 0){
cout << "共找到 " << temp.size() << " 条记录。" << endl;
display(temp);
cout << "要删除吗?Y / N:" << "\t";
char input[80];
cin.getline(input, 80);
//错误处理
while(strcmp(input,"Y") != 0 && strcmp(input,"N") != 0 && strcmp(input,"y") != 0 && strcmp(input,"n") != 0 ) {
cout << "输入错误!" << endl;
cout << "要删除吗?Y / N:" << "\t";
cin.getline(input, 80);
}
//若不删除则把刚才删掉的记录加回通讯录
if(strcmp(input,"Y") != 0 && strcmp(input,"y") != 0) {
for(vi = temp.begin(); vi != temp.end(); vi ++)
items.push_back(*vi);
}
else
cout << "删除成功!" << endl;
}else
cout << "记录未找到!" << endl; //没有找到要删除的记录
}
//通过姓名查找Item
vector<Item> Catalog::FindName(string name) {
vector<Item> v; //用于保存找到的记录
int count = 0; //找到的数量
vector<Item>::iterator listIter;
for(listIter = items.begin(); listIter != items.end(); listIter++){
if(listIter->getName() == name)
v.push_back(*listIter);
}
return v;
}
//通过电话查找Item
vector<Item> Catalog::FindTel(string tel) {
vector<Item> v; //用于保存找到的记录
int count = 0; //找到的数量
vector<Item>::iterator listIter;
for(listIter = items.begin(); listIter != items.end(); listIter++){
if(listIter->getTelNum() == tel)
v.push_back(*listIter);
}
return v;
}
//打印Catalog中的Item
void Catalog::display() {
if(items.size() == 0){
cout << "通讯录为空!" << endl;
}else{
display(items);
}
cout << endl << endl;
}
//打印指定容器vi中的Item
void Catalog::display(vector<Item>& vi) {
cout << endl;
if(vi.size() == 0){
cout << "没找到记录!" << endl;
}else{
vector<Item>::iterator vii;
cout.setf(ios::left, ios::adjustfield); //左对齐
cout.width(20); //设置宽度20
cout << "姓名:" ;
cout.width(20);
cout << "电话:" << endl;
for(vii = vi.begin(); vii != vi.end(); vii++){
cout.width(20); //设置宽度20
cout << vii ->getName();
cout.width(20); //设置宽度20
cout << vii ->getTelNum() << endl;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -