CN1694093A - 一种树型通讯录的构造方法 - Google Patents
一种树型通讯录的构造方法 Download PDFInfo
- Publication number
- CN1694093A CN1694093A CN 200510020290 CN200510020290A CN1694093A CN 1694093 A CN1694093 A CN 1694093A CN 200510020290 CN200510020290 CN 200510020290 CN 200510020290 A CN200510020290 A CN 200510020290A CN 1694093 A CN1694093 A CN 1694093A
- Authority
- CN
- China
- Prior art keywords
- node
- address list
- tree
- contact person
- contact
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种树型通讯录的构造方法。树型结构的通讯录可以分级建立分类,每个分类可以建立子分类,同时也可以建立联系人,弥补了现在通讯录技术中分类下不能创建分类的缺陷,可实现对大量个人或单位的通讯信息的存储和管理的方便性。本发明可广泛用于电子邮件、传真、电话等的通讯录的构造,具有重要的实用价值和广阔的应用前景。
Description
技术领域
本发明提出了一种树型通讯录的构造方法,属于信息技术领域,实现了一种在通讯时(例如电子邮件、传真、电话)管理个人或单位通讯信息的方法。
背景技术
通讯录在现在信息技术高速发展的带动下已经成为人们在电子邮件系统以及各种通讯设备上管理个人或单位的通讯信息的主要工具,该技术将个人或单位的通讯信息存贮在相应的通讯系统或通讯设备上以方便用户使用,比较典型的就是在计算机上和移动设备上的个人通讯信息的管理。然而当前的通讯录技术均采用分类——联系人的单一结构,即分类下只能有联系人,而不能进一步建立分类,这种结构在通讯录记录太多的情况下存在管理困难,使用不方便等缺点。
发明内容
本发明提出了一种树型通讯录的构造方法,本发明的目的是提供一种高效存储和管理个人或单位通讯录信息的方法。
本发明的树型结构通讯录包含根节点,分类节点和联系人节点。根节点是特殊的分类节点,所有的分类节点和联系人节点都属于根节点,从而组成一棵树。分类节点存储分类信息,在分类节点下还可以创建子分类节点和联系人节点,联系人节点是树的叶节点,存储联系人的有关信息。从逻辑上看,每一个分类节点由其子分类及其联系人节点构成一棵子树(上一级通讯录的子通讯录)。所有的子树以及叶节点构成整个通讯录树。
该树型结构的通讯录在物理存储上由两个文件构成,一个是主文件,一个是联系人详细信息数据文件。主文件记录了通讯录中所有分类的详细信息及联系人的摘要信息。由于同一联系人可能属于不同的分类,为避免数据冗余,主文件只记录联系人的摘要信息,有关联系人详细信息记录在“联系人详细信息数据文件”中,这两个文件都采取顺序存储的方式存于外存。
使用通讯录时,首先需要打开通讯录,将存储有通讯录的两个文件(主文件和联系人详细信息数据文件)读入内存,在内存中形成一个通讯录树。对通讯录进行增加、删除分类或联系人的操作,实际上转变为在通讯录树中进行相关节点的添加和删除工作,完成维护通讯录树的工作。关闭通讯录时,若本次通讯录树发生改变,则将修改后的通讯录树中的所有节点按树的前序遍历顺序分别写入外存中的主文件和联系人详细信息数据文件中,以利于通讯录的永久保持。
附图说明
图1为通讯录的逻辑结构图;
图2为通讯录树中节点的数据结构图;
图3为联系人详细信息链表节点的数据结构图;
图4为通讯录在外存中的存储结构图;
图5为打开通讯录的步骤图;
图6为创建通讯录树的步骤图;
图7为新建一个联系人的步骤图;
图8为新建一个分类的步骤图;
图9为删除一个指定联系人的步骤图;
图10为删除一个分类的步骤图;
图11为关闭通讯录的步骤图;
图12为保存指定通讯录树T的步骤。
具体实施方式
以下结合附图对本发明的原理作进一步的说明。
图1为通讯录的逻辑结构。
本发明的通讯录由通讯录树和联系人详细信息链表构成。通讯录树由根节点、分类节点和联系人节点组成。所有的分类节点和联系人节点都属于根节点。分类节点存储分类信息,分类节点本身是上一级通讯录树的子树,同样由其子分类节点和联系人节点组成。整个通讯录树采用计算机数据结构表示方法中的多重链表实现,其节点的数据结构如图2所示。联系人详细信息链表由通讯录中所有的联系人信息构成,采用单向链表,其节点的数据结构如图3所示。通讯录树中的每个联系人节点都对应联系人详细信息链表中的一个节点。
图2为通讯录树中节点的数据结构。
树型通讯录在内存中采用多重链表存储结构,每个树型节点对应内存中一个链表节点。链表节点结构如下:
1)节点类别
标明该节点为分类节点还是联系人节点。
2)节点名称
标明该节点对应的分类名称或联系人的姓名。
3)节点唯一标示码
若本节点为分类节点,则为该节点在系统中的唯一标示码,这个唯一标示码在建立分类节点时创建;若本节点为联系人节点,标明该节点对应联系人的唯一标示码,例如身份证号、或邮件地址等。
4)子通讯录树指针
若本节点为联系人节点,则为空;否则即为分类节点,其指示另一棵子通讯录树的根。
5)下一个兄弟节点指针
指向当前节点所属分类的下一个成员(子分类或联系人)。
6)节点描述信息
若该节点为分类,则为该分类的有关信息;否则为该节点指示的联系人在联系人详细信息链表中的位置。
图3为联系人详细信息链表节点的数据结构。
联系人详细信息在内存中采用单向链表存储结构,每个联系人的详细信息都对应内存中一个链表节点。链表节点结构如下:
1)被包含数
标明该节点被多少联系人节点所指向,即该联系人被同时包含在多少个分类中。
2)详细信息
标明该联系人的详细信息,例如:身份证号码、电子邮件地址,家庭电话,手机,单位,职务、通讯地址,邮政编码等。其中选择一个数据项作为联系人的唯一标示码,通讯录树中联系人节点根据此唯一标示码查找与其对应的联系人的详细信息。
3)下一个联系人
指向下一个联系人详细信息节点。
图4为通讯录在外存中的存储结构。
本发明通讯录在外存中的存储方式采用顺序文件,由主文件和联系人详细信息数据文件组成。
主文件采取顺序存储,为一种不定长记录文件,由三种记录组成,每种记录的结构如下:
1)记录类型记录
记录类型标志:指示当前分类结束标志,或标明该记录的下一个记录为一个联系人记录,或标明该记录的下一个记录为一个分类记录。
2)联系人记录,包括
●唯一标示码:例如身份证号、或邮件地址等;
●姓名:该联系人的姓名;
●被包含数:指示该联系人被包含在多少个分类中。
3)分类记录
●分类名称:该分类的名称;
●分类说明:该分类的有关说明。
联系人详细信息数据文件包含主文件中所有联系人记录的详细信息(如身份证号码、电子邮件地址,家庭电话,手机,单位,职务、通讯地址,邮政编码等),采取顺序存储。
图5为打开通讯录的步骤。
打开通讯录的步骤就是将外存中的主文件和联系人详细信息数据文件读入内存建立通讯录树的步骤,其中,主文件在内存中以多重链表的结构存储,联系人详细信息数据文件以单向链表的结构存储。打开存储在外存中的通讯录的步骤如下:
1)打开主文件以及联系人详细信息数据文件。
2)从联系人详细信息数据文件中逐项读入每一个联系人记录,在内存中创建与之对应联系人详细信息链表L。
3)调用创建通讯录树的步骤,得到该通讯录树的根节点指针H。
4)关闭主文件以及联系人详细信息数据文件。
图6为创建通讯录树的步骤。
创建通讯录树的步骤如下:
1)置当前通讯录的头指针H及尾指针T为空。
2)如果主文件没有结束,跳转到3),否则返回当前通讯录的头指针H。
3)从主文件中读取记录类型记录R。
4)如果R不是当前分类结束标志,跳转到5),否则返回当前通讯录的头指针H。
5)生成一个新节点P,将P中的所有数据项置为空。
6)如果R指示下一个记录为联系人记录,跳转到7),否则跳转到12)。
7)P.节点类别=联系人。
8)从主文件中读取一个联系人记录R1。
9)从联系人详细信息链表中获得该联系人的位置q。
10)将R1中相关信息填入P中相应字段。
11)P.节点描述信息=q,跳转到17)。
12)P.节点类别=分类。
13)从主文件中读取一个分类记录R1。
14)将R1中的数据填入P中相应字段。
15)递归调用本步骤处理该分类下的所有成员从而得到一个新的子通讯录树的头指针H′。
16)P.子通讯录树指针=H′。
17)如果T为空,则H=P;T=P;否则T.下一个兄弟节点指针=P;T=P。
18)跳转到2)。
图7为新建一个联系人的步骤。
在当前分类中新建一个联系人的步骤如下:
1)在内存中新建一个节点P,置P的所有字段为空。
2)P.节点类别=联系人,P.节点唯一标示码=该联系人的唯一标示码;P.节点名称=新建联系人姓名。
3)从联系人详细信息链表L中获得该联系人的地址q。
4)判断是否有无该新建联系人:如果q为空,则无该联系人,跳转到5);否则已存在该联系人(q),跳转到7)。
5)生成一个新的联系人详细信息节点q,将该新建联系人的详细信息填入q中。
6)q.被包含数=1;将q插入到联系人详细信息链表L的尾部,跳转到8)。
7)q.被包含数=q.被包含数+1。
8)P.节点描述信息=q。
9)查找当前分类的最后一个儿子节点T。
10)如果T为空,跳转到11);否则跳转到12)。
11)当前分类节点.子通讯录树指针=P,跳转到13)。
12)T.下一个兄弟节点指针=P。
13)返回。
图8为新建一个分类的步骤。
在当前分类中新建一个分类的步骤如下:
1)新建一个节点P,置P的所有字段为空。
2)P.节点类别=分类,P.节点名称=新建分类姓名,设置P的节点唯一标示码。
3)查找当前分类的最后一个儿子节点T。
4)如果T为空,跳转到5);否则跳转到6)。
5)当前分类节点.子通讯录树指针=P,跳转到7)。
6)T.下一个兄弟节点指针=P。
7)返回。
图9为删除一个指定联系人的步骤。
在当前分类S中删除一个指定联系人P的步骤:
1)如果S.子通讯录树指针=P,跳转到2);否则到3)。
2)S.子通讯录树指针=P.下一个兄弟节点指针,跳转到5)。
3)获得P的前一个兄弟节点P′。
4)P′.下一个兄弟节点指针=P.下一个兄弟节点指针。
5)从联系人详细信息链表L中获得该联系人详细信息节点q后,然后再删除该联系人节点P。
6)如果q.被包含数=1,跳转到7),否则跳转到8)
7)从联系人详细信息链表L中删除q,返回。
8)q.被包含数=q.被包含数-1。
9)返回。
图10为删除一个分类的步骤。
在当前分类S中删除一个指定分类P的步骤:
1)如果S.子通讯录树指针=P,跳转到2);否则跳转到3)。
2)S.子通讯录树指针=P.下一个兄弟节点指针,跳转到5)。
3)获得P的前一个兄弟节点P′。
4)P′.下一个兄弟节点指针=P.下一个兄弟节点指针。
5)删除分类P。
6)返回。
图11为关闭通讯录的步骤。
若本次通讯录树发生改变,则将修改后的通讯录树中的所有节点按树的前序遍历顺序写入外存中的主文件后,同时将当前联系人详细信息链表中的所有节点信息存入联系人详细信息数据文件中,以利于通讯录的永久保持。以下是关闭通讯录的详细步骤:
1)若本次操作通讯录树没有任何改变,则直接返回,否则跳转到2)。
2)分别打开主文件以及联系人详细数据文件,并将这两个文件清空。
3)调用保存通讯录树T的步骤,将修改后的通讯录树T写入外存中的主文件中。
4)将当前联系人详细信息链表L中的所有节点的信息按顺序分别写入联系人详细信息数据文件中。
5)关闭主文件以及联系人详细信息数据文件。
图12为保存指定通讯录树T的步骤。
整个保存通讯录树的步骤,为一个将通讯录树中的所有节点按树的前序遍历顺序写入外存中的主文件的步骤。该步骤是一个递归过程,即若正在保存的节点是一个分类,则将该分类信息保存好后,将其指示的所有下属成员看成是一棵通讯录子树,对该子树的处理方式为重新调用本步骤保存该子树。以下是保存通讯录树的详细步骤:
1)获得当前通讯录树的头指针H。
2)新建一个记录类型记录R。
3)若H为空则跳转到18),否则跳转到4)。
4)若H->节点类别为分类节点,则跳转到5),否则跳转到12)。
5)设置R的记录类型标志字段值为“分类”,以标明下一个记录为分类记录。
6)将R写入主文件中。
7)新建一个分类记录S。
8)将H指向的节点的有关信息填入S的相应字段。
9)将S写入主文件中。
10)H子通讯录树=H->子通讯录树指针。
11)递归调用本步骤把子通讯录树H子通讯录树存入主文件中,跳转到17)。
12)设置R的记录类型标志字段值为“联系人”,以标明下一个记录为联系人记录。
13)将R写入主文件中。
14)新建一个联系人记录P。
15)将H指向的节点的有关信息填入P的相应字段。
16)将P写入主文件中。
17)H=H->下一个兄弟节点指针,跳转到2)。
18)设置R的记录类型标志字段值为“分类结束”标志,以标明当前分类结束。
19)将R写入主文件中。
20)返回。
Claims (1)
1.一种树型通讯录的构造方法,所述方法通过顺序文件、树型结构、多重链表、单向链表等来实现,其特征包括:
通讯录的逻辑结构,该结构包含通讯录树和联系人详细信息链表,其中通讯录树包含三部分内容:根节点、分类节点和联系人节点;通讯录树中的每个联系人节点都对应联系人信息链表中的一个节点;
其构造方法包括以下步骤:
(1)打开通讯录的步骤,包括创建联系人详细信息链表的步骤;创建通讯录树的步骤;
(2)维护通讯录树的步骤,包括新建一个联系人的步骤;新建一个分类的步骤;删除一个指定联系人的步骤;删除一个分类的步骤;
(3)关闭通讯录的步骤,包括保存通讯录树,写入主文件的步骤;保存联系人详细信息链表,写入联系人详细信息数据文件的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510020290 CN1694093A (zh) | 2005-02-01 | 2005-02-01 | 一种树型通讯录的构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510020290 CN1694093A (zh) | 2005-02-01 | 2005-02-01 | 一种树型通讯录的构造方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1694093A true CN1694093A (zh) | 2005-11-09 |
Family
ID=35353056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510020290 Pending CN1694093A (zh) | 2005-02-01 | 2005-02-01 | 一种树型通讯录的构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1694093A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101895579A (zh) * | 2010-07-08 | 2010-11-24 | 中兴通讯股份有限公司 | 通讯录同步方法和系统 |
CN102087723A (zh) * | 2009-12-03 | 2011-06-08 | 中国移动通信集团公司 | 一种企业通信录共享的方法、系统及装置 |
CN102156743A (zh) * | 2011-04-18 | 2011-08-17 | 北京神州数码思特奇信息技术股份有限公司 | 一种电信海量话单数据存储方法 |
CN101330657B (zh) * | 2008-07-15 | 2012-01-11 | 华通科技有限公司 | 一种通讯录系统及其实现方法 |
CN102413233A (zh) * | 2011-10-26 | 2012-04-11 | 北京百纳威尔科技有限公司 | 移动终端的联系人信息拓展处理方法及装置 |
CN101826077B (zh) * | 2009-03-03 | 2012-11-21 | 华为技术有限公司 | 关系联系人记录获取方法及装置 |
CN102891887A (zh) * | 2012-09-17 | 2013-01-23 | 上海龙软商务咨询服务有限公司 | 基于组织结构树的邮件管理系统 |
CN103354516A (zh) * | 2013-07-29 | 2013-10-16 | 希华通信(苏州)有限公司 | 用于即时通信的客户端分层通讯录实现方法 |
CN103516806A (zh) * | 2013-10-14 | 2014-01-15 | 厦门亿联网络技术股份有限公司 | 一种无线终端实现远程地址簿多级目录功能的方法 |
CN104572228A (zh) * | 2015-02-09 | 2015-04-29 | 中国农业银行股份有限公司 | 一种节点更新方法及装置 |
-
2005
- 2005-02-01 CN CN 200510020290 patent/CN1694093A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101330657B (zh) * | 2008-07-15 | 2012-01-11 | 华通科技有限公司 | 一种通讯录系统及其实现方法 |
US9020983B2 (en) | 2008-07-15 | 2015-04-28 | Wootion Technology Co., Ltd. | Address list system and method of implementing an address list |
CN101826077B (zh) * | 2009-03-03 | 2012-11-21 | 华为技术有限公司 | 关系联系人记录获取方法及装置 |
CN102087723A (zh) * | 2009-12-03 | 2011-06-08 | 中国移动通信集团公司 | 一种企业通信录共享的方法、系统及装置 |
CN101895579A (zh) * | 2010-07-08 | 2010-11-24 | 中兴通讯股份有限公司 | 通讯录同步方法和系统 |
WO2012003731A1 (zh) * | 2010-07-08 | 2012-01-12 | 中兴通讯股份有限公司 | 通讯录同步方法和系统 |
CN102156743A (zh) * | 2011-04-18 | 2011-08-17 | 北京神州数码思特奇信息技术股份有限公司 | 一种电信海量话单数据存储方法 |
CN102413233A (zh) * | 2011-10-26 | 2012-04-11 | 北京百纳威尔科技有限公司 | 移动终端的联系人信息拓展处理方法及装置 |
CN102891887A (zh) * | 2012-09-17 | 2013-01-23 | 上海龙软商务咨询服务有限公司 | 基于组织结构树的邮件管理系统 |
CN103354516A (zh) * | 2013-07-29 | 2013-10-16 | 希华通信(苏州)有限公司 | 用于即时通信的客户端分层通讯录实现方法 |
CN103516806A (zh) * | 2013-10-14 | 2014-01-15 | 厦门亿联网络技术股份有限公司 | 一种无线终端实现远程地址簿多级目录功能的方法 |
CN104572228A (zh) * | 2015-02-09 | 2015-04-29 | 中国农业银行股份有限公司 | 一种节点更新方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1694093A (zh) | 一种树型通讯录的构造方法 | |
CN1320485C (zh) | 图像检索装置和图像检索装置的关键词赋予方法 | |
CN1215415C (zh) | 文件管理方法和存储信息记录重放装置 | |
CN1083595C (zh) | 电子蒙太奇生成装置 | |
CN1260665C (zh) | 用于管理可换存储媒体的设备和方法 | |
CN1877598A (zh) | 手机中使用图像识别进行名片信息的采集与录入的方法 | |
CN1684070A (zh) | 图像检索装置和图像检索方法 | |
CN1862540A (zh) | 图像管理设备和图像管理方法 | |
CN1263314A (zh) | 一种动态的基于对象格式的用于数据操纵的系统和方法 | |
CN101069181A (zh) | 存储设备和记录介质 | |
CN1955958A (zh) | 一种基于目录树的分类数据存储及分类目录查询方法 | |
CN1801150A (zh) | 使用拓扑结构元数据和导航路径的预定的导航 | |
CN1866250A (zh) | 对系统数据进行管理的方法和系统 | |
CN1677418A (zh) | 电子邮件创建装置及其方法、程序和便携式终端 | |
CN1682217A (zh) | 媒体资料合成 | |
CN1584884A (zh) | 检索结构化文档的数据的设备和方法 | |
CN1173933A (zh) | 建立通信网络数据库的一种方法和设备 | |
CN1163836C (zh) | 图象信息检索系统和方法 | |
CN1851737A (zh) | 一种用户个性化业务的实现系统及方法 | |
CN1414495A (zh) | 数据库管理系统及数据库 | |
CN1508754A (zh) | 图像检索程序、存储有该程序的存储介质、图像检索装置和图像检索方法 | |
CN1862534A (zh) | 静态范围匹配表的管理维护方法 | |
CN1835112A (zh) | 数据获取装置、数据获取方法以及程序 | |
CN101047555A (zh) | 一种设备质量检查方法 | |
CN1717681A (zh) | 用于将连锁式联接表格转换为树形结构的方法以及程序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20051109 |