构建自己的个人信息资料库

构建自己的个人信息资料库

 

金旭亮

(ver 2.0 更新时间:2013-8-21)


作为一名软件开发者,比较命苦的一点就是——这行的技术更新实在太快了,想保住饭碗并且不被时代所淘汰,就得不断地学习。另一个让人郁闷的是,要开发出一个真正有点用的软件,用到的知识非常多,象我这种老码农,记忆力什么的无法与小年轻相比,经常会出现这种情况:


  •  XXX功能我以前实现过,但当年的程序代码我忘记放在哪个地方了,要在N个移动硬盘、几百G的硬盘上中查找N年前的代码,实在无异于大海捞针……
  • 我记得在网上看到过某个牛人解决过我现在遇到的这个问题,他还写了篇文章并有示例代码,问题是我到哪儿再把它翻出来?
  • 现在开发,离了Google、百度之类搜索引擎几乎没法编程,但为解决一个小技术问题,Google、百度会给你一堆链接,看得头晕……
  • 很多人都有囤积电子书的不良爱好,本人也属此类。有些电子书看过了,觉得其中某些内容不错,但如果不记录下来的话,以后要查就再也想不起是哪本了,只能对着硬盘上从各处地方搜刮来的数十G电子书干瞪眼……

知识必须积累,但同时需要整理,只有有条理的成体系的知识,才能带来真正的价值。

知识天生是一种“网状”结构,很类似于互联网上相互链接的网页,各知识点之间有着复杂的相互关联。然而,从高效掌握并应用知识的角度来看,将知识组织成为类似于计算机文件系统的多叉树比网状结构更有效,这是由人的认知特性决定的。

为了解决上述问题,我决定写一个小工具,帮助自己收集各种资料,同时,也能方便地重构这些资料,使其变得更有条理。

于是在2013年的五一假期时间,我一个人宅在家中,大约用了四天时间完成了PersonalInfoForWPF这个工具的基本框架开发,后来又陆陆续续地修正了不少BUG,完善了现有功能,同时新增了一些小功能,觉得应该比较稳定了,就决定发布它,包括直接可用的可执行程序及所有源码。

2013年8月,又将其升级为2.0版,新版程序的运行截图如下:

《构建自己的个人信息资料库》


如上图所示,这个小工具的使用相当直观,左边是一棵树,右边是一个文本编辑器。树代表资料的类别,文本框中则是资料本身,可以随时地进行编辑,其操作类似于Word。

一 初次运行

初次运行本程序时,会打开一个空白的数据库,需向其添加第一级节点(树为空,没有节点时,其他命令不起作用),其方法是点击工具栏上的第四个按钮,新建一个”第一层节点“,之后,所有命令都可以使用了。

选中一个节点之后,右击,可以从快捷菜单中选择各种命令:

《构建自己的个人信息资料库》

二、树节点操作

左边的树支持所有常见的节点操作(可以使用上部的工具栏按钮,或者是右击树节点从弹出菜单中选择各种命令):

  • 新建、删除、改名:这些就不用废话了。
  • 升级:将节点提升一级,成为其父节点的兄弟。
  • 降级:将节点层次降低一级,成为其兄弟的儿子(瞧这辈份乱得!)
  • 上移/下移:就是梁山群雄排座次,确定哪个是大当家,哪个座第二把交椅,……
  •  剪切/复制:子树搬家,就是将某个节点(包括其所有的子节点)移到另一个地方成为那个节点的新儿子。

 这棵树个人觉得比较出彩的地方是可以设置每个节点的颜色笔划粗细,这样可以突出显示特定的节点。

其实要提供更多的字体样式是完全可以的,但我想,如果一棵拥有上千个节点的树,它的节点文本用了十多种字体、显示二十多种颜色、并且有N种字体大小,我一定会疯掉的,所以只提供了这些功能,我觉得足够了。

另一个比较“得意”的地方是树节点的类型是可以无限扩充的,目前我只实现了三种:

  • 纯文本(OnlyText)型:不包容任何附加信息,所有内容直接显示在树节点上。
  • 详细信息(DetailText)型:就是上面那张图所展示的,节点关联着一个可以编辑的文档。
  • 文件夹(Folder)型:在详细信息(DetailText)型的基础之上,增加了保存文件的功能,如下图所示:

 《构建自己的个人信息资料库》

文件本身被我塞到了数据库中,所以,你可以放心大胆地把原文件删除。这小工具可以随时地将文件加入或移除或导出。

千万要注意:不要贪心,把几十兆的文件加到数据库,数据库本身一定会怨气冲天的。

还有一些新的节点类型,比如相册型、程序快捷方式型等,等我想清楚了再加入。

本软件的一个亮点是:

