使用十字链表和多重集合进行资源配置子系统的制作方法

文档序号:6611786阅读:312来源:国知局
专利名称:使用十字链表和多重集合进行资源配置子系统的制作方法
技术领域
本发明涉及项目管理软件中的资源配置。
背景技术
项目管理中的资源平衡问题是一个疑难问题,先后出现过图解法和公式判断法,无 论使用图解法还是公式判断法都会出现如下的问题如果使用的网络比较简单,同时需 要进行平衡的资源数量很少,那么图解法和公式判断法都是可以使用的。因为即使资源 日历已确定,但修改起来比较方便。如果使用的网络图比较复杂,并且需要进行平衡的 资源数量非常多,那么图解法和公式判断法就不再适合,因为这种事后调平衡的方法涉 及的资源太多,要修改的资源日历也太多,因而资源的供需矛盾也就增多。为了克服目 前项目管理软件在资源配置方面的不足,我们提出了资源配置的新思路,并使用十'f链
表和多重集合把这一新思路变为现实。

发明内容
为了克服目前项目管理软件在资源配置方面的局限性,本发明提供的资源配置新方法能 有效地避免资源发生冲突的情况,做到配置资源有条不紊,对提高资源的利用率大有帮助。
本发明解决其技术问题所采用的技术方案是选用十字链表作为网络图的数据结构,选 用结构、单链表和多重集合作为资源配置的数据结构。资源配置应该从资源本身入手,不 要等到事后平衡,要在配置资源时就朝着资源平衡的目标努力,只有这样才能从根本上 解决资源平衡的问题。无论是人力资源,还是稀缺设备资源,我们都给他们配上日历, 只有当每个资源日历尽量均匀使用时,资源平衡问题才能得到彻底解决。正确的方法是 第一,确保资源库和资源配置库的透明操作;第二,确保提供当时的网络图参数;第三, 确保对资源库和资源配置库灵活的査询方法。这样做不仅使资源配置有了明确的目标, 而且又可避免资源配置与资源短缺的矛盾。 一、资源配置的数据结构
数据结构在算法设计中占有很重要的位置,如果数据结构设计得不合理,会使以后 的软件修改遇到障碍。 1.日历数据结构 typedef struct calendar { int years ;〃年 int months;//月
Set<int, 1, 31> days;〃闩 multiset〈int〉 hours[32];〃小时 } calendar;
该日历数据结构能满足人力资源对日历数据结构的要求,在日历数据结构中使用了 集和多重集,正是由于集和多重集的使用,才使得资源日历的输入、修改和删除得以方 便地操作。
2. 人力资源库的数据结构 typedef struct rlzyk {
AnsiString name, tel, sex, age, d印,kind, level: //姓名,电话,性另U ,
出生年月,工作单位,工种,技术等级
float pay, fee,7/工时费,加班费
list〈calendar> zycalendar; //资源日历
} rlzyk;
该人力资源库的数据结构中的工时费和加班费字段的设置为精确的成本预算提供了 可能。
3. 人力资源配置库的数据结构
typedef struct syr丄zy {
AnsiString rmme, dep, sex, eige, tel, kind,丄evcl, sygx; //姓名,工作单
位,性别,出生年份,电话,工种,技术等级,使用工序
float pay, fee; 〃工时费,加班费
int jobtop, jobbottom;〃工作上限,工作下限
list<calendar> sycalendar; 〃使用资源日历 } syrlzy;
该人力资源配置库的数据结构中的丄作上限和工作下限字段的设置为精确的成本预 算提供了可能。
4. 设备材料配置库的数据结构 typedef struct sbcl {
AnsiString n歷e, code, type, unit, sygx;〃名称,代码,型号,单位,
使用工序
int price, number;〃单价,数量
} sbcl;
5. 资源数据结构 typedef struct resource {
list〈rlzyk〉 1"1271^113^//人力资源库 list〈syrlzy〉 syrlzylist; 〃人力资源配置库
list〈sbcl〉 sclist;//设备材料配置库 rssourc6;
6.网络图的十字链表数据结构 typedef struct ArcBox { int period., //period代表工期
struct ArcBox 本hlink,氺tlink;
AnsiString name, tailvexname, headvexname, es, Is;//es 代表 工序的最早开始时间,ls代表工序的最迟开始时间,tailvexn咖e代表 该工序的尾节点的名称,headvexname代表该工序的头节点的名称,name 代表该工序的名称 } ArcBox;//工序结点
typedef struct VexNode {
AnsiString name;// name代表该节点的名称
float a,b;/Ai代表该节点的最早开始时间,b代表该节点的最迟结束时间 POINT pt;〃pt代表网络图中节点的坐标 ArcBox *firstin,氺firstout; } VexNode;〃节点结点
typedef struct OLXr邻h {
listXVexNode〉 xlist; 〃表头列表
int vexnum,arcnum;〃网络图中当前的节点数和工序数
AnsiStringpjstart;〃 CPM网络图中的源点开始时间 }0LGraph;〃CPM网络图的十字链表数据类型
二、资源配置的算法 人力资源库的输入模块的算法如下所示 input调入或创建人力资源库 begin
while (终止条件不满足)do begin
if输入类型="基本信息" begin
输入姓名、性别、出生年月和工作单位 输入工种和技术等级
输入电话
输入工时费和加班费
end
end
if输入类型="日历信息"
if日历信息类型="年月" 选择年份和月份
end
if日历信息类型="日期" 双击"某一日期"
end
if日历信息类型="时间"
在时间框输入相应的时间
end
end
end
关闭人力资源库
end
人力资源库的查询、修改和删除模块的算法如下所示
i叩ut调入人力资源库 begin
while (终止条件不满足)do begin
〃査询
if查询类型="基本信息"
while (满足输入查询条件)do begin
点击"上一同志"或"下一同志"按钮
end
end
if査询类型="日历信息"
if日历信息类型="年月"
点击"上一年月"或"下一年月"按钮
end
if日历信息类型="日期" 6
单击"某一日期"
end
end
〃修改,要想修改必须先査询到 if修改类型="基本信息"
while (满足输入査询条件)do
begin
点击"上一同志"或"下一同志"按钮 对目标进行修改并保存
end
end
if修改类型二 "日历信息" begin
if日历信息类型="年月" 单击"增加年月"按钮
end
if日历信息类型="日期" 双击"某一日期"
end
if日历信息类型="时间" 修改时间并保存
end
end
end
〃删除,要想删除必须先查询到 if删除类型="基本信息"
点击"删除资源"按钮
end
if删除类型二 "日历信息" begin
if日历信息类型="年月"
单击"删除年月"按钮
end
if日历信息类型- "日期"
双击"某一日期"
end
end
end
end
关闭人力资源库
end
人力资源配置库的输入模块的算法如下所示
input调入人力资源库
调入或创建人力资源配置库 调入网络图
begin
while (终止条件不满足)do begin
if输入类型="基本信息" begin
输入姓名、性别、出生年月和工作单位
输入工种和技术等级
输入电话
选择使用工序
输入工时费和加班费
选择工作上限和工作下限
end
end
if输入类型="日历信息"
if曰历信息类型="年月" 选择年份和月份
end
if日历信息类型="日期" 双击"某一日期"
end
if日历信息类型="时间"
在时间框输入相应的时间
end
end
end
关闭人力资源库
关闭人力资源配置库
关闭网络图
end
人力资源配置库的查询、修改和删除模块的算法如下所示-input调入人力资源库
调入人力资源配置库
调入网络图
begin
while (终止条件不满足)do begin
〃查询
if查询类型="基本信息"
while (满足输入査询条件)do begin
点击"上一同志"或"下一同志"按钮
end
end
if查询类型="有关工序信息" 点击"显示工序有关信息"
end
if查询类型="日历信息"
if日历信息类型="年月"
点击"上一年月"或"下一年月"按钮
end
if日历信息类型="日期" 单击"某一日期"
end
end
〃修改,要想修改必须先查询到 if修改类型="基本信息"
while(满足输入査询条件)do
begin
点击"上一同志"或"下一同志"按钮 9
对目标进行修改并保存
end
end
if修改类型="日历信息" begin
if日历信息类型="年月"
单击"增加年月"按钮
end
if日历信息类型="日期" 双击"某一日期"
end
if日历信息类型="时间" 修改时间并保存
end
end
end
〃删除,要想删除必须先查询到 if删除类型="基本信息" 点击"删除资源"按钮
end
if删除类型="日历信息" begin
if日历信息类型="年月"
单击"删除年月"按钮
end
if曰历信息类型="日期" 双击"某一日期"
end
end
end
end
关闭人力资源库
关闭人力资源配置库
关闭网络图 end
本发明的有益效果是,能有效地避免资源发生冲突的情况,做到配置资源有条不紊,对 提高资源的利用率大有帮助。


图l是使用十字链表和多重集合进行资源配置子系统流稃图。
具体实施例方式
使用十字链表和多重集合进行资源配置子系统是在Windows XP操作系统下使用 C++Builder 6.0开发设计的。它的系统功能结构如说明书附图中的图1所示,在"对网 络图进行资源配置"模块中提供了资源平衡的配置方法,该方法考虑了资源R历,打破了常 规的做法,即在配置资源时就朝着平衡方向努力,彻底解决了资源平衡与资源短缺的矛盾, 取消或大大降低了资源平衡的调整时间,提高了管理效率。
权利要求
1.一种使用十字链表和多重集合进行资源配置的方法,包括(1)用于对网络图进行资源配置的步骤;其特征是所述使用十字链表和多重集合进行资源配置的方法还包括(1)在对网络图进行资源配置的步骤中,通过对每个资源进行均衡配置从而达到网络图整体资源配置的均衡。
全文摘要
一种使用十字链表和多重集合进行资源配置的方法,如说明书附图中的图1所示,它选用十字链表作为网络图的数据结构,选用结构、单链表和多重集合作为求解资源配置的数据结构。资源配置应该从资源本身入手,不要等到事后平衡,要在配置资源时就朝着资源平衡的目标努力,无论是人力资源,还是稀缺设备资源,我们都给他们配上日历,只有当每个资源日历尽量均匀使用时,资源平衡问题才能得到彻底解决。该方法打破了常规的做法,彻底解决了资源平衡与资源短缺的矛盾,取消或大大降低了资源平衡的调整时间,提高了管理效率。
文档编号G06Q10/00GK101114357SQ200710143640
公开日2008年1月30日 申请日期2007年8月16日 优先权日2007年8月16日
发明者乞建勋, 周远成 申请人:周远成
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1