教学计划编制
教师教学计划编制原则

教师教学计划编制原则1.领导核心:教师教学计划应该围绕学校领导的教育目标和教学方针展开,与学校教育工作的总体布局相一致。
教师教学计划应该体现学校的办学特色和教育理念。
2.学生为中心:教师教学计划应该以学生的学习需求为出发点,关注学生的兴趣、需求和特点。
教师应根据学生的实际情况制定教学目标、教学内容和教学方法,以满足学生的学习需求。
3.分层次、因材施教:教师教学计划应该根据学生的学习能力和学习水平的不同,进行分层次的规划。
教师可以根据学生的实际水平,将学生分为不同的学习小组,采用差异化教学策略,因材施教,提高教学效果。
4.结合实际、注重实践:教师教学计划应该与学生的实际生活和实践活动相结合,注重培养学生的实践能力和解决问题的能力。
教师应该通过实践性教学来激发学生的学习兴趣和学习动力。
5.系统性与科学性:教师教学计划应该具有系统性和科学性,包括教学目标的设定、教学内容的选择和教学方法的确定等。
教师应该根据教学大纲和教材的要求,结合学生的学习特点,按照一定的教学步骤和教学过程来编制教学计划。
6.教学资源的合理利用:教师教学计划应该合理利用教学资源,包括教室设施、教学用具、教学材料等。
教师应该根据教学内容和教学目标的需要,选择合适的教学资源,提高教学效果。
7.监测与评估:教师教学计划应该定期进行监测和评估,了解学生的学习情况和教学效果。
教师可以通过课堂观察、学生作业、小组讨论等方式来收集教学数据,及时调整教学策略,提高教学质量。
8.不断更新与改进:教师教学计划应该不断更新和改进,与时俱进。
教师应该关注教育前沿的研究成果和教学理论的发展,不断提升自己的教学能力和教育水平。
总之,教师教学计划的编制应该体现学校的领导核心,以学生为中心,分层次、因材施教,结合实际、注重实践,具有系统性和科学性,合理利用教学资源,进行监测与评估,不断更新与改进。
只有遵循这些原则,教师才能制定出具有指导性和可操作性的教学计划,提高教育教学质量。
教师教学计划编制与分解

教师教学计划编制与分解教师教学计划是指教师为了达到教学目标,根据教学大纲和课程要求制定的一系列教学活动的安排。
它是教师教学工作的基础,对于提高教学质量具有重要意义。
本文将从教学计划的编制和分解两个方面展开探讨。
第一部分:教学计划的编制教学计划的编制是指教师在开始教学前,根据教学大纲和课程要求,对教学内容和教学活动进行合理安排的过程。
首先,教师需要仔细研究教材与教学大纲,了解课程目标和要求。
这样可以帮助教师明确所需教授的知识点、技能和能力,并为之后的教学活动提供指导。
其次,教师应根据学生的实际情况和学科特点,合理安排教学内容。
这包括确定教学的重点、难点和短板,以便在教学中有针对性地进行指导和讲解。
然后,教师需要制定教学步骤和教学方法。
在编制教学计划时,教师应结合学生的认知特点,选择适合的教学方法和手段。
同时,教师还要考虑如何激发学生的学习兴趣和积极性,提高教学效果。
最后,教师应考虑到教学计划的具体实施情况,合理安排教学时间和进度。
这包括控制每次教学的时间安排,合理分配每个教学环节的时间比例,以及根据学生的学习能力和节奏进行灵活调整。
第二部分:教学计划的分解教学计划的分解是指将整个教学过程按照一定的顺序和方法进行细化和拆解,以便于实际教学过程的开展。
首先,教学计划的分解需要将教学内容细化为具体的教学单元。
教学单元是教学活动的基本单位,可以根据知识点、主题或学习任务进行划分。
其次,教学计划的分解还需要将教学单元进一步分解为教学课时。
根据教学时数和学生的学习能力,教师可以合理安排每个教学单元所需的教学课时。
然后,教学计划的分解需要明确每个教学课时的具体教学目标和教学内容。
教学目标应当明确、具体和可量化,以便对学生的学习情况进行评价和反馈。
最后,教学计划的分解还需要针对每个教学课时选择合适的教学方法和教具。
教学方法和教具的选择应根据学生的学习特点和教学目标来确定,以提高教学效果。
总结教师教学计划的编制与分解是提高教学质量的重要环节。
教师教学计划编制具体步骤

