当前位置:文档之家› 数据结构课程设计-通讯录管理系统

数据结构课程设计-通讯录管理系统

《数据结构》课程设计报告书题目:通讯录管理系统系别:计算机科学与应用系学号:学生姓名:指导教师:完成日期:2012年5月28日1 问题描述(1)题目内容:通讯录管理。

(2)基本要求:利用单链表实现通讯录的建立、通讯者的插入、通讯者的删除、通讯者的查询以及通讯录的输出。

(3)设计目的:通过本次课程设计,了解通讯录的一些基本功能。

掌握利用单链表进行插入,查找,用关键字建立单链表。

2 需求分析经过本次的课程设计,我认为通讯录主要实现的功能如下:(1)添加信息:一个通讯录应该有其基本的添加功能。

在程序设计时,我通过一个具有添加功能的函数,实现了个人信息的添加,如:姓名,性别,电话号码,QQ号码,地址。

(2)删除信息:当你不需要某个联系人的信息时,可以直接将该人的信息删除。

(3)查找:一个通讯录应该具有令一基本功能就是查找,本设计时可以按联系人为关键字查找的,只要你输入要查找人的姓名或手机号码或QQ号码就可出来相应的个人信息。

(4)输出:一个通讯录应该具有输出所有联系人的功能,本设计按照次序可以从头到尾把通讯录中的所有联系人都输出,供自己查看。

(5)退出:当你做完你要做的事情之后,就可以退出该程序。

3 总体设计3.1 算法的定义LinkList Creat_LinkList()创建空单链表void Insert_LinkList(LinkList H)建立通讯录,录入联系人的信息,可以把联系人的姓名,性别,手机号,QQ号,地址录入系统。

void Locate_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码查找通讯录中联系人的信息。

void Delete_LinkList(LinkList H)按照联系人的姓名,手机号码,QQ号码删除联系人的所有信息。

void print_LinkList(LinkList H)输出通讯录中的所有联系人的信息供使用者查看。

3.2 系统流程图图3-1通讯录管理功能图3.3 详细程序设计1)定义数据结构typedef struct Node //定义数据结构{char name[20];//姓名char sex[4]; //性别char tel[11];//电话号码char qq[13]; //qq号码char ad[100];//地址Node *next;//存放后继元素的地址}LNode,*LinkList;2)创建一个空的单链表LinkList Creat_LinkList(){//创建空单链表,入口参数无LinkList H;H=new LNode;if(H)//确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表{H->next=NULL;}return H;}3)向通讯录中插入联系人void Insert_LinkList(LinkList H){LinkList p;p=new LNode;if(!p){cout<<"不能插入!"<<endl;}cout<<"请输入你要插入的联系人信息:"<<endl;cout<<"姓名:"<<endl;cin>>p->name;cout<<"性别:"<<endl;cin>>p->sex;cout<<"手机号码:"<<endl;cin>>p->tel;cout<<"QQ号码:"<<endl;cin>>p->qq;cout<<"地址:"<<endl;cin>>p->ad;p->next=H->next;H->next=p;cout<<"插入成功"<<endl;}4)查询通讯录中某个联系人的信息void Locate_LinkList(LinkList H){int x;LinkList p=H->next;cout<<"你要通过哪种方式查询?"<<endl;cout<<"1.通过联系人姓名查询"<<endl;cout<<"2.通过联系人手机号码查询"<<endl;cout<<"3.通过联系人QQ号码查询"<<endl;cin>>x;char str[30];if(x==1){cout<<"请输入你要查询的联系人的姓名:";cin>>str;while(p && strcmp(p->name,str)!=0){p=p->next;}}if(x==2){cout<<"请输入你要查询的联系人的手机号码:";cin>>str;while(p&&strcmp(p->tel,str)!=0){p=p->next;}}if(x==3){cout<<"请输入你要查询的联系人的QQ号码:";cin>>str;while(p&&strcmp(p->qq,str)!=0){p=p->next;}}if(p==NULL){cout<<"没有找到你要查找的联系人的信息!"<<endl;}else{cout<<"你要找的联系人的信息为:"<<endl;cout<<"姓名:"<<p->name<<endl;cout<<"性别:"<<p->sex<<endl;cout<<"手机号:"<<p->tel<<endl;cout<<"QQ号码"<<p->qq<<endl;cout<<"地址"<<p->ad<<endl;}}5)删除通讯录中某个联系人的信息void Delete_LinkList(LinkList H){if(H->next==NULL){cout<<"通讯录为空,不能删除"<<endl;}else{int x;char str[30];LinkList p,q;p=H->next;cout<<"请输入你要删除的方式:"<<endl;cout<<"1.按照联系人的姓名删除"<<endl;cout<<"2.按照联系人的手机号码删除"<<endl;cout<<"3.按照联系人的QQ号码删除"<<endl;cin>>x;q=H;if(x==1){cout<<"请输入你要删除的联系人的姓名:"<<endl;cin>>str;while(strcmp(p->name,str)!=0){q=p;p=p->next;}}if(x==2){cout<<"请输入你要删除的联系人的手机号码:"<<endl;cin>>str;while(strcmp(p->tel,str)!=0){q=p;p=p->next;}}if(x==3){cout<<"请输入你要删除的联系人的QQ号码:"<<endl;cin>>str;while(strcmp(p->qq,str)!=0){q=p;p=p->next;}}if(p==NULL){cout<<"没有你要删除的联系人的记录"<<endl;}else{q->next=p->next;p->next=NULL;free(p);cout<<"该联系人已删除"<<endl;}}}6)输出所有联系人void print_LinkList(LinkList H){if(H->next==NULL){cout<<"通讯录为空"<<endl;}else{LinkList p;p=H->next;while(p!=NULL){cout<<"性别:"<<p->sex<<endl;cout<<"手机号:"<<p->tel<<endl;cout<<"QQ号码:"<<p->qq<<endl;cout<<"地址:"<<p->ad<<endl;p=p->next;}}}7)主函数void main(){int a;LinkList List;List=Creat_LinkList();do{cout<<"*****欢迎进入通讯录管理*****"<<endl;cout<<"*****添加联系人请按1*****"<<endl;cout<<"*****查找联系人请按2*****"<<endl;cout<<"*****删除联系人请按3*****"<<endl;cout<<"*****输出所有联系人请按4*****"<<endl;cout<<"*****退出请按0*****"<<endl;cout<<"请输入你的选择:"<<endl;cin>>a;switch(a){case 0:break;case 1:Insert_LinkList(List);break;case 2:Locate_LinkList(List);break;case 3:Delete_LinkList(List);break;case 4:print_LinkList(List);break;}cout<<"操作完毕,请再次选择!"<<endl;}while(a!=0);}3.4 测试运行程序,看到主界面。

相关主题