个人通讯录管理
个人信息管理分类管理制度

个人信息管理分类管理制度一、前言个人信息管理是一项重要的工作,它涉及到我们的隐私和安全。
在信息时代,个人信息的管理变得越来越重要。
我们需要采取适当的措施来保护和管理我们的个人信息,以免被滥用或泄露。
因此,建立一个完善的个人信息管理分类管理制度,对于每个人都是至关重要的。
二、个人信息分类管理的重要性个人信息管理是指对个人信息进行合理、有序的分类、整理、保管和更新,以便于使用和检索。
它的重要性主要有以下几个方面:1. 保护个人隐私:个人信息管理的目的之一是保护个人的隐私权,避免个人信息被他人获取和滥用。
通过分类管理,可以有效地控制和保护个人信息的安全。
2. 便于使用和检索:有了分类管理,个人信息会更加有序和清晰,使得使用和检索变得更加便利和高效。
3. 防止信息泄露:个人信息泄露是一种严重的风险,可能导致个人受到各种不良后果。
通过分类管理,可以减少信息泄露的风险。
4. 合规要求:随着《个人信息保护法》等相关法律法规的出台,个人信息管理已经成为每个人都必须遵守的规范,而分类管理是其中的一项重要内容。
基于以上重要性,建立一个完善的个人信息分类管理制度是非常必要的。
三、个人信息分类管理的内容个人信息分类管理的内容主要包括以下几个方面:1. 个人信息的种类个人信息种类繁多,包括身份证件、银行卡、社保卡、护照、驾驶证、学历证书、户口本、房产证、车辆登记证、银行流水、通讯录、密码等。
在分类管理时,需要按照不同的种类进行分门别类地管理。
2. 个人信息的整理和保管个人信息整理的方式有很多种,可以通过文件夹、盒子、电子文档等形式来进行整理。
在保管方面,可以选择安全柜、密码箱等设备来保护个人信息的安全。
3. 个人信息的更新个人信息在使用过程中,随着时间的推移和变化,可能需要进行更新。
因此,需要建立一套完善的更新机制,及时更新个人信息,保持其准确性和有效性。
4. 个人信息的使用和检索在需要使用个人信息时,需要建立一套有效的使用和检索机制,便于快速地找到和使用需要的个人信息。
数据结构 通讯录管理系统

数据结构通讯录管理系统数据结构通讯录管理系统1、引言1.1 目的和范围本文档旨在详细描述一个通讯录管理系统的设计和实现,以便帮助开发人员了解系统的功能和特性。
本系统可以用于存储和管理个人联系信息,实现添加、删除、修改和查询等功能。
1.2 定义、缩略语和缩写词- 通讯录:存储个人联系信息的系统。
- 系统:通讯录管理系统。
2、总体概述2.1 系统背景通讯录管理系统是为了方便用户管理个人联系信息而开发的软件。
它提供了一系列功能,包括添加联系人、删除联系人、修改联系人信息以及搜索联系人等。
该系统旨在提供一个高效、方便和可靠的通讯录管理解决方案。
2.2 产品功能- 添加联系人:用户可以添加新的联系人,并输入其姓名、方式号码、电子邮箱等信息。
- 删除联系人:用户可以删除已经存在的联系人。
- 修改联系人信息:用户可以修改已经存在的联系人的姓名、方式号码、电子邮箱等信息。
- 搜索联系人:用户可以根据姓名、方式号码等信息搜索联系人。
- 显示所有联系人:系统可以显示所有已经存在的联系人。
2.3 用户特点通讯录管理系统的主要用户群体为个人用户,他们需要管理自己的联系人信息。
这些用户对于系统的易用性、稳定性和功能性要求较高,因此系统需要提供简单直观的用户界面,并保证操作的正确性和数据的安全性。
3、系统需求3.1 功能需求3.1.1 添加联系人- 用户可以输入联系人的姓名、方式号码、电子邮箱等信息进行添加。
- 系统应该对输入进行合法性检查,确保输入的信息符合格式要求。
- 添加联系人后,系统应该将联系人信息保存到数据库中。
3.1.2 删除联系人- 用户可以删除已经存在的联系人。
- 删除联系人后,系统应该将联系人信息从数据库中删除。
3.1.3 修改联系人信息- 用户可以修改已经存在的联系人的姓名、方式号码、电子邮箱等信息。
- 系统应该对输入进行合法性检查,确保输入的信息符合格式要求。
- 修改联系人信息后,系统应该将修改后的联系人信息保存到数据库中。
通讯录管理与更新要求

通讯录管理与更新要求通讯录作为一种重要的信息管理工具,对于个人和组织来说都具备非常重要的价值。
一个完善和高效的通讯录可以帮助我们快速地查找和联系人,提高工作和生活的效率。
因此,对通讯录的管理和更新要求变得越来越重要。
本文将介绍通讯录管理的必要性,并提出一些有效的更新要求,以保证通讯录的完善性和准确性。
一、通讯录管理的必要性1. 高效管理联系方式:通讯录管理能够帮助我们集中管理联系人的信息,便于随时查找和联系。
无需花费大量时间和精力去查找、输入或修改联系信息,提高了工作效率。
2. 信息共享和交流:通过通讯录,我们可以将联系人信息分享给其他人,方便他人获取联系方式,促进信息的共享和交流,推动工作和沟通的顺利进行。
3. 数据安全和备份:通讯录管理可以提高联系人信息的安全性,避免因个人设备的损坏或丢失而导致联系方式的丢失。
同时,定期备份通讯录数据可以保证数据的安全可靠。
二、通讯录更新要求1. 及时更新联系人信息:及时更新联系人信息是保证通讯录准确性和完善性的基础。
当发生人员变动、联系方式变更或新增联系人时,应及时更新通讯录中的信息。
2. 统一格式和分类:通讯录中的信息应该按照统一的格式和分类进行管理,以方便查找和使用。
可以根据自身需求设定姓名、职务、单位、电话号码等字段,并进行分类,如工作联系人、个人联系人等。
3. 增加备注和标签:为了更好地了解和记忆联系人,可以在通讯录中添加备注和标签信息。
备注可以包括一些关键信息或特点,标签可以用于分类和筛选,提高查找的速度和准确性。
4. 删除过期或无效联系人:随着时间的推移,通讯录中可能会存在一些过期或无效的联系人信息。
定期检查通讯录,删除这些无效的联系人,保持通讯录的清爽和更新。
三、通讯录管理的操作技巧1. 使用合适的工具:选择适合自己的通讯录管理工具,如手机通讯录、电子邮件通讯录、专业的通讯录软件等。
根据自己的使用习惯和工作需要,选择方便实用的工具进行通讯录的管理和更新。
通讯录表格模板