教师教学计划编制具体步骤教学计划是教师根据教学任务和学生特点,进行教学内容、教学目标、教学方法和教学评价等方面的安排和设计的重要工作。
一个合理的教学计划可以帮助教师更好地组织教学过程,提高教学效果。
下面将介绍教师教学计划编制的具体步骤。
一、确定教学目标教学目标是教学计划的核心,它是指教师所希望学生在一定时间内达到的学习成果。
教学目标要明确、具体、可操作,并与学生的实际情况相适应。
二、分析教学内容根据教学目标,教师需要分析教学内容,明确需要教给学生的知识、技能和态度。
可以根据教材提纲和学科标准来确定教学内容的重点和难点。
三、选择教学策略教学策略是指教师在教学中所采用的教学方法、手段和技巧。
教师需要根据教学内容和学生的学习情况,选择合适的教学策略,如讲授法、讨论法、实验法等,以便更好地达到教学目标。
四、制定教学步骤教学步骤是指教师在课堂教学中,按照一定顺序和方式进行教学的步骤和方法。
教师需要根据教学内容和教学策略,合理安排教学步骤,包括引入、讲解、练习、巩固和评价等环节。
五、设计教学活动教学活动是指教师根据教学目标和教学步骤,安排学生进行的各种教学任务和活动。
教师需要设计多样化的教学活动,如小组讨论、实验操作、角色扮演等,以激发学生的兴趣和积极性。
六、选择教学资源教学资源是指教师在教学中所使用的教学辅助材料和工具。
教师需要选择适合的教学资源,如教学软件、多媒体教具、实验器材等,以增加教学的趣味性和有效性。
七、制定教学评价标准教学评价是指对学生学习情况的评估和反馈。
教师需要根据教学目标和教学内容,制定相应的评价标准和评价方法,如考试、作业、实验报告等,以了解学生的学习进展和教学效果。
八、实施教学计划教师需要按照教学计划的安排和设计,准备好教学材料和教具,组织学生进行教学活动。
在教学过程中,教师要关注学生的学习情况,及时调整教学策略和步骤,以确保教学目标的顺利达成。
九、评估教学效果教学结束后,教师需要评估教学效果,了解学生的学习情况和教学的有效性。
教师教学计划编制步骤详解

教师教学计划编制步骤详解教学计划是教师在教学过程中起到指导作用的重要工具。
它不仅是教师教学行为的规划,而且也是对学生学习行为的引导。
下面将详细介绍教师教学计划编制的十二个步骤。
一、分析教学目标教学计划编制的第一步是分析教学目标。
教学目标是教学的出发点和归宿点,明确的教学目标能够使教师更好地开展教学工作。
在编制教学计划时,教师应仔细分析教学目标,明确自己所要达到的预期效果。
二、确定教学内容在分析教学目标的基础上,教师需要确定教学内容。
教学内容应该具有完整性、系统性和可操作性,能够帮助学生达到预期目标。
教师要根据教材内容、学生水平等因素,合理选择适合的教学内容。
三、制定教学计划制定教学计划是教师教学计划编制的核心环节。
教学计划包括教学过程的安排、教学方法的选择、教学资源的调配等。
教师要根据学生的特点和实际情况,合理制定教学计划,使教学过程更加科学、合理。
四、选择教学方法选择教学方法是教师教学计划编制的重要环节。
教学方法的选择将直接影响到教学的效果。
教师要根据所授课程的特点、学生的学习方式等因素,选择适合的教学方法,提高教学效果。
五、设计教学活动设计教学活动是教学计划编制的重要环节。
教学活动的设计应当使学生的学习更加主动、积极。
教师要设计丰富多样的教学活动,使学生的兴趣得到调动,激发学生的学习动力。
六、确定教学评价方式确定教学评价方式是教师教学计划编制的必要环节。
教学评价是对教学效果的检验和评估,也是对学生学习情况的了解。
教师要合理选择教学评价方式,确保对学生的评价准确有效。
七、准备教学资源准备教学资源是教师教学计划编制的重要环节。
教学资源的准备工作包括教材、教具、多媒体等方面。
教师要根据教学计划的需要,及时准备好相应的教学资源,以保证教学的顺利进行。
八、组织教学过程组织教学过程是教师教学计划编制的关键环节。
教学过程的组织应当合理有序,能够使学生的学习得以顺利进行。
教师要善于引导学生,合理分配教学时间,确保教学的连贯性和有效性。
学校教学计划编制规定

