通讯录设计

<pre name="code" class="cpp">//*****************************************************
//                 通讯录管理系统                    
//*****************************************************

#include<iostream>
#include<string>
#include<iomanip>
#include<cstdlib>
#include<fstream>
using namespace std;

class book
{
public:
	char start();//初始界面
	void choose_function(char *p);//选择功能(function:功能)
	char start_menu();//开始菜单
	void add_linkman(char *p);//添加联系人(linkman:联系人)
	void del_linkman(char *p);//删除联系人
	void revamp(char *p);//修改联系人信息(revamp:修改)
	void inquire(char *p);//查询联系人信息(inquire:查询)
	void save_new(char *p);//保存新添加的联系人信息
	void show_all_linkman(char *p);//显示所有联系人的信息
	void return_menu();//返回开始菜单
	void exit_system();//退出通讯录管理系统
	book();
private:
	string name;
	string address;
	string number;
	string post;
	string QQ;
	bool exit_flag;//系统退出标志
	bool del_flag;//删除标志

};

book::book()
{
	name="\0";
    address="\0";
	post="\0";
	number="\0";
	QQ="\0";
	exit_flag=true;
	del_flag=true;
}

//初始界面

char book::start()
{
	system("cls");
	
	cout<<endl;
    cout<<"\t\t\t★欢迎使用通讯录管理系统!★"<<endl;
	cout<<endl;
	cout<<"\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
	cout<<"\t\t~*                                        *~"<<endl;
	cout<<"\t\t~*                 通讯录                *~"<<endl;
	cout<<"\t\t~*                                        *~"<<endl;
	cout<<"\t\t~*  ★1.通讯录 1★        ★2.通讯录 2★  *~"<<endl;
	cout<<"\t\t~*  ~~~~~~~      ~~~~~~~ *~"<<endl; 
	cout<<"\t\t~*  ★3.通讯录 3★        ★4.通讯录 4★  *~"<<endl;
	cout<<"\t\t~* ~~~~~~~      ~~~~~~~  *~"<<endl;
	cout<<"\t\t~*        ★5.关闭通讯录管理系统★        *~"<<endl;
	cout<<"\t\t~* ~~~~~~~~~ ~~~~~~~~ *~"<<endl;
	cout<<"\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
	cout<<endl<<endl;
	cout<<"\t\t\t~ 请进行选择:";

	char choose1;
	cin>>choose1;
	fflush(stdin);

	return choose1;
}

//选择功能

void book::choose_function(char *p)
{
	char choose;

    while (choose = start_menu())
    {
        switch (choose)
        {
        case '1':
            add_linkman(p);//添加联系人
            break;
        case '2':
			del_linkman(p);//删除联系人
            break;
        case '3':
            revamp(p);//修改信息
            break;
        case '4':
            inquire(p);//查询联系人
            break;
		case '5':
            show_all_linkman(p);//显示所有联系人
            break;
        case '6':
            cout <<endl <<"\t\t\t谢谢使用通讯录管理系~" <<endl <<endl;
            exit_system();
			system("pause");
            break;
        default:
			{
				cout<<endl;
				cout<<"\t\t\t输入错误!请重新选择功能."<<endl;
				system("pause");
				break;
			}
		}
	}
}

//开始菜单

char book::start_menu()
{
	system("cls");
	cout<<endl;

	cout<<"\t\t\t欢迎使用通讯录管理系统~"<<endl;
	cout<<endl;
	cout<<"\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
	cout<<"\t\t~*                                        *~"<<endl;
	cout<<"\t\t~*                通讯录               *~"<<endl;
	cout<<"\t\t~*                                        *~"<<endl;
	cout<<"\t\t~*    1.添加联系人        2.删除联系人    *~"<<endl;
	cout<<"\t\t~*                                      *~"<<endl; 
	cout<<"\t\t~*    3.修改联系人        4.查询联系人    *~"<<endl;
	cout<<"\t\t~*                                       *~"<<endl;
	cout<<"\t\t~*    5.显示所有信息      6.关闭通讯录    *~"<<endl;
	cout<<"\t\t~*                                      *~"<<endl;
	cout<<"\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
	cout<<endl<<endl;
	cout<<"\t\t\t~ 请进行选择:";

	char choose;
	cin>>choose;
	fflush(stdin);

	return choose;
}

//返回开始菜单

void book::return_menu()
{
	char temp;
	cout<<"是否返回开始菜单(Y/N)?"<<endl;
	cin>>temp;
	if(temp=='y' || temp=='Y')
	{
		start_menu();
	}
	else
	{
		exit_system();
	}
}

//退出通讯录管理系统

void book::exit_system()
{
	char temp;
	cout<<endl;
	cout<<"确定退出通讯录管理系统(Y/N)?"<<endl;
	cin>>temp;
	if(temp=='y' || temp=='Y')
	{
		exit(0);
	}
	else
	{
		exit_flag=false;
	}
}

//添加联系人信息