通讯录表格模板通讯录是我们日常生活和工作中不可或缺的一部分,它记录了我们重要的联系人信息,帮助我们随时随地与他人保持联系。
为了更方便地管理通讯录信息,我们可以利用表格模板来整理和记录这些信息。
下面,我将为大家介绍一个通讯录表格模板,希望能够帮助大家更好地管理自己的通讯录信息。
首先,我们需要创建一个包含以下内容的通讯录表格,姓名、性别、电话号码、邮箱、地址、公司/学校、部门/班级、职务/职业等基本信息。
这些信息是我们日常联系人的基本信息,通过这些信息我们可以清晰地了解到每个联系人的基本情况,方便我们在需要时能够快速找到对应的联系人。
其次,我们可以根据自己的需求对通讯录表格进行定制化设置。
比如,我们可以添加一些特定的字段,比如生日、兴趣爱好等个性化信息,这样可以让我们更全面地了解每个联系人,也可以在特定的日子送上祝福,增进彼此的感情。
此外,我们还可以设置筛选和排序功能,方便我们根据不同的条件来查找和管理通讯录信息,提高工作效率。
另外,为了保护通讯录信息的安全性,我们可以对通讯录表格进行加密设置,只有经过授权的人员才能够查看和编辑通讯录信息,这样可以有效地保护我们的隐私和安全。
最后,我们还可以利用通讯录表格来进行信息的导入和导出,比如将手机通讯录中的信息导入到表格中,或者将表格中的信息导出到手机通讯录中,这样可以实现信息的互通互联,方便我们随时随地管理和使用通讯录信息。
总的来说,通讯录表格模板是我们日常生活和工作中非常实用的工具,它可以帮助我们更好地管理和利用通讯录信息,提高我们的工作效率和生活质量。
希望大家能够根据自己的需求,灵活运用通讯录表格模板,让我们的通讯录信息更加清晰、方便和安全。
个人信息管理系统

个人信息管理系统1.总体分析1.1业务流程分析用户需要使用账号与密码通过登陆页面登陆个人信息管理系统,新用户可注册新账号登陆。
登陆后进入系统主窗体,可对个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理进行操作。
退出系统时返回登陆页面。
1.2系统功能分析个人信息管理系统主要由:个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理等模块组成。
进入该系统后,用户可以对系统中的信息进行添加、修改、删除和查询等操作。
包括以下功能:1)通讯录信息:包括通讯人姓名、联系方式、工作地点、城市、备注等。
2)备忘录信息:包括什么时间、事件、地点等。
3)日记信息:包括什么时间、地点、事件等。
4)个人财物管理:包括总收入,消费项目、消费金额、消费时间、余额。
每个用户可以自己注册一个用户名,对自己的个人信息进行独立的管理。
2.系统总体设计2.1个人信息管理系统业务流程图如图2.1所示2.2个人信息管理系统功能结构图如图2.2所示2.1系统业务流程图3 .系统数据库设计在需求分析阶段已经完成系统的所有数据分析。
根据该阶段建立的概念模型,已经得出满足第三范式的几个关系描述,此阶段主要的工作就是把前一阶段的成果转化为具体的数据库。
3.1系统的基本E-R图根据之前的分析规划出的个人信息管理系统实体有:个人信息实体、备忘录实体、通讯录实体、日记实体、财务管理实体。
个人信息实体图如图3.1所示3.1个人信息实体3.2备忘录实体同通讯录实体如图3.3所示3.3通讯录实体日记实体如图3.4所示3.4日记实体3.5财务管理实体3.2关系描述的设计根据数据库原理,并结合以上E-R图,经转换,可以导出各个关系。
其转化规则为首先每个实体应该转换成一个关系,有属性的联系也应转化为一个关系然且需要给出每个关系的关键字。
根据以上规则直接给出所有关系。
个人信息(用户ID号,用户密码,姓名,年龄,出生日期,电话号码,QQ,工作,地址)关键字为用户ID号。
通讯录管理制度1

通讯录管理制度1通讯录管理制度一、引言通讯录是一种重要的管理工具,它记录了个人、组织或企业的联系方式,对于个人和组织的日常工作和沟通起着至关重要的作用。
为了更好地管理通讯录,在这篇文章中,我们将提出一套通讯录管理制度,旨在提高通讯录的准确性、完整性和保密性。
二、通讯录的创建与更新1. 创建通讯录通讯录应以电子形式保存,可使用电子表格等工具进行创建。
在创建时,应设立主要分类,如个人、部门、合作伙伴等,并在每个分类下进行详细的信息记录。
2. 信息更新定期检查通讯录中的信息,并进行及时更新。
当有人员调动、离职或联系方式变更时,应及时更正通讯录中的相关信息,确保通讯录的准确性。
三、通讯录的归类与标签1. 分类原则通讯录的归类应根据实际需要,将相关人员或组织进行合理分类。
例如,按照部门、职位、地区等分类,以便快速查找和联系。
2. 标签的使用在通讯录中使用标签是一种简单有效的管理方式。
通过给特定联系人打上标签,如VIP、重要客户、合作伙伴等,可以更快地找到相关联系人并优先处理相关事务。
四、通讯录的备份与恢复1. 定期备份为了防止通讯录数据丢失或损坏,应定期进行备份。
备份可以存储在公司服务器、云存储等多个地方,确保数据的安全性和可靠性。
2. 恢复流程当通讯录数据损坏或丢失时,应及时进行恢复。
恢复流程应明确,包括从备份中恢复数据和重新更新已丢失的数据等步骤。
五、通讯录的保密性管理1. 访问权限控制对于通讯录的访问权限要进行明确控制。
根据不同职务和需要,设定相应的权限级别,确保只有具备相应权限的人员才能访问通讯录。
2. 保护个人隐私在维护通讯录的同时,也要注意保护个人隐私。
特别是在与外部合作伙伴建立联系时,谨慎对待个人敏感信息,确保信息的安全性和保密性。
六、通讯录的使用规范1. 规范通讯录的使用明确规定通讯录仅供工作目的使用,禁止将通讯录用于其他非工作相关活动,避免滥用通讯录信息。
2. 定期培训与宣贯定期对通讯录管理制度进行培训和宣贯,加强员工对通讯录管理的重要性的认知,提高整体工作效率和保密性。
通讯录人员结构