学校教学计划编制规定一、引言学校教学计划是指学校根据相关法律法规和教育部门的要求,将教学目标、内容和学习活动进行系统化的安排和规划的文件。
学校教学计划的编制规定对于学校的教学工作及学生的学习效果具有重要意义。
二、目的和意义学校教学计划的编制规定旨在明确教学目标和内容,合理安排学习活动的时间和顺序,提高教学效果和学生的学习质量。
这不仅有助于教师把握教学重点和难点,提供有效的教学指导,也有利于学生全面发展和个性培养。
三、教学目标设定学校教学计划的编制规定应包括设定明确的教学目标。
教学目标应立足于教育部门和学校的教学标准,以培养学生综合素质为核心,同时兼顾知识和能力的培养。
明确的教学目标能够为教师提供明确的教学方向,为学生提供合理的学习目标。
四、教学内容选取学校教学计划的编制规定还应包括教学内容的选取。
教学内容的选取应根据学科发展的前沿和学生的实际需要来确定。
内容的选择应既要注重学科知识的传授,又要注意培养学生的实践能力和创新思维。
因此,教师在制定教学计划时要考虑到内容的科学性和教学方法的多样性。
五、课程设置与安排学校教学计划的编制规定还需涉及课程设置和安排。
课程应根据学科特点和学生的学习需求来设计,要注意知识的连贯性和递进性。
在安排课程时,要合理分配时间和课程间的关系,确保学生能够充分掌握和应用所学的知识。
六、教学活动的安排学校教学计划的编制规定还应考虑教学活动的安排。
教学活动包括讲授、实验、讨论、实践等多种形式。
教师应根据不同的教学目标和内容,选择合适的教学活动进行教学。
安排丰富多样的教学活动能够激发学生的学习兴趣,提高他们的参与度和学习效果。
七、教材选择和评价学校教学计划的编制规定还要对教材的选择和评价进行规定。
教材是教学的重要依据,教师应根据学科特点和学生的实际情况,选择适合教学目标和内容的教材。
同时,教材的优劣也要根据学生的学习效果和教学反馈进行评价,及时进行调整和改进。
八、考核和评价方法学校教学计划的编制规定还要涉及考核和评价的方法。
教师教学计划编制步骤