节点可以转换类型:比如纯文本–>详细信息–>文件夹,转换顺序反过来也可以。

需要注意的是,信息丰富的节点转换为另一种类型时,其多出的信息会被丢弃,比如,将文件夹型节点硬转换为纯文本型,则其所关联的文件和文档内容会被删除,你别瞪着我,我也没办法,至少目前版本没这功能,删掉的信息你是找不回来了!小心小心。

以后的新版本会创建一个回收站,并支持Undo功能。

三、 信息的搜索

信息多了(我的树中己经有上千个节点了),查找是个大问题,下图为搜索界面:

 《构建自己的个人信息资料库》

如上图所示,查找主要有两种方式:

(1)在树中找,可以在文本框中直接输入,下方网格中会即时动态地筛选,找到之后,就可以在树中直接定位并显示。

(2)另一个是到数据库中找,不搜索树节点记录,而是搜索树节点所关联的数据。

注意树节点路径以“/”分隔,因此,树节点文本中不能出现“/”,否则就乱套了,我写了代码“封掉”了这种情况。

这个窗体的搜索功能是利用WPF的数据绑定实现的,没写几行代码,实在大赞WPF的数据绑定功能!


另外补充说明一个小技巧:

在任意的文档或网页中复制一段文字,新建一个树节点,会自动地把复制的文字作为新节点的文本,这是我出于“偷懒”目的而添加的。


四、资料的分散存储与转移

还有一个问题,随着时间的积累,收集的资料越来越多,数据库会越来越大,我的己经达到上G的级别,为了减肥,应该按大类采用多个数据库进行保存。

1 新建资料库

默认情况下,本程序文件夹有一个名为infocenter.sdf的数据库样板文件(不要删除它哟!),当从“系统功能”菜单中选择“创建新资料库”时,会自动把这一样板数据库复制一份,从而使用它来存储信息。

 《构建自己的个人信息资料库》

2 打开多个资料库

在使用过程中可以随时打开数据库(使用“系统功能”菜单中的“打开资料库”命令)

 《构建自己的个人信息资料库》

上图是我当前的资料库,从文件名就可以看出各资料库中所保存的是哪些内容。

3 关闭资料库

要关闭一个资料库,直接点击选项卡上的关闭按钮。

当程序退出时,会自动保存当前打开的所有资料库名字以及最后访问节点的路径。

4 在各资料库之间移动节点

2.0版程序支持直接在资料库间移动子树,其方法是:

在源资料库中选择要移动的子树,右击,从弹出菜单中选择“剪切节点“,然后,打开目标资料库,在想放置到的目标节点上”粘贴节点即可。“

5 在不同的计算机上打开资料库

 怎样把资料从一台电脑复制到另一台上?简单,把sdf文件用U盘拷走,在新机器上用本软件打开就行了。

 等到以后联通电信等老大发善心,网速上去了,费用降下来了,就可以直接使用网盘保存数据,到那时就不必用U盘拷来拷去了。

五、安装与源码

1 这个软件怎么安装?

本软件使用C#开发,基于.NET 4.0,数据库是SQL Server Compact 4.0,如果你本身是程序员,装有Visual Studio 2012,则所有组件均己具备,直接运行就行了。

其他情况,按以下顺序进行安装:

(1)如果没装.NET 4.0,则点击以下链接访问微软网站下载并安装之

下载.NET Framework 4.0(http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=17718)

(2)如果没装SQL Server Compact 4.0,则点击以下链接访问微软网站下载并安装之

下载Microsoft SQL Server Compact 4.0 SP1(http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=30709)

(3)点此链接到新浪微盘下载可运行程序之压缩包文件

http://vdisk.weibo.com/s/zOBczFj6UHd/1377086456

展开之后,直接双击“PersonalInfoForWPF.exe”即可。


2 获取源码

我把这个项目发布到了GitHub,其URL如下。

https://github.com/JinXuLiang/PersonalInfoForWPF.git

其wiki中简要介绍了成功编译的方法。

由于我主要使用TFS来完成本软件的版本管理,因此,放在GitHub上的不会是最新版本。

这世上没有没有Bug的软件。发现BUG的,请告之我BUG的重现方法,我更正之后再Push到GitHub上。

这个小软件可以改进之处甚多,比如性能我就不太满意,还有很多可以加的功能,以后有时间再慢慢添加与优化吧,毕竟“吾生也有涯,而知也无涯,……”,对于我来说,软件够用就行了。

对这个小工具的开发与完善感兴趣的朋友,尽可以动手去改,为方便起见,我会在下一篇文章中介绍这个小工具的架构设计与实现技术细节。

 

 

    原文作者:bitfan
    原文地址: https://blog.csdn.net/bitfan/article/details/9250761
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