通讯录的管理实验报告

时间:2024.5.2

数据结构

课外实践报告

项 目 名 称:        通讯录的管理           

所 在 班 级:        计算机科学与技术       

小 组 成 员:    ***********************  

任 课 教 师:            ******              

起 止 时 间:   2012.11.19——2012.12.16   


项目基本信息

课外实践评定成绩记录


一、       问题描述及分析

 随着通讯业发展,学生生活中需要一种电子电话号码本,也为预防手机故障、遗失造成联

  系电话丢失,设计该通讯录查询系统,需要实现添加、插入、查找、修改、删除、显示、读取

  保存信息等功能。用链表的结构来存储数据,共有9个模块,

      imenu函数是主菜单,

      用InsertCon函数实现插入联系人的基本信息的功能,

      用 AddDataType函数实现初始化联系人的基本信息的功能,

      用FindCon函数实现查找联系人的基本信息的功能,

      用 changeMessage函数实现修改联系人的基本信息的功能,

      用 DeleteMessage函数实现删除联系人的基本信息的功能,

      用showmessage函数实现显示联系人的基本信息的功能,

      用 saveFilelinklist函数实现保存联系人的基本信息的功能,

      用 readFilelinklist函数实现读取联系人的基本信息的功能,

使用的是头插法定义链表,从尾部插入的方法实现链表。在主函数则是用一个switch函数控

  制和一个整数型全局变量,可以来选择链表函数,也实现了函数的循环使用。

二、       功能模块及数据结构描述

1、主菜单menu

      { 创建窗口“通讯录管理系统”;}

2、初始化联系人的基本信息 AddDataType

      { 通过该函数实现初始化联系人基本信息的功能  }

3、插入联系人的基本信息InsertCon

      { 通过该函数实现插入联系人基本信息的功能  }

4、查找联系人的基本信息FindCon

      { 通过该函数实现查找联系人基本信息的功能  }

5、修改联系人的基本信息 changeMessage     

      { 通过该函数实现修改某个联系人某些基本信息的功能  }

6、删除联系人的基本信息DeleteMessage

      { 通过该函数实现删除某个联系人全部信息的功能  }

7、保存文件saveFilelinklis

      { 通过该函数实现保存已输入信息的功能  }

8、读取文件内容 readFilelinklist

      { 通过该函数实现读取文件中信息的功能  }

9、显示信息showmessage

      { 通过该函数实现显示已存入的全部联系人的基本信息的功能  }

三、       主要算法流程描述及部分核心算法                 

  1、算法流程图

2、部分核心算法

(1)初始化联系人的基本信息

int AddDataType(linklist *&L)

{

       linklist *p,*q;

       if(L==NULL)

       {

              L=(linklist*)malloc(sizeof(linklist));

              L->next=NULL;

       }

       int i,n;

       system("CLS");

       q=L;

       cout<<"请输入你想输入联系人的人数:"<<endl;

       cin>>n;

       for(i = 1;i<= n;i++)

       {

              p = (linklist *)malloc(sizeof(linklist));

              cout << "开始添加第"<<i<<"个联系人信息:"<< endl;

              cout << "请输入联系人编号:";

              cin >>p->ID ;

              find(L,p->ID);

              cout << "请输入联系人姓名:";

              cin >> p->name;

              cout << "请输入联系人姓别:";

              cin >> p->sex ;

              cout << "请输入联系人班级:";

              cin >> p->Class ;

              cout << "请输入联系人住址:";

              cin >> p->Addr ;

              cout << "输入手机号:";

              cin >> p->Mobi ;

              p->next=L->next;

              L->next=p;

       }

       return 0;

}

(2)插入联系人的基本信息

int InsertCon(linklist *&L)

{

       linklist *p;

       if(L ==NULL)

       {

              cout << "还没有添加任何联系人,请先添加联系人!!"<< endl;

              return 0;

       }

       p = (linklist *)malloc(sizeof(linklist));

       cout << "请依次输入被插入人的信息:编号 姓名  性别  班级 住址 手机号"<< endl;

              cout << "请输入联系人编号:";

              cin >>p->ID ;

              find(L,p->ID);

              cout << "请输入联系人姓名:";

              cin >> p->name;

              cout << "请输入联系人姓别:";

              cin >> p->sex ;

              cout << "请输入联系人班级:";

              cin >> p->Class ;

              cout << "请输入联系人住址:";

              cin >> p->Addr ;

              cout << "输入手机号:";

              cin >> p->Mobi ;

              p->next=L->next;

              L->next=p;

              saveFilelinklist(L );

              system("CLS");

              cout<<"   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"

                     <<"  >>                                                      << "<<endl

                     <<"  >>            信息修改成功!  已保存修改!              << "<<endl

                     <<"  >>                                                      << "<<endl

                     <<"  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;

       return 0;

}

