C++作业整理:使用C++类编写一个通讯录

软件使用的是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++)//每当调
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,作为AI语言模型,我无法编写代码。但是,我可以为您提供一个通讯录管理系统的基本框架和功能,帮助您更好地理解和实现它。 1. 数据结构的设计 通讯录管理系统需要存储联系人的信息,因此需要设计一个数据结构来存储这些信息。通常情况下,通讯录管理系统的数据结构可以包含以下字段: - 姓名:联系人的姓名 - 电话:联系人的电话号码 - 地址:联系人的地址 - 邮箱:联系人的电子邮件地址 可以使用结构体来定义这些字段: ``` typedef struct { char name[20]; char phone[20]; char address[50]; char email[30]; } Contact; ``` 2. 功能设计 通讯录管理系统需要实现以下基本功能: - 添加联系人:向通讯录中添加联系人的信息 - 删除联系人:从通讯录中删除指定联系人的信息 - 修改联系人:修改指定联系人的信息 - 查找联系人:根据姓名或电话号码查找指定联系人的信息 - 显示所有联系人:按照姓名或电话号码的字典序显示所有联系人的信息 可以使用以下的函数来实现这些功能: ``` // 添加联系人的函数 void addContact(Contact *contacts, int *count); // 删除联系人的函数 void deleteContact(Contact *contacts, int *count, char *name); // 修改联系人的函数 void updateContact(Contact *contacts, int count, char *name); // 查找联系人的函数 void searchContact(Contact *contacts, int count, char *keyword); // 显示所有联系人的函数 void showContacts(Contact *contacts, int count, int sort_by_name); ``` 其中,`contacts`为存储联系人信息的数组,`count`为联系人数量,`name`为要删除或修改的联系人的姓名,`keyword`为要查找的关键字,`sort_by_name`为是否按照姓名的字典序排序。 3. 界面设计 通讯录管理系统需要一个简单的界面来与用户进行交互。可以使用命令行界面或者图形界面,具体实现方式可以根据需要选择。下面是一个简单的命令行界面示例: ``` Welcome to the contact management system! Please select an action: 1. Add contact 2. Delete contact 3. Update contact 4. Search contact 5. Show all contacts 6. Exit Your choice: _ ``` 用户输入相应的数字来执行相应的操作。 以上是通讯录管理系统的基本框架和功能,您可以根据需要进行具体实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值