帐前卒专栏

code, software architect, articles and novels.
代码,软件架构,博客和小说

大家都很辛苦。

第一天的分工到最后一天的补文档。大家都在努力的工作。第一个星期我们是最有成效,有了可以运行的东西,并且界面做的超漂亮。但是第二个星期,因为进度有些延误,所以
有些功能不便展示。再加上亚红同学的泪水,于是我们漂亮的输掉了第二周。第三周fix了很多bug。当看到自己的东西如果Access小型数据库一样可以实现最基本的
功能的时候,我非常的开心。整个过程其实我都记录在我的blog上(blog.csdn.net/cctt_1)。技术上的东西没有记录太多,主要是心情和工作进度。
工程实训学到很多知识。至少我现在的调试水平又提升了一层。

有时候发现自己多承担一些,就能多学到一些。事实也是如此。虽然以后在工作中并不一定也是这样。其他.net组,j2ee组随意拖着控件就把事情搞定了,我们组却要一
行行的编写着纯c/c++的核心代码。

回顾自己做的东西,发现竟然数据库核心是可以移植的。而且还生成了一个免安装的版本。Very cool!

感觉应该走一下“旁门左道”的路,而不要一味走经典的软件工程的道路。这样做很没有创新。感觉极限编程不错。推荐以后的工程训练也走走这条路。而且我们组的确是在这条
路上受益的一个组。因为是结对编程编码的数据库核心,所以架构方面的问题已开始就得以解决。这个解决方案也没有遇到太大的技术问题。

我感觉做项目要有自己的特色。我们组做了很多的很有特色的东西。比如郭军的自动代码行统计,林福勇的logo。很不错。其他组还在关心功能能否实现的时候,我们就把眼
光放在如何体现团队的特点。

文档没有必要全部统一。很死板。一个组有自己的模板就可以了。扼杀创造力??

要统一模板最好及早统一,不要每次写完文档后再推出新的模板,这让别人认为做项目就是些文档。文档很重要。但是再重要也不会重要的超过编码。这是肯定的。

组里有很多人可能是没有能力干一些编码的事情。并不是他不想做,而是编码的水平不到。所以不要抱怨这人为什么不编码,或者为什么编的代码如此的差。其实他也不想……

今天是实训的倒数第二天,明天晚上答辩。功能大都完成了。但是bug一堆,不准备再改动了。 所以称为稳定版。稳定的出bug的版本。。。。。。

MiniDB数据库发布中…

昨天搞定了HashTable,红黑树序列化 ,数据文件终于可以保存了。但是调试的时候如果不是正常关闭,还是会有多多少少的问题。

界面那里要大改一些。因为他传来的值就是界面上得到的值,那么我数据底层就没有办法删除空行。过去使用的是delete * 现在没有办法在那样做了,因为表关联的时
候,不能删除关联的行,但是却插入了更改后的行。而更改前的行还留在那里。最后又回归到第一个版本,点击插入才能插入,点击删除才能删除。

关联。。。。痛苦。。。。。调试中。。。。。

今天上午不断的修补bug,终于可以跑起来了。下午又花了半个小时改了下ppt。本想着这次我们又能得一个西瓜,没想到我们的成果竟然没有胜过孙亚红小同学的泪水。。
不过同情一下吧,毕竟人家哭了。。。

下次一定要拿个西瓜。。。。

昨天发现MatrixList的bug…痛苦的MatrixList…昨天郭军把红黑树和HashTable做了序列化。我借用了下MySq
l中的Hash函数。然后进行痛苦的调试…bug,bug,不断的bug

今天又重构了多个方法。包括一个Select方法,返回的只是Row的指针,并没有重新克隆一个新的Row返回。这个方法更加通用,其他的select方法只是在此基
础上克隆了新的Row。

修改了一下Insert()和delete()的对外接口,现在发现更新并没有太多的用处。。暂时还没有测试和更改更新数据这项功能。

将PrimaryKey和ForeignKey抽取出来做了各种各样的小方法。现在CDBTable中的方法已经达到五十多个。但是实现的有用的方法大约只是四十多个
。有些只是做的接口,还没有实现。

明天将把HashTable和BinTree序列化。看着别的组使用的是fstream…我组还是使用c语言。但想想,还是不改了继续做下去吧。

明天还要插入父表和子表。。。。

今天上午上了文件检索课。下午把主键判断做了。发现多个主键真的难做。后来把多个主键合并为一个,然后再插入索引。插入数据的时候先要去检索本表的主键值是否重复,然
后再通过TableManager来传入本表的父表,然后再通过父表的检查主键是否重复来判断是否外键值一致。

福勇要做红黑树。不过我们已经把二叉排序树实现了,下面他要做的工作是将节点加入父节点和颜色。然后再改掉BinSearchTree的插入节点和删除节点的实现函数
就差不多了。

昨天完成HashTable和BinSearchTree的部分功能…

今天想到索引永久化保存。这个就意味这索引中存放的不能是地址的值。这样再还原就会出现问题。

又想是否可以存相对位置,但是这样又要改AList类中的remove方法。否则删除一行,本行以下的所有的行的相对位置都变化了。后来准备做一个亚元来代替删除行记
录。

想象HashTable对于等值比较速度非常快,但是对于大于小于等操作,HashTable基本就无用了。那就可以直接用红黑树来代替。这样做也做到了底层数据结构
和用户接口的无关性。用户不必自己选择使用哪种数据结构来建立索引。

今天碰到一个问题:vs2005调试的时候监控的变量的值总是会变的莫名其妙。后来发现是使用了release而不是debug.晕…

又碰到一个c++的问题:

void DividWhereSet(char * pStrWhereSet, char * pStrColumnName, char * oper,
char * pValue);我在函数体内改动了pStrColumnName和pValue的值。但是编译器就有问题了。后来改成:

void DividWhereSet(char * pStrWhereSet, char ** pStrColumnName, char * oper,
char ** pValue);原因是改变了指针的地址,那么还是用指针的指针来改变,否则又犯了传值的毛病…

明天又要上文件检索课。连续上三天然后考试。

前天一天都在写详细设计文档。文档感觉很重要,但是又不是非常的重要。

0%