您的位置:首页 > 理论基础 > 数据结构算法

TextFile Filter 基本功能完成 介绍及感想

2007-06-11 13:50 375 查看
2007年初,受朋友所托做一个大文本文件处理程序,专门给公司的客服用来整理数据资料用。考虑到自己开发应用程序的功底不太扎实,正好利用这个机会好好熟悉一下,SDK开发方式以及MFC的界面开发方式,所以就开始慢慢一点点做起来。期间断断续续,直到今天总算是有成型的东西出来了。

原先的想法是,文本数据的处理算法用ANSI C来实现,保证将来这部分算法程序移植到LINUX平台上也可以使用,索引就用C写了处理库,实际上就是一个静态库文件,封装了文本的拆分行列、生成索引、简单的内存控制等函数方法,这些方法都是采用标准的C函数库来实现的,可以做到向LINUX平台移植。界面采用MFC来实现。整个开发采用MS C++ 与 ANSI C 交叉编译,开发工具是 VC6与DEV-C++。

这个东东的实现主要是将文本文件的每一行当作一条记录按照一定的数据结构映射进内存,然后根据选择的操作方式,生成内存索引,来进行比对、剔除、合并等操作。

期间主要的参考资料是MSDN,呵呵,真是幸亏了MSDN啊,要不理不出个头绪来。

好了,开发过程不讲了,说说这个东东的功能吧。

这个东东是给那些每天要跟各种文本数据打交道,但是没啥数据库知识基础的GG DD JJ MM 们准备的。比如你想比较两个文件中内容有啥不同,或者找出一个EXCEL sheet中两列数据有无重复记录等等。这个东东就可以帮你做到。

目前功能分为单个文件处理与两个文件处理:

单个文件处理:

。单文件中两列数据的比较,包括比较重复,剔除重复,合并列为一列并剔除重复。
。把文件中的一列进行剔除重复操作。
。指定文件中的一列为主键,根据主键进行行的合并操作。

两个文件处理:
。从两个文件中各选一行进行数据比较,功能跟单文件的数据比较功能类似,只不过这是在两个文件中进行操作。
。从没个文件中各自指定一列为主键,根据主键对两个文件中有相同主键键值的行进行合并。

 

终于算是告一段落,以前从没写过这么大的应用project,算是一个不错的开始。应用程序的作用现阶段应该还不能全部为WEB应用所代替,还有非常大的生存空间。C也绝对不会被淘汰,内存处理等底层操作的性能与速度是其他语言不能望其项背的。

 

 

 

 

最后,这个东东挂在这里了 :

http://jackyyvan.topcities.com

稍后将会做一个帮助挂上。
有谁试用了,有啥意见想发给我,可以发到 jackyyvan@gmail.com

 

目前测试大概能处理1000,000行的数据,但是单行不能超过512个ASCII字符,这个以后将进行调整成自适应大小的结构。还有进行记录比较的时候,今后将调整成多线程方式,提高处理效率。索引方式采用的是自己的哈希算法来进行处理的,hash code 的碰撞处理采用的动态扩展数组方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息