线性表通讯录实验.docx

上传人:b****6 文档编号:3165490 上传时间:2022-11-18 格式:DOCX 页数:46 大小:196.84KB
下载 相关 举报
线性表通讯录实验.docx_第1页
第1页 / 共46页
线性表通讯录实验.docx_第2页
第2页 / 共46页
线性表通讯录实验.docx_第3页
第3页 / 共46页
线性表通讯录实验.docx_第4页
第4页 / 共46页
线性表通讯录实验.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

线性表通讯录实验.docx

《线性表通讯录实验.docx》由会员分享,可在线阅读,更多相关《线性表通讯录实验.docx(46页珍藏版)》请在冰豆网上搜索。

线性表通讯录实验.docx

线性表通讯录实验

线性表通讯录实验

浙江大学城市学院实验报告

课程名称数据结构

实验项目名称实验三线性表的应用---通讯录管理系统的设计与实现

组长陈正融专业班级统计学1502学号31503197得分

组员1专业班级学号得分

组员2专业班级学号得分

实验成绩指导老师(签名)日期

一.实验目的和要求

1、掌握线性表的顺序存储结构;

2、掌握线性表的动态分配顺序存储结构及基本操作的实现;

3、掌握线性表的链式存储结构;

4、掌握单链表的基本操作的实现。

5、掌握线性表的应用。

二.实验内容

1、设计并实现日常生活中通讯录的管理系统。

该系统需3位同学一组,按模块分工协作完成,系统具体功能需求描述如下:

①输入数据建立通讯录表:

在系统使用前先需要创建通讯录,可以一次输入(或文件导入)多个成员的通讯录信息,建立通讯录。

要求此表为顺序存储结构。

②查看所有通讯录信息:

显示通讯录表中所有成员的通讯录信息。

③查询通讯录中满足要求的信息:

可以根据不同方式查询,如按姓名查询、按姓氏查询、按编号查询等。

④新增通讯录信息:

每次可添加一个新成员的通讯

】、录信息。

⑤修改通讯录信息:

修改通讯录中已有成员的信息。

删除通讯录成员:

删除通讯录表中已有的成员,但需要把删除的成员信息放到另一张被删成员表中,以便错误操作后允许恢复。

该被删成员表要求采用链式存储。

⑦恢复被删成员信息:

一旦发现误删,则可以在被删成员表中找到该成员,重新加入到通讯录表中。

 

系统实现要求:

通讯录表必须使用动态分配顺序存储结构,被删成员表必须使用链式存储结构。

②通讯录信息至少包括:

编号、姓名、电话1、电话2、邮箱等,其他可自行设置。

③用菜单方式选择相应功能,且各功能的有关操作需通过调用各函数来实现,如:

初始化通讯录表用函数voidInitAddressBook(SqList&TXL)、浏览所有通讯录成员函数BrowseAddressBook(SqListTSL)等等,将这些子函数放在头文件test3_Seq.h中。

③建立主函数文件test3.cpp,通过调用上述头文件中的函数来实现该系统。

④给出系统数据类型的定义、存储结构定义以及各个函数之间的调用关系。

⑤实验内容中设置的功能要求必须实现,此外可自行增加合适的功能,可作为额外的实验成绩进行加分:

例如:

●通讯录和被删成员数据可用文件保存,程序运行时可从文件读入相应数据,程序结束时可写入文件保存。

●通讯录分组,可自行考虑把通讯录成员进行分组,如同学组、亲戚组、同事组等。

2、以小组为单位认真填写实验报告,实验报告必须包括各类数据类型的结构定义说明,各类数据的组织方式,系统的功能结构,各个操作的定义以及实现方法,运行结果与分析,难点如何解决,存在问题以及可改进之处等。

同时,在实验报告中需写明小组每位同学的分工,得分(小组总分不超过12分)等。

实验报告文件取名为report3.doc。

每组还必须制作一个答辩PPT,该PPT的命名为PPT_通讯录管理系统_(各小组成员名字).PPT。

3、每位组长上传实验报告文件report3.doc、源程序文件test3.cpp及test3_Seq.h、test3_Link.h,以及答辩PPT压缩打包后到BB平台上。

 

小组分工:

陈正融

程序设计

1、抽象数据类型

ADTSqlist

