个人项目 Individual Project

通讯录中的联系人包含以下信息项:姓名、手机、办公电话、家庭电话、电子邮箱、所在省市、工作单位、家庭住址,群组分类(亲属、同事、同学、朋友、其他)

系统的主要功能包括:

1. 输入联系人的信息,要求:至少输入10个联系人的数据,且注意数据的多样性。

2. 按姓名对联系人信息进行排序,并将排序后信息存放到一个文本文件中。

3. 添加联系人的信息,在已经存在的通讯录文件中添加若干个联系人。要求:添加后仍按联系人的姓名排序,并保存至原文件。

4. 删除联系人的信息,输入一个姓名,若通讯录中有该联系人的信息,则删除该联系人,否则输出提示信息,并提示用户选择是否继续进行删除操作。

5. 修改联系人的信息,输入一个姓名,根据具体需要修改该联系人的某一项信息,将修改后的信息重新保存到通讯录文件中,并提示用户选择是否继续进行修改操作。

6. 按不同条件对通讯录进行查询操作,输出满足条件的联系人的信息。

(1) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)

(2) 按手机号码查询,输入全部号码或号码位段(如输入130133139等);

(3) 按群组分类查询,输入分类名称,输出该群组的全部联系人信息。

7. 输出联系人的信息,按一定格式输出信息,保证信息排列整齐美观。

 

三.源程序

 

#include<iostream>

 

#include <stdio.h>

 

#include <fstream>

 

#include <string.h> 

 

#include <iomanip>

 

#include <string>

 

#define N 20

 

using namespace std;

 

struct 

 

{

 

char name[20]; //人名

 

char post[20]; //工作单位

 

int tel; //电话号码

 

char email[20]; //email地址

 

}TelInfo;

 

void menu();

 

 void addrecord()

 

{

 

  char ch;

 

 ofstream ofile("Result.txt",ios_base::out);

 

  do

 

   {

 

    cout<<"请输入通讯录信息"<<endl;

 

    cin>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

 

    ofile<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

 

 cout<<"have another student record(y/n))?"<<endl;

 

 

 

 std::cin>>ch;

 

   }while(ch=='y');

 

   ofile.close();

 

}

 

 

 

void  changecord()

 

{

 

    ifstream da("Result.txt", ios_base::in);string str; bool flag = true;

 

 ofstream data("return.txt", ios_base::out);

 

 char a[20];

 

 if (!da)

 

    {

 

        cout<<"找不到文件!!!!"<<endl;

 

        return;

 

    }

 

 cout<<"请输入你要修改人的姓名"<<endl;

 

 cin>>a;

 

 while ( da>>TelInfo.name)

 

    {  

 

        getline(da, str);

 

        

 

        if (strcmp(TelInfo.name,a)==0)

 

        {

 

            cout<<"你想修改的联系人:" <<endl;

 

            cout<<TelInfo.name<<"  "<<str<<endl;

 

   flag=false;

 

            break;

 

        }

 

        

 

        data<<TelInfo.name

 

            <<" "<<str<<endl;

 

    }

 

 if(flag)cout<<"没有该人"<<endl;

 

 else

 

 {

 

        while (getline(da, str))

 

        {

 

            data<<str <<endl;

 

        }

 

        da.close();

 

        data.close();

 

        ifstream in("return.txt", ios::in);

 

        ofstream out("Result.txt", ios::out);

 

        if (!out || !in)

 

        {

 

            cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;

 

            return;

 

        }

 

        while (getline(in, str))

 

        {

 

            out<<str<<endl;

 

        } 

 

        

 

        in.close();

 

        ofstream change("Result.txt",ios_base::app);

 

  cout<<"请输入修改的信息"<<endl;

 

        cin>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

 

        out<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

 

        cout<<"这个人的信息已经从你的通迅录中修改!!!" <<endl;out.close();

 

 

 

 }

 

}

 

void delrecord()

 

