课程设计说明书模版
课程设计说明书写作

课程设计说明书写作一、教学目标本课程的教学目标是使学生掌握XX学科的基本知识,理解XX学科的基本概念和原理,提高学生的实践能力和创新能力,培养学生的探究精神和合作精神。
知识目标:学生能够掌握XX学科的基本知识,了解XX学科的发展历程,理解XX学科的基本概念和原理。
技能目标:学生能够运用XX学科的知识解决实际问题,提高学生的实践能力;学生能够运用XX学科的知识进行探究性学习,提高学生的创新能力。
情感态度价值观目标:学生能够认识到XX学科在生活中的重要性,培养学生的探究精神;学生能够在学习过程中形成合作意识,培养学生的合作精神。
二、教学内容根据课程目标,本课程的教学内容主要包括XX学科的基本知识、基本概念和原理,以及XX学科在实际生活中的应用。
教学大纲如下:第1章:XX学科概述1.1 XX学科的定义与发展历程1.2 XX学科的基本概念1.3 XX学科的基本原理第2章:XX学科的基本知识2.1 XX学科的知识体系2.2 XX学科的重点知识2.3 XX学科的难点知识第3章:XX学科在实际生活中的应用3.1 XX学科在生活中的应用案例3.2 XX学科在实际问题中的应用3.3 XX学科在前沿领域的应用三、教学方法为了提高教学效果,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
1.讲授法:通过教师的讲解,使学生掌握XX学科的基本知识、基本概念和原理。
2.讨论法:引导学生针对实际问题进行讨论,培养学生的探究精神和合作精神。
3.案例分析法:分析XX学科在实际生活中的应用案例,使学生更好地理解学科知识。
4.实验法:学生进行实验,提高学生的实践能力和创新能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料、实验设备等。
1.教材:选用国内权威的XX学科教材,确保知识的科学性和系统性。
2.参考书:提供丰富的参考资料,帮助学生拓展知识面。
3.多媒体资料:制作精美的多媒体课件,提高学生的学习兴趣。
课程设计说明书样本

邮电与信息工程学院课程设计阐明书课题名称:软件项目实训学生学号:专业班级:11测控01班学生姓名:徐晗学生成绩:指引教师:陈希课题工作时间:-6-9 至-6-22一、课程设计任务基本规定:(1)课程设计目:1.全面理解程序顺序构造、选取构造、循环构造,掌握构造化程序设计自顶向下,逐渐细化,模块化设计原则。
2.掌握C语言基本知识,灵活应用函数、指针、数组、构造体等知识进行程序设计。
3.掌握运用C语言进行程序设计办法和技巧,提高学生综合分析和调试程序能力。
(2)课程设计总体规定:1. 采用模块化程序设计办法。
2. 主菜单设计界面如下:3. 子菜单界面如下:选取构造子菜单:循环构造子菜单:4.在相应模块下完毕如下功能:(1)单选取if语句:(2)双选取if语句:(3)多选取if语句:(4)switch语句(5)while循环语句(6)do-while循环语句(7)for循环语句(8)循环嵌套例如:switch语句案例界面:(3)论文某些1、学生应提交资料:纸质《课程设计阐明书》1份;课程设计报告1份。
2、课程设计报告内容附在《课程设计阐明书》后,内容涉及:一、设计目1. 全面理解程序顺序构造、选取构造、循环构造,掌握构造化程序设计自顶而下,逐渐细化,模块化原则。
2. 掌握C语言基本知识,灵活应用函数、指针、数组、构造体等知识进行程序设计。
3. 掌握运用C语言进行程序设计办法和技巧,提高学生综合分析和调试程序能力。
二、系统功能模块图(略)三、设计函数列表在C语言中每一种功能模块都相应一种函数,即由函数来实现各功能模块详细功能,也就是建立功能模块与函数之间一一相应关系,在编写程序时可以减少不必要麻烦,从而提高编写程序效率。
表一自定义函数表模块名函数名阐明C语言模块化系统main() 主控模块显示主菜单showmenu() 显示菜单课程设计报告一、设计目1. 全面理解程序顺序构造、选取构造、循环构造,掌握构造化程序设计自顶而下,逐渐细化,模块化原则。
课程设计说明书

