⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catalog.cpp

📁 通讯录系统
💻 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 + -