{

 

  ifstream da("Result.txt", ios_base::in);string str; bool flag = true;

 

 ofstream data("return.txt", ios_base::out);

 

 char a[20];

 

 if (!da)

 

    {

 

        cout<<"找不到文件!!!!"<<endl;

 

        return;

 

    }

 

 cout<<"请输入你要删除人的姓名"<<endl;

 

 cin>>a;

 

 while ( da>>TelInfo.name)

 

    {  

 

        getline(da, str);

 

      if (strcmp(TelInfo.name,a)==0)

 

        {

 

            cout <<endl <<"你想删除的联系人:" <<endl;

 

            cout<<TelInfo.name<<"  "<<str<<endl;

 

   flag=false;

 

            break;

 

        }

 

        

 

        data<<TelInfo.name

 

            <<" "<<str<<endl;

 

    }

 

 if(flag)cout<<"没有该人"<<endl;

 

 else

 

 {

 

        while (getline(da, str))

 

        {

 

            data<<str <<endl;

 

        }

 

        da.close();

 

        data.close();

 

        ifstream in("return.txt", ios::in);

 

        ofstream out("Result.txt", ios::out);

 

        if (!out || !in)

 

        {

 

            cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;

 

            return;

 

        }

 

        while (getline(in, str))

 

        {

 

            out<<str<<endl;

 

        } 

 

        out.close();

 

        in.close();

 

    cout <<endl <<"这个人的信息已经从你的通迅录中删除!!!" <<endl <<endl;

 

 

 

 }

 

 

 

}

 

void printcord()

 

{

 

 char ch;

 

 ifstream da("Result.txt");

 

     cout<<"人名 "<<"工作单位 "<<"电话"<<" 地址"<<endl;

 

 while (da.get(ch))

 

    cout << ch;

 

    da.close();

 

 

 

}

 

void searchcord()

 

{

 

 char a[20],b[20];int n,m;  ifstream da("Result.txt");

 

 cout<<"请输入要查找方式:";

 

 cout<<"1.姓名:";

 

 cout<<"2.电话号码:";

 

 cin>>n;

 

 if(n==1)

 

 {

 

        cout<<"请输入要查询的姓名"<<endl;

 

        cin>>a;

 

  while(da.eof()==0)

 

  {

 

         da>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

 

         if(strcmp(TelInfo.name,a)==0)

 

   {

 

                cout<<"人名 "<<"工作单位 "<<"电话"<<" 地址"<<endl;

 

              cout<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

 

   }

 

  } 

 

  da.close();

 

 }

 

 if(n==2)

 

 {

 

  cout<<"请输入要查询的电话"<<endl;

 

        cin>>m;

 

  while(da.eof()==0)

 

  {

 

         da>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

 

         if(TelInfo.tel==m)

 

   {

 

                cout<<"人名 "<<"工作单位 "<<"电话"<<" 地址"<<endl;

 

              cout<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

 

   }

 

  } 

 

  da.close();

 

 }

 

 

 

    

 

}

 

void main()

 

{

 

 menu();

 

}

 

void menu()

 

{

 

   int i;

 

    for(;;){

 

        std::cout<<"通讯录管理系统字符界面版"<<std::endl;

 

  std::cout<<"##################################"<<std::endl;

 

        std::cout<<"请选择操作:"<<std::endl;

 

        std::cout<<"\t1.添加记录"<<std::endl;

 

        std::cout<<"\t2.修改记录"<<std::endl;

 

        std::cout<<"\t3.删除记录"<<std::endl;

 

        std::cout<<"\t4.数据显示"<<std::endl;

 

        std::cout<<"\t5.查询记录"<<std::endl;

 

  std::cout<<"\t6.退出"<<std::endl;

 

        std::cin>>i;

 

        if(!std::cin.good()){

 

            std::cout<<"非法输入!"<<std::endl;

 

            std::cin.clear();

 

        }

 

        switch(i){

 

            case 1:

 

                addrecord();break;

 

            case 2:

 

                changecord();

 

                break;

 

            case 3:

 

                delrecord();

 

                break;

 

            case 4:

 

                printcord();

 

                break;

 

            case 5:

 

                searchcord();

 

                break;

 

            case 6:

 

                return;

 

           default:

 

                std::cout<<"错误的选项!"<<std::endl;

 

        }

 

    }

 

 

通过这次通讯录的设计,我对很多的函数有了新的认识,也学会了运用多种函数,明白了写软件的基本过程和基本方法。 
 在设计的过程中遇到了很多的困难,有程序上的也有实验报告上的,尤其是软件在一次一次的调试失败后,对我们打击很大。但最后我们还是咬牙让自己坚持了下来,通过小组的不断试验和讨论以及同学们的帮助,我们总算顺利的完成了程序设计。虽然在调试过程中遇到了许多困难,但当调试成功时那种喜悦的感觉,没有什么东西可以代替。在编写过程中我们都发现我们有许多的知识漏洞和缺陷,需要进一步努力来不断完善自己。 
 总之,此次过程不仅给我很多好的经验,同时加深了同学间的关系,增强了团队解决问题的能力。

 

posted @ 2015-04-29 12:54  风萧沫  阅读(273)  评论(4编辑  收藏  举报