(3)查找联系人的基本信息

int FindCon(linklist *&L)

{

       system("CLS");

       char na[20];

       linklist *p,*q;

       if(L == NULL)

       {

              cout << "没有联系人的信息,请先添加"<< endl;

              return 0;

       }

      

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

       cin >> na;

       p = L;

       while(p!= NULL)

       {

              if(strcmp(p->name ,na)==0)

              {

                     q = p;

                     cout << "找到联系人,信息如下!!"<< endl;

                            cout << "-----------------------------------------------------------"<<endl

                             << "······························"<<endl

                             << "-----------------------------------------------------------"<<endl

                             <<"编号:"<<q->ID <<endl

                             << "-----------------------------------------------------------"<<endl

                             <<"姓名:" <<q->name <<endl

                             << "-----------------------------------------------------------"<<endl

                             <<"性别: " <<q->sex<<endl

                             << "-----------------------------------------------------------"<<endl

                             <<"班级: " <<q->Class <<endl

                             << "-----------------------------------------------------------"<<endl

                             <<"住址: " <<q->Addr <<endl

                             << "-----------------------------------------------------------"<<endl

                             <<"手机号: " <<q->Mobi <<endl

                             << "-----------------------------------------------------------"<<endl;

                     break;

              }

              else

                     p = p->next ;

       }

              return 0;

}

(4)修改联系人的基本信息

int changeMessage(linklist *&L)

{

       linklist *p;

       char id[10];

       char nam[10];

       char sex[5];

       char Addr[50];

       char Class[20];

       char Mobi[20];

       if(L == NULL)

       {

              cout<< "没有任何信息,请返回添加信息!!!"<< endl;

       return 0;

       }

       else

              p = L;

       cout << "请你输入要修改的人的名字:";

       cin >> nam;

       while(p != NULL && p->name != nam)

              {

                     if(strcmp(p->name ,nam)==0)

                     {

                            strcpy(p->name ,nam);

                            int choose;

                            do

                            {

                                   cout << "请选择要修改哪一项的信息!!!"<< endl;

                                   cout << "1 修改编号 2 修改性别  3 修改班别  4 修改地址  5 修改手机号码 " << endl;

                                   cin >> choose;

                                   switch(choose)

                                   {

                                   case 1:

                                          cout << "请输入要修改后的编号:";

                                          cin >> id;

                                          find(L,id);

                                          strcpy(p->ID ,id);

                                          cout << "编号修改成功!!!"<< endl;

                                          system("CLS");

                                          return 0;

                                          break;

                                   case 2:

                                          cout << "请输入要修改后的性别:";

                                          cin >> sex;

                                          strcpy(p->sex , sex);

                                          cout << "性别修改成功!!!"<< endl;

                                          system("CLS");

                                          return 0;

                                          break;

                                   case 3:

                                          cout << "请输入修改后的班别:";

                                          cin >> Class;

                                          strcpy(p->Class ,Class);

                                          system("CLS");

                                          cout << "班别修改成功!!!"<< endl;

                                          return 0;

                                          break;

                                   case 4:

                                          cout << " 请输入修改后的地址:";

                                          cin >> Addr;

                                          strcpy(p->Addr ,Addr);

                                          system("CLS");

                                          cout << "地址修改成功!!!"<< endl;

                                          return 0;

                                          break;

                                   case 5:

                                          cout << "请输入修改后的手机号码:";

                                          cin >> Mobi;

                                          strcpy(p->Mobi ,Mobi);

                                          system("CLS");

                                          cout << "手机号修改成功!!!"<< endl;

                                          return 0;

                                          break;

                                   default:

                                          cout << "输入错误,重新选择!!" << endl;

                                          break;

                                   }

                            }while(choose != 0);

                           

                     }

                     else if(p->next  != NULL && p->name != nam)

                     {

                            p = p->next ;

                     }

                     else

                     {

                            cout << "输入名字错误,请重新选择4修改!!!" << endl;

                            return 0;

                     }

              }

}

(5)删除联系人的基本信息

int DeleteMessage(linklist *&L)

{

       linklist *p,*q;

       char a[20];

       cout << "请输入要删除联系人的姓名:";

       cin >> a;

      

       if(L == NULL)

       {

              cout << "没有任何信息可删除,请添加信息!!"<< endl;

              return 0;

       }

       p=L->next;

       q=L;

       while(p!=NULL)

       {

       if(strcmp(p->name ,a)==0)

              {

                     q->next=p->next;

                     delete(p);

                     cout<<"该联系人已成功删除"<<endl;

                     return 0;

              }

              q=q->next;

              p=p->next;

       }

       while(p==NULL)

       {

              cout<<"对不起,没有该联系人"<<endl;

              return 0;

       }

}