教师教学计划编制步骤一、需求分析在进行教学计划编制之前,教师首先需要分析学生的需求。
通过了解学生的学习目标、兴趣爱好、学习方式和水平等方面的信息,教师可以有针对性地制定教学计划,以满足学生的需求。
二、目标确定在需求分析的基础上,教师需要明确教学目标。
教学目标应该是具体、明确的,可以根据学科知识、技能和素养来确定。
同时,教学目标也要符合教育教学的要求和学生的实际情况。
三、教学内容确定在确定了教学目标之后,教师需要确定教学内容。
教学内容应该与教学目标紧密相关,并且符合学生的学习进度和能力。
教师可以根据教材的内容进行选择,也可以根据学生的实际情况进行适当的调整和拓展。
四、教学方法选择教学方法是教师进行教学活动的主要手段,对于教学效果起着至关重要的作用。
在确定教学方法时,教师应该综合考虑学科性质、教学内容、学生特点等因素,并结合自己的教学经验选择适合的教学方法。
五、教学手段准备为了有效地实施教学计划,教师需要准备好教学手段。
教学手段可以是教具、多媒体设备、实验器材等,也可以是教学课件、教学设计等教学资源。
教师需要提前安排时间和精力,保证教学手段的充分准备。
六、教学环境营造教学环境是教师进行教学活动的重要条件之一。
为了营造良好的教学环境,教师可以调整教室的布置、选择合适的教学工具和资源,以及确保教学设备的正常运转等。
通过良好的教学环境,可以更好地促进学生的学习积极性和学习效果。
七、教学策略运用教学策略是教师在教学过程中灵活运用各类教育手段和方法的总称。
在编制教学计划时,教师可以根据教学目标和学生的实际情况进行合理的教学策略选择。
比如,可以运用启发式教学法提高学生的思维能力,可以运用合作学习法培养学生的合作精神等。
八、教学评价方式教学评价是对教学过程和结果进行客观、全面评价的方式和方法。
在教学计划编制中,教师需要确定合适的教学评价方式。
可以通过考试、作业、实验报告、讨论等方式进行评价,也可以通过观察、记录、口头反馈等方式获取学生的学习情况。
教师教学计划的编制
教师教学计划的编制教师教学计划的编制是教师教学工作中不可忽视的一个重要环节。
一个好的教学计划能够有效地指导教师的教学活动,提高教学效果。
而一份完善的教学计划又需要具备哪些要素呢?本文将以编制教学计划的步骤、注意事项及优化方案等方面展开阐述。
一、确定教学目标编制教学计划的第一步是确定教学目标。
教学目标是课程的核心,它直接关系到教学的效果和学生的学习成果。
在确定教学目标时,需要考虑学科内容、学生的特点和学习水平,并结合教材的要求进行综合分析。
只有明确教学目标,教学计划才能有针对性和可操作性。
二、设计教学内容教学计划的第二步是设计教学内容。
教学内容的设计要准确把握教学目标,在教材的基础上进行合理筛选和组织,使之符合学生的认知水平和学科发展的要求。
同时,教师还可以根据学生的实际情况进行适当的调整和创新,提高教学内容的针对性和吸引力。
三、选择教学方法教学计划的第三步是选择教学方法。
教学方法是教学计划实施的重要手段,影响着教学效果和学生的学习兴趣。
在选择教学方法时,教师应根据教学目标、教学内容和学生的特点进行综合考虑,既要注意理论和实践的结合,又要注重启发式教学和讨论式教学的运用,以激发学生的主动学习和创造性思维。
四、安排教学时序教学计划的第四步是安排教学时序。
教学时序是教学过程的时间顺序和节奏把握,它关系到教师的教学组织能力和学生的学习效果。
在安排教学时序时,教师要合理安排每个教学环节的时间和顺序,注重课堂教学的连贯性和流程性,避免时间浪费和信息重复,提高教学效率。
五、确定教学评价教学计划的第五步是确定教学评价。
教学评价是教学计划的重要组成部分,能够反映教学目标的实现情况和学生的学习进度。
在确定教学评价时,教师要充分考虑教学目标的具体要求,选择适当的评价方式和工具,及时对学生的学习情况进行跟踪和反馈,以促进教学效果的提高。
六、注意教学资源教学计划的第六步是注意教学资源。
教学资源是教学计划实施的保障和支撑,它包括人力资源、物质资源和信息资源等多个方面。
教师教学计划编制流程详解
教师教学计划编制流程详解一、制定教学目标教学计划编制的首要任务是制定明确的教学目标。
教师需要根据学科特点、教材要求和学生需求,确定本次教学的具体目标,包括知识、能力和情感等方面的目标。
目标要具体、明确、可操作,以便指导后续教学活动。
二、分析学情在制定教学计划之前,教师要对学生的学情进行全面分析。
这包括学生的学习能力、学习水平、学习风格、兴趣爱好等。
通过了解学生的学情,教师可以有针对性地设计教学内容和教学方法,以提高教学效果。
三、确定教学内容基于学科知识体系和教材要求,教师需要确定本次教学的具体内容。
这包括教学的基本知识点、重点、难点以及相关的教学素材和教学资源。
教师可以结合教材、教学参考书和相关资料,确保教学内容的科学性和系统性。
四、设计教学活动在教学计划编制过程中,教师需要设计一系列教学活动,以达到教学目标。
教学活动可以包括教师讲授、学生讨论、小组合作、实验演示、课堂演示等形式,以提高学生的学习兴趣和参与度。
同时,教师还要注意教学活动的合理性和可操作性。
五、确定评价方式为了评价教学的效果,教师需要在教学计划中确定评价方式和评价指标。
评价方式可以包括课堂测试、作业评价、课堂表现评价等形式,评价指标可以包括知识掌握程度、能力提高情况、学习态度等方面的内容。
评价方式和评价指标要与教学目标相一致。
六、编写教学大纲在确定了教学目标、教学内容、教学活动和评价方式之后,教师可以编写教学大纲。
教学大纲是教学计划的核心部分,它包括教学目标、教学内容、教学活动、评价方式等方面的内容。
教学大纲要条理清晰、逻辑严谨,以便指导教学实施。
七、制定教学时序表为了合理安排教学时间,教师需要制定教学时序表。
教学时序表是教学计划的具体表现形式,它包括每个教学环节的具体时间安排和教学进度的控制。
教师可以根据教学大纲和实际情况,灵活调整教学时序表,保证教学的有序进行。
八、准备教学资源在教学计划编制过程中,教师要准备相应的教学资源。
这包括教材、教具、课件等教学资源,以及相关的多媒体设备和实验器材。
教师教学计划编制方法简述
教师教学计划编制方法简述一、引言编制教学计划是每位教师在教学过程中非常重要的一项工作。
一个好的教学计划可以帮助教师合理安排教学内容和教学活动,提高教学效果。
本文将简述教师教学计划编制的方法。
二、明确教学目标在编制教学计划之前,教师首先要明确教学目标。
教学目标是教师希望学生在特定课程或教学阶段获得的知识、能力和素养。
教师可以根据教学大纲和学生的学习需求来确定教学目标,确保教学计划与教学目标相一致。
三、分析学生需求了解学生的需求是编制教学计划的重要依据。
教师可以通过调查问卷、面谈等方式了解学生的学习特点、兴趣爱好、学习习惯等,然后根据这些信息设计与学生需求相匹配的教学内容和教学活动,提高学生的学习积极性和参与度。
四、确定教学内容根据教学目标和学生需求,教师可以确定教学内容。
教学内容应该既符合学科知识体系,又贴近学生的生活实际和兴趣爱好。
在确定教学内容时,教师需要根据学生的认知水平和学习能力来合理选择和安排教学内容,确保教学内容的连贯性和适应性。
五、制定教学步骤教学步骤是教师按照一定的教学顺序和方法将教学内容有机地组织起来的过程。
教师可以根据教学内容的难易程度和逻辑关系来制定教学步骤,确保教学过程的连续性和完整性。
在制定教学步骤时,教师还需要考虑学生的学习节奏和接受能力,以便更好地引导学生完成学习任务。
六、选择教学方法选择适合的教学方法可以提高教学效果。
教师可以根据教学内容和学生需求来选择合适的教学方法,如讲授法、讨论法、实验法、案例分析法等。
不同的教学方法具有不同的优劣势,教师应根据教学目标和学生特点,合理选择和灵活运用教学方法。
七、设计教学活动教学活动是教师在教学过程中组织学生参与的具体活动。
教师可以根据教学内容和教学方法来设计教学活动,如小组讨论、实验操作、角色扮演等。
教师可以设置一些富有挑战性和启发性的教学活动,激发学生的学习兴趣和学习动力。
八、设置评价方式评价方式是教师用来评估学生学习成果和教学效果的方法。
学校教学计划编制
学校教学计划编制教学计划是学校教学工作的重要组成部分,对于学校教育教学的顺利进行至关重要。
编制一份科学合理的教学计划,既要符合教育教学的要求,又要考虑到学生的实际情况,下面将从多个方面展开回答。
一、确定教学目标教学计划编制的首要任务是确定教学目标。
教师应根据学校教育部门颁布的教育教学大纲,结合学生实际情况和发展需求,明确每门课程的核心素养和能力培养目标。
通过设定明确的目标,可以为后续的教学活动提供方向和基础。
二、分析学生需求教师在编制教学计划时,还应综合分析学生的需求。
这包括学生的年龄、兴趣、学习能力等方面。
通过了解学生的需求,教师可以针对性地设计适合学生的教学内容,激发学生的学习兴趣,提高学习效果。
三、制定教学内容教学计划编制的关键环节是制定教学内容。
教师应根据教学目标和学生需求,选择合适的教材和教学资源,设计教学内容和课程设置。
在制定教学内容时,要注重培养学生的核心素养和综合能力,涵盖基础知识、学科知识和实践能力的培养。
四、确定教学方法为了促进学生的学习效果,教师在编制教学计划时还应确定教学方法。
教学方法应根据学生的特点和课程内容来选择,可以包括讲授、讨论、实验、实践等多种形式。
同时,教学方法也要多样化,培养学生的批判思维和创新意识。
五、安排教学进度教学计划编制要合理安排教学进度。
教师应根据课程的难易程度、学生的学习速度和学期的分配等因素,确定每堂课的授课时间和进度。
合理的安排可以避免教学进度的过快或过慢,保证教学任务的完成和学习效果的提高。
六、设计评价方式教学计划编制还需要考虑评价方式的设计。
教师应明确评价目标和标准,选择合适的评价方法和工具,定期对学生的学习情况进行评估。
评价结果可以为学生提供正面反馈和改进建议,同时也为教师的教学改进提供依据。
七、整合跨学科资源为了提高教学质量和丰富教学内容,教师在编制教学计划时还应整合跨学科资源。
可以与其他学科教师进行合作,开展跨学科教学活动。
通过整合资源,可以增加学生的学习兴趣和合作能力,促进跨学科知识的综合应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教学计划编制问题实现提示可设学期总数不超过12,课程总数不超过100。
如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。
应建立内部课程序号与课程号之间的对应关系。
#include<string.h>#include<stdio.h>#include<stdlib.h>#define null 0#define MAXNODE 64 //最大课程个数typedef struct{char c[3];}cid; //课程号typedef struct Course{cid id[3]; //课程号char name[30]; //课程名float xf; //学分}Course; ////////////////////////////////////////////////课程typedef struct PreCourse{int adjvex; //课程在数组中的下标struct PreCourse *pre; //指向下一先修的课程节点}PreCourse;/////////////////////////////////////////////////先修的课程节点typedef struct{Course course;//课程PreCourse *firstnext; //指向第一个先修的课程节点}CourseNode;////////////////////////////////////////////////////////////课程节点typedef struct{CourseNode courses[MAXNODE]; //邻接表int xqs;//学期总数int num; //课程的数目float xfsx;/////学分上限}AlGraph;///////////////////////////////////////////////////////////////课程图typedef struct{int data[MAXNODE];//队中元素int f,r;//队头r 队尾f}queue;int IsCricle=0;//判断是否环1表示是0表示不是int jxq;//用于计算学期的/////////////////////////////////////////////////////////////////////////void queueinit(queue *q)///////////////队初始化{q->f=q->r=0;}void queuein(queue *q,int x)//入队{if((q->r+1)%MAXNODE==q->f){printf("队满\n");exit(0);}q->r=(q->r+1)%MAXNODE;q->data[q->r]=x;}int queueout(queue *q)//出队{if(q->f==q->r){printf("队空\n");exit(0);}q->f=(q->f+1)%MAXNODE;return q->data[q->f];}int queueempty(queue *q)///////////////队判空1为空{if(q->f==q->r)return 1;else return 0;}void creatpre(AlGraph *CGraph)///////////////建立先修关系{system("cls");//用来清屏int choice;fflush(stdin);/////////////////////////////////////////////清空输入流int i,j,n;//////临时变量PreCourse *p,*q;//////临时变printf("\n建立先修关系:\n");printf("\n请输入每一门课程号的编号:");for(i=0;i<CGraph->num;i++){if(i%4==0)printf("\n");printf("%d) ",i+1);printf("%s\t",CGraph->courses[i].course.id);}printf("\n请根据以上的编号,输入每一门课程的先修课程(输入0 表示没有或结束):\n");for(i=0;i<CGraph->num;i++){printf("%s的先修课程:",CGraph->courses[i].course.id);scanf("%d",&j);n=0;while(j){while(j<1||j>CGraph->num||j==i+1){if(j==i+1)printf("先修课程号不能是本课程号");elseprintf("输入的先修课程号不在该专业开设的课程序列中");fflush(stdin);/////////////////////////////////////////////清空输入流printf("重新输入:");scanf("%d",&j);}p=(PreCourse *)malloc(sizeof(PreCourse));p->adjvex=j-1;p->pre=null;if(n==0){CGraph->courses[i].firstnext=p;q=CGraph->courses[i].firstnext;n++;}else{q->pre=p;q=p;n++;}scanf("%d",&j);}}printf(" 1)重新建立先修关系2)确定\n");printf("请选择:");scanf("%d",&choice);if(choice==1)creatpre(CGraph);jxq=0;}AlGraph input()//////////////////////////////////输入并建立课程图{AlGraph CGraph;int xqzs=0,kczs=0;////////////////学期总数:xqzs 专业共开设课程数:kczs int i,j;//////临时变量float xf,xfsx=0;//////临时变量xf 学分上限:xfsxprintf("教学计划编制\n\n");printf("输入参数:\n");printf("1、学期总数:");scanf("%d",&xqzs);CGraph.xqs=xqzs;printf("2、专业共开设课程数:");scanf("%d",&kczs);CGraph.num=kczs;///////////////////////////////////课程数printf("3、学分上限(每个学期的学分上限都一样):");scanf("%f",&xfsx);CGraph.xfsx=xfsx;printf("4、每门课的课程号(固定占3位的字母数字串)、课程名、学分:\n"); for(i=0;i<kczs;i++){j=0;fflush(stdin);/////////////////////////////////////////////清空输入流printf("课程号:");scanf("%s",CGraph.courses[i].course.id);fflush(stdin);/////////////////////////////////////////////清空输入流printf("课程名:");scanf("%s",CGraph.courses[i]);fflush(stdin);/////////////////////////////////////////////清空输入流printf("学分:");scanf("%f",&xf);fflush(stdin);/////////////////////////////////////////////清空输入流while(xf>xfsx||xf<=0){printf("本课程学分大于学期学分上限或小于等于零,请重新输入学分:");fflush(stdin);/////////////////////////////////////////////清空输入流scanf("%f",&xf);}CGraph.courses[i].course.xf=xf;CGraph.courses[i].firstnext=null;}creatpre(&CGraph);///////////////建立先修关系return CGraph;}void output(AlGraph CGraph)///////////////输出先修关系{int i,j,n;//////临时变量PreCourse *p;//////临时变量printf("先修关系如下:\n\n");printf("课程编号\t课程名称\t\t 先决条件\n");for(i=0;i<CGraph.num;i++){printf("%s\t\t%s\t\t",CGraph.courses[i].course.id,CGraph.courses[i].course.nam e);j=0;p=CGraph.courses[i].firstnext;while(p){n=p->adjvex;printf("%s ",CGraph.courses[n].course.id);p=p->pre;j++;}if(j==0)printf("无");printf("\n");}}void findoutdegree(AlGraph *CGraph,int outdegree[])/////////找出度数,即找出每一门课程的先修课数{int i;PreCourse *p;for(i=0;i<CGraph->num;i++){outdegree[i]=0;p=CGraph->courses[i].firstnext;while(p){outdegree[i]++;p=p->pre;}}}void judgingcricle(AlGraph *CGraph,queue *q2)////////判断是否有环{int outdegree[MAXNODE];/////////出度int i,m,j,pd=0;float xf=0;PreCourse *p;queue q;queueinit(&q);///////////////队初始化findoutdegree(CGraph,outdegree);/////////找出度for(i=0;i<CGraph->num;i++)if(outdegree[i]==0&&(xf+CGraph->courses[i].course.xf)<=CGraph->xfsx)///// ////出度为零的,并且学分还没达到学分上限的入队,即没有先修课的课程入队{queuein(&q,i);outdegree[i]--;xf+=CGraph->courses[i].course.xf;} m=0;xf=0;queuein(&q,-1);jxq++;while(1){i=queueout(&q);queuein(q2,i);if(i!=-1){m++;for(j=0;j<CGraph->num;j++)if(j!=i){if(outdegree[j]==0&&(xf+CGraph->courses[j].course.xf)<=CGraph->xfsx)//// /////将之前因学分上限受制的出度为零的入队,即没有先修课的课程入队{queuein(&q,j);outdegree[j]--;xf+=CGraph->courses[j].course.xf;}else{p=CGraph->courses[j].firstnext;while(p){if(p->adjvex==i){outdegree[j]--;if(outdegree[j]==0&&(xf+CGraph->courses[i].course.xf)<=CGraph->xfsx)///// ////出度为零的入队{queuein(&q,j);outdegree[j]--;pd=1;xf+=CGraph->courses[i].course.xf;}}p=p->pre;}}}}else{if(pd){pd=0;queuein(&q,-1);jxq++;xf=0;}else break;}}if(jxq>CGraph->xqs){printf("\n错误报告:\n在%d学期内是无法修完这些课程\n",CGraph->xqs);exit(0);}if(m<CGraph->num){printf("\n错误报告:\n");for(i=0;i<CGraph->num;i++)if(outdegree[i]>0)printf("%s ",CGraph->courses[i].course.id);printf("存在循环,因此课程安排不了\n");IsCricle=1;}}void layout1(AlGraph *CGraph,queue *q)////////////////编排1/////{printf("\n学生在各学期中的学习负担尽量均匀:\n\n");int i,j,xq=1,cxq=CGraph->xqs-jxq,ck[20];float xf,m=CGraph->num/CGraph->xqs*1.0f;//m是每学期要学的课程数queue q1=*q;////while(!queueempty(&q1)){for(i=0;i<20;i++)ck[i]=-1;for(i=0;i<m+1;i++){j=queueout(&q1);if(j==-1)break;ck[i]=j;}if(ck[0]!=-1){printf("\n第%d学期学:",xq++);xf=0;i=0;do{j=ck[i];printf(" %s ",CGraph->courses[j].course.id);i++;xf+=CGraph->courses[j].course.xf;}while(ck[i]!=-1);printf("获得学分是%.2f\n",xf);}}}void layout2(AlGraph *CGraph,queue *q)////////////////编排2{printf("\n课程尽可能地集中在前几个学期中:\n\n");int i,j,xq=1;float xf;printf("\n第%d学期学:",xq++);xf=0;queue q1=*q;////for(i=0;i<CGraph->num;){j=queueout(&q1);if(j!=-1){printf(" %s ",CGraph->courses[j].course.id);i++;xf+=CGraph->courses[j].course.xf;} else {printf("获得学分是%.2f\n第%d学期学:",xf,xq++);xf=0;} }while(xq<=CGraph->xqs){printf("获得学分是%.2f\n第%d学期学:无\t",xf,xq++);xf=0;}printf("获得学分是%.2f\n");}void main(){int choice;queue q;//用来存放已编排好的课程queueinit(&q);///////////////队初始化AlGraph CGraph;//课程图fflush(stdin);/////////////////////////////////////////////清空输入流CGraph=input();//输入并建立课程图system("cls");//用来清屏output(CGraph);///////////////输出先修关系printf("\n\n");fflush(stdin);/////////////////////////////////////////////清空输入流judgingcricle(&CGraph,&q);////////判断是否有环if(!IsCricle){printf("请选择编排策略:\n");printf("1.使学生在各学期中的学习负担尽量均匀;\n");printf("2.使课程尽可能地集中在前几个学期中。