/*
这次终于真切体会到c++封装的利与弊了
150行的程序被改到了300行,汗。。。
这次修改添加了分组功能
添加了对输入合法性的检查
去掉了修改功能,因为目前只做到,等同于删除后再新建
去掉了map,因为用了vector,下标在不断变化,不用map后,
省掉了不停维护下标这一步骤。当然搜索就直接暴力了
这次添加了Group类,adresslist类和Menu类,整个程序还是有一些模块化了
未完成的功能:
1.名字按字典序输出
2.修该联系人或小组单独某项的信息
3.小组功能中,显示小组的内容,并未设计完全
4.文件记录
*/
#include <cstdio>
#include <string>
#include <iostream>
#include <vector>
using namespace std;
void Error(){
cout << "\n输入错误,请重新输入" << endl;
}
void Checkerror(string &s,int maxn){
while(1){
cin >> s;
if(s.length() > 1 || s[0] < '0' || s[0] - '0' > maxn)
Error();
else
return;
}
}
class Group{
private:
string name;//小组的名字
vector <string> v;//储存小组成员的名字
public:
void assign(string s){//创建时名字赋值
v.clear();
name = s;
}
void push(string s){//向该组中加入成员
v.push_back(s);
}
void showname(){//输出该组的名字
cout << name << endl;
}
string getname(){
return name;
}
void print(){//输出该组所有成员的名字
if(v.size() == 0){
cout << "None" << endl;
return;
}
for(int i = 0;i < v.size();i++)
cout << i << ". " << v[i] << endl;
}
void clear(){//删除该小组中所有成员
v.clear();
}
void cut(string s){//从该组中删除某个成员
for(int i = 0;i < v.size();i++)
if(v[i] == s)
v.erase(v.begin()+i);
}
};
class Contact_person{
private:
char First;//该联系人姓名的首字母
string name,tel,remark,group;//remark为备注,grouop为所在组名
public:
Contact_person(){group = "None";}//group初始为无
voi
c++写的通讯录 (2.0)
最新推荐文章于 2024-08-03 15:40:43 发布
本文档介绍了使用C++编程语言开发的一款通讯录软件,详细阐述了其实现原理和功能,包括联系人添加、查询、修改和删除等操作。
摘要由CSDN通过智能技术生成