通讯录管理系统设计与实现_第1页
通讯录管理系统设计与实现_第2页
通讯录管理系统设计与实现_第3页
通讯录管理系统设计与实现_第4页
通讯录管理系统设计与实现_第5页
已阅读5页,还剩38页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河北大学2009届本科生毕业论文(设计)PAGE通讯录管理系统设计与实现摘要随着通讯科技的发展,手机的应用已经相当普遍。面对海量的通讯录信息,做不到信息批处理的手机自带通讯录功能越来越难担重负;而面对丢失手机造成的人脉损失,手机通讯录信息备份能力的提升已成为一个备受关注的问题。在计算机应用得到普及的今天,人们很容易想到使用计算机来解决这些问题,因此,关于手机通讯录的信息管理系统便应运而生了。通讯录管理系统是一种典型的信息管理系统(MIS),其主要开发包括前端应用程序和后台数据库两个方面。前端应用程序的开发力求做到功能完备、操作简易、界面美观;而后台力求建立成为一个数据一致性、完整性强和数据安全性好的数据库。本文以通用的通讯录管理系统为实例,运用VisualBasic.Net和MicrosoftOfficeAccess进行程序设计,讲述如何开发通讯录管理系统。此设计具有很强的实用性,使用者可以根据具体情况稍加修改,就可以把它应用到实际生活中。这个设计除了实现通讯录的常规功能外,还实现了批量化信息处理,自动与手动备份,群发邮件,图片存储等功能。面对众多手机内信息字段的多样化,本系统还特别开发了对字段内容修改的功能,可以把不常用的字段修改为有用字段。

关键词:手机通讯录MISVisualBasic.NetMicrosoftOfficeAccessABSTRACTWiththedevelopmentofcommunicationtechnology;themobilehasbeenusedquitecommon.Facingthemagnitudeofthedirectoryinformation,withoutbatchprocessingmobiledirectoryishardtoburden,Whilefacingthelossofsocialinformationnetworkcausedbythemobiledirectoryloss,backupfunctionalsoneedstoascendtoanewlevel.Withcomputerapplicationpopularizingmoreandmorepopulartoday,itiseasytothinktousecomputertosolvetheseproblems,thereforemobiledirectoryinformationmanagementsystemcomestrue.Addressbookmanagementsystemisatypicalapplicationofmanagementinformationsystem(MIS),whichmainlyincludesfrontapplicationprogramdevelopmentandbackstagesupporter'sdatabase.ThefrontapplicationprogramdevelopmentintendstoFull-featured,user-friendly,interfaceaesthetics;thebackstagesupporter’sdatabaseisadatabasewhichcontainsdataconsistency,integralityandsecurity.Thispaperdiscussesthedirectoriesmanagementsysteminageneralway,usingVisualBandMicrosoftOfficeAccessforprogramdesign,describeshowtodevelopdirectoriesmanagementsystem.Thisdesignhasastrongpracticability,itcanbeappliedtoactualneedswhenusermodifyalittle.Thedesignaccomplishedtheconventionalfunctionofdirectory,andalsorealizedotherfunctionssuchasbatchinformationprocessing,automaticandmanualback-up,massemail,imagestorage,etc.Facingofthemanymobilephonesfilledwiththediversityofinformation,thesystemalsohasdevelopedafunctionofmodificationtothefields,whichcanmakeuncommonfieldscommon.Keywords:DirectoryMISVisualBMicrosoftOfficeAccess河北大学2009届本科生毕业论文(设计)目录一引言 1二需求分析 22.1功能需求分析 22.2数据需求分析 22.2.1相关实体 22.2.2实体用例图 32.3性能需求分析 32.4界面需求分析 32.4.1前端显示页面 42.4.2登录界面 5三系统总体设计 63.1功能总体设计 63.1.1用户功能设计 63.2数据库ER图设计 93.3数据库具体设计 93.3.1数据库表的设计如下 9四系统详细设计及实现 144.1技术背景 144.1.1开发环境的选择 144.1.2应用技术的选择 144.1.3工具的选择 154.2各模块功能详细设计及实现 154.2.1用户登录模块 154.2.2主界面初始化显示模块 164.2.3添加修改成员模块 184.2.4成员组树选择查询模块 194.2.5搜索查询模块 214.2.6成员与成员组之间关系变更 224.2.7属性关系变更: 244.2.8主显示区显示变更多页面显示区信息变更: 254.2.9电子邮件群发设置: 264.2.10图片存储设置: 274.2.11备份设置: 294.2.12导入设置: 30五测试 315.1模块测试 315.1.1用户登录测试 315.1.2联系人信息修改测试 325.1.3输入式查询模块测试 345.1.4成员关系变更测试 345.1.5测试邮件群发功能 355.2测试结果分析 36六总结 37谢辞 38参考文献 39PAGE1一引言随着通讯技术的发展,手机已经在我们的生活中占据了重要的地位,是我们进行交流、信息获取与交换的便利工具,使通讯的更方便、更快捷.早在2008年的11月,我国的手机用户已经突破了6亿.当海量的联系人信息常使我们的手机不堪重负;当丢失手机时,失主因为丢失了手机中的联系人信息,而错过诸多机会,令人痛心不已.使用计算机管理手机通讯录信息已经被大多数人所接受.使用计算机通讯录管理软件是非常明智的选择,另外现在网络上通讯录软件也有很多了,但功能上多趋于简单化,因此一个功能完善,便于操作,人性化界面的通讯录开发就显得尤为必要了.通过通讯录管理系统的建立可以方便人际关系的维护与管理,一个良好的通讯录,还起到备忘录的功能,随时提醒用户需要注意的各种人际交流事项,为做好人际沟通建立起一个坚实的基础.如第一次见面时所发现的信息、对方兴趣爱好、名片模块套用等,可以实现人际关系的软着陆,将一些与人交际时获得的新信息存入该系统,便于随时翻阅.做好人际沟通在社会上会赢的很大人际优势,在以后工作生活中提高效率.本文记述了通讯录系统的整个开发过程,包括[1]系统分析、系统设计、系统实现等方面.我本着以人为本的思想,综合运用在计算机科学与技术专业学到的各种知识,实现对录信息的增加、删除、修改、查询[2]等功能,以单文档界面和多文档界面两种形式实现.还实现了批量化信息处理;自动与手动备份;群发邮件;图片存储;支持多种格式的导入等功能[4].面对众多手机内信息重点的多样化,本系统还特别实现了对字段内容修改的功能,可以把不常用的字段修改为有用字段.该软件具有方便性、可靠性、寿命长、可行性、安全性的优点.同时该软件用到了多文档界面的实现、窗口之间的参数传递等技术.

