软件使用的是Microsoft Visual Studio
编写通讯录之前,先思考一下要实现什么功能,大概的结构,要创建几个类等等。
首先,是思考要实现什么功能。
一般的通讯录有添加,删除,修改,查找,显示等功能,一般联系人的信息包括:姓名,性别,年龄,电话号码,家庭地址。
我们首先新建一个类,用来初始化姓名,年龄,性别,电话号码,家庭地址,这几个变量
#pragma once
#include<iostream>
#include<string>
//#include "MailList.hpp"
using namespace std;
class MailList
{
public:
void setName(string);//给变量赋值函数
void setAge(string);
void setSex(string);
void setTel(string);
void setAddress(string);
string getName();//返回变量值函数
string getAge();
string getSex();
string getTel();
string getAddress();
private:
string name;//私有函数成员,定义变量
string age;
string sex;
string tel;
string address;
};
void MailList::setName(string name)
{
this->name=name;
}
void MailList::setAge(string age)
{
this->age=age;
}
void MailList::setSex(string sex)
{
this->sex=sex;
}
void MailList::setTel(string tel)
{
this->tel=tel;
}
void MailList::setAddress(string address)
{
this->address=address;
}
string MailList::getName()
{
return this->name;
}
string MailList::getAge()
{
return this->age;
}
string MailList::getSex()
{
return this->sex;
}
string MailList::getTel()
{
return this->tel;
}
string MailList::getAddress()
{
return this->address;
}
这里也可以使用构造函数初始化函数成员,构造函数函数名与类名一样。
然后,创建一个通讯录管理类,先把总的结构搭建起来
class MailListManager//通讯录管理类
{
public:
MailListManager();//构造函数
void initList();//初始化通讯录功能,在通讯录里记录为空时使用
void insertList();//添加联系人功能,在通讯录里有记录时使用
void showList();//显示联系人功能,显示通讯录中所有联系人的记录
void deleteList();//删除联系人功能
void selectList();//查找联系人功能
void updateList();//修改联系人功能
void dropList();//清空通讯录功能
void save();//保存到文件,文件的写入
void loading();//加载,读出文件
string pw();//密码加密(我没能实现)
int exiet(string);//检查联系人是否存在
private:
MailList mail[Max];//数组,MailList类型,这属于实例化对象
int len;//计数器
};
MailListManager::MailListManager()//构造函数就是用来初始化函数成员的,未初始化的函数成员不可用。这里初始化一下计数器
{
len = 0;
}
int MailListManager::exiet(string name)//定义检查函数,检查联系人是否存在,以姓名的匹配为条件
{
}
void MailListManager::loading()//定义加载函数
{
}
void MailListManager::save()//定义保存函数
{
}
void MailListManager::initList()//定义初始化函数
{
}
void MailListManager::insertList()//定义添加函数
{
}
void MailListManager::showList()//定义显示函数
{
}
void MailListManager::updateList()//定义修改函数
{
}
void MailListManager::deleteList()//定义删除函数
{
}
void MailListManager::selectList()//定义查找函数
{
}
void MailListManager::dropList()//定义清空函数
{
}
总结构搭建好后,再开始编写里面的定义内容。
//这里声明部分就不显示了,直接看定义
void MailListManager::loading()//加载函数的定义
{
len = 0;//计数器len,每次调用加载函数的时候都要重新初始化为0,这样做是防止之后添加联系人时重复加载导致保存多次。
string name, sex, age, tel, address;//局部变量,每次使用都要声明一下的
ifstream in;//实例化文件类“fstream”对象
in.open("maillist/mail.txt");//打开文件
if (!in)//如果文件未打开
{
cout << "--文件打开失败--" << endl;
system("pause");
}
else
{
while (!in.eof())//如果未达到文件末尾
{
in >> name >> age >> sex >> tel >> address;
if (in.fail())break;//ifstream类的作用是从文件中读出数据到控制台上,但没有显示出来,这就相当于再次赋值给数组,就是给之前声明的MailList类的数组,所以这里使用数组mail[*].***保存数据,因为不知道到底有多少数据,所以用死循环来控制,跳出条件是达到文件末尾就跳出,这样就可以保证将文件中的内容全部存到数组里
mail[len].setName(name);
mail[len].setAge(age);
mail[len].setSex(sex);
mail[len].setTel(tel);
mail[len].setAddress(address);
len++;
}
}
in.close();
}
int MailListManager::exiet(string name)//检验联系人是否存在
{
for (int i = 0; i < len; i++)//每当调