一款个人信息管理工具PersonalInfo
PersonalInfo是我写的一个小小的个人信息管理工具,我一直使用它来管理我收集的各种信息和资料,一有时间就改一下,个人感觉这个小软件还是很方便灵活的。
这个软件充分挖掘了.NET Framework的潜力,总代码量上万行,涉及到.NET主要的技术领域。发布的程序包中包括有软件源码、本软件说明文档和另一篇详细介绍此软件的文档(即本人拙著《编程的奥秘》一书的最后一章)。
需要指出的是,在写作《编程的奥秘》一书时,此软件还并不完善,存在着一些重大BUG,现在发布的是稳定的版本,我用它好久了,发现的BUG都已更正。
现将程序源码及可执行文件一并发布,与诸位软件开发爱好者相互交流。
软件界面如下:
这个工具的思想很简单:
以树型结构分类管理信息。信息附加于树节点之上,并跟随着树节点的移动而移动。
目前支持五种类型的树节点:
(1)纯文本型节点:只有树节点文本,不包含其他的信息。
(2)详细信息型节点:关联有一个文档
(3)文件型节点:如上图所示,除了关联有一个文档之外,还同时附加有一个文件。
(4)文件夹型节点:类似于文件型节点,只不过这一节点对应于多个文件。
(5)图片型节点:类似于文件夹型节点,只不过这一节点对应的多个文件都是图片文件。
上述五种类型的节点可以相互转换,其节点所关联的信息会被保留(不过某些操作是不可逆的)。
基本操作方法:
(1)在树节点上右击,其弹出菜单中包括树的所有功能。
(2)在右侧文本框中右击,其弹出菜单中包括文档操作的所有功能。
编译、运行与修改:
运行环境为Windows XP Sp2/Sp3、Windows Server 2003、Vista,安装有 .NET 3.5
本程序使用VB.NET开发。请使用Visual Studio 2008打开PersonalInfo文件夹下的PersonalInfo.sln即可编译此程序。
源代码中有详细的注释。
树型数据采用XML格式存储,文本及文件流数据存放于Access数据库中。
本软件特点是:
(1)支持全功能的树操作:节点的升级、降级、上移和下移、改名等。特别是可以剪切一个节点(包括其所有子树),再在新位置粘贴,从而快速移动子树。
(2)文件本身以二进制方式被保存到数据库中,因此,不用担心文件的丢失。同时,可以方便对文件进行增加、删除和导出操作。
(3)提供方便的查找功能,参见下图:
既可以模糊查找数据库中的记录,也可以直接查找树中的文本(直接在上图“在当前网格记录中找”文本框中输入文字,动态筛选出数据)。
找到数据后,单击“在树中定位”,即可找到此信息所对应的树节点,并在主窗口中显示。
(4)可以递归导出某个树节点(包括其子树)的所有文本,可以在“选项”窗口中设置将数据另存为文件还是直接复制到剪贴板。
(5)右侧的文本框其实是一个小型的“Word”文档编辑器,支持各种常规的编辑操作,以及打印功能(如下图)。
(6)在“系统功能”菜单中选择“选项”命令,可以设定一些参数(比如设定背景图片等):
特别地,如果将本软件置于调试状态,则用户所做的所有操作均会被记录在Trace.txt文件中。这是我为了方便调试而加入的,可以关掉这个功能。
在调试状态下,所有信息全部从数据库中直接读取,速度慢些,同时对一些危险操作会给出提示。
关闭调试状态后,系统自动缓存数据,提升了响应速度,但会消耗更多的内存。
(7)在“系统功能”菜单可以备份数据,其实就是将ACCESS数据库和树结构文件(MainTree.xml)以及系统配置参数对象PersonalInfo.cfg复制到指定的BackUp文件夹中。可以方便地恢复数据。
(8)图片型节点并不实用(现实中我几乎不用它),在图片的显示上还存在一些小问题(比如图片的拉伸与还原),而且还有些必要的图像处理功能没加入(比如从剪贴板复制和粘贴), 是个鸡肋,我不想花时间去修改它了,暂且留着吧。
(9)几个类库项目中都有许多类没有用在本程序中,这些类是我陆陆续续写来用于其他软件中的,为了便于管理我就把它们都放在同一个类库了,以便于复用。
如果有朋友想进一步优化,可以把这些无关的类删除。
另外,代码中有一些是用于调试的,出于偷懒与随意,我没有采用加条件编译控制的方式,这部分代码其实也是可以删除的。
关于本软件的开发历程与后续打算:
本软件最初写于2004年,后来慢慢地完善,修改了无数个BUG,最近一次修改是去年12月。目前发布的是一个较稳定的版本,可以从“系统功能”菜单中选择“关于”命令查看开发记录。
还有许多功能是可以加入的,但目前的功能我觉得己经够用了,除了修改发现的一些BUG,已不再打算添加新功能。
今后的开发计划是:用WPF+LINQ彻底重写此软件,提供更多更强的实用功能(如采用插件架构,提供密码保护等)。
关于本软件的声明:
本软件由我个人独立开发,诸位朋友可以自由地使用这个软件及其源码,但请不要用于商业目的。对于此软件的BUG,以及我正打算开发的WPF版本,朋友们有何建议请发邮件到我的个人邮箱:
JinXuLiang@bit.edu.cn
或者访问我个人博客:
http://blog.csdn.net/bitfan
===============
请访问CSDN下载频道下载此软件源码及文档
下载PersonalInfo(http://download.csdn.net/source/980550)
***************************************************************************
昨天刚发布的小工具,今天就收到了一位软件工程师吴先生的邮件,指出了软件中的一些不足,我觉得很好,就把他的邮件附在下面了:
============================
你好,JinXuLiang@bit.edu.cn,在PersonalInfo程序中看到您的Email地址,就想起来跟您发这封邮件交流一下作为专业软件公司普通工程师对您这个软件的看法。纯属个人技术与爱好交流。
1. 整体软件风格不专业,很有学校的风格,或者说这个软件的第一感觉,是像学生做出来的作业,后者一个毕业设计,但是跟正式的软件(无论是商用的还是开源的)相比,还有一定的差距。主要表现在:
1) 背景图片。专业的软件立志于占用最少的资源,像这种背景图片在桌面系统并不常见,在Web系统比较常见。
2) 即使包含背景图片,也要允许用户关闭掉这个功能。而不是仅仅的可以更换图片。
3)文字的引用问题:在工具栏的第4个按钮下面,有一些“儿子”和“兄弟”类似的文字不太合适。一般用子节点,或者邻节点,同级节点比较合适。
4)按钮风格不统一。我指的是Button Style,还有Button的大小也不统一,Width可以根据文字个数来定,那么Height应该是统一的。
5)“关于”对话框里面的内容可编辑 —— Bug。
6)“放大镜”只可放大,没看见缩小。
7)“放大镜”,“粗体”。。。等为什么不用一个Toolbar呢?
8) “插入行号”对话框的窗体大小可改变。——Bug。并且“保留文本原有格式(”只能看到一个括号。参看图片。——Bug。
另外,这个窗口不是模态的。——是否Bug?按普通的Esc键不能退出当前窗口。
简单的看了一下,给您发了这些问题,如果您想把这个当作一个Open的软件来做,那么我说的细节也许对您有参考意义。
希望能够看到更好的软件。多谢。
====================
吴先生指出的问题有不少是存在的。
我写这个软件原先纯粹是写来自己用的,所以就比较偷懒了,自己用着怎么方便就怎么来,有关用户界面的显示,基本上没花太多心思,只将重点放在提供足够的功能上了。实用是第一位的,不管界面上如何丑陋,我觉得最要命的是别一再地出现“数据丢失”这类重大的BUG,因此许多时间在于与这些BUG进行搏斗。这个软件内部是相当复杂的,因此让软件能稳定运行、找到引发BUG的原因很痛苦,现在发布的就是这样的一个版本,我在较长的使用过程中没有再发现丢失数据的情况。
我发布这个软件其实没有什么想法,只是觉得可能对某些朋友有用,就放到CSDN的下载频道上了。大家随便用用吧。有时间有兴趣的朋友可以自行完善。
基于Windows Form版本的PersonalInfo我不打算继续完善了,因为我觉得够用了,除非需要更正引发“数据丢失”这样的严重BUG。
我现在想开发本软件的WPF版本,我会在新版本中更正吴先生指出的这些缺陷。
WFP+LINQ是让人震撼的技术,新版本会拥有比现在版本更强的功能,如通过外挂插件动态扩充节点类型、数据加密、二进制文件的压缩存储、可选择数据保存在ACCESS还是SQLSERVER、基于XAML的全新用户界面、用LINQ重写中间层以大幅度精简代码等等。
我个人比较喜欢学了一点技术就用它来做点有趣的东西,比如有时间时会用WPF实现分形理论中的一些算法,以得到漂亮的令人爽心悦目的计算机图案。
软件技术用来“玩”而非谋生时,就很有趣了。 :)
分享到:
相关推荐
C#个人信息管理系统是一款用于管理个人数据的应用程序,它旨在提供一个用户友好的界面,方便用户存储、编辑和检索各种个人信息。通过这样的系统,用户可以高效地管理联系人信息、日程安排、笔记等,提高日常生活和...
《个人信息管理器》是一款基于C#编程语言开发的应用程序,旨在帮助用户管理和...对于初学者来说,这是一个很好的起点,而对于经验丰富的开发者来说,它可以作为一个参考,展示如何高效地组织和实现个人信息管理软件。
Java运行于手机的一个联系人管理小程序,RMS记录读取和修改程序, Display display = null; // 设备的显示器 List list = null; TextField nameField; // 姓名文本域 TextField honeField; //电话号码...
6. `用户消费行为特征.xmind`:这可能是一个关于用户消费行为研究的思维导图,涵盖了用户购买习惯、偏好、触发购买的因素等方面,对市场策略制定和产品优化具有指导意义。 综合以上文件内容,我们可以学习到以下...
在C#编程环境中,开发一个实现个人信息登记并保存功能的程序涉及到多个关键知识点。下面将对这些关键点进行详细阐述。 1. **C#语言基础**:C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows平台上的...
在这个案例中,我们关注的是一个名为PersonalInfo的软件,它是一个个人信息管理工具,其设计和开发过程揭示了面向对象理论如何应用于实际的.NET 2.0平台,特别是使用VB.NET语言。 首先,系统分析和设计阶段是软件...
在这个名为“学生个人信息管理系统”的项目中,我们可以看到如何运用OOP原则来构建一个实用的系统。下面我们将深入探讨这个系统的相关知识点。 1. 类与对象:在Java中,类是对象的蓝图,定义了对象的属性和行为。在...
接着,第二个任务是创建一个猜数字的游戏,让用户猜测1到100之间的一个随机数。 对于第一个任务,我们可以从以下几个知识点入手: 1. **键盘输入**:Java使用`java.util.Scanner`类获取用户的输入。在示例代码中,...
在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的映射过程自动化。本主题将深入探讨Hibernate中的一对一关系映射,这是一种关联两个实体之间一对...
React.js 是一个由Facebook开发并维护的开源JavaScript库,用于构建用户界面,特别是单页应用程序(SPA)。这个项目“这是一个用react写的简历”利用React.js的强大功能,将个人简历与技术展示结合在一起,创建了一...
Cognos是一个强大的商业智能平台,它允许用户创建、管理和分享报告,而获取当前用户名可以帮助定制报告或者实现特定的权限控制。下面我们将详细讲解如何在Cognos中获取当前用户名以及相关的属性。 首先,我们需要...
例如,如果我们有两个实体类,一个是`Employee`,另一个是`PersonalInfo`,我们可能会期望每个员工只有一个个人信息记录。我们可以通过以下方式在Java代码中表示这种关系: ```java @Entity public class Employee ...
- 配置Web应用:为了创建名为`zjut`的Web应用,你需要在Tomcat的`webapps`目录下创建一个新的目录`zjut`。然后,将`Tomcat主目录/webapps/ROOT/WEB-INF`目录复制到`zjut`目录下。这样,`zjut`应用就会拥有一个基本...
例如,如果我们有两个类`User`和`PersonalInfo`,且它们之间是一对一主键关联,`User`类的`id`也是`PersonalInfo`类的外键,那么`User.hbm.xml`可能会这样写: ```xml <one-to-one name="personalInfo" ...
- **MySQL**:是一个关系型数据库管理系统,因其性能高、成本低、可靠性好而受到广泛的应用。 在网站开发中,ASP 与 MySQL 的结合可以实现非常强大的功能,例如用户认证系统、在线购物车等。 #### 二、登录系统的...
例如,创建一个名为`PersonalInfo`的表,包含`Region`、`UserType`、`Income`等字段: ```sql CREATE TABLE PersonalInfo ( ID INT PRIMARY KEY, Region NVARCHAR(50), UserType NVARCHAR(50), Income DECIMAL...
途马旅游项目是一个综合性的在线旅游服务平台,采用现代Web开发技术构建,旨在提供便捷的旅游线路预定、用户管理以及订单处理等功能。项目的核心技术栈包括前端的Vue.js框架(使用Vue-Cli工具初始化),后端的Node....
创建一个类`PersonalInfo`。 2. 在类中定义字符串变量`name`表示姓名,整型变量`age`表示年龄,浮点型变量`height`和`weight`分别表示身高和体重。 3. 使用构造函数或setter方法设置这些变量的值。 4. 使用`...
在软件开发过程中,UML(统一建模语言)是一种强大的工具,用于可视化、构建和文档化系统的各种方面。本文将深入探讨"登录图"在UML类图中的应用,以及如何通过类图来描绘和理解复杂的系统结构。 首先,UML类图是UML...