关键路径问题课程设计报告书Word格式文档下载.docx

上传人:b****6 文档编号:20187517 上传时间:2023-01-17 格式:DOCX 页数:9 大小:43KB
下载 相关 举报
关键路径问题课程设计报告书Word格式文档下载.docx_第1页
第1页 / 共9页
关键路径问题课程设计报告书Word格式文档下载.docx_第2页
第2页 / 共9页
关键路径问题课程设计报告书Word格式文档下载.docx_第3页
第3页 / 共9页
关键路径问题课程设计报告书Word格式文档下载.docx_第4页
第4页 / 共9页
关键路径问题课程设计报告书Word格式文档下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

关键路径问题课程设计报告书Word格式文档下载.docx

《关键路径问题课程设计报告书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《关键路径问题课程设计报告书Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。

关键路径问题课程设计报告书Word格式文档下载.docx

(1)符合课题要求,实现相应功能;

(2)要求界面友好美观,操作方便易行;

(3)注意程序的实用性、安全性;

1.本设计所采用的数据结构(图)

程序流程图

2.功能模块详细设计

2.1详细设计思想

主函数switch()对条件进行选择判断,进入关键路径的程序,然后对结点数的接收,分配相应的存储空间,构建AOE-网,逐个对图结点信息(包括俩邻接点,权值)输入接收,并与分配存储空间。

寻找关键路径:

构建栈用与存储拓扑排序序列,求得每个接点的相应最早发生时间,最迟完成时间,关键事件的求取,并输出关键路径。

2.2核心代码

#include"

stdafx.h"

#include<

cstdio>

cstdlib>

iostream>

iomanip>

process.h>

usingnamespacestd;

//#definePROJECTUNMBER9//10

//#definePLANNUMBER11//13

typedefstructnode

{

intadjvex;

intdut;

structnode*next;

}edgenode;

typedefstruct

intprojectname;

intid;

edgenode*link;

}vexnode;

//vexnodeGraphicmap[PROJECTNUMBER];

voidGreateGraphic(vexnode*Graphicmap,intprojectnumber,intactivenumber)

intbegin,end,duttem;

edgenode*p;

for(inti=0;

i<

projectnumber;

i++)

{

Graphicmap[i].projectname=i;

Graphicmap[i].id=0;

Graphicmap[i].link=NULL;

}

printf("

某项目的开始到结束在图中的节点输入<

vi,vj,dut>

\n"

);

如:

3,4,9回车表示第三节点到第四节点之间的活动用了9个单位时间\n"

*********************************************\n"

for(intk=0;

k<

activenumber;

k++)

{

scanf("

%d,%d,%d"

&

begin,&

end,&

duttem);

p=(edgenode*)malloc(sizeof(edgenode));

p->

adjvex=end-1;

dut=duttem;

Graphicmap[end-1].id++;

next=Graphicmap[begin-1].link;

Graphicmap[begin-1].link=p;

}

intSearchMapPath(vexnode*Graphicmap,intprojectnumber,intactivenumber,int&

totaltime)

inti,j,k,m=0;

intfront=-1,rear=-1;

int*topologystack=(int*)malloc(projectnumber*sizeof(int));

//用来保存拓扑排列

int*vl=(int*)malloc(projectnumber*sizeof(int));

//用来表示在不推迟整个工程的前提下,vl允许最迟发生时间

int*ve=(int*)malloc(projectnumber*sizeof(int));

//用来表示vj最早发生时间

int*l=(int*)malloc(activenumber*sizeof(int));

//用来表示活动Ai最迟完成开始时间

int*e=(int*)malloc(activenumber*sizeof(int));

//表示活动最早开始时间

totaltime=0;

for(i=0;

i++)ve[i]=0;

i++)

if(Graphicmap[i].id==0)

{

topologystack[++rear]=i;

m++;

}

while(front!

=rear)

front++;

j=topologystack[front];

m++;

p=Graphicmap[j].link;

while(p)

k=p->

adjvex;

Graphicmap[k].id--;

if(ve[j]+p->

dut>

ve[k])

ve[k]=ve[j]+p->

dut;

if(Graphicmap[k].id==0)

topologystack[++rear]=k;

p=p->

next;

if(m<

projectnumber)

printf("

\n本程序说建立的图有回路不可计算出关键路径\n"

将退出本程序\n"

return0;

totaltime=ve[projectnumber-1];

vl[i]=totaltime;

for(i=projectnumber-2;

i>

=0;

i--)

j=topologystack[i];

if((vl[k]-p->

dut)<

vl[j])

vl[j]=vl[k]-p->

i=0;

|起点|终点|最早开始时间|最迟完成时间|差值|备注|\n"

for(j=0;

j<

j++)

e[++i]=ve[j];

l[i]=vl[k]-p->

printf("

|%4d|%4d|%4d|%4d|%4d|"

Graphicmap[j].projectname+1,Graphicmap[k].projectname

+1,e[i],l[i],l[i]-e[i]);

if(l[i]==e[i])

printf("

关键活动|"

return1;

voidseekkeyroot()

intprojectnumber,activenumber,totaltime=0;

system("

cls"

请输出这个工程的化成图形的节点数:

"

scanf("

%d"

projectnumber);

请输入这个工程的活动个数:

activenumber);

vexnode*Graphicmap=(vexnode*)malloc(projectnumber*sizeof(vexnode));

GreateGraphic(Graphicmap,projectnumber,activenumber);

SearchMapPath(Graphicmap,projectnumber,activenumber,totaltime);

整个工程所用的最短时间为:

%d个单位时间\n"

totaltime);

pause"

}

intmain()

charch;

for(;

;

do

system("

|欢迎进入求关键路径算法程序|"

for(inti=0;

80;

i++)printf("

*"

%s"

"

(S)tart开始输入工程的节点数据并求出关键路径\n"

(E)xit退出\n"

请输入选择:

scanf("

%c"

ch);

ch=toupper(ch);

if(ch!

='

S'

&

ch!

E'

请输入正确的字符!

}while(ch!

switch(ch)

case'

:

seekkeyroot();

break;

return1;

}

}

2.3程序运行结果

输入S开始程序(如图)

输入节点数和活动个数(如图)

输入E,退出程序

3.课程设计心得

这次的课程设计主要是对基础知识的灵活使用,这就让我进一步提高了对数据结构知识的巩固。

这次设计的完成,有很多难题让我都曾不知所措,但通过努力最终解决它们让我体会到成就感,更重要的是我的能力在无形中得到了提升和优化。

今后我会更加的努力,去充分的提升自己。

【此文档部分内容来源于网络,如有侵权请告知删除,本文档可自行编辑和修改内容,感谢您的支持!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1