(6)保存文件

int saveFilelinklist(linklist *&L )

{

       char *fileName;

       FILE *fp;

       linklist *p;

       p = (linklist *)malloc(sizeof(linklist));

       if(p==NULL)

       {

              cout <<"分配内存失败"<< endl;

            }

       if(L==NULL)

       {

              cout <<"没有任何信息,请先添加信息!!"<< endl;

              return 0;

       }

       else

       {

              ofstream fout("123.txt",ios::out);

              if(!fout)

              {

                     cout<<"cannot open output file.\n";

                     return 1;

              }

              p=L->next;

              do

              {

                     fout<<p->ID;

                     fout<<" ";

                     fout<<p->name;

                     fout<<" ";

                     fout<<p->sex;

                     fout<<" ";

                     fout<<p->Class;

                     fout<<" ";

                     fout<<p->Addr;

                     fout<<" ";

                     fout<<p->Mobi;

                     if (p->next!=NULL)//若不是最后一个记录

                            fout<<"\n";

                     p=p->next;

              }while(p!=NULL);

              fout.close;

                     cout<<"   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl

                            <<"  >>                                                      <<"<<endl

                            <<"  >>                      信息保存成功                    <<"<<endl

                            <<"  >>                                                      <<"<<endl

                            <<"  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;

       }

       return 0;

}

(7)读取文件内容

int readFilelinklist(linklist *&L)

{

       linklist *p;

       if(L==NULL)

       {

              L=(linklist*)malloc(sizeof(linklist));

              L->next=NULL;

       }

       ifstream fin("123.txt",ios::in);

       if(!fin)

       {

              cout<<"cannot open input file.\n";

              return 1;

       }

       char str[200];

       while(!fin.eof())

       {

              p= (linklist *)malloc(sizeof(linklist));

              for (int i=0; i<6; i++)

              {

                    

                     fin>>str;

                     switch(i)

                     {

                     case 0:

                          strcpy(p->ID,str);

                        break;

                     case 1:

                             strcpy(p->name,str);

                        break;

                     case 2:

                            strcpy(p->sex,str);

                        break;

                     case 3:

                            strcpy(p->Class,str);

                        break;

                     case 4:

                            strcpy(p->Addr,str);

                        break;

                     case 5:

                            strcpy(p->Mobi,str);

                        break;

                     }

              }

              p->next=L->next;

              L->next=p;

       }

       fin.close ;

       return 0;

}

(8)显示信息

void showmessage(linklist *&L)

 {

        linklist *p;

        int i=0;

        if(L == NULL )

        {

               cout << "没有任何信息可输出,请添加信息!!!"<< endl;

        }

        else

        {

        p = L->next;

        cout << "*******************************联系表如下***************************************";

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

        cout <<"  "<<" 编号     "<<"姓名      "<<" 性别      "<< "班别        "<<" 住址       "<<"手机号       "<< endl;

        cout <<"--------------------------------------------------------------------------------";

        do

        {

               i++;

               cout << endl;

               cout <<i;

               cout <<"  "<<p->ID<<"     "<<p->name<<"         "<<p->sex<<"     "<<p->Class<<"  "<<endl

                       <<p->Addr<<"    "<<p->Mobi<<endl;

               cout <<"------------------------------------------------------------------------------"<<endl;

               p = p->next ;

               if (i==70)

                      break;

              }while(p!=NULL);

        do

        {

               i++;

               cout << endl;

               cout <<i;

               cout <<"  "<<p->ID<<"     "<<p->name<<"         "<<p->sex<<"     "<<p->Class<<"  "<<endl

                       <<p->Addr<<"    "<<p->Mobi<<endl;

               cout <<"------------------------------------------------------------------------------"<<endl;

               p = p->next ;

        }while (p!=NULL);

        }

         cout << "*********************************联系表***************************************";

        cout << endl;

 }

四、       系统使用说明

程序运行后,进入如下界面进行相应的基本操作:

进入该界面,按照提示,进行基本操作(按1,进行插入联系人信息的操作;按2,进行插入

联系人信息的操作;按3,进行查找联系人信息的操作;按4,进行修改联系人信息的操作;

按5,进行删除联系人信息的操作;按6,进行显示联系人信息的操作;按7,进行保存联系人

信息的操作;按8,推出程序。)在键盘上按照提示输入相应信息进行操作。

五、       问题及解决办法

