当前位置:文档之家› 数据结构实验一通讯录

数据结构实验一通讯录

数据结构实验报告
实验名称:实验一——线性表
学生姓名:大学霸
班级: xxxxxxxxxx
班内序号: xx
学号: xxxxxxxxxx
日期: 2012年11月1日
1.实验要求
实验目的:
1.学习指针,模板类,异常处理的使用;
2.掌握线性表的操作实现方法;
3.培养使用线性表解决实际问题的能力。

实验内容:
利用线性表实现一个通讯录管理,通信录的数据格式如下:struct DataType
{
int ID; 程序分析
编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等功能。

每个记录包含姓名、电话号码、住址等个人基本信息。

用《数据结构》中的链表做数据结构结合c 语言基本知识编写一个通讯录管理系统。

本程序为使用方便,几乎不用特殊的命令,只需按提示输入即可,适合更多的用户使用。

对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

存储结构
存储结构:带头结点和尾结点的单链表
front
关键算法分析
本实验从整体上分为七大模块:(1)输入联系人信息;
(2)添加联系人信息;(3)查找联系人信息;(4)查看联系人信息;
(5
)删除
联系人信息;(6)修改联系人信息;(7)退出通讯录管理。

通讯录系统图
通讯录的建立
伪代码:
1.在堆中申请新的结点;
2.新节点的数据域为a[i];
3.将新节点加入到链表中;
4.修改尾指针;
5.全部结点插入后需要将终结结点的指针域设为空。

C++实现:
ContactBook::ContactBook(DataType a[],int n)找不到返回空指针。

C++实现:
程序运行结果
主函数流程图:
测试截图:1.建立通讯簿
2.添加新用户
3.查找用户
4.删除用户
5.查看所有用户
6.修改已有用户
7.退出通讯簿管理系统
4. 总结
通过这次的数据结构上机试验,让我回顾了有关线性表这一章的知识,学会使用线性表解决实际问题,让我有了更深的认识和了解,能灵活的使用,同时也发现了自己的不足,有些地方理解还不够深刻,出现了不少问题
调试时问题主要出在内存错误上,有时指针悬挂,有时尾指针指向错误,这些都需要一步步耐心的调试才能发现,以后编程我会注意改正这些
依照实验要求,在不同操作时加入了异常处理,比如要查找,删除,
修改用户时,如果输入的ID不存在,系统会报错并终止操作,提高了系统的操作性
这次设计的通讯簿管理系统还有些可以改进的地方,比如加入文件流后可以将每次输入的信息保存在后台的一个文件里,每次使用时读取这个文件内的信息,实现了保存每次更新的数据。

我对于文件流的使用还不是很熟悉,所以没来及加入这项功能;还有在查询这一块,只实现了按编号查询,还未加入按姓名查找。

附:所有源程序
#include<iostream>
using namespace std;
立我的通讯簿 "<<endl;
cout<<" 2.添加通讯簿的成员 "<<endl;
cout<<" 3.查找通讯簿的成员 "<<endl;
cout<<" 4.删除通讯簿的成员 "<<endl;
cout<<" 5.查看我的通讯簿 "<<endl;
cout<<" 6.修改通讯簿的成员 "<<endl;
cout<<" 0.退出通讯簿管理系统 "<<endl;
cout<<"-------------------------------"<<endl;
cout<<" 请选择:";
cin>>choose;
switch(choose)
{
case 1:
cout<<endl<<" 通讯簿建立成功"<<endl<<endl;
break;
case 2:
DataType x;
cout<<"请输入新用户的ID、姓名、性别(m/f)、手机号、住址"<<endl;
cin>>>>>>>>>>;
(x);
cout<<" 新用户添加成功!"<<endl<<endl;
break;
case 3:
int search;
cout<<" 请输入要查找用户的ID:";
cin>>search;
if(search)){
cout<<" 查找到的信息如下:"<<endl;
cout<<"-------------------------------"<<endl;
cout<<(search)->ID<<" "<<(search)->name<<" "<<(search)->ch<<" "<<(search)->phone<<"
"<<(search)->addr;
cout<<endl;
cout<<"-------------------------------"<<endl;
}
else
cout<<" 该用户不存在!"<<endl;
cout<<endl;
break;
case 4:
int del;
cout<<" 请输入要删除用户的ID: ";
cin>>del;
if(del)){
cout<<"-------------------------------"<<endl;
cout<<(del)->ID<<" "<<(del)->name<<" "<<(del)->ch<<" "<<(del)->phone<<" "<<
(del)->addr;
cout<<endl;
cout<<"-------------------------------"<<endl;
cout<<" 确定删除该用户(y/n): ";
char IsDel;
cin>>IsDel;
if(IsDel=='y')
(del);
else
cout<<" 取消删除!"<<endl;;
cout<<endl;}
else
cout<<" 用户不存在!"<<endl<<endl;
break;
case 5:
();
break;
case 6:
int mod;
cout<<" 请输入要修改用户的ID: ";
cin>>mod;
if(mod)){
DataType x;
cout<<"请输入修改后的ID、姓名、性别(m/f)、手机号、住址"<<endl;
cin>>>>>>>>>>;
(x,mod);
cout<<" 修改成功!"<<endl<<endl;;
}
else
cout<<" 该用户不存在!"<<endl<<endl;
break;
case 0:
cout<<" 退出成功!"<<endl;
break;
default:
cout<<" 输入有误!"<<endl<<endl;
};
}while(choose!=0);
}
实验报告总字数要求不少于1000字。

相关主题