课程设计说明书一、课程目标知识目标:1. 学生能掌握课程内容中的关键概念,如XXX(此处填写具体概念),并能够准确理解和运用。
2. 学生能描述XXX(此处填写学科知识点)的基本原理,并解释其在实际生活中的应用。
3. 学生能总结本章节的知识结构,形成系统性的认识。
技能目标:1. 学生能够运用所学知识解决实际问题,具备XXX(此处填写学科相关技能)的实践操作能力。
2. 学生能够通过小组讨论、实验操作等方式,培养团队协作和沟通表达的能力。
3. 学生能够运用批判性思维,分析问题,提出自己的观点,形成解决问题的策略。
情感态度价值观目标:1. 学生能够产生对学科的兴趣,树立学习的自信心,形成积极的学习态度。
2. 学生能够认识到所学知识在现实生活中的价值,关注社会热点问题,培养社会责任感。
3. 学生能够尊重他人的观点,学会倾听与分享,培养良好的团队合作精神。
课程性质:本课程为XXX学科(此处填写学科名称)的示范课,旨在通过生动有趣的教学方式,帮助学生掌握学科知识,提高实践能力。
学生特点:针对XX年级(此处填写具体年级)的学生,课程设计注重激发学生的兴趣,培养自主学习能力,同时考虑学生的认知水平和心理特点。
教学要求:课程要求教师具备丰富的教学经验,善于运用多种教学方法和手段,关注学生的个体差异,确保课程目标的实现。
教学过程中,注重知识传授与能力培养相结合,关注学生的全面发展。
通过课程学习,使学生达到具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 知识点的学习:涵盖课本第X章(此处填写具体章节),重点讲解XXX(此处填写具体知识点)的概念、原理和应用。
通过实例分析,帮助学生深入理解。
2. 技能训练:结合课本第X节(此处填写具体节次),开展XXX(此处填写具体技能)的实践操作。
通过实验、练习等形式,提高学生的实际操作能力。
3. 情感态度价值观的培养:以课本内容为载体,融入对XXX(此处填写具体价值观)的教育,引导学生正确认识学科知识与现实生活的联系。
课程设计说明书-范本

课程设计说明书题目年产1万吨间歇式液相本体法聚丙烯合成车间工艺流程设计专业班级学号学生姓名学院完成日期:2016年12 月摘要关键词:3~5个目录摘要 (I)第1章文献综述 (1)第2章原料及产品介绍 (2)2.1产品规格 (2)2.2 原材料性能和规格 (2)第3章工艺流程说明 (5)3.1 工艺设计原则 (5)3.2 工艺流程选择 (5)3.3 催化剂选择 (6)3.4 影响聚合反应的因素 (8)3.5 工艺流程的叙述 (10)第4章物料平衡计算 (13)4.1 化学反应式 (13)4.2 确定计算任务 (13)4.3 绘制物料流程草图 (13)4.4 计算数据 (14)4.5 分布计算 (17)第5章设备工艺设计计算 (23)5.1 聚合釜的工艺设计 (23)5.2 闪蒸釜设计 (24)第6章车间布置 (25)6.1 车间布置基本原则 (25)6.2 厂房布置的原则和要求 (25)6.3 车间设备布置 (26)参考文献 (27)第1章文献综述3000~4000字第2章 原料及产品介绍2.1产品规格表2.1 成品质量指标项目 指标外观 白色、无结块的微球粉粒技术指标 合格品 等规指数 ≥92% 灰分 ≤0.05% 氯含量 ≤0.25% 表观密度 ≥0.40g/cm 3 拉伸屈服强度 ≥27.0MPa 熔融流动速率1.9~4.2g/10min2.2 原材料性能和规格2.2.1 原材料丙烯无色透明液体,分子式C 3H 6,分子量42.078,相对密度为0.5193,折光率为1.3625,沸点为-47.7℃,临界温度91.89℃,临界压力4.54MPa ,与空气混合物的爆炸极限范围(V%)2.0~11.1%。
该原料低毒、有刺激性气味、易燃、易爆,常温常压下为无色透明气体。
表2.2 原料规格进装置丙烯 精制后丙烯丙烯%(V) ≥98 硫 ≤3ppm 乙烯%(V) ≤0.005 水 ≤20ppm 硫mg/kg ≤3 氧≤10ppm水ppm(V) ≤100 其它同进装置丙烯 氧mg/kg ≤30 丙二烯%(V) ≤0.001 丁二烯+丁烯%(V) ≤0.001 烷烃%(V )余量2.2.2 催化剂CS-2比较均匀的规整的球形颗粒,粒径在30~60μm ,以MgCl 2为载体,有效成分是TiCl 3。
课程设计说明书样本