通讯录人员结构通讯录是一份用来记录重要联系人信息的文件,它包含了个人或者机构的姓名、电话号码、地址等联系方式信息。
通讯录人员结构是指在通讯录中列出的各个联系人信息之间的关系和结构。
一份完整的通讯录人员结构不仅能清晰记录每个联系人的信息,还能体现他们之间的连接和组织方式。
一般来说,在通讯录人员结构中可以体现出以下几个方面的内容:个人联系人、公司组织架构、家庭成员关系、团队或社群关系等。
下面将分别就这几个方面展开详细描述。
个人联系人是通讯录中最基本的结构之一。
在通讯录中,可以记录个人的姓名、职务、电话号码、邮箱、地址等基本信息。
对于这些个人联系人,可以根据其所在的部门、职位、工作内容等进行分类和整理,以便在需要时快速找到正确的联系人。
个人联系人之间还可能存在着一些关系,比如朋友关系、合作关系等,这些关系可以通过备注或者标签的方式进行记录,从而展现出联系人之间的互动和关联。
公司组织架构也是通讯录人员结构的重要内容之一。
在通讯录中,记录了公司内不同部门、职位的员工信息,可以清晰地显示出整个公司的组织结构和人员分布情况。
通过公司组织架构的呈现,可以帮助管理者更好地了解公司内部人员的分布和联系方式,从而更加高效地进行资源调配和沟通协作。
通讯录中还可以记录家庭成员的联系方式,以及他们之间的关系。
这样一来,就可以方便地联系到亲朋好友,也可以了解到家庭成员之间的连结情况,比如父子关系、兄弟关系等。
这对于维系亲情、处理家庭事务等方面都非常有帮助。
通讯录人员结构中还可以展现出团队或者社群之间的关系。
比如在一个团队中,可以记录团队成员之间的联系方式,以及彼此之间的协作关系,这对于团队管理和协作非常重要。
在社交圈中,也可以记录不同社群中的会员联系方式和彼此之间的关系,以方便组织活动或者交流情况。
通讯录人员结构是非常丰富多样的,它不仅是一份联系人信息的整合,更是联系人之间关系的表现。
通过对通讯录人员结构的合理设计和规划,可以帮助人们更好地了解和管理自己的人际关系网,从而更好地实现个人和组织的目标。
学生手机通讯录管理制度