void book::add_linkman(char *p)
{
	system("cls");
	cout<<endl;

	cout<<"请输入联系人相关信息."<<endl;
	cout<<"请输入联系人姓名:";
	cin>>name;
	fflush(stdin);
	cout<<"请输入联系人地址:";
	cin>>address;
	fflush(stdin);
	cout<<"请输入联系人电话:";
	cin>>number;
	fflush(stdin);
	cout<<"请输入联系人短号:";
	cin>>number;
	fflush(stdin);
	cout<<"请输入联系人QQ账号:";
	cin>>QQ;
	fflush(stdin);
	
	cout<<endl;
	cout<<"添加联系人信息完毕!请选择所要进行的操作:";
	char temp;
	cout<<endl;
	cout<<"是否对所输入的信息进行保存(Y/N)?";
	cin>>temp;
	if(temp=='y' || temp=='Y')
	{
		save_new(p);
		cout<<endl;
	    cout<<"新联系人信息已经保存完毕!"<<endl;
	}
	else
	{
		cout<<endl;
		cout<<"所添加信息没有保存!返回开始菜单!"<<endl;
		return_menu();
	}
	
	system("pause");
}

//保存新添加的联系人信息

void book::save_new(char *p)
{
	ofstream outdata(p,ios::app);
	if(!outdata)
	{
		cout<<endl;
		cout<<"对不起! 你所查找的文件不存在!"<<endl;
		system("pause");
		return;
	}
	outdata<<setiosflags(ios::left)<<setw(15)<<name<<" "
		                           <<setw(14)<<number<<" "
								   <<setw(18)<<address<<" "
								   <<setw(16)<<QQ<<" "
								   <<setw(12)<<post<<endl;

	outdata.close();
}

//修改联系人信息

void book::revamp(char *p)
{
	system("cls");
	ofstream outdata("temp.txt",ios::out);
	ifstream indata(p,ios::in);

	if(!outdata || !indata)
	{
		cout<<endl;
		cout<<"对不起! 你所查找的文件不存在! "<<endl;
		system("pause");
		return;
	}

	string sign;
	cout<<endl;
	cout<<"请输入你所要修改的联系人的姓名或是电话号码:";
	cin>>sign;
	string str1;
	bool flag=true;
	string str;

	while (indata>>name>>number)
	{
		getline(indata,str);
		if((sign==name) || (sign==number))
		{
			cout<<endl;
		    cout<<"你所要修改的联系人为:"<<endl;
		    cout<<str1<<endl;
		    cout<<setiosflags(ios::left)<<setw(17)<<name<<" "<<number<<str<<endl;
		
		    cout<<endl;
		    cout<<"请你根据以下提示信息修改联系人信息:"<<endl;

	        cout<<"请输入联系人姓名:";
		    cin>>name;
		    fflush(stdin);
		    cout<<"请输入联系人电话号码:";
		    cin>>number;
		    fflush(stdin);
		    cout<<"请输入联系人地址:";
		    cin>>address;
		    fflush(stdin);
			cout<<"请输入联系人QQ:";
		    cin>>QQ;
		    fflush(stdin);
		    cout<<"请输入联系人短号:";
		    cin>>number;
		    fflush(stdin);
		
		    char temp;
		    cout<<"是否对所输入的信息进行保存(Y/N)?";
	        cout<<endl;
			cin>>temp;
	        if(temp=='y' || temp=='Y')
			{
				save_new(p);
				flag=false;
		        cout<<endl;
	            cout<<"联系人的新信息已经保存完毕!"<<endl;
				char temp1;
				cout<<"是否删除原联系人信息(Y/N)?"<<endl;
				cin>>temp1;
				if(temp1=='y' || temp1=='Y')
				{
					del_linkman(p);
				}
				else
				{
					return_menu();
				}
	         }
			else
			{
				cout<<"所修改的联系人信息没有保存!返回开始菜单!"<<endl;
		        return_menu();
	         }
			
			break;
		}

		outdata<<setiosflags(ios::left)<<setw(17)<<name<<" "<<number<<str<<endl;
		system("pause");
	}
}
	



//删除联系人信息

void book::del_linkman(char *p)
{
	system("cls");

	ofstream outdata("temp.txt",ios::out);
	ifstream indata(p,ios::in);

	if (!outdata || !indata)
	{
		cout<<endl;
		cout<<"对不起! 你所查找的文件不存在! "<<endl;
		system("pause");
		return;
	}

	string sign;
	cout<<endl;
	cout<<"请输入所要删除的人的姓名或是电话号码:";
	cin>>sign;
	string str1;
    bool del_flag=true;
	string str;

	while(indata>>name>>number)
	{
		getline(indata,str);

		if((sign==name) || (sign==number))
		{
			cout<<endl;
			cout<<"你所要删除的联系人:"<<endl;
			cout<<str1<<endl;
			cout<<setiosflags(ios::left)<<setw(15)<<name<<" "<<number<<str<<endl;
			cout<<endl;
			char temp;
			cout<<"确定要删除此联系人信息(Y/N)?"<<endl;
			cin>>temp;
			if(temp=='y' || temp=='Y')
			{
				del_flag=false;
			    break;
			}
			else
			{
				return_menu();
			}
		}

		outdata<<setiosflags(ios::left)<<setw(15)<<name<<" "<<number<<str<<endl;
	}

	if(del_flag)
	{
		cout<<endl;
		cout<<"对不起, 通讯录中没有你所要查找的联系人信息!"<<endl;
	}
	else
	{
		while(getline(indata, str))
		{
			outdata<<str<<endl;
		}

		outdata.close();
		indata.close();

		ofstream out(p,ios::out);
		ifstream in("temp.txt",ios::in);

		if(!out || !in)
		{
			cout<<endl;
			cout<<"对不起!你不能打开此文件!"<<endl;
			system("pause");
			return;
		}

		while(getline(in,str))
		{
			out<<str<<endl;
		}

		out.close();
		in.close();
		cout<<endl;
		cout<<"此联系人的信息已经从你的通讯录中删除!"<<endl;
	}
	
	system("pause");
}

