数据结构课程设计——双链表通讯录


李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人 通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用 双向链表作数据结构。并制定了初步要求:

1每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。

2作为一个完整的系统,应具有友好的界面和较强的容错能力。


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------





一、设计理念


今时今日,人们越来越热衷于进行社交活动,结交更多朋友,丰富生活。因此,面对人们持续增长的社交需求,一个简洁高效的通讯录程序将有助于人们通过电脑主机或者移动终端更加方便的管理数量繁多的联系人的具体信息,在有需要的时候可以进行更高效率的查找操作。


本通讯录程序是一个专门针对储存用户联系方式以及一些简单个人信息的应用程序,它方便了用户对众多人脉的个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。


【关键词】C++通讯录管理查找修改删除双链表


 


二:程序概述


2.1系统实现的目标


1录入:通讯录信息包括:姓名,电话,地址等信息。


2更新:能插入、删除通讯录信息。.


3浏览:能够查看所有的通讯录信息。 


4查询:能实现指定姓名信息查询功能。


5系统以菜单方式工作,易于操作。


 


2.2系统实现方案


为实现系统功能,本程序主要分为五个模块。它们分别为:输入一个信息、删除一个信息、查询一个信息、列出所有的信息、退出该程序。这五个函数再通过主函数调用分别得以实现。


主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用通讯录的哪种功能。然后,通过执行switch语句,分别实现其它各个函数的调用功能。


 


2.3系统实现环境


通过VC++6.0C++语言对程序进行编写设计


windows界面下用 DOS访问


 


2.4具体的开发方法


用面向对象的程序设计方法,运用C++语言编写程序进行本通讯录程序的详细设计,使之能提供录入、显示、查找、删除的功能。


最后在VC++6.0环境下编写和调试程序,进而完成系统的实现。


 


三、程序设计


           
    圆角矩形: 用户界面
 
   
 
 

 


 


 


 


 


 


 


功能:


1.输入联系人的信息


2.显示联系人的信息


3.查找联系人的信息


4.删除联系人的信息


 


四、源代码


4.1头文件node.h


#ifndef node_H


#define node_H


 


struct node


{


     node *pre;


     char Name[15];


     char Sex[4];


     char Age[4];


     char Number[15];


     char Address[20];


     node *next;


};


 


class DoubleNode


{


private:


     node *head;


  node *tail;


     node* temp;


public:


     DoubleNode()  { head = NULL; tail = NULL; }


     ~DoubleNode() { head = NULL; tail = NULL;}


     void ShowMenu();


     void Show();


     void Search();


     void Add();


     void Delete();


};


 


#endif


 


4.2程序文件DoubleNode.cpp


#include


#include


#include"node.h"


using namespacestd;


 


voidDoubleNode::ShowMenu()


{


     cout << "     主菜单      " << endl;


     cout <<"**********************" << endl;


     cout << "    1.增加名片    "<< endl;


     cout << "    2.删除名片     "<< endl;


     cout << "    3.查找名片      "<< endl;


     cout << "    4.显示名片      "<< endl;


     cout << "    5.退出           " << endl;


     cout << "**********************"<< endl;


     cout << "请输入需要进行的操作的序号" << endl;


}


 


voidDoubleNode::Show()


{


      temp = head;


     if (temp == NULL)


          cout <<"通讯录为空!" << endl;


 


     while (temp != NULL)


     {


          cout << endl;


          cout << "姓名:" << temp->Name <


          cout << "性别:" << temp->Sex <


          cout << "年龄:" << temp->Age <


          cout << "号码:" << temp->Number <


          cout << "地址:" << temp->Address <


          temp = temp->next;


          cout << endl;


     }


     system("pause");


}


 


voidDoubleNode::Search()


{


     char name[15];


     cout << "请输入要查找的姓名:";


     cin >> name;


 


     temp = head;


     while (temp != NULL)


     {


          if (strcmp(temp->Name, name) == 0)


          {


                cout << "姓名:" << temp->Name <


                cout << "性别:" << temp->Sex <


                cout << "年龄:" << temp->Age <


                cout << "号码:" << temp->Number <


                cout << "地址:" << temp->Address <


                break;


          }


          else


                temp = temp->next;


          if (temp == NULL)


                cout << "没有查找到目标" << endl;


     }


     system("pause");


}


 


voidDoubleNode::Add()


{


     node *t = new node;


     cout << "请输入新名片的姓名:"; cin >> t->Name;


     cout << "请输入新名片的性别:"; cin >> t->Sex;


     cout << "请输入新名片的年龄:"; cin >> t->Age;


     cout << "请输入新名片的号码:"; cin >> t->Number;


     cout << "请输入新名片的地址:"; cin >> t->Address;


 


     if (head == NULL)


     {


          head = t;


          t->pre = NULL;


          t->next = NULL;


          tail = t;


     }


     else


     {


          tail->next = t;


          t->next = NULL;


          t->pre = tail;


          tail = t;


     }


}


 


voidDoubleNode::Delete()


{


     char name[15];


     cout << "请输入要删除名片的姓名:";


     cin >> name;


 


      temp = head;


     while (temp != NULL)


     {


          if (strcmp(temp->Name, name) == 0)


          {


                if (temp == head)


                {


                     head = temp->next;


                     if (head != NULL)


                           head->pre = NULL;


                }


                else if (temp == tail)


                {


                     temp->pre->next =NULL;


                     tail = temp->pre;


                }


                else


                {


                     temp->pre->next =temp->next;


                     temp->next->pre =temp->pre;


                }


                delete temp;


                break;


          }


          else


                temp = temp->next;


 


          if (temp == NULL)


                cout << "没有找到目标" << endl;


     }


     system("pause");


}


 


4.3主函数文件DoubleNode_main.cpp


#include


#include


#include"node.h"


using namespacestd;


 


int main()


{


     DoubleNode p;


     char ch;


     while (1)


     {


          p.ShowMenu();


          cin >> ch;


          switch (ch)


          {


          case'1':


                p.Add();


                break;


          case'2':


                p.Delete();


                break;


          case'3':


                p.Search();


                break;


          case'4':


                p.Show();


                break;


          case'5':


                break;


          }


          if (ch == 5)


                break;


     }


     return 0;


}


 


五、程序应用


数据结构课程设计——双链表通讯录_第1张图片

主界面





数据结构课程设计——双链表通讯录_第2张图片


输入1进行插入操作



数据结构课程设计——双链表通讯录_第3张图片

 输入4显示出所有已输入的信息





数据结构课程设计——双链表通讯录_第4张图片

输入2进行删除信息的操作


 


数据结构课程设计——双链表通讯录_第5张图片


输入3按姓名查找信息


 


 


六、设计总结


   经过一段时间的操作,我终于完成了这个双链表通讯录的设计。尽管由于对双链表结构不熟悉和个人编程水平不足等原因,本程序本身仍存在许多不足,我希望在将来通过个人编程水平的不断提高,可以编写出更加完善的程序。



你可能感兴趣的:(数据结构课程设计——双链表通讯录)