学生手机通讯录管理制度一、总则为规范学生手机通讯录管理,便于学生和学校进行有效的沟通和联系,提高学校管理效率,特制定本管理制度。
二、适用范围本制度适用于学校全体学生。
三、通讯录管理1. 学校通讯录统一管理,由学校统一组织维护学生通讯录数据库。
2. 学生个人通讯录由学校统一分发,不得私自添加或删除联系人信息。
3. 学生手机通讯录中仅包含学生家长、老师等学校相关人员的联系方式,不得涉及不良信息或不当内容。
4. 学生通讯录中的联系人名称和单位名称需规范统一,不得使用不文明、不规范的称谓。
四、学生使用规定1. 学生手机通讯录仅限学习和管理使用,不得用于营利活动或其他非法用途。
2. 学生不得将通讯录中的联系人信息泄露给非相关人员,保护隐私。
3. 学生手机通讯录需定期进行备份,以免信息丢失。
4. 学生不得利用手机通讯录进行诋毁、辱骂、谩骂等不文明行为,一经发现将严肃处理。
五、学校监管1. 学校对学生手机通讯录进行定期检查,确保通讯录中的联系人信息真实、准确。
2. 学校对学生手机通讯录的使用情况和备份情况进行监管,防止信息外泄或丢失。
3. 学校定期开展手机安全教育,加强学生对手机通讯录管理的自觉性和规范性。
4. 学校对违反通讯录管理制度的学生进行教育和处罚,严重者可视情节追究责任。
六、家长配合1. 家长应加强对学生手机通讯录使用的监督和引导,指导学生合理使用通讯录。
2. 家长和学校保持密切沟通,及时了解学生手机通讯录使用情况,共同维护学生通讯录安全。
3. 家长和学校共同为学生营造一个良好的手机使用环境,引导学生正确处理通讯录中的信息。
七、处罚规定对违反通讯录管理制度的学生,学校将依照学生违纪处分规定进行处理,包括但不限于批评教育、警告、记过、记大过等处罚。
情节严重者,学校保留对其进行退学处理的权利。
八、附则本通讯录管理制度由学校负责解释,学生和家长应予以配合。
学校保留对通讯录管理制度进行调整和修改的权利。
以上为学生手机通讯录管理制度,希望学生和家长共同遵守,共同维护学生通讯录的安全和规范使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.班级:041212学号:04121134姓名:李春红个人通讯录管理系统一、设计要求对于同学、朋友、同事等会与自己有联系的人员,设计一个数据库管理系统辅助管理各位联系人的信息。
能够按联系人分类、姓名、所在地区等方式查询联系人的情况,实现对联系人的添加、修改、删除、查询、统计、报表打印等功能。
具体功能如下:1、联系人的通讯信息管理:录入、修改、删除、查询有关联系人的电话、邮箱、传真、通讯地址等信息。
2、单位信息管理:对所有联系人所在的单位进行录入、修改、删除,并能按单位查询联系人信息。
3、联系人类别管理:以与自己的关系作为分类方式,对类别进行录入、修改、删除;并能按类别查询联系人信息。
4、建立报表,按类别统计每一类联系人的情况。
二、知识点应用1、建立数据库、数据表2、用向导建立数据窗体,实现对数据表的记录进行定位、添加和删除操作3、建立选择查询、参数查询、统计查询实现查询操作4、用报表向导建立报表三、设计步骤1、建立数据库和数据表1)建立数据库在Access的窗口右侧的“新建文件”对话框中选择“新建/空数据库”,在弹出的“文件新建数据库”对话框中输入数据库的名称――“个人通讯录管理”,确定保存位置,并按下“创建”按钮。
2)建立数据表在“个人通讯录管理”数据库中选择“表”,并单击“新建”。
在数据表视图中输入字段名、选择字段类型、确定字段宽度。
在本案例中需要建立如下三个数据表:ABC3选择“工具/关系”菜单,为三张数据表建立关系。
三张表间的关系为:联系人信息表和单位信息表通过“单位名称”字段关联;联系人信息表和联系人类别表通过类别字段关联。
2、建立数据窗体对数据表记录进行定位、编辑、添加和删除等操作1)用向导建立输入联系人信息的窗体①.在数据库窗口中选择“窗体”项,双击“使用向导创建窗体”,启动“窗体向导”②.单击“表/查询”下拉列表框右侧的箭头,列出所有有效的表或者查询数据源,从中选择“表/联系人基本信息表”。
在“可用字段”列表中会显示出数据表中的所有字段,从中选择需要在新建的窗体中显示的字段,使用中间的按钮将它们移动到“选定的字段”列表中。
单击“下一步”按钮。
③.进行“窗体布局”的设置,这里选择“纵栏表”,单击“下一步”按钮。
④.设置窗体的样式,在对话框右侧的列表框中列出了窗体的样式,选中的样式效果在对话框的左侧显示,这里选择“宣纸”。
⑤.在这一步中可为所创建的窗体设置一个标题,此处输入“录入联系人基本信息”,单击“完成”按钮。
“录入联系人信息”窗体可以对联系人信息进行定位、编辑、添加和删除等操作。
2)建立输入单位信息的窗体用向导快速建立输入单位信息的窗体。
在数据库窗口中选择“窗体”项,单击“新建”按钮,在“新建窗体”对话框中选择“自动创建窗体:纵栏式”,在下方的“请选择该对象的数据来源表或查询”中选择“单位信息表”,此时会打开一个输入单位信息窗体,关闭窗体时系统会提示保存窗体,用此方法可以快速创建一个输入单位信息的窗体。
3)建立输入联系人类别的窗体用向导建立一个表格式的录入联系人类别的窗体,建立的方法同上,不同之处是在“新建窗体”对话框中选择“自动创建窗体:表格式”。
3、查询设计1)建立简单的选择查询建立查询,显示所有类别为“同学”的联系人的主要联系信息(姓名、性别、电话、通讯地址、工作单位等)①.在数据库窗口中选择“查询”,双击“在设计视图中新建查询”,从“显示表”对话框添加以下数据表:联系人通讯录表、联系人类别表。
关闭“显示表”对话框。
②.从查询设计器窗口中的数据源表中双击需要的字段:联系人通讯录中的姓名、性别、所在单位、电话,联系人类别表中的、类别名称。
③.在类别名称列的“条件”下输入“同学”。
④.保存查询为:“同学通讯录”以上就是简单的选择查询的设计步骤,用此方法可建立简单的选择查询,如查询所在地为云南的所有联系人信息等。
2)建立参数查询参数查询是由用户输入查询条件,根据条件显示相应的记录信息。
如:建立查询,由用户输入出联系人所在地,查询出该地所有联系人的信息。
①.在数据库窗口中选择“查询”,双击“在设计视图中新建查询”,从“显示表”对话框添加以下数据表:联系人通讯录表、单位信息表、联系人类别表。
关闭“显示表”对话框。
②.从查询设计器窗口中的数据源表中双击需要的字段。
③.在“所在地”列下的“条件”中输入:[请输入要查询的地区:]当运行此查询时,会弹出一个对话框,在此对话框中输入要查询的地区名称(例如“上海“)则可查询出所有上海的联系人的通讯信息。
3)建立统计查询建立查询按类别统计出联系人的人数。
①.在数据库窗口中选择“查询”,双击“在设计视图中新建查询”,从“显示表”对话框添加以下数据表:联系人通讯录表、联系人类别表。
关闭“显示表”对话框。
②.在数据源表中双击需要的字段,这里选择:联系人类别表.类别名称,联系人通讯录表.编号。
③.选择“视图”菜单中的“总计”命令,将“类别名称”列下的总计设置为“Group By”,将“编号”列下的总计设置为“Count”。
运行此查询时,会按照类别名称分类统计出各类联系人的人数。
以上是各种查询的建立方法,可根据这些方法按照需要建立相关查询。
4、报表设计用向导建立报表的步骤为:①.在数据库窗口中选择“报表”,双击“使用向导创建报表”,弹出“报表向导”对话框。
②.在“表/查询”组合框中选择“表:联系人通讯录表”,在“可用字段”列表中选择需要在报表中打印的字段,双击字段使之移动到“选定的字段”列表中;在“表/查询”组合框中选择“表:联系人类别表”,选择“类别名称”字段。
单击“下一步”按钮。
③.“请确定数据的查看方式”,选择“通过联系人通讯录表”,单击“下一步”按钮。
④.“确定分组级别”,选择“联系人类别表.类别名称”,单击“下一步”按钮。
⑤.“记录的排序次序”,选择按“编号”排序。
⑥.“报表样式”,选择需要的报表样式,这里选择“正式”。
⑦.为报表确定报表标题:通讯录报表。
单击“完成”按钮,完成报表的创建。
以上即是用向导建立报表的方法,可参照此方法完成所需的报表创建。
四、具体设计1、界面设计界面代码'***********************************************************************'* 文件名: MainForm.frm'* 说明:主窗口'***********************************************************************Option Explicit'***********************************************************************'模块级常量定义Const GROUPKEYPRE = "GRROUP" '组KEY前缀Const PEOPLEKEYPRE = "PEOPLE" '人员KEY前缀'***********************************************************************'模块级变量定义Private photoArray() As PhotoInfo '像片信息动态数组Private photoIndex As Integer '当前显示像片的对应数组下标'*********************************************************************** 'API声明Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" _(ByRef saArray() As Any) As Long'*********************************************************************** '* 函数名:GetCurrentSelectedNode'* 功能:取得TreeView中的当前选择节点信息'* 参数:Integer(OUT) 1:组节点 2:人员节点'* :Long(OUT) 组ID或人员ID'* 返回值:Boolean true 有选择节点'* : false 无选择节点'*********************************************************************** Public Function GetCurrentSelectedNode(ByRef nodeKind As Integer, _ByRef id As Long) As Boolean'变量定义Dim key As String '节点KEYIf trvAll.SelectedItem Is Nothing Then'无选择的节点GetCurrentSelectedNode = FalseElse'取得节点KEYkey ='判断选择的节点类型If Left(key, Len(PEOPLEKEYPRE)) = PEOPLEKEYPRE Then '人员nodeKind = 2id = CLng(Mid(key, Len(PEOPLEKEYPRE) + 1))GetCurrentSelectedNode = TrueElseIf Left(key, Len(GROUPKEYPRE)) = GROUPKEYPRE Then '组nodeKind = 1id = CLng(Mid(key, Len(GROUPKEYPRE) + 1))GetCurrentSelectedNode = TrueElseGetCurrentSelectedNode = FalseEnd IfEnd IfEnd Function'*********************************************************************** '* 函数名:GetCurrentGroupId'* 功能:取得TreeView中的当前选择节点所在组的ID'* 参数:'* 返回值:Long 组ID,失败时为-1'*********************************************************************** Public Function GetCurrentGroupId() As Long'变量定义Dim key As String '节点KEYIf trvAll.SelectedItem Is Nothing Then'无选择的节点GetCurrentGroupId = -1Else'取得节点KEYkey ='判断选择的节点类型If Left(key, Len(PEOPLEKEYPRE)) = PEOPLEKEYPRE Then '人员'取父节点KEYkey =End If'取得组节点IDIf Left(key, Len(GROUPKEYPRE)) = GROUPKEYPRE ThenGetCurrentGroupId = Mid(key, Len(GROUPKEYPRE) + 1)ElseGetCurrentGroupId = -1End IfEnd IfEnd Function'*********************************************************************** '* 函数名:GetNodeIndex'* 功能:取得TreeView中指定节点的index'* 参数:String NODE节点KEY前缀'* :Long NODE节点后缀'* 返回值:Long NODE的index,失败时为-1'*********************************************************************** Private Function GetNodeIndex(ByVal keypre As String, ByVal id As Long) '初始化返回值GetNodeIndex = -1'参数检查If IsNull(keypre) Or IsEmpty(keypre) Or keypre = "" _Or id <= 0 ThenExit FunctionEnd If'定义变量Dim nodeKey As String 'NODE KEYDim iLoop As Integer '循环变量'生成NODE KEYnodeKey = keypre & CStr(id)'查找节点For iLoop = 1 ToIf trvAll.Nodes(iLoop).key = nodeKey ThenGetNodeIndex = iLoopExit ForEnd IfNextEnd Function'*********************************************************************** '* 过程名:IniGroupInTreeView'* 功能:初始化TreeView中的组信息'* 参数:'*********************************************************************** Private Sub IniGroupInTreeView()'变量定义Dim rs As ADODB.Recordset '记录集Dim currentNode As Node '当前组节点'取得组信息记录集Set rs = GetGroupRecordset()'添加组If IsObject(rs) ThenWhile Not rs.EOFSet currentNode = , tvwLast, _GROUPKEYPRE & rs("groupid"), rs("groupname"))'添加组成员IniPeopleInGroup rs("groupid"), currentNode.indexrs.MoveNextWendrs.CloseSet rs = NothingEnd IfEnd Sub'*********************************************************************** '* 过程名:IniPeopleInGroup'* 功能:初始化组成员信息'* 参数:Long 组ID'* :Integer 组节点index'*********************************************************************** Private Sub IniPeopleInGroup(ByVal groupkey As Long, _ByVal index As Integer)'变量定义Dim rs As ADODB.Recordset '记录集'取得指定组成员信息Set rs = GetGroupMember(groupkey)'添加组成员If IsObject(rs) ThenWhile Not rs.EOFindex, tvwChild, PEOPLEKEYPRE & _CStr(rs("peopleId")), rs("peopleName")rs.MoveNextWendrs.CloseSet rs = NothingEnd IfEnd Sub'*********************************************************************** '* 过程名:IniTreeView'* 功能:初始化TreeView'*********************************************************************** Private Sub IniTreeView()IniGroupInTreeViewEnd Sub'*********************************************************************** '* 过程名:RefreshGroupInTreeView'* 功能:刷新TreeView中的组信息'* 参数:'*********************************************************************** Private Sub RefreshGroupInTreeView()'变量定义Dim rs As ADODB.Recordset '记录集Dim currentNode As Node '当前组节点Dim nodeKey As String '节点KEYDim iLoop As Integer '循环变量Dim existFlag As Boolean '已存在标志Dim nodeindex As Integer '节点index'取得组信息记录集Set rs = GetGroupRecordset()'添加组If IsObject(rs) ThenWhile Not rs.EOF'查找节点是否已存在nodeKey = GROUPKEYPRE & rs("groupid")existFlag = FalseFor iLoop = 1 ToIf = nodeKey Thennodeindex = iLoopexistFlag = TrueExit ForEnd IfNextIf existFlag Then '组已存在,刷新组成员RefreshPeopleInGroup rs("groupid"), nodeindexElse '组不存在,追加新组Set currentNode = , tvwLast, _GROUPKEYPRE & rs("groupid"), rs("groupname"))currentNode.Selected = True'添加组成员IniPeopleInGroup rs("groupid"), currentNode.indexEnd Ifrs.MoveNextWendrs.CloseSet rs = NothingEnd IfEnd Sub'*********************************************************************** '* 过程名:RefreshPeopleInGroup'* 功能:初始化组成员信息'* 参数:Long 组ID'* :Integer 组节点index'*********************************************************************** Private Sub RefreshPeopleInGroup(ByVal groupkey As Long, _ByVal index As Integer)'变量定义Dim rs As ADODB.Recordset '记录集Dim iLoop As Integer '循环变量Dim existFlag As Boolean '存在标志Dim curNode As Node '节点Dim nodeKey As String '节点KEY'取得指定组成员信息Set rs = GetGroupMember(groupkey)'添加组成员If IsObject(rs) ThenWhile Not rs.EOF'查找是否已存在nodeKey = PEOPLEKEYPRE & CStr(rs("peopleId"))existFlag = FalseIf ThenSet curNode =Do While Not curNode Is NothingIf curNode.key = nodeKey ThenexistFlag = TrueExit DoEnd IfSet curNode = curNode.NextLoopEnd IfIf Not existFlag ThenSet curNode = , tvwChild, PEOPLEKEYPRE & _CStr(rs("peopleId")), rs("peopleName"))curNode.Selected = TrueEnd Ifrs.MoveNextWendrs.CloseSet rs = NothingEnd IfEnd Sub'*********************************************************************** '* 过程名:RefreshTreeView'* 功能:刷新TreeView'* 参数:'*********************************************************************** Public Sub RefreshTreeView()RefreshGroupInTreeViewtrvAll_ClickEnd Sub'*********************************************************************** '* 过程名:RefreshCurPeoplePhoto'* 功能:刷新当前联系人像片信息'* 参数:'*********************************************************************** Public Sub RefreshCurPeoplePhoto()'取得选择条目的KEYDim key As String'有选择条目If Not trvAll.SelectedItem Is Nothing Thenkey ='判断是组还是人员If Left(key, Len(PEOPLEKEYPRE)) = PEOPLEKEYPRE Then'取得像片信息GetPhotoArray CLng(Mid(key, Len(PEOPLEKEYPRE) + 1))End IfEnd IfEnd Sub'*********************************************************************** '* 过程名:DspPeopleInfo'* 功能:显示人员信息'* 参数:Long 联系人ID'***********************************************************************Private Sub DspPeopleInfo(ByVal peopleId As Long)'变量定义Dim currentPeopleInfo As PeopleInfo '人员信息'取得信息If GetSinglePeopleInfo(peopleId, currentPeopleInfo) Then'显示信息'基本信息lblName.Caption = currentPeopleInfo.peopleNamelblSex.Caption = currentPeopleInfo.sex'公司信息lblCompanyName.Caption = panyNamelblCompanyDepartment.Caption = panyDepartment lblApointMent.Caption = currentPeopleInfo.appointmentlblCompanyAddress.Caption = panyAddresslblCompanyPostCode.Caption = panyPostcodelblCompanyPhone.Caption = panyPhonelblCompanyFax.Caption = panyFaxlblCompanyWebsite.Caption = pnaywebsite'家庭信息lblFamilyAddress.Caption = currentPeopleInfo.familyAddresslblFamilyPostcode.Caption = currentPeopleInfo.familyPostcodelblFamilyPhone.Caption = currentPeopleInfo.familyPhone'人个信息lblMobilePhone.Caption = currentPeopleInfo.mobilePhonelblHomepage.Caption = currentPeopleInfo.homepagelblEmail.Caption = currentPeopleInfo.emaillblEmailbak.Caption = currentPeopleInfo.emailbaklblMSN.Caption = currentPeopleInfo.MSNlblQQ.Caption = currentPeopleInfo.QQlblQQbak.Caption = currentPeopleInfo.QQbak'备注txtOtherInfo.Text = currentPeopleInfo.otherInfoEnd IfEnd Sub'*********************************************************************** '* 过程名:GetPhotoArray'* 功能:取得当前联系人像片信息'* 参数:Long 联系人ID'*********************************************************************** Private Sub GetPhotoArray(ByVal peopleId As Long)'清除此前数组中内容Erase photoArray'清除显示的像片ImagePhoto.Picture = LoadPicturephotoIndex = -1'取得当前联系人像片信息If GetPeoplePhoto(peopleId, photoArray) ThenIf SafeArrayGetDim(photoArray) > 0 ThenIf UBound(photoArray) > 0 ThenDspPhoto ImagePhoto, App.Path & _"\photo\" & photoArray(0).photoFilephotoIndex = 0End IfEnd IfEnd If'改变按钮可用状态SetPhotoButtonEnableEnd Sub'*********************************************************************** '* 过程名:SetPhotoButtonEnable'* 功能:像片按钮可用状态设定'* 参数:'*********************************************************************** Private Sub SetPhotoButtonEnable()'变量定义Dim photoNum As Integer '像片数量'取得像片数量If SafeArrayGetDim(photoArray) > 0 ThenphotoNum = UBound(photoArray)ElsephotoNum = 0End If'可用状态设定If photoNum <= 1 Then'上下按钮均不可用cmdPre.Enabled = FalsecmdNext.Enabled = FalseElsecmdPre.Enabled = TruecmdNext.Enabled = TrueIf photoIndex = 0 ThencmdPre.Enabled = FalseEnd IfIf photoIndex = photoNum - 1 ThencmdNext.Enabled = FalseEnd IfEnd IfEnd Sub'*********************************************************************** '* 过程名:cmdPre_Click'* 功能:下一张像片按钮事件响应'*********************************************************************** Private Sub cmdNext_Click()'变量定义Dim photoNum As Integer '像片数量'取得像片数量If SafeArrayGetDim(photoArray) > 0 ThenphotoNum = UBound(photoArray)ElsephotoNum = 0End If'显示像片If photoNum > 0 And photoIndex < photoNum - 1 ThenphotoIndex = photoIndex + 1DspPhoto ImagePhoto, App.Path & _"\photo\" & photoArray(photoIndex).photoFileEnd If'改变按钮可用状态SetPhotoButtonEnableEnd Sub'*********************************************************************** '* 过程名:cmdPre_Click'* 功能:上一张像片按钮事件响应'* 参数:'*********************************************************************** Private Sub cmdPre_Click()'变量定义Dim photoNum As Integer '像片数量'取得像片数量If SafeArrayGetDim(photoArray) > 0 ThenphotoNum = UBound(photoArray)ElsephotoNum = 0End If'显示像片If photoNum > 0 And photoIndex > 0 ThenphotoIndex = photoIndex - 1DspPhoto ImagePhoto, App.Path & _"\photo\" & photoArray(photoIndex).photoFileEnd If'改变按钮可用状态SetPhotoButtonEnableEnd Sub'*********************************************************************** '* 过程名:Form_Load'* 功能:窗体LOAD事件响应'* 参数:'*********************************************************************** Private Sub Form_Load()'初始化TREEVIEWIniTreeView'设定像片更换按钮可用状态SetPhotoButtonEnable'当前像片INDEXphotoIndex = -1End Sub'*********************************************************************** '* 过程名:Form_Unload'* 功能:窗体UnLOAD事件响应'* 参数:'*********************************************************************** Private Sub Form_Unload(Cancel As Integer)'关闭数据库连接CloseDbConnEnd Sub'*********************************************************************** '* 过程名:ImagePhoto_MouseDown'* 功能:图片显示控件鼠标DOWN事件响应'* 参数:'*********************************************************************** Private Sub ImagePhoto_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single)'鼠标右键按下弹出菜单If Button = vbRightButton ThenPopupMenu PopMenu_PhotoEnd IfEnd Sub'*********************************************************************** '* 过程名:Menu_AppendNewGroup_Click'* 功能:“关于”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_About_Click()frmAbout.Show vbModalEnd Sub'***********************************************************************'* 过程名:Menu_AppendNewGroup_Click'* 功能:“追加组”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_AppendNewGroup_Click()AppendNewGroupForm.Show vbModalEnd Sub'*********************************************************************** '* 过程名:Menu_AppendPeople_Click'* 功能:“追加人员”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_AppendPeople_Click()If GetGroupNum() = 0 ThenMsgBox "请先设定分组信息!", vbExclamation Or vbOKOnly, "警告" ElseEditPeopleForm.Show vbModalUnload EditPeopleFormEnd IfEnd Sub'*********************************************************************** '* 过程名:Menu_AppendPeople_Click'* 功能:“更改资料”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_editPeople_Click()'变量定义Dim nodeKind As Integer '节点类型Dim peopleId As Long '人员IDDim nodeKey As String '节点KEYDim groupNodeKey As String '组节点KEYDim newPeopleInfo As PeopleInfo '人员信息Dim iLoop As Integer '循环变量If GetCurrentSelectedNode(nodeKind, peopleId) And nodeKind = 2 Then EditPeopleForm.g_peopleId = peopleIdEditPeopleForm.Show vbModal'更新成功If EditPeopleForm.g_updateFlag ThennodeKey = PEOPLEKEYPRE & CStr(peopleId)'取得人员信息If GetSinglePeopleInfo(peopleId, newPeopleInfo) ThengroupNodeKey = GROUPKEYPRE & CStr(newPeopleInfo.groupid) For iLoop = 1 ToIf = nodeKey Then'判断所属组是否改变If = _groupNodeKey Then '未改变= _newPeopleInfo.peopleNametrvAll_ClickElse '改变iLoopRefreshTreeViewEnd IfEnd IfNextEnd IfEnd If'UNLOAD窗口Unload EditPeopleFormEnd IfEnd Sub'*********************************************************************** '* 过程名:Menu_GroupManage_Click'* 功能:“退出”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_Exit_Click()Unload MeEnd Sub'*********************************************************************** '* 过程名:Menu_GroupManage_Click'* 功能:“组管理”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_GroupManage_Click()'“删除组”/“更改组名”菜单可用状态控制If GetGroupNum() = 0 ThenMenu_RemoveGroup.Enabled = FalseMenu_RenameGroup.Enabled = FalseElseMenu_RemoveGroup.Enabled = TrueMenu_RenameGroup.Enabled = TrueEnd IfEnd Sub'*********************************************************************** '* 过程名:Menu_GroupManage_Click'* 功能:“导入像片”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_importPhoto_Click()ImportPhotoForm.Show vbModalUnload ImportPhotoForm'刷新像片信息RefreshCurPeoplePhotoEnd Sub'*********************************************************************** '* 过程名:Menu_People_Click'* 功能:“联系人管理”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_People_Click()'变量定义Dim nodeKind As Integer '节点类型Dim peopleId As Long '人员ID'所有子菜单可用控制If GetGroupNum() = 0 ThenMenu_AppendPeople.Enabled = FalseMenu_RemovePeople.Enabled = FalseMenu_editPeople.Enabled = FalseMenu_importPhoto.Enabled = FalseElseMenu_AppendPeople.Enabled = TrueMenu_RemovePeople.Enabled = TrueMenu_editPeople.Enabled = TrueMenu_importPhoto.Enabled = TrueEnd If'“删除联系人”\“更改资料”菜单可用状态控制If GetCurrentSelectedNode(nodeKind, peopleId) And nodeKind = 2 Then Menu_RemovePeople.Enabled = TrueMenu_editPeople.Enabled = TrueMenu_importPhoto.Enabled = TrueElseMenu_RemovePeople.Enabled = FalseMenu_editPeople.Enabled = FalseMenu_importPhoto.Enabled = FalseEnd IfEnd Sub'*********************************************************************** '* 过程名:Menu_RemoveGroup_Click'* 功能:“删除组”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_RemoveGroup_Click()'变量定义Dim selGroupId As Long '当前组IDDim curGroupInfo As GroupInfo '当前组信息'取得当前组的IDselGroupId = GetCurrentGroupId()If selGroupId <= 0 ThenMsgBox "没有可删除的组!", vbExclamation Or vbOKOnly, "警告"Exit SubEnd If'取得当前组的组名If Not GetGroupInfo(selGroupId, curGroupInfo) ThenMsgBox "取得当前组名失败!", vbExclamation Or vbOKOnly, "警告" Exit SubEnd IfIf MsgBox("你确信要删除组[" & curGroupInfo.groupName & _"] 及该组下的所有成员吗?", vbQuestion Or vbYesNo, _"询问") = vbYes Then'执行删除If Not RemoveGroup(curGroupInfo) ThenMsgBox "删除失败!", vbExclamation Or vbOKOnly, "警告"Else'删除TREEVIEW中对应组_GetNodeIndex(GROUPKEYPRE, curGroupInfo.groupid)End IfEnd IfEnd Sub'*********************************************************************** '* 过程名:Menu_RemovePeople_Click'* 功能:“删除联系人”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_RemovePeople_Click()'变量定义Dim nodeKind As Integer '节点类型Dim peopleId As Long '人员IDIf GetCurrentSelectedNode(nodeKind, peopleId) And nodeKind = 2 Then If MsgBox("您确信要删除联系人[" & _& "]吗?", vbQuestion Or vbYesNo, _"询问") = vbYes Then'执行删除If RemovePeople(peopleId) ThenElseMsgBox "删除失败!", vbExclamation Or vbOKOnly, "警告"End IfEnd IfEnd IfEnd Sub'*********************************************************************** '* 过程名:Menu_RenameGroup_Click'* 功能:“更改组名”菜单响应'* 参数:'*********************************************************************** Private Sub Menu_RenameGroup_Click()'定义变量Dim groupid As Long '当前组IDDim curGroupInfo As GroupInfo '组信息Dim groupNodeKey As String '组节点KEYDim iLoop As Integer '循环变量Dim newGroupInfo As GroupInfo '新组信息'取得组IDgroupid = GetCurrentGroupId()'检查是组否存在If GetGroupInfo(groupid, curGroupInfo) Then'显示更改窗口RenameGroupForm.g_groupId = groupidRenameGroupForm.Show vbModal'更新成功更新TREEVIEW显示If RenameGroupForm.g_updateFlag ThengroupNodeKey = GROUPKEYPRE & CStr(groupid)'取得新组名If GetGroupInfo(groupid, newGroupInfo) ThenFor iLoop = 1 ToIf = groupNodeKey Then= newGroupInfo.groupNameEnd IfNextEnd IfEnd IfUnload RenameGroupFormElseMsgBox "当前状态不能修改组名!", vbExclamation Or vbOKOnly, "警告" End IfEnd Sub'*********************************************************************** '* 过程名:PopMenu_Photo_Click'* 功能:图像显示菜单选择事件响应'* 参数:'*********************************************************************** Private Sub PopMenu_Photo_Click()'全屏菜单可用状态If photoIndex >= 0 ThenPopMenu_Photo_FullDsp.Enabled = TrueElsePopMenu_Photo_FullDsp.Enabled = FalseEnd IfEnd Sub'*********************************************************************** '* 过程名:PopMenu_Photo_FullDsp_Click'* 功能:全屏显示菜单选择事件响应'* 参数:'*********************************************************************** Private Sub PopMenu_Photo_FullDsp_Click()FullScrDspPhotoForm.g_FileName = App.Path & _"\photo\" & photoArray(photoIndex).photoFileFullScrDspPhotoForm.Show vbModalEnd Sub'*********************************************************************** '* 过程名:trvAll_Click'* 功能:TREEVIEW控件CLICK事件响应'* 参数:'*********************************************************************** Private Sub trvAll_Click()'取得选择条目的KEYDim key As String'有选择条目If Not trvAll.SelectedItem Is Nothing Thenkey ='判断是组还是人员If Left(key, Len(PEOPLEKEYPRE)) = PEOPLEKEYPRE Then'显示信息DspPeopleInfo CLng(Mid(key, Len(PEOPLEKEYPRE) + 1))'显示像片GetPhotoArray CLng(Mid(key, Len(PEOPLEKEYPRE) + 1))End IfEnd IfEnd Sub'*********************************************************************** '* 过程名:trvAll_MouseDown'* 功能:TREEVIEW控件鼠标DOWN事件响应'* 参数:'*********************************************************************** Private Sub trvAll_MouseDown(Button As Integer, Shift As Integer, _X As Single, Y As Single)'变量定义Dim key As String '选择节点的的KEY'鼠标右键按下弹出菜单If Button = vbRightButton ThenIf trvAll.SelectedItem Is Nothing Then'无选择的节点弹出添加组操作菜单PopupMenu Menu_GroupManageElse'取得节点KEYkey ='判断选择的节点类型If Left(key, Len(PEOPLEKEYPRE)) = PEOPLEKEYPRE Then '人员PopupMenu Menu_PeopleElse '组PopupMenu Menu_GroupManageEnd IfEnd IfEnd IfEnd Sub'*********************************************************************** '* 文件名: databaseop.frm'* 说明:追加新组窗口'*********************************************************************** Option Explicit'*********************************************************************** '* 函数名:AppendNewGroup'* 功能:追加组信息'* 参数:newgroup 组名'* 返回值:Boolean true 追加成功'* : false 追加失败'*********************************************************************** Private Function AppendNewGroup(newgroup As String) As Boolean'变量定义Dim newGroupInfo As GroupInfo '组信息'构造组信息newGroupInfo.groupName = newgroup'执行追加操作AppendNewGroup = AppendGroup(newGroupInfo)End Function'***********************************************************************'* 过程名:cmdCancle_Click'* 功能:“放弃”按钮响应'* 参数:'*********************************************************************** Private Sub cmdCancle_Click()Unload MeEnd Sub'*********************************************************************** '* 过程名:cmdOk_Click'* 功能:“确定”按钮响应'* 参数:'*********************************************************************** Private Sub cmdOk_Click()'变量定义Dim newGroupName As String '新组名Dim existFlag As Boolean '组名存在标志'取得用户输入组名newGroupName = txtGroupName.Text'删除首尾空格newGroupName = Trim(newGroupName)'新组名合法性检查If IsEmpty(newGroupName) Or newGroupName = "" ThenlbErrorInfo.Caption = "组名不能为空!"Exit SubEnd If'检查组名是否已经存在existFlag = FalseIf IsExistGroup(newGroupName, existFlag) ThenIf existFlag ThenlbErrorInfo.Caption = "组名已经存在!"Exit SubEnd IfEnd If'追加新组名到数据库If AppendNewGroup(newGroupName) ThenUnload MeMainForm.RefreshTreeViewElselbErrorInfo.Caption = "追加新组失败!"End IfEnd SubPrivate Sub lbErrorInfo_Click()End Sub数据库操作模块:。