{数据对象:

D={ai|aiElemSet,i=1,2,3,……,n,n≥0}

数据关系:

R1={|ai-1,ai∈D,i=1,2,3,……,n}

基本操作:

(1)intnewContactPerson(Sqlist&S)

//输入函数

(2)intSearchContacts(Sqlist&S,LinklistL)

//查询函数

(3)intOper_updata(Sqlist&S,LinklistL)

//修改函数

(4)intOper_detele(Sqlist&S,LinklistL)

//删除函数

(5)intInitList_Sq(Sqlist&S)

//初始化函数

(6)intsort_Sq(Sqlist&S,Contactsi)

//排序函数

(7)intDestoryList_Sq(Sqlist&S)

//销毁函数

ADTLinklist

{数据对象:

D={ai|aiElemSet,i=1,2,3,……,n,n≥0}

数据关系:

R1={|ai-1,ai∈D,i=1,2,3,……,n}

基本操作:

(1)intinsert_L(LinklistL,Contactsi,Sqlist&S)

//输入函数

(2)intInitList_L(Linklist&L)

//初始化函数

(3)intBrowselist(LinklistL)

//显示函数

(4)intremoveContact(LinklistL,Sqlist&S)

//恢复函数

(5)intDestoryList_L(Linklist&L)

//销毁函数

2、存储结构

typedefstruct

{

intno;//编号

charname[20];//信息

chartel_1[20];//电话1

chartel_2[20];//电话2

charEmail[50];//邮箱

chargroup[20];//分组信息

}Contacts;

typedefstruct

{

Contacts*elem;

intlength;

intlistsize;

}Sqlist;

typedefstructNode{

Contactsdata;

structNode*next;

}LNode,*Linklist;

 

typedefstruct

{

intnum;//分组序号

chargroname[20];//分组名

}grouping;

typedefstruct

{

grouping*gr;

intlength;

intlistsize;

}grolist;

3、函数定义

voidmain_menu()//菜单

intInitList_Sq(Sqlist&S)//顺序表初始化

intInitList_gro(grolist&G)//分组表初始化

intDestoryList_Sq(Sqlist&S)//通途录销毁

intDestoryList_Gro(grolist&G)//分组表销毁

intin_Seq(Sqlist&S,Contactsa,inti)//本地输入处理

intzero_Sq(Sqlist&S)//通讯录本地输入

intzero_Gro(grolist&G)//分组表本地输入

intout_Seq(Sqlist&S,Contactsa,inti)//通讯录输出处理

intprinttotxt_Sq(Sqlist&S)//通讯录输出

intprinttotxt_Gro(grolist&G)//分组表输出

Contactshandle(Sqlist&S,Contactsi)//新建信息处理

intsort_Sq(Sqlist&S,Contactsi)//排序

intnewContactPerson(Sqlist&S)///新建联系人

intnewGro(grolist&G)//新建分组

intContactdetails(Sqlist&S,intno)//显示联系人详情

intDelete_Sq(Sqlist&S,LinklistL,inti,intj)//删除联系人

intDelete_Gro(grolist&G,Sqlist&S)//删除分组

intupdata_Sq(Sqlist&S,LinklistL,intno)//修改联系人

intBrowseContacts(Sqlist&S)//显示联系人

intBrowseGro(grolist&G)//显示分组

intOperation_2(Sqlist&S,LinklistL,intno)//查询后操作

intfind_out(Sqlist&S,inti,intj)//查询输出处理

intfindContact(Sqlist&S,intno[],charna[])//查询输出

intBrowseGroCon(Sqlist&S,charna[],intk[20])//显示分组联系人

intSearchContacts(Sqlist&S,LinklistL)//查询联系人

intjoingro(grolist&G,Sqlist&S,inti,intj)//分组加入联系人

intOper_updata(Sqlist&S,LinklistL)//修改联系人

intOper_detele(Sqlist&S,LinklistL)//删除联系人

intOperation_Gro2(Sqlist&S,grolist&G)//分组综合操作

intupdataGroname(grolist&G,Sqlist&S)//修改分组名

intOperation_Gro(grolist&G,Sqlist&S)//分组操作

intDestory(Sqlist&S,LinklistL,grolist&G)//销毁

 

intInitList_L(Linklist&L)//初始化链表

intDestoryList_L(Linklist&L)//销毁链表

intBrowselist(LinklistL)//显示误删表联系人

intin_link(Linklistp)//本地输入修改

intzero_Link(LinklistL)//本地输入

intout_Link(Linklistp)//本地输出修改

intprintotxt_link(LinklistL)//本地输出

intinsert_L(LinklistL,Contactsi,Sqlist&S)//插入联系人

intsort_Link(Sqlist&S,Contactsi)//恢复联系人排序

intremoveContact(LinklistL,Sqlist&S)//恢复联系人

4、程序描述

本通讯录所有的操作都是基于联系人的编号,未避免编号出错,采用自动编号。

主界面直接显示通讯录联系人和操作选项,可直接通过编号进行操作。

也可以先查找联系人,然后再进行修改,删除操作。

支持本地保存和读取,模糊查找,插入排序

5、实验结果

1、主菜单

2、添加联系人

3、查询联系人

4、修改联系人

5、联系人分组

6、删除联系人

7、恢复删除联系人

6、代码

主函数

#include

#include

#include

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1