河北大学2009届本科生毕业论文(设计)PAGE38二需求分析需求分析是软件定义时期的重要阶段,任务是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求.以下通过功能需求、数据需求、性能需求、界面需求四方面进行分析.2.1功能需求分析手机中的通讯录信息有可能数量很大,再把手机信息导入计算机时手工录入则相当繁琐;有可能因为丢失手机而把重要的通讯录信息全部丢失;在查找某个人信息时,有可能记不起该人的具体姓名,可以从各种字段对信息搜索,模糊查询,首字母查询.因此在实现手机通讯录已有功能的同时,还要实现以下几个功能.1.要能够海量存储成员信息:联系人信息量过大引起的需要计算机进行优化性管理,因此软件应当比手机的存储量高一个或多个数量级.2.要能够导入导出:目的在于管理手机的通讯录,只要能从手机导出的格式尽量支持.3.要支持智能备份:能够完成手工备份与自动备份.备份功能使手机丢失后不会再丢失令人痛心想的人脉,而且以防操作不当引起数据的流失.4.要支持智能模糊查询(首字母查询、模糊查询、二次查询):查询方式意味着程序操作的复杂度,查询方式多样化,可以使得软件的操作性增强很多.5.要支持邮件群发:手机不方便发电子邮件,而软件在计算机上,理所应当要增加一些手机上完成不了的功能.2.2数据需求分析为了把系统的数据要求清楚、准确地描述出来,需要建立一个概念性的数据模型,按照用户的要求观点对数据建立模型,用来描述从用户角度看到的数据,反映使用者的现实使用环境,它包括三种相互关联的信息:实体,实体属性,实体彼此间相互连接的关系.以下分别介绍.2.2.1相关实体根据对系统功能的分析,得到系统所涉及的实体有:系统模块(系统初始化信息、系统调用信息、多页面操作信息)信息模块(用户信息、联系人信息、组关系信息、简历信息、社会关系信息、报表).1.系统模块主要是对系统初始化和使用过程中操作:(1)系统初始化模块:系统初始化时所需要调用的信息.(2)系统调用模块:系统使用中所调用的信息(3)多页面操作模块:系统在对多页面选项卡操作时调用的信息.2.信息模块主要是对通讯录中联系人信息的操作:(1)用户模块:对用户信息表,对密码设置.(2)联系人信息模块:对联系人信息添加,修改,删除.(3)组关系模块:对联系人所属的组进行添加删除(默认组属于根节点).(4)简历信息模块:对联系人与简历做关联,添加、修改、删除简历.(5)社会关系信息模块:对联系人与社会关系做关联,添加、修改、删除简历.(6)报表模块:对通讯录中联系人信息做筛选,整理出报表.2.2.2实体用例图图2-1实体用例图2.3性能需求分析软件名称:通讯录管理系统支持操作系统:Windows2000,WindowsXP等软件架构:C/S(Client/Server)软件/数据库模式适用范围:导出通讯录格式为(csv,xls,mdb)的手机用户数据库服务器:access运行方式:通过软件运行稳定性:运行时间不限,数据库服务器自动每三天备份一次,用户可以手动随时备份安全性:自动去除数据库中不安全、不符合标准的数据速度:取决于计算机性能空间:系统占用空间<=7MB,数据库<=1G操作:便捷2.4界面需求分析软件界面尽量美观实用,使用户一眼就看明白各个模块的意义和使用方法.做到简单易行,容易理解,便于操作.2.4.1前端显示页面(1)布局如图2-2所示.A标题栏B菜单栏C快捷菜单栏D成员组信息栏F搜索栏H主显示栏E多页面显示栏图2-2前端显示页面(2)包含内容系统横幅标题栏导航菜单栏快捷按钮栏成员组信息栏多页面显示栏搜索栏注册显示栏主显示表栏(3)显示功能静态显示静态显示静态可选择模式显示数据与后台相连,动态显示数据与后台相连,动态显示用户使用剩余使用次数显示数据与后台相连,动态显示2.4.2登录界面AB图2-3前端登录界面1.布局如图2-7所示.2.包含内容(1)登录界面(2)登录验证窗口3.显示功能(1)显示背景、密码输入框,点击登录按钮后经数据库验证合格后,进入程序三系统总体设计通过需求分析等前期工作,在系统总体设计阶段对系统进行初步设计,站在全局高度上,花较少成本,从较抽象的层次上分析系统的实现方案和软件结构[1],也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系,从而开发出较高质量的软件系统.系统可通过软件进行访问数据库,通过软件的表格读取数据.系统的主要功能包括:管理通讯录、群发邮件、备忘录、统计报表等.3.1功能总体设计3.1.1用户功能设计用户功能结构如图3-3所示图3-1用户主要操作活动图图3-2用户次要操作活动图各模块功能总体设计如下:1.登录:个人通讯录,自己用所以只设立一个用户,登录窗口有1个文本输入框用于输入密码.点击登录按钮后会利用验证函数检验密码是否按要求完整填写.将符合要求的密码传送到数据库用户表,该文件会从表中读取密码信息,验证用户填写得密码是否与数据库中的一致,如果一致则允许用户进入软件实体界面,否则返回登录窗口.2.浏览信息:初始显示所有用户.模块h主显示表栏以3种形式列出联系人的信息.(1)列表的形式显示用户的各项信息,包括姓名、性别、政治面貌、出生日期、工作单位、学历、职称、等项.可以在“高级”“住显示区属性”中设置添加与移除(2)头像的形式显示用户,由于提醒自己,是名字和人可以清楚地对上号(3)文件夹形式显示用户,节省空间一版内可以显示百余个联系人3.信息修改:双击用户名可以进入用户信息面板,可以获得所有用户个人信息.4.在多页面显示栏e除了可以得到用户的个人信息,还有用户的社会关系,工作经历.由其他表提供的,不便于显示在主显示区的内容.5.在搜索栏可以进行精确查询和模糊查询两项功能精确查询:输入确切的信息获得结果模糊查询:输入首字母查询结果,例如输入ly可以查到李留玉(lly),李玉林(lyl),刘勇(ly)6.成员组信息栏:根据选定的成员组主显示区显示其成员,一个成员可以同时属于多个组,每个组可以用有多个成员,选择父组显示所有子组里的成员7.程序功能:(1)密码设置:原始密码设置为123,可以给软件设置开机密码,也可以不用密码直接登录.(2)开始时组树展开模式:可以显示所有子组,也可以开始时之展开第一层子组(3)导入导出:可以从excel文档和csv文档导入联系人信息,导入时把文件中的字段与程序所包含的字段一一对应添加.导出为统一格式csv(4)数据库操作:包括备份数据库,从数据库中还原数据,压缩整理数据库(5)群发邮件:所有在电子邮件处有内容的用户,皆进入列表备选.(6)改变选定成员从属关系:删除某成员与某关系的连接(7)添加简历与社会关系记录:添加简历与社会关系,这些比较大,存放在另一个表中.(8)设置各分区所显示内容:可以设置主显示区显示的字段,可以设置多页面显示区各分页面的显示字段.在个性化属性里,还可以把不用的属性字段修改为需要的字段.系统配色方案可以修改各分区的底色,使页面更加多姿.电话串口设置(本想添加网络电话功能,没有成功).邮箱设置,设置用户邮箱控制群发邮件时的发件人信息.自动备份设置,根据给定的时间自动备份数据库.统计报表,根据一定的规则选择使用报表,并用excel文件导出.3.2数据库ER图设计ER图在设计数据库时提供了直观的上的描述.图3-3数据库E-R图3.3数据库具体设计3.3.1数据库表的设计如下1.系统权限表(system):用于记录系统的登录信息.当用户登录管理系统时系统读取该表中的信息进行初始化;当用户修改系统登录信息后,将会对此表进行更新.表的表项如表3-1所示.表3-1系统初始化表(system)列名数据类型非空约束描述Idint是主键IdValuevarchar(20)否登录信息Memovarchar(20)否备注2.操作填充表(fieldconfig):本表用于获得备选信息.当用户要对通讯录字段进行修改时,将调用该表中记录,调用字段时查询字段属于哪张表的第几项,使应用程序调用时简化.表中记录了各重要表的字段及其默认信息.该表项如表3-2所示.表3-2操作填充表(fieldconfig)列名数据类型非空约束描述Idint是主键用户IdTableidInt是字段处于哪张表ItemidInt是字段在该表的第几行ItemnameChar(20)否字段名WidthInt是显示时宽度PicklistChar(20)list否备选选项3.多页操作表(pageconfig):本表用于记录多页面显示栏包含的数据关系.用户登录系统后可以从“高级”中的“各页面属性”中获得修改权限,它们都是从此表中调用的;用户设置个页面字段时,将同时更新这个表.表的表项如表3-5所示.表3-3多页面操作表(pageconfig)列名数据类型非空约束描述Idint是主键IdCaptionvarchar(40)否标题Visiablechar(1)是是否可选Itemidsvarchar(40)否选项List4.联系人信息表(member):本表用于记录联系人信息.本表是用户通讯录中的最主要表格,导入通讯录信息时向本表导入.本表需要随用户对程序的操作而对表进行实时更新.为了使手机内最多的字段可用,该表力求全面.为了便于操作,列名在建立时使用隐式列名,本表中的字段名称可以根据用户需要而更改,列名所对应的内容不一定,可修改的列名不赋予有效列名,便于系统调用时操作.表3-4联系人信息表(member)列名数据类型非空约束描述Item0varchar(10)是姓名Item1varchar(2)否性别Item2varchar(16)否民族Item3varchar(10)否籍贯Item4Date否生日Item5varchar(20)否政治面貌Item6varchar(20)否学历Item7varchar(20)否爱好Item8varchar(30)否工作单位Item9Date否从业时间Item10Date否入党时间Item11varchar(20)否职务Item12varchar(20)否职位Item13varchar(20)否职称Item14varchar(20)否级别Item15varchar(20)否通讯地址Item16varchar(6)否邮政编码Item17varchar(14)否住宅电话Item18varchar(14)否办公电话Item19varchar(20)否毕业院校Item20varchar(14)否手机1Item21varchar(14)否手机2Item22varchar(14)否手机3Item23varchar(20)否电子信箱Item24varchar(20)否昵称Item25Int(14)否QqItem26varchar(20)否msnItem27varchar(14)否办公电话Item28varchar(20)否未使用2UpdatedInt是自动更新新建Groupids备注否机填关系组号Deleteid备注否删除标记ImgeidInt否头像idSpellvarchar(20)是首字母Id自动编号是主键联系人id注:电话号码有的需要区号例如0312,在本系统中需要保存首位0与特殊字符号“-”因此电话号码用字符型存储.5.联系人组表(groups):记录联系人所属的组,该组与根节点的关系.表项如表3-6所示.表3-5联系人组表(groups)列名数据类型非空约束描述Idint是主键组IdLinkidint是外键父组idOrdint是第几个NameVarchar(20)是组名Memoint否备注6.简历表(resume):记录联系人的简历信息.当点击多页面栏选项卡中的简历时获得选中联系人的简历信息,并从该表中读取相应信息,进行显示;用户修改简历信息时,会同时更新表.表项如表3-6所示.表3-6简历表(resume)列名数据类型非空约束描述Idint是主键导航IdLinkidvarchar(40)是外键谁的简历BegintimeDate否起始时间EndtimeDate否终止时间Jobsetvarchar(30)否单位Jobhightvarchar(30)否职位Seemenvarchar(20)否证明人Item5varchar(30)否备注7.社会关系表(family):记录联系人的社会关系信息.当点击多页面栏选项卡中的社会关系时获得选中联系人的社会关系信息,并从该表中读取相应信息,进行显示;用户修改简历信息时,会同时更新表.表项如表3-6所示.表3-7社会关系表(family)列名数据类型非空约束描述Idint是主键IdLinkidInt是外键关联idItem0varchar(20)否关系Item1varchar(20)否姓名Item2varchar(2)否性别Item3Date否出生日期Item4varchar(20)否单位Item5varchar(20)否备注8.统计报表(stat):筛选记录内部的信息.用户登录系统后自定义筛选过程,而文件信息存储在此表中;用户修改、添加、删除筛选文件信息时会同时更新该表.表的表项如表3-7所示.表3-8统计报表(stat)列名数据类型非空约束描述Idint是主键IdModeInt是文件名称Namevarchar(20)是标题Expressvarchar(200)是筛选原则Excelvarchar(60)是Excel文件名Memovarchar(60)是备注四系统详细设计及实现详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,设计出程序的蓝图,不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简单易懂.[1]在实现阶段要根据详细设计阶段设计出的处理过程进行编码,实现系统.以下将详细论述这两个阶段的工作.4.1技术背景4.1.1开发环境的选择系统采用的开发环境为Windows++MicrosoftOfficeAccess.Windows系统是现在大多数计算机用户所使用的操作系统,对软件,尤其是大型商业软件及多媒体软件(包括游戏)的支持一直是Windows系统的强项,也是大多数人选择它的一个主要原因.另一方面它是图形界面操作系统,我们可以通过窗口、图标和菜单对系统进行操作,所以使用起来比较方便.面向对象的编程在.NET世界是不可避免的.随着VB.NET的推出,微软已经赋予了VB程序员多年来长期要求的所有特性,即一种真正的面向对象的编程语言.VB.NET与COM实体的捆绑支持更好一些.VB.NET使用IDE中的后台编译