课程设计说明书课程名称:课程代码:题目:学生姓名:学号:年级/专业/班:学院(直属系) :指导教师:目录摘要 (1)引言…………………………………………………………………………………………任务与分析…………………………………………………………………………………1. 方案设计…………………………………………………………………………………1.1步进电机步距角误差测量系统总体方案的设计………………………………………1.1.1系统的驱动控制方案设计…………………………………………………………………结论…………………………………………………………………………………………参考文献……………………………………………………………………………………随着关键词:网络化计算机对策……任务与分析本课题主要的目的是为了检测步进电机步距角误差,并把误差进行分析计算,最终得到一份误差数据,用误差曲线的方式在坐标上面把误差和步数结果表现出来,方便日后对误差的分析、误差的减少讨论出相应的方案。
1 设计方案1.1 步进电机步距角误差测量系统总体方案的设计……1.1.1系统的驱动控制方案设计正文1.总则1.1西华大学立项背景西华大学现有校本部、彭州校区、成都市人南校区、安德校区。
校园面积近3000亩。
校本部坐落于中国历史文化名城成都,毗邻国家高新技术开发西区,西依望丛帝乡、杨雄故里,岷江水自都江堰而下从校园蜿蜒而过。
校园环境大气优雅,植被葱郁,景色宜人,具有得天独厚的人文自然环境,是成都市园林式单位和四川省绿化先进单位,是读书治学的理想园地。
西华大学是2003年4月16日经教育部批准,由原四川工业学院和原成都师范高等专科学校合并组建的省属重点综合性大学。
2008年9月25日,四川经济管理(干部)学院并入西华大学。
四川工业学院的前身四川农业机械学院建于1960年,是国家为实现农业机械化在当时的全国7个大区分别布点所建立的综合性农业机械学院之一,1978年被四川省政府列为省属重点大学,1983年更名为四川工业学院。
教学课程设计说明书模板