调试过程中遇到的主要问题有哪些?如何解决的。有何结论?

1、调试出现的问题:删除或查找的信息并不存在    

解决办法:设置错误提示    

2、调试出现的问题:输出结果和预期不一样

         解决办法:设置断点对变量添加监视进行调试

六、       课外实践总结

通过这次的上机实验,使我学到了一些回顾了以前学过的知识,使我对数据结构程序设计有了更深层次的认识和理解,懂得了灵活运用。在设计的同时,我还发现了自己的不足之处,对以前所学的知识理解的不够深刻、掌握的不够牢固。而且即使感觉自己的理论上已经掌握,但运用到实践过程中仍有意想不到的困难,比如删除那一块的程序,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣。

通过这次课外实践,我们也体会到了团队合作的重要性,从最初的查阅资料到最后的程序的成功运行,我们组有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。经过这次课程设计,我们不仅学到了很多知识和技能,更重要的是我们学会了如何运用所学知识去解决实际问题。

总之,这次课外实践设计让我们受益匪浅。我们深深认识到,要学好一门学科,没有刻苦钻研的精神是不行的,只有在不断的尝试中,经历失败,从失败中总结经验,然后再不断的尝试,才能获得成功。

更多相关推荐:
数据库通讯录系统实验报告

学号设计说明书通讯录管理系统起止日期20xx年12月31日至20xx年1月4日学班成生姓名级绩刘艳仙12计算机2班指导教师签字电子与信息工程系20xx年1月5日1通讯录管理系统摘要互联网的出现与迅速发展信息技术...

通讯录管理系统实验报告

ADONET实验报告通讯录管理系统专业计算机嵌入式班级10455341日期20xx0528一实验目的1通过这一项目的实现进一步掌握利用ADONET连接都数据库进行访问2掌握利用ADONET来操纵数据库中的数据的...

通讯录管理系统实验报告(C语言)

通讯录管理系统实验报告学院:物理与电子工程学院专业:电子信息科学与技术学号:***姓名:**日期:20xx年6月12日一.题目要求用C设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。功能要求(1)查…

通讯录管理系统实验报告

通讯录管理系统测试报告姓名李晨雪专业计算机科学与技术班级6班学号20xx030010一实验内容1设计并实现通讯录管理系统该系统提供多用户的通讯录管理并能对通讯录中的联系人分组2具体任务完成用户管理窗口完成用户登...

c课程设计报告书——通讯录管理系统

C语言程序设计实习报告手机通讯录管理系统一、设计题目的任务和内容任务:本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的…

C#实验报告通讯录管理系统

C实验报告通讯录管理系统学院计算机科学学院班级12级网络工程1班姓名张挺学号4120xx40120日期20xx年11月11日一试验目的熟悉数据库应用程序的开发步骤学会运用数据库组件结构中的数据集组件数据源组件和...

通讯录管理实验报告

通讯录管理系统许在魁010101020xx210338一实验要求设计一个通信录由以下几项数据信息构成数据项类型姓名字符串地址字符串邮政编码字符串电话号码字符串试为通信录数据定义类型和定义通信录变量实现功能存取显...

个人通讯录管理系统课程设计报告示例

重庆科技学院个人通讯录管理系统课程设计报告重庆科技学院课程设计报告院系电气与信息工程学院班级计科普1001学生姓名刘静学号20xx441674设计地点单位计算机自主学习中心设计题目个人通讯录管理系统完成日期20...

C语言课程设计报告—手机通讯录管理系统

目录摘要2第一章绪论311课程设计目的和内容概述312题目手机通讯录管理系统3第二章程序分析421总体设计422详细设计423总流程图4第三章模块介绍和总体实现731构建结构体写入文件732构造函数与模块833...

c语言课程设计报告书_通讯录管理系统[1]

题目通讯录管理系统一需求分析任务要求自学C语言中有关链表及外部文件的内容设计出通讯录管理系统具体要求如下建立通讯录信息信息至少包括编号姓名年龄电话通讯地址电子邮箱等内容能够提供添加删除和修改通讯录信息等功能能够...

通讯录管理系统设计报告

通讯录管理系统设计报告姓名SpringBrother学号专业指导教师通讯录管理系统C设计报告目录摘要3第1章概述黑体小二号字411系统实现的目标黑体小三号字412系统实现方案413系统实现环境414具体的开发方...

通信录管理系统实验报告

南京工程学院课程设计报告设计名称通信录管理系统课程名称高级语言程序设计C院系部通信工程学院班级算通111姓名余丹红学号20xx10410设计地点信息楼实验室C216指导老师实验时间20xx年3月5日至3月8日成...

通讯录管理系统实验报告(25篇)