波斯马BOSSMA Information Technology

多级子项目(任务)计算项目进度的方法

发布时间:2010年5月15日 / 分类:DOTNET, WinForm / 6,630 次浏览 / 评论

现实中遇到这样一个问题:有一个项目,下边有多级任务,我们想获取项目和每一级任务的进度。很多人第一反应就是使用递归,这里先不着急探讨好不好实现。我们先来构建一个例子:

一个项目,有很多子项目(或任务),每个子项目下的子项目数和级次都是不固定的,实际的操作中,我们只需要手工录入最底层的子项目(也就是无下级子项目的项目)的进度,然后能够自动计算各个上级项目的进度,最后获取整体项目的进度。如下图所示树结构:

1、项目实体类

我们可以把这每一个项目抽出来,用一个类来表示:

一个项目包含的属性包括:项目ID、项目名称、项目权重、所属项目ID、项目进度、项目等级。

2、项目数据结构

将上边图中的数据初始化到一个List中:

3、设置无下级项目的进度值

检查是否有下级子项目:

遍历每个项目,如果没有下级项目,则设置一个百分值。

递归添加到Treeview,显示出来看看:

4、计算项目进度

很多人想到的都是递归,这里先用递归试试:

 看起来不错,代码挺简洁。

这里再提供一种方法:按照级次计算,从最低的级次开始计算:

首先实现一个类,用来项目级次排序:

下边是用来计算进度的方法:

使用两种方法都可以准确的计算进度,如图计算结果:

使用递归或者根据级次循环计算,可能有时候选择会不一样。

本文仅提供参考,欢迎就此问题与我交流。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《多级子项目(任务)计算项目进度的方法

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论