数据结构课程设计-寻找关键路径-07-6-20073001239-王鲁俊..docVIP

数据结构课程设计-寻找关键路径-07-6-20073001239-王鲁俊..doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计-寻找关键路径-07-6-20073001239-王鲁俊.

山东大学软件学院 数据结构课程设计报告 设计题目: (5) 寻找关键活动 AOE Net 学 号 20073001239 姓 名 RunZhi1989 年 级 07 专 业 软件工程 班 级 6班 学 期08-09学年第二学期 日期: 2009年 3 月 2日 设计报告内容: 需求描述 : AOE网即边表示活动的网络,在某些工程估算方面非常有用。可以使人们了解:(1)研究某个工程至少需要多少时间?(2)些活动是影响工程进度的关键在AOE网络中,从源点到汇点的有向路径可能不止一条但只有各条路径上所有活动都完成了,这个工程才算完成。因此,完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和这条路径就叫做关键路径(ritical Path)。)CActivity,(4)辅助用的几个对话框类、封装好的数据结构类、异常类。 _1)MFC基本类: 包含 CAOEApp,CAOEDoc,CAOEView 。MFC WizardApp(.exe) 项目创建时 开发工具自动生成基本框架代码。 要处理的是相关事件的注册监听和消息响应。 _2)Graphic类: 程序的核心类,封装了图的所有操作:图的初始化,插入一个顶点,添加或删除一条边,求拓扑序列,求各事件的最早发生时间,求最晚发生时间,查找并保存关键事件,求关键路径及其辅助方法)。 _3)CEvent, CActivity: 按面向对象编程思想,封装CEvent, CActivity这两个类。CEvent类封装了对事件对象的所有操作:更名、判断是否被选择,画出事件、画出被选事件。CActivity 类封装了活动对象的所有操作:选择活动、设为关键活动、画出活动、画出关键活动,重设活动属性。 _4)辅助用的几个对话框类, 封装好的数据结构类、异常类: 辅助用的几个对话框类主要用于接受用户输入和显示结果。封装好的数据结构类主要有:链表类(CChain),队列类(LinkedQueue),堆栈类(Stack)。 异常类用于程序抛出异常:主要有BadInput,OutOfBounds。 核心类Graphic代码的思想: 拓扑序列求解:先计算图中各顶点的入度,将入度为零的点存入队列,入队列不空,则删除队列中的元素,将其放入数组中接至的顶点的入度减一,若减一后该点入度为零,则加入队列。重复直到队列为空。若所有点都加入了数组中,则返回true,否则返回false,意为无拓扑序列。 最早时间求解GetEarly(int *e):用初始化为全零的数组e存放各点的最早时间,按已求得的拓扑序列,从序列头至序列尾遍历,将当前点所邻接至的点的最早时间更新为“原来的值”与 “当前点的最早值加点之间距离” 中较小的。并记录最大值SUM。 最晚时间求解GetLast(int *l):用初始化为SUM的数组l存放各点的最晚时间,按已求得的拓扑序列的逆序,遍历,将当前点所邻接于的点的最晚时间更新为“原来的值”和“当前点的最晚值减点之间距离”中较大的。 MultiPath(int*p,CChainint*chain,CChainCStringResultChain): 运行得到结果。借助AdjTo方法。该方法用来处理关键点(非关键点不可能出现在关键路径中) AdjTo(int*p,CChainint*chainArray);其中p[i]存放 顶点i邻接至的点数目;chainArray[i]存放顶点i邻接至的各顶点。 核心代码如下:(ZeroIndegree存入度为零点的链表,即源点链表;VNode为简单的类VNode(int vertex,CString ResultBeforeThisVertex))。 for(int x=0;xZeroIndegree.Length();x++) { int FIRST=ZeroIndegree.Get(x); CString InitStr=; StackVNode* S; VNode *vn=new VNode(FIRST,InitStr); S.Push(vn); int i=0,t,temp;CString nowstr=; VNode *del=0; do { S.Pop(del); i=del-vertex; temp=i; nowstr=del-str; do { i=temp; nowstr+=ConvertIntToCString2(i)+_;

您可能关注的文档

文档评论(0)

s4as2gs2cI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档