教学课程设计说明书模板一、项目概述本教学课程设计说明书模板旨在为教师在设计课程时提供指导和参考。
通过本模板,教师可以详细说明课程的目标、内容、教学方法、评估方式等关键要素,为教学活动的顺利进行提供指导。
二、项目目标本项目的主要目标是设计一门符合教学要求的课程,以达到培养学生综合素质和提高学习能力的目标。
通过科学合理的教学课程设计,提高学生的学习兴趣和主动性,培养学生的创新思维和实践能力,使学生能够灵活地运用所学知识解决实际问题。
三、课程内容1. 课程介绍:简要介绍课程的背景和意义,引起学生的兴趣和学习动机。
2. 教学目标:明确课程的教学目标,包括知识、能力和素养的培养目标。
3. 课程大纲:详细列出课程的各个单元或模块,每个单元或模块包括的主题、目标、内容和学时等。
确保课程设计合理有序,能够覆盖所需的知识点和技能。
4. 教学方法:结合具体的课程内容和教学目标,选择适合的教学方法,如讲授、示范、讨论、实验、小组活动等,以促进学生的积极参与和主动探究。
5. 教学资源:列举所需的教具、实验器材、参考书籍等教学资源,确保教学过程顺利进行。
6. 评估方式:明确课程的评估方式,包括作业、考试、实验报告等。
要求评估方式与课程目标相匹配,能够全面、准确地评价学生的学习成果。
四、教学安排1. 课程周期:确定课程的教学周期,包括总学时和每周学时。
2. 教学进度:安排具体的教学进度表,每个单元或模块的学时安排和重点内容。
3. 课堂活动:设计每堂课的教学活动和教学方法,保证活动的多样性和趣味性,增加学生的参与度。
4. 作业布置:根据课程内容和学生能力水平,合理布置各类作业,以巩固和拓展学生的学习成果。
五、教学评价1. 评价标准:明确课程的评价标准,包括知识理解、能力应用、思维发展、实践操作等方面。
2. 评价方法:选择合适的评价方法,如考试、实验报告、项目展示等,以客观、公正、全面地评价学生的学习效果。
3. 评价周期:确定课程的评价周期,包括阶段性评价和总结性评价。
化工原理课程设计说明书模板

化工原理课程设计说明书模板课程名称:化工原理课程类型:必修课学时安排:36学时一、课程目标本课程的目标是使学生了解化工原理的基本概念和原理,学习化工工艺流程的基本知识和技术,培养学生分析和解决化工问题的能力,为学生今后从事化工工程和科研工作打下坚实的理论基础。
二、教学内容1.化工原理概论本部分将介绍化工原理的基本概念、发展历史和研究领域,引导学生对化工原理有一个整体的认识。
2.物质结构和性质主要介绍物质的基本结构和性质,包括物质的结构与成分、物质的物态变化和物质的性质分类等内容。
3.化工热力学本部分将介绍化工系统的热力学基本原理,包括热力学基本概念、热力学过程和热力学循环等内容。
4.化工动力学本部分将介绍化工系统的动力学基本原理,包括化学反应动力学、传质动力学和热量传递动力学等内容。
5.化工工艺流程主要介绍化工工艺流程的基本知识和技术,包括化工原料的选取和加工、化工设备的设计和运行管理等内容。
6.化工安全与环保本部分将介绍化工生产中的安全与环保知识,包括化工安全管理、化工事故预防和环境污染治理等内容。
7.实验教学本部分将安排一定数量的实验教学课时,学生将进行有关化工原理的实验操作,加强化工原理的理论与实践相结合。
三、教学要求1.熟练掌握化工原理的基本概念和原理,了解化工工艺流程的基本知识和技术。
2.具备运用化工原理知识分析和解决实际问题的能力,具备一定的创新意识和实践能力。
3.具备一定的化工安全与环保意识,了解化工生产中的安全与环保知识,具备一定的事故预防和环境污染治理的知识和技能。
四、教学方法本课程采用讲授、实验教学相结合的教学方法。
在讲授过程中,主要采用课堂讲授、案例分析和互动讨论等教学方法。
在实验教学中,将引导学生进行化工原理的实验操作,加强理论与实践相结合。
五、教材主要教材:《化工原理导论》(第二版)蒋立兴著,化学工业出版社辅助教材:《化工原理实验教程》(第三版)张明著,高等教育出版社六、教学评估本课程的成绩评定将综合考虑平时表现、作业情况、实验报告和期末考试成绩。
课程设计说明书