//显示所有联系人的信息

void book::show_all_linkman(char *p)
{
	system("cls");

	ifstream indata(p,ios::in);

	if(!indata)
	{
		cout<<endl;
		cout<<"对不起,你所查找的文件不存在!"<<endl;
		system("pause");
		return;
	}
	
    bool flag=true;
	string record;

	while (getline(indata,record))
	{
		if(flag)
		{
			cout<<endl;
			cout<<"所有联系人的信息如下:"<<endl;
			cout<<setiosflags(ios::left)<<setw(15)<<"姓名"<<" "
		                                <<setw(16)<<"电话号码"<<" "
						         		<<setw(16)<<"地址"<<" "
								        <<setw(16)<<"QQ账号"<<" "
								        <<setw(15)<<"短号"<<" "<<endl;
			cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
		}
		cout<<record<<endl;
		cout<<endl;
		flag=false;
	}

	if(flag)
	{
		cout<<endl;
		cout<<"通讯录中没有任何联系人信息!"<<endl;
	}
	else
	{
		cout<<endl;
		cout<<"所有联系人信息已经全部显示!"<<endl;
	}

	system("pause");
}

//查询联系人信息

void book::inquire(char *p)
{
	system("cls");

	ifstream indata(p,ios::in);

	if(!indata)
	{
		cout<<endl;
		cout<<"对不起! 你所查找的文件不存在!"<<endl;
		system("pause");
		return;
	}

	string sign;
	cout<<endl;
	cout<<"请输入你所要查找的联系人的姓名、电话号码、QQ或者地址:";
	cin>>sign;
	fflush(stdin);

	string str1;
	bool flag=true;

	string str;
	while(indata>>name>>number>>address>>QQ)
	{
		getline(indata,str);

		if((name==sign) || (number==sign) || (address==sign) || (QQ==sign))
		{
			cout<<endl;
			cout<<"你所要查找的联系人是:"<<endl;
			cout<<str1<<endl;
			cout<<setiosflags(ios::left)<<setw(12)<<"姓名"<<" "
		                                <<setw(16)<<"电话号码"<<" "
					         			<<setw(16)<<"地址"<<" "
							        	<<setw(16)<<"QQ账号"<<" "
								        <<setw(15)<<"短号"<<" ";
			cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
			cout<<setiosflags(ios::left)<<setw(13)<<name
		                                <<setw(16)<<number<<" "
								        <<setw(16)<<address<<" "
								        <<setw(8)<<QQ<<" "
								        <<setw(12)<<number<<endl;
			flag=false;
		}
	}

	system("pause");
}

//主函数

int main()
{
	char *p;

    char choose1;
    book abj;

	while (choose1 = abj.start())
	{
		switch(choose1)
		{
		case '1':
			p="mybook1.txt";
			abj.choose_function(p);
		    break;
	    case '2':
		    p="mybook2.txt";
			abj.choose_function(p);
		    break;
	    case '3':
		    p="mybook3.txt";
			abj.choose_function(p);
		    break;
	    case '4':
		    p="mybook4.txt";
			abj.choose_function(p);
	    case '5':
		    cout <<endl <<"\t\t\t谢谢使用通讯录管理系统。" <<endl <<endl;
            abj.exit_system();
            break;
	    default:
		    {
			    cout<<endl;
			    cout<<"\t\t\t输入错误,请重新选择!"<<endl;
			    system("pause");
			    break;
		    }
	    }
	}
	return 0;
}


<span style="font-size:32px;">1.初始界面:可根据需要建立不同的通讯录</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621193545671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;">
</span>
<span style="font-size:32px;">2,选择通讯录</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621193757328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;">
</span>
<span style="font-size:32px;">3.添加联系人</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621193842718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621193901484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /><img src="https://img-blog.csdn.net/20140621193922921?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;">
</span>
<span style="font-size:32px;">4.删除联系人</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621194002953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /><img src="https://img-blog.csdn.net/20140621194010546?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;">
</span>
<span style="font-size:32px;">5.查询联系人</span>
<span style="font-size:32px;">
</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621194122515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621194135656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621194213843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;">
</span>
<span style="font-size:32px;">6.修改联系人资料</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621194416500?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="font-size:32px;">
</span>
<span style="font-size:32px;">7.退出系统</span>
<span style="font-size:32px;"><img src="https://img-blog.csdn.net/20140621194502250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAwNDQzNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值