VB.NET背景编译程序/句法检验器非常复杂,而且很客气地指出你的错误.从某些方面看,它能更准确地告诉你如何修改你源代码中的错误.MicrosoftOfficeAccess是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一.它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务.4.1.2应用技术的选择系统应用V技术进行开发.V的脚本语言是VisualBasic语言,它具有VisualBasic的一切特性,同时V也支持现在大部分平台.VisualBasic发展成vb.NET后,也成为一种完全的面向对象的编程语言.有几个好的原因导致了这个转变.面向对象编程有几个优点,比如:易于进行代码维护,可扩展性好,代码重用技术.这些优点是过程编程所没有的.自从功能被压缩到一个类中并且类作为一个独立的实体存在,提供一个类库就变得非常容易了,事实是任何一个.NETFramework程序员都可以使用.NETFramework类库,.NETFramework类库是一个有丰富类的类库,提供很强的功能,更可贵的是你可以很容易的扩展这些功能来满足你的需要.当写.NET应用程序时,需要写类和其他数据类型.为使应用程序更有条理,组织性更好,需要将他们聚合进名字空间中,这也是微软用.NETFramework类库的原因.微软.NETFrameworksdk文档中的.NETFramework类库中包含了80多个名字空间,包括常用的重要的名字空间,如System,System.IO,System.Drawing,System.Windows.Forms等等.举例而言,在Employee类中的PrintSalary方法,我们使用了system名字空间中的console类.4.1.3工具的选择系统使用的工具有visualstudio2005、MicrosoftOfficeAccess等.visualstudio2005是比较流行的集成开发环境.现在,在VisualStudio2005中,你能够把一个目录作为一个web工程来打开,这是一种相当不错的改进.在我的开发机器上,我可能有50个不同的web工程.使用以前的visualstudio2003,要把所有这些作为IIS中的虚拟目录加以配置和维护并且使工程实现正确地引用是令人相当头疼的事情.现在vb程序员越来越青睐于visualstudio2005,因为它是质量和界面很好,而且有一个庞大的类库,使用时就调用十分方便.visualstudio2005的安装比较简单的,全无人值守的自动安装,MicrosoftOfficeAccess管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件种,便于用户的操作和管理.使用accesss,可以使最后的数据库文件很小,导入导出比较方便.4.2各模块功能详细设计及实现4.2.1用户登录模块用户进入点击主程序,进入用户登录界面,由于本产品面向单用户,所以不用用户名密码登录,进入如图4-1所示的界面用户必须填写正确的密码信息,提交后数据库查看用户是否正确填写界面中的密码,如未全部不正确,则给出提示信息,用户重新填写其中用户填写内容的验证是通过adodb控件实现的,测试用户和录入用户主要是通过“select”语句实现的.图4-1程序登录流程图关键代码如下:Dimm_sConnStrAsString="Provider='SQLOLEDB';DataSource='A182D6214D8B47B\SQLEXPRESS';"&"InitialCatalog='txl';IntegratedSecurity='SSPI';"'实例化Connection类并打开Connection对象oConnection1=NewConnectionoConnection1.CursorLocation=CursorLocationEnum.adUseClientoConnection1.Open(m_sConnStr)DimsSQLAsString="SELECTcode,satFROM[user]"'实例化并打开Recordset对象m_oRecordset=NewRecordsetm_oRecordset.Open(sSQL,oConnection1,CursorTypeEnum.adOpenStatic,_LockTypeEnum.adLockBatchOptimistic,CommandTypeEnum.adCmdText)kong1=Trim(m_oRecordset.Fields.Item(0).Value.ToString())kim=(Asc(m_oRecordset.Fields.Item(2).Value().ToString)-48)Mod10'判断用户状态获取用户上次登录时设定是否要求密码登录IfkimMod2=0ThenPanel1.Visible=FalseTimer1.Enabled=TrueElse:Panel1.Visible=TrueEndIfnim=14.2.2主界面初始化显示模块主程序的显示样式如第二章中的图2-2.初始化模块流程图如下图4-2.从groups表中,将linkid=0的记录循环取出将其标题和时间显示在成员组栏中,根据记录的Id号为标题建立链接,系统从联系人信息表中读取出成员组的Id号从notice表中读取对应的记录,并作对应的关联工作,将其具体内容显示在主显示区栏;主显示区的显示是从成员组栏中读取出获得焦点的组所包含的记录,初始化时焦点处于关系树的根节点.图4-2程序初始化关键代码如下:成员组显示块初始化Dimm_sConnStrAsString="Provider='SQLOLEDB';DataSource='A182D6214D8B47B\SQLEXPRESS';"&_"InitialCatalog='txl';IntegratedSecurity='SSPI';"'实例化Connection类并打开Connection对象oConnection1=NewConnectionoConnection1.CursorLocation=CursorLocationEnum.adUseClientoConnection1.Open(m_sConnStr)DimsSQLAsString="SELECTsatfrom[user]"'实例化并打开Recordset对象m_oRecordset=NewRecordsetm_oRecordset.Open(sSQL,oConnection1,CursorTypeEnum.adOpenStatic,_LockTypeEnum.adLockBatchOptimistic,CommandTypeEnum.adCmdText)UpdateInfo()DimszSQLAsString="SELECTg_name,son_gFROM[group_g]wherefather_name='0'"'根节点查询m_oRecordset1=NewRecordset'为treeview添加根节点m_oRecordset1.Open(szSQL,oConnection1,CursorTypeEnum.adOpenStatic,_LockTypeEnum.adLockBatchOptimistic,CommandTypeEnum.adCmdText)UpdateInfo0()node=NewTreeNodenode.Text=gen_namenode=TreeView1.Nodes.Add(node.Text)node.ContextMenuStrip=CtMenuSt1DimszSQL1AsString="SELECTg_name,son_gFROM[group_g]wherestep=2"m_oRecordset2=NewRecordset'为treeview添加父节点m_oRecordset2.Open(szSQL1,oConnection1,CursorTypeEnum.adOpenStatic,_LockTypeEnum.adLockBatchOptimistic,CommandTypeEnum.adCmdText)UpdateInfo1()ni(0)=NewTreeNodeni(0).Text=zu_name(0)ni(0)=node.Nodes.Add(ni(0).Text)ni(0).ContextMenuStrip=CtMenuSt2Forx=1Togen-1m_oRecordset2.MoveNext()UpdateInfo2()ReDimPreservebn(x)bn(x)=Integer.Parse(m_oRecordset2.Fields.Item(1).Value().ToString)ni(x)=NewTreeNode()ni(x).Text=zu_name(x)node.Nodes.Add(ni(x))ni(x).ContextMenuStrip=CtMenuSt2Next成员组初始化时,从数据库中读取第一层节点然后添加到根节点上,遍历所有子节点.显示与否据定于用户设置,在用户选择显示所有成员组的情况下展开所有节点.4.2.3添加修改成员模块添加修改成员信息,是通讯录管理系统的基本功能之一.新添加成员信息时分为两种情况,一种是不设置所关联的组,在主显示区点击右键添加成员信息,默认关联于根组下(默认组成员属于“我的通讯录”);一种是在组关系树处添加成员信息,这种添加在成员的联系单元格中,会添加叶子节点的组关系号.修改成员关系是在记录栏里添加Click事件,在点击的效果下可以进入修改信息界面.在修改成员信息是提供出一个简单批量操作界面,在选项卡上端选择批量编辑,就可以编辑主显示区所显示的联系人全部信息.在修改后点击保存则更新数据库,直接关闭窗口则数据丢失.图4-3成员添加修改流程图主要代码如下:'调用DBUser类的AddUser方法,执行添加用户操作DimnResultAsInteger=User.AddUser(txtUsername.Text,txtPassword.Text,txtReaderEmail.Text,strPrivilege,txtReaderTel.TexttxtReaderHome.Text,)'AddUser方法返回值为-1表示用户名已存在,为表示操作失败,为表示操作成功,根据返回值的不同'分别弹出相应提示信息IfnResult=-1ThenMsgBox("输入用户姓名已存在,请重试",MsgBoxStyle.Exclamation,"添加用户")ElseIfnResult=0ThenMsgBox("添加用户失败!",MsgBoxStyle.Exclamation,"添加用户")ElseMsgBox("添加用户成功!",MsgBoxStyle.OkOnly,"添加用户")EndIfDimnResultAsUInteger=User.EditUser(strEdit,lbUserName.SelectedItem().ToString())'EditUser方法返回值为表示操作失败,为表示操作成功,根据返回值的不同分别弹出相应提示信息IfnResult>0ThenMsgBox("更新用户信息成功!",MsgBoxStyle.OkOnly,"更新用户")ElseMsgBox("更新用户信息失败!",MsgBoxStyle.Exclamation,"更新用户")EndIf4.2.4成员组树选择查询模块成员组树选择查询模块设计思路如图4-4所示,其中主显示区显示的各条信息随着用户对成员组树操作而动态显示,利用数据库链接,以便于在前端页面通过普通点击获得焦点的节点链接到相应的目标地址.图4-4选择节点显示流程图关键代码如下:DimnodebAsTreeNodenodeb=TreeView1.SelectedNodeDimcountAsInteger’获得焦点节点DimcomAsStringDimifd_nameAsString()=NewString(0){""}DimsSQLAsString="SELECTfu_no,son_gfrom[group_g]whereg_name='"&Trim(nodeb.Text)&"'"'实例化并打开Recordset对象DimsSQL1AsString="SELECTg_namefrom[group_g]wherefather_name='"&Trim(nodeb.Text)&"'"Dimfu_isnAsIntegerDimfu_younAsIntegerm_oRecordseta=NewRecordsetm_oRecordseta.Open(sSQL,oConnection1,CursorTypeEnum.adOpenStatic,_LockTypeEnum.adLockBatchOptimistic,CommandTypeEnum.adCmdText)fu_isn=Integer.Parse(Trim(m_oRecordseta.Fields.Item(0).Value().ToString))'获得该节点的节点号ByValColumnParentAsString,ByValColumnChildAsString,_ByRefparentBindSourceAsBindingSource,ByRefchildBindSourceAsBindingSource)'连接数据库Open()'设置查询语句DimstrSQL1AsString="Select*from"+Table1DimcmdAsSqlCommand=NewSqlCommand(strSQL1,conn)cmd.CommandType=CommandType.TextDimdaAsNewSqlDataAdapter()da.SelectCommand=cmd'执行查询命令cmd.ExecuteNonQuery()'填充数据集DimdsAsNewDataSetda.Fill(ds,Table1)图4-5选择节点显示效果图注:根级节点获得所有联系人的信息,叶节点的联系人被其父节点获得.4.2.5搜索查询模块该模块的显示如图4-5.用户填写关键字,选择搜索字段(默认的搜索方式是搜索所有字段),点击搜索按钮后,系统在数据库联系人信息表中搜索出含有输入的关键字的所有信息,并将其一条条的显示在主显示栏.搜索利用SQL语句的模糊搜索查询出与关键字相似的内容显示在主显示栏中.图4-6输入时查询流程图主要代码如下:DimchaxunasString=“”Chaxun=trim(Textbox11.text)'实例化Connection类并打开Connection对象oConnection1=NewConnectionoConnection1.CursorLocation=CursorLocationEnum.adUseClientoConnection1.Open(m_sConnStr)Forps=0tolistFord=0to43DimsSQLAsString="SELECT*from[member]whereitem”&D&”like”&chaxun&”'实例化并打开Recordset对象m_oRecordset=NewRecordsetm_oRecordset.Open(sSQL,oConnection1,CursorTypeEnum.adOpenStatic,_LockTypeEnum.adLockBatchOptimistic,CommandTypeEnum.adCmdText)NextUpdateInfo()Next首字母查询实在添加新联系人信息的姓名时,同时获得首字母并填入member表的szm列中,由程序添加.4.2.6成员与成员组之间关系变更新添加成员时并不设置所关联的组,默认关联于根组下(默认组成员属于“我的通讯录”),成员关系的首次添加直接拖动成员在组目录树中,修改目录关系时只需在主显示框与关系组树框中拖拽即可,使联系人同时属于多个组时,需要按住ctrl拖拽.删除成员与组关系时在若联系人只属于一个组(不包括根节点),删除联系人时则删除整条信息,若成员同时属于多个组,则可以选择删除所在的某个组,若全选,则删除整条信息.图4-7成员关系变更流程图图4-8删除成员关系流程图关键代码如下:PrivateSubTreeView1_DragDrop(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.Forms.DragEventArgs)HandlesTreeView1.DragDropDimlsblistAslsblist.Itemlsblist=lsblist1.SelectedItem’获得焦点记录DimcountAsIntegerDimsSQLAsString="SELECTfu_no,son_gfrom[group_g]whereg_name='"&Trim(nodeb.Text)&"'"'实例化并打开Recordset对象DimsSQL1AsString="SELECTg_namefrom[group_g]wherefather_name='"&Trim(nodeb.Text)&"'"Dimfu_isnAsIntegerDimfu_younAsIntegerm_oRecordseta=NewRecordsetm_oRecordseta.Open(sSQL,oConnection1,CursorTypeEnum.adOpenStatic,_LockTypeEnum.adLockBatchOptimistic,CommandTypeEnum.adCmdText)fu_isn=Integer.Parse(Trim(m_oRecordseta.Fields.Item(0).Value().ToString))'获得该节点的节点号ByValColumnParentAsString,ByValColumnChildAsString,_ByRefparentBindSourceAsBindingSource,ByRefchildBindSourceAsBindingSource)Iflsblist=","ThenGoTosdfElse:Ifnode.TextLikelsbListThenGoTodgfElse:ifgetctrl=truethenGoTosdfElseGoTogfcEndIfEndIfsdf:cmd1.CommandText="update[member]setgroupids='lsblist.item34+"&node.Text&",'wherename='"&Trim(lsblist1.SelectedItem)&"'"cmd1.CommandType=CommandTypeEnum.adCmdTextcmd1.Execute()GoTodgfgfc:cmd1.CommandText="update[member]setgroupids=',+"&node.Text&",'wherename='"&Trim(lsblist1.SelectedItem)&"'"cmd1.CommandType=CommandTypeEnum.adCmdTextcmd1.Execute()GoTodgfEndIfDgf:EndSub4.2.7属性关系变更:软件提供的有些字段用不到,而有些字段没有提供出来为了使用起来更加方便提供了一种字段修改功能,让使用者更方便使用,且可以设计,在显示时字段所占用表格列的长度可以更改主显示区所显示的字段,使其显示有用字段.代码为操作控件代码,较简单,因此不陈述代码了.图4-9修改成员属性效果图图4-10设置成员属性显示宽度效果图4.2.8主显示区显示变更多页面显示区信息变更:软件提供的有些字段用不到却在主显示区显示着,而有些字段有用在主显示区没有显示出来(或者由于前面无关信息显示太长需要拖动游标),为了使主显示区显示有最有用的字段,可以设置住显示区属性来获得最佳的浏览效果.在多页面显示区调整控制室多页面显示区的显示转为用户最需要的显示字段,所以软件赋予用户多页面显示栏的修改权限,使显示随心,最大化的满足用户需求.图4-11设置主显示区属性显示效果图图4-12设置多页面显示区属性显示效果图4.2.9电子邮件群发设置:在计算机管理通讯录的基础上,要体现计算机管理的优势,就要在附加功能上做文章,群发邮件是我想要完善的一种功能.群发邮件应当设置好发件箱的信息,选择群发对象,邮件内容设定几个步骤.图4-13设置发件箱信息效果图图4-14设置群发邮件内容信息效果图本模块技术掌握尚未成熟,不知道是什么原因,发送成功后,接收方能够接受到邮件,但是得到的邮件内的信息为乱码文字,数字正常.4.2.10图片存储设置:经常有时候,名字看起来很熟,就是想不起来对方是哪位,如果存储了照片就可以避免这样的尴尬,给自己打闹一个直观的提醒.图像存储就是要把图片读取出一个长二进制文件,软件打开是对应的读取.主要代码如下:PublicFunctionBinaryToFile(ByRefTableRowColItemAsObject,ByValFileNameAsString)AsBooleanDimdataAsByte()=TableRowColItemDimmyfilestreamAsNewSystem.IO.FileStream(FileName,IO.FileMode.Create)myfilestream.Write(data,0,data.Length)myfilestream.Close()ReturnTrueEndFunctionPublicFunctionBinaryToImage(ByRefTableRowColItemAsObject,ByRefimageAsImage)AsBooleanDimdataAsByte()=TableRowColItemDimimgStreamAsNewSystem.IO.MemoryStream'(data)imgStream.Write(data,0,data.Length)image=System.Drawing.Image.FromStream(imgStream)imgStream.Close()imgStream.Dispose()ReturnTrueEndFunction'okPublicFunctionBinaryFromFile(ByValFileNameAsString,ByRefTableRowColItemAsObject)AsBooleanUsingmyfilestreamAsNewFileStream(FileName,FileMode.Open,FileAccess.Read)Dimdata()AsByteReDimdata(myfilestream.Length-1)myfilestream.Read(data,0,myfilestream.Length)myfilestream.Close()TableRowColItem=dataEndUsingReturnTrueEndFunctionPublicFunctionBinaryFromImage(ByRefImageAsImage,ByRefTableRowColItemAsObject)AsBooleanDimimgStreamAsNewMemoryStreamDimbAsNewBitmap(Image)b.Save(imgStream,System.Drawing.Imaging.ImageFormat.Jpeg)DimdataAsByte()=imgStream.GetBufferTableRowColItem=datadata=TableRowColItemimgStream.Close()imgStream.Dispose()ReturnTrueEndFunctionPublicFunctionBinaryFromImage(ByValImageAsImage,ByRefTableRowColItemAsObject,ByValimgFormatAsSystem.Drawing.Imaging.ImageFormat)AsBooleanDimimgStreamAsNewMemoryStreamDimdataAsByte()=imgStream.GetBufferTableRowColItem=datadata=TableRowColItemimgStream.Close()ReturnTrueEndFunction#EndRegion图4-15头像存储效果图4.2.11备份设置:备份功能使得手机上的通讯录,不会因为意外丢失,而另失主错失良机,用户可以在计算机上备份通讯录,本设计在软件上添加了自动备份功能,只要用户使用该软件,每三天会自动的备份数据库,也可以由手动备份.图4-16备份效果图4.2.12导入设置:从手机中获得的通讯信息,若想添加到本系统中就需要导入信息,手工导入无疑费时费力.因此系统的导入接口的设置也是一个重要的关口.导入数据时常常会遇到原通讯录中的字段名与系统中的字段名略有差异,这事就需要合理的设置导入导出端口.本系统支持两种格式的文件输入(xls,csv)选择导入文件F:\AddressList0.xls设置导入对应字段后成功导入图4-17导入数据效果图五测试软件测试阶段由测试人员设计出一系列测试方案,让系统暴露问题,当然暴露问题并不是软件测试的最终目的,发现问题是为了解决问题,测试阶段的根本目标是尽可能多地发现并排除软件中隐藏的错误从而得到一个高质量的软件系统.设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论