课程设计:通讯录

来源:互联网 发布:linux系统more命令 编辑:程序博客网 时间:2024/04/27 02:20
//*****************************************************
//                 通讯录管理系统                    
//*****************************************************


#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;
}
0 0