中北大学 数 据 结 构 课 程 设 计 说 明 书 学生姓名: 李永亮 学 号: 1 0 2 1 0 1 1 8 1 3 学 院: 软件学院 专 业: 软件工程 题 目: 关键路径问题 指导教师 何志英 2011 年 12 月 20 日 1 设计内容: 设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。 1、对一个描述工程的AOE 网,应判断其是否能够顺利进行。 2、若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。 设计要求: (1) 符合课题要求,实现相应功能; (2) 要求界面友好美观,操作方便易行; (3) 注意程序的实用性、安全性; 1 . 本设计所采用的数据结构 (图) 程 序 流 程 图 Ch!=’S’&&ch!=‘E’ Case:E case: Main()函数 Seekkeyroot()函数 Switch()函数 searchMapPath()函数 sreateGraphic()函数 调用结束 2 2 . 功能模块详细设计 2.1 详细设计思想 主函数switch()对条件进行选择判断,进入关键路径的程序,然后对结点数的接收,分配相应的存储空间,构建AOE-网,逐个对图结点信息(包括俩邻接点,权值)输入接收,并与分配存储空间。寻找关键路径:构建栈用与存储拓扑排序序列,求得每个接点的相应最早发生时间,最迟完成时间,关键事件的求取,并输出关键路径。 2.2 核心代码 #include "stdafx.h" #include
#include #include #include #include using namespace std; //#define PROJECTUNMBER 9//10 //#define PLANNUMBER 11//13 typedef struct node { int adjvex; int dut; struct node *next; }edgenode; typedef struct { int projectname; 3 int id; edgenode *link; }vexnode; //vexnode Graphicmap[PROJECTNUMBER]; void GreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber) { int begin,end,duttem; edgenode *p; for(int i=0;i\n"); printf("如:3,4,9 回车表示第三节点到第四节点之间的活动用了 9 个单位时间\n"); printf("**********************************...