课程设计说明书一、课程目标知识目标:1. 学生能掌握课程相关基础知识,如XXX概念、XXX原理,并能够准确理解和运用。
2. 学生能理解学科知识体系,明确本章节内容在学科中的地位和作用。
3. 学生能了解学科发展的历史背景,认识到学科知识对社会发展的贡献。
技能目标:1. 学生能够运用本章节所学知识解决实际问题,提高解决问题的能力。
2. 学生能够通过小组讨论、实验操作等形式,培养合作、探究的学习能力。
3. 学生能够运用信息技术手段,搜集、整理和加工相关信息,提高信息素养。
情感态度价值观目标:1. 学生能够积极主动参与课程学习,养成良好的学习习惯。
2. 学生能够尊重和欣赏他人的观点,形成包容、合作的团队精神。
3. 学生能够认识到所学知识在实际生活中的应用价值,激发对学科的兴趣和热爱。
课程性质分析:本课程为XXX学科,旨在帮助学生建立扎实的学科知识体系,提高解决问题的能力,培养创新精神和实践能力。
学生特点分析:本年级学生具有一定的学科基础和认知能力,但部分学生对学科知识的应用尚不熟练,需要通过实践和探究活动提高综合运用能力。
教学要求:1. 教学内容与课本紧密关联,注重知识体系的完整性和连贯性。
2. 教学方法灵活多样,注重启发式教学,引导学生主动探究和思考。
3. 教学评价注重过程性评价与终结性评价相结合,全面评估学生的学习成果。
二、教学内容本章节教学内容主要包括以下几个方面:1. 知识点讲解:依据课程目标,详细介绍XXX概念、XXX原理等基础知识,结合课本第X章的内容,帮助学生建立完整的知识体系。
2. 实践操作:组织学生进行XXX实验,让学生在实践中掌握学科知识,提高动手操作能力。
实验内容与课本第X章实例紧密结合。
3. 案例分析:选取具有代表性的案例,分析案例中涉及的知识点和解决问题的方法,提高学生运用所学知识解决实际问题的能力。
4. 小组讨论:针对课程内容,设计相关讨论话题,引导学生进行小组讨论,培养合作、探究的学习能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计设计说明书图的关键路径求解((()()((学生姓名学号班级成绩指导教师数学与计算机科学学院2012年月日数据结构课程设计评阅书课程设计任务书2011—2012学年第2学期专业学号:姓名:课程设计名称:数据结构课程设计设计题目:图的关键路径求解完成期限:自 2012 年月日至 2012 年月日共 2 周指导教师(签字):教研室主任(签字):批准日期:年月日摘要介绍求关键路经的算法,对于给出的事件结点网络,要求求出从起点到终点的所有路径,经分析、比较后找出长最大的路径,从而得出求关键路径的算法,并给出计算机上机实现的源程序。
对于一个项目而言,只有项目网络中最长的或耗时最多的活动完成之后,项目才能结束,这条最长的活动路线就叫关键路径(Critical Path),组成关键路径的活动称为关键活动,并在vc6.0 环境下运行,操作。
关键词:关键路径;关键活动;最短时间目录1课题描述 (1)2 设计要求 (2)2.1设计要求 (2)2.2总体规划 (2)3逻辑设计与分析 (3)3.1AOE网 (3)3.2举例分析 (3)3.3算法核心 (4)4算法流程图 (9)4.1关键路径 (9)4.2拓扑排序 (9)5详细设计 (6)5.1存储结构 (6)5.2函数 (7)5.3函数关系 (7)6程序测试 (11)6.1合法数据输入 (11)6.2非法数据输入 (12)总结 (13)参考文献 (14)1课题描述随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具.借助现从识经济时代的特点,对国民经济建设提出了“用信息化带动工业化”的指导思想。
对常用算法的实现与比较操作而言,全面开发和应用计算机操作系统就是近期不能回避的问题。
由于计算机技术的发展,许多复杂的数值问题才得以解决。
一个数学问题,乃至一个数值计算公式,如何在计算机上实现,而在计算机处理计算的过程中又会产生哪些新问题,这是在实际应用算法操作中经常会遇到的课题。
关键路径问题与最短路径问题相反,它是求与AOV网相关的最长路径。
AOV(Activity On Vertex)网是用顶点表示活动,边表示活动间先后关系的有向图,亦称为顶点活动图。
关键路径(Critical Path)问题相应的网称为AOE(Activity On Edge)网,即边表示活动的网。
AOE 网是一个带权的有向图,其中:顶点表示事件,弧表示活动,弧上的权值表示该活动持续的时间。
顶点所表示的事件实际上就是它的“入边”所表示的活动均已完成,它的“出边”所表示的活动皆可以开始这样一种状态。
通常,可用AOE网来估算工程的计划完成时间。
与AOV网不同,对于AOE网有待研究的问题是:(1) 完成整项工程至少需要多少时间?(2) 哪些活动是影响工程进度的关键?开发工具:Visual C++2 设计要求2.1设计要求本设计要求是对给出的一个具体工程的AOE网,只需输入相关数据,即可求出该项工程的所有关键活动,通过关键活动所对应的从源点到汇点的路径就是所求得的关键路径。
2.2总体规划要求关键路径则通过建立有向网,利用拓扑排序遍历,求出事件的最早最晚发生时间总体规划如图2.1图2.1总体规划3逻辑设计与分析3.1AOE网AOV-网相对应的是AOE-网(Activity On Edge)即边表示活动的网。
AOE-网是一带权的有向无环图,其中,顶点表示事件(Event),弧表示活动,权表示活动持续的时间。
通常,AOE-网可用来估算工程的完成时间。
3.2举例分析例如,如图3.1是一个假想的有11项活动的AOE-网。
其中有9个事件v1,v2,v3,…,v9,每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。
如v1表示整个工程开始,v9表示整个工程结束,v5表示a4和a5已经完成,a7和a8可以开始。
与每个活动相联系的数是执行该活动所需的时间。
比如,活动a1需要6天,a2需要4天等(1)由于在AOE-网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度(这里所说的路径长度是指路径上各活动持续时间之和,不是路径上弧的数目)。
路径长度最长的路径叫做关键路径(Critical Path)。
假设开始点是v1,从v1到vi的最长路径长度叫做事件vi的最早发生时间。
这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。
我们用e(i)表示活动ai的最早开始时间。
还可以定义一个活动的最迟开始时间l(i),这是在不推迟整个工程完成的前提下,活动ai最迟必须开始进行的时间。
两者之差l(i)-e(i)意味着完成活动ai的时间余量。
我们把l(i)=e(i)的活动叫做关键活动。
显然,关键路径上的所有活动都是关键活动,因此提前完成非关键活动并不能加快工程的进度。
因此,分析关键路径的目的是辨别哪些是关键活动,以便争取提高关键活动的工效。
由上分析可知,辨别关键活动就是要找e(i)=l(i)的活动。
为了求得AOE-网中活动的e(i)和l(i),首先求事件的最早发生时间ve(j)和最迟发生时间vl(j)。
如果活动ai由弧<j,k>表示,其持续时间记为dut(<j,k>),则有如下关系e(i) = ve(j)l(i) = vl(k)-dut(<j,k>) 求ve(j)和vl(j)需分两步进行(1)从ve(0)开始向前递推(2)ve(j)=Max{ve(i)+dut(<i,j>)}i <i,j>∈T, j=1,2,3,…,n-1其中,T是所有以第j个顶点为尾的弧的结合。
(3)从vl(n-1)=ve(n-1)起向后递推(4)vl(i) = Min{ vl (j) –dut(<i,j>) } j <i,j> ∈S , i=n-2,…,0其中,S是所有以第i个顶点为头的弧的集合。
这两个递推公式的计算必须分别在拓扑有序和逆拓扑有序的前提下进行。
也就是说ve(j-1)必须在vj的所有前驱的最早发生时间求得之后才能确定,而vl(j-1)则必须在vj的所有后继的最迟发生时间求得之后才能确定。
因此,可以在拓扑排序的基础上计算ve(j-1)和vl(j-1)。
3.3算法核心由此得到求关键路径的算法核心如下:(1) 用邻接表存储数据如图3.2 ;(2) 输入e条弧<j,k>,建立AOE-网的存储结构;(3) 从源点v0出发,令ve[0]=0,按拓扑有序求其余各顶点的最早发生时间ve[i] (1≤i≤n-1)。
如果得到的拓扑有序序列中顶点个数小于网中顶点数n,则说明网中存在环,不能求关键路径,算法终止;否则执行步骤(3)。
(4) 从汇点vn出发,令vl[n-1]=ve[n-1],按逆拓扑有序求其余各顶点的最迟发生时间vl[i](n—2≥i≥2);(5) 根据各顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s)。
若某条弧满足条件e(s)=l(s),则为关键活动。
图3.2邻接表(6)关键活动的判断ve代表最早发生事件vl代表最迟发生事件当ee=el时则此活动为关键路径上如表3.3表3.3关键活动求解输出:拓扑序列为:v1 v3 v4 v6 v2 v5 v8 v7 v9关键路径是:<v1,v2>,<v2,v5>,<v5,v7>,<v5,v8>,<v7,v9>,<v8,v9> 即有两条关键路径:(v1,v2,v5,v7,v9)和(v1,v2,v5,v8,v9)4算法流程图4.1关键路径关键路径的设计如图4.1CriticalPath(ALGraph G) 关键路径算法关键活动ve,vlve[MAXVEX],vl[MAXVEX],ee[MAXEDGE],el[MAXEDGE];数组ve,ve存放事件可能的最早发生时间数组vl存放事件可能的最迟发生时间,数组ee,el并输出结果{ int topo[MAXVEX];if(topoSort(G,topo)==FALSE) /*求AOE网的一个拓扑序列*/return FALSE; /*若有环则返回FALSE*/countve(G,topo,ve); /*计算数组ve,ve存放事件可能的最早发生时间*/ countvl(G,topo,ve,vl); /*计算数组vl,vl存放事件可能的最迟发生时间*/counte_l(G,ve,vl,ee,el); /*计算数组ee,el并输出结果*/printf("\n"); /*数组ee存放活动的最早开始时间,数组el存放活动的最晚开始时间*/ return TRUE;}图4.1求事件最早发生时间4.2拓扑排序拓扑排序算法ArcNode *p;int indegree[MAXVEX];FindInDegree(G,indegree); /* 求出图中所有顶点的入度*/for(i=0;i<G.vexnum;i++)if(indegree[i]==0) // 将入度为零的顶点入栈{ indegree[i]=top;top=i; }while(top!=-1) /* 栈不为空*/{ j=top;top=indegree[top]; /* 取出当前栈顶元素*/topo[count++]=j; /*ptopo数组存放拓扑序列*/p=G.vertices[j].firstarc;//取该元素边表中的第一个边结点,删除该结点,构造新的AOV网makeNewAOE(p,indegree,top); //对indegree数组进行修改}if(count<G.vexnum) /* AOE网中存在回路*/{ printf("\t!!!!!!!!这个图中有回路!!!!!!\n");return FALSE;}return TRUE;}(1)拓扑排序是指由某个集合上的一个偏序得到该集合上的一个全序。
更直观地讲,一个偏序是自反的、反对称的,用图表示时每个点都有环且只有单向边。
拓扑排序的任务是在这个偏序上得到一个全序,即得到一个完成整个项目的各步骤的序列。
(2)解决拓扑排序的方法如下:在有向图中选一个没有前驱的顶点且输出之。
从图中删除该顶点和所有以它为尾的弧。
根据算法思想流程图如图4.2所示见下页图4.2拓扑排序5详细设计5.1 存储结构typedef struct ArcNode//弧结构{ int adjvex; /* 该弧所指顶点位置*/ AdjType weight; //权值struct ArcNode *nextarc; /* 指向下一条弧的指针*/}ArcNode; /* 边表中的结点*/typedef struct VNode//顶点结构{ VertexType data; /* 顶点信息*/ArcNode *firstarc; /* 指向第一条依附该顶点的弧的指针*/ }VNode,AdjList[MAXVEX]; /* 顶点表中的结点*/typedef struct//图结构{ AdjList vertices;int vexnum,arcnum; /* 图的顶点个数和弧数*/}ALGraph;5.2函数FindInDegree()求出图中所有顶点的入度,方法是搜索整个邻接表CreateGraph()邻接表的构造并输入数据,初始化图insert()在表尾插入表结点makeNewAOE()取该元素边表中的第一个边结点,删除该结点,构造新的AOE网countve()计算各事件的最早发生时间countvl()计算各事件的最迟发生时间counte_l()计算各活动的最早发生时间和最迟发生时间,并输出关键路径CriticalPath()关键路径调用上面的函数5.3函数关系(1)首先创建有向网调用insert(ALGraph &G,int a,int b,int weight)函数条用关系在表尾插入表结点ArcNode *p,*temp;//弧结构temp=(ArcNode *)malloc(sizeof(ArcNode));//申请空间temp->adjvex=b-1;//尾弧顶点在数组中的下标temp->nextarc=NULL;//把下一条弧赋值为空temp->weight=weight;//权值p=G.vertices[a-1].firstarc;//弧头顶点位置if(p==NULL)//在p非空时G.vertices[a-1].firstarc=temp;else{while(p->nextarc!=NULL)p=p->nextarc; /*找表尾*/p->nextarc=temp; }//在邻接表尾插入节点(2)求入度函数求出图中所有顶点的入度,方法是搜索整个邻接表FindInDegree(ALGraph G,int inDegree[]){int i; ArcNode *p;//i是控制循环for(i=0;i<G.vexnum;i++)inDegree[i]=0; //顶点入度数组赋初值for(i=0;i<G.vexnum;i++){p=G.vertices[i].firstarc;while(p){//当p存在时对应的入度加1inDegree[p->adjvex]++;p=p->nextarc;//指向下一条弧}}}(3)拓扑排序算法时调用入度函数当入度为零时入栈topoSort(ALGraph G,int *topo){int i,j,count=0,top=-1 ArcNode *p; int indegree[MAXVEX];FindInDegree(G,indegree); /* 求出图中所有顶点的入度*/for(i=0;i<G.vexnum;i++)if(indegree[i]==0) // 将入度为零的顶点入栈{ indegree[i]=top;top=i; }while(top!=-1) /* 栈不为空*/{ j=top; t op=indegree[top]; /* 取出当前栈顶元素*topo[count++]=j; /*ptopo数组存放拓扑序列*/p=G.vertices[j].firstarc;//取该元素边表中的第一个边结点,删除该结点,构造新的AOV网makeNewAOE(p,indegree,top); //对indegree数组进行修改从新构建有向网}if(count<G.vexnum) /* AOE网中存在回路*/{ printf("\t!!!!!!!!这个图中有回路!!!!!!\n"); return FALSE;} return TRUE; }6程序测试6.1合法数据输入(1)输入顶点v1 v2 v3 v4 v5 v6 v7 v8 v9定点数9 弧数11如图6.1图6.1顶点和弧数(2)输入顶点和弧如图6.2图6.2输入弧(3)输出各顶点入度如图6.3图6.3个顶点的入度(4)拓扑序列如图6.4图6.4输出拓扑序列(5)关键路径和权值图6.5关键路径关键路径是:<v1,v2> 6,<v2,v5>1,<v5,v7>9,<v5,v8>7,<v7,v9>2,<v8,v9>4 即有两条关键路径:(v1,v2,v5,v7,v9)和(v1,v2,v5,v8,v9)总工期186.2非法数据输入(1)输入有向网如图6.6顶点:v1 v2 v3弧:<v1,v2> ,<v2,v3>,<v3,v1>有环图:图6.6非法数据的运行结果输出结果:!!!!!!!!!这个图有回路!!总结参考文献[1] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社.2002[2][3][4][5]。