通讯录管理系统C++实验报告《C++数据结构》课程设计班级信管1123 指导老师吴卫祖学号 201211671330 姓名易梓麒2014 年 7 月 7 日目录目录 (4)通讯录管理系统 (5)一. 问题描述 (5)1.1系统总体描述 (5)1.2需求分析 (6)1.3系统实现方案 (6)二.概要设计(流程) (6)三.详细模块设计 (9)3.1信息录入 (9)3.2显示信息 (10)3.3按姓名查找信息 (10)3.4删除联系人信息 (11)3.5保存信息至文件 (12)3.6读取信息 (12)3.7添加信息 (13)3.8退出 (13)3.9主函数 (14)四.程序运行示意图 (15)4.1主界面 (15)4.2输入信息 (16)4.3显示记录 (16)4.4删除记录 (17)4.5查阅记录 (17)4.6保存记录 (18)4.7读取记录 (19)4.8添加记录 (19)五.总结与心得 (20)六.附录#源代码 (20)通讯录管理系统一.问题描述1.1系统总体描述本系统是一款基于对通讯录中联系人进行管理的系统,可使用户更好的对通讯录中的联系人进行基本的操作。
1.2需求分析根据需求,该系统应具备以下功能:1.对联系人基本信息的录入2.显示所有联系人的基本信息3.按照姓名查找联系人信息4.删除联系人信息5.保存联系人信息至文件6.从文件中读取联系人的信息7.添加新联系人信息1.3系统实现方案为实现系统功能,本系统共分为构建链表函数,显示函数,查找函数,删除函数,保存函数,读取函数,添加函数以及退出系统。
这七个函数通过主函数switch语句进行调用。
二.概要设计(流程)开始进入主函数三.详细模块设计3.1信息录入输入信息函数(Createlist)首先建立一个空的链表,其次进行对联系人基本信息比如联系人姓名,电话,Email,以及与自己的关系等的输入。
代码示意图如下:3.2显示信息显示函数(showlist)用于向用户显示用户所输入过的联系人的各种资料,包括姓名,电话,Email,关系等。
代码示意图如下:3.3按姓名查找信息查阅函数(chayue)用于用户按照联系人姓名查找以及显示该联系人的各种信息。
如果没有该联系人的信息则会显示“查找不到联系人信息!”代码示意图如下:3.4删除联系人信息删除函数(delete0会帮助用户删除所不需要的联系人的各种信息。
该函数先是查找到相应的联系人信息之后执行删除操作。
删除后将不会再显示该联系人的信息。
代码示意图如下:3.5保存信息至文件保存函数(baocun)用于永久性将联系人信息保存在文件中而不是内存中,以便于用户以后打开该系统时依旧可以看到以往输入过的联系人信息。
代码示意图如下:3.6读取信息读取函数(duqu)用于用户读取之前所保存在文件中的联系人信息。
代码示意图如下:3.7添加信息添加函数(tianjia)用于帮助用户添加新的联系人信息。
代码示意图如下:3.8退出退出该系统!3.9主函数主函数用于向用户展示此通讯录管理系统的主界面,并让用户可选择可执行的操作。
代码示意图如下:四.程序运行示意图4.1主界面4.2输入信息4.3显示记录4.4删除记录4.5查阅记录如果没有该联系人的话:4.6保存记录4.7读取记录4.8添加记录五.总结与心得课程设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。
回顾此次数据结构课程的学习,至今我仍感慨颇多,此次课程设计不仅可以巩固了以前所学的知识,而且学到了很多在书本上所没有学到过的知识。
我坚信此次的课程设计能够在以后的学习与实践结合方面对我提供很大的帮助!六.附录#源代码#include<iostream.h>#include<string.h>#include <fstream.h>#include <stdlib.h>#include<conio.h>struct Address //说明结构{char name[20]; //结点data域char Tel[20];char Email[20];char Relation[20];Address *next ; //结点next域};void Createlist(Address *&head) //建立链表{Address *s,*p;s=new Address;int a=1;while (a==1){cout<<"请输入姓名:";cin>>s->name;cout<<"请输入电话号:";cin>>s->Tel;cout<<"请输入Email:";cin>>s->Email;cout<<"请输入与您关系:";cin>>s->Relation;{if (head==NULL)head=s ;else p->next=s ;}p=s ;s=new Address ;cout<<"是否继续输入,输入按1不输入按0 :"; //判断是否继续输入cin>>a;}p->next=NULL;delete s;return ;}void showlist( Address *&head ) //显示链表{cout << "您的通信录为: "<<endl;cout<<"姓名"<<'\t'<<"电话"<<'\t'<<"电子邮箱"<<'\t'<<"关系"<<endl;while(head){cout<<head->name<<'\t';cout<<head->Tel<<'\t';cout<<head->Email<<'\t';cout<<head->Relation<<endl;;head=head->next ;}cout<<endl ;system("pause");}void Chayuelist(Address *head) //查阅链表{char a[10];cout<<"请输入你所要查阅的姓名:"; cin>>a;while(head){if(strcmp(head->name,a)==0){cout<<"姓名"<<'\t'<<"电话"<<'\t'<<"电子邮箱"<<'\t'<<"关系"<<endl;cout <<head->name <<'\t';cout <<head->Tel<<'\t';cout <<head->Email <<'\t';cout <<head->Relation <<endl;system("pause");return ;}head=head->next;}cout<<"查不到联系人信息!"<<endl; system("pause");}void Delete(Address *head) //删除链表数据{char a[10];Address *s;cout<<"请输入你所要删除的姓名:"; cin>>a;for(Address *q=head;q!=NULL;q=q->next) {if(strcmp(q->next->name,a)==0){s=q->next;q->next=s->next;delete s;}cout<<"删除成功!"<<endl;system("pause");}}void baocun(Address *head)//保存{ofstream outstuf;outstuf.open("c:\\save.txt", ios::out ) ;if (!outstuf){cerr<<"File could not be open."<<endl ;abort();}while(head){outstuf<<head->name<<' '<<head->Tel<<' '<<head->Email<<' '<<head->Relation<<'\n' ;head=head->next ;}system("cls;");cout<<"保存成功!";}void duqu(Address *&head) //读取保存文件{Address *next,*s;s=new Address;head=new Address; //头插法建立单链表head->next=new Address;s=head->next;ifstream infile;infile.open("c:\\save.txt");//打开外存文件,看是否有数据存在if(!infile)cout<<"电话系统中没有任何号码"<<endl; else{infile.close();infile>>s->name>>s->Tel>>s->Email>>s->Rel ation;cout<<"读取电话号码系统成功!"<<endl;system("pause");}}void tianjia(Address *&head) //添加{Address *s;s=new Address;//生成新结点cout<<"\n\t\t请输入姓名:";cin>>s->name;cout<<"\n\t\t请输入电话号:";cin>>s->Tel;cout<<"\n\t\t请输入Email:";cin>>s->Email;cout<<"\n\t\t请输入与您关系:";cin>>s->Relation;cout<<"\n\t\t你已经添加成功";s->next=head;head=s;return ;}void tuichu(){system("cls");cout<<"您已成功推出本系统,欢迎您下次使用!"<<endl;system("pause");}void main() //主函数{system("cls");int h;Address *head=NULL ;cout<<"--------------------本程序为通讯录管理系统-----------------"<<endl;while(h<=7){cout<<'\n';cout<<'\t'<<'\t'<<"请选择你所要实现的功能的编号"<<endl;cout<<'\t'<<'\t'<<"*********1.输入记录***********"<<endl;cout<<'\t'<<'\t'<<"*********2.显示记录*********"<<endl;cout<<'\t'<<'\t'<<"*********3.查阅记录*********"<<endl;cout<<'\t'<<'\t'<<"*********4.删除记录*********"<<endl;cout<<'\t'<<'\t'<<"*********5.保存记录*********"<<endl;cout<<'\t'<<'\t'<<"*********6.读取记录*********"<<endl;cout<<'\t'<<'\t'<<"*********7.添加记录*********"<<endl;cout<<'\t'<<'\t'<<"*********8.退出*************"<<endl;cin>>h;switch(h){case 1:Createlist(head);break;case 2:showlist(head);break;case 3:Chayuelist(head);break;case 4:Delete(head);break;case 5:baocun(head);break;case 6:duqu(head);break;case 7:tianjia(head);break;default :tuichu();break;}system("cls");}}。