概述
数据结构与算法课程设计报告--教学计划编制
数据结构与算法课程设计报告题目教学计划编制目录一、需求分析311系统概述3111研究背景3112研究意义及目的312具体分析4121功能需求分析4122运行环境4二、总体设计5三、数据储存结构的设计631采用邻接表的方式储存先修关系图632邻接表储存的代码实现6321数据结构设计6322AOV图的创建代码7四、功能实现算法设计941拓扑排序算法设计942获取各个顶点的入度算法设计1143分类型输出算法设计11五、程序代码12六、运行结果20七、课程设计总结22教学计划编制问题课程设计报告一、需求分析11系统概述111研究背景大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。112研究意义及目的具体说来,教学计划编制是以课程先修关系为基础,分析教学中的问题和需要,确定教学目标,建立解决问题的步骤,合理组合和安排各种教学要素,为优化教学效果而制定实施方案的系统的计划过程。由此可以看出,教学设计的过程实际上就是为教学活动制定蓝图的过程。通过教学设计,教师可以对教学活动的基本过程有个整体的把握,可以根据教学情境的需要和教育对象的特点确定合理的教学目标,选择适当的教学方法、教学策略,采用有效的教学手段,创设良好的教学环境,实施可行的评价方案,从而保证教学活动的顺利进行。另外,通过教学设计,教师还可以有效地掌握学生学习的初始状态和学习后的状态,从而及时调整教学策略、方法,采取必要的教学措施,为下一阶段的教学奠定良好基础。从这个意义上说,教学设计是教学活动得以顺利进行的基本保证。好的教学设计可以为教学活动提供科学的行动纲领,使教师在教学工作中事半功倍,取得良好的教学效果。忽视教学设计,则不仅难以取得好的教学效果,而且容易使教学走弯路,影响教学任务的完成。12具体分析121功能需求分析1输入参数包括学期总数,一学期的学分上限,每门课的课程号、学分和直接先修课的课程号。2允许用户指定下列两种编排策略之一一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。122运行环境本系统源代码是使用VISUALSTUDIO2015编写编制完成,在该平台上能够正常运行。生成通用的后对计算机的硬件需求很低,几乎日常使用的计算机都能够正常运行。输入课程号,课程学分输入课程先修关系输入学期数,学期学分上限二、总体设计在WIN32控制台下,显示出一个简易的界面,供用户选择所需要的功能。由用户输入课程号和课程学分,再根据提示输入先修关系,输入学期总数和学期学分上限,然后根据时间优先或平均分配排序出不同的方案。课程尽量集中前几个学期各学期负担均匀教学计划编制系统总体设计三、数据储存结构的设计31采用邻接表的方式储存先修关系图众多课程以及其先修关系组成在一起,刚好构成一个AOV网,对于这个AOV网,采取邻接表的方式储存。邻接表中,对图中每个顶点建立一个单链表,第I个单链表中的结点表示依附于顶点VI的边(对有向图是以顶点VI为尾的弧)。邻接表中的表结点和头结点结构表结点头节点图的邻接表举例32邻接表储存的代码实现321数据结构设计STRUCTCOURSE//应用于DATA,保存课程号和学分。依据课程号的先修关DATAFIRSTARCADJVEXNEXTARCINFO系和学分进行拓扑排序STRINGCOURSE_NOINTCREDITSTRUCTARCNODE//边/弧邻接表结点INTADJVEX//邻接点下标//INTWEIGHT//权值ARCNODENEXTARCSTRUCTVNODE//顶点COURSEDATA//数值域ARCNODEFIRSTARCCLASSALGRAPHPRIVATEVNODEVERTICESINTVEXNUM,ARCNUM//顶点数边数BOOLVISITED//用于判断是否访问过,遍历时使用322AOV图的创建代码INTLOCATEDVNODEVFORINTI0IVEXNUMARCNUMVERTICESNEWVNODEVEXNUMVISITEDNEWBOOLVEXNUMFORINTI0IVERTICESIDATACOURSE_NOCINVERTICESIDATACREDITSYSTEM“CLS“FORINTK0KV1DATACOURSE_NOV2DATACOURSE_NOIFILOCATEDV11COUTADJVEXJPNEXTARCVERTICESIFIRSTARCVERTICESIFIRSTARCP四、功能实现算法设计41拓扑排序算法设计对于有向图采用邻接表存储结构,并设置一个数组INDEGREE来保存图中各顶点的入度值。而为了方便选择入度为0的顶点,再设置一个队列来保存所有入度为0的顶点。而拓扑排序的方法而知,拓扑排序的关键问题是第二步,即如何删除一个顶点以及所有从它发出的弧。由于图是一种复杂的数据结构,频繁的进行删除操作势必会影响算法的效率,实际上,在输出一个顶点后,之所以要删除它以及所有从它发出的弧,是为了方便找到当前入度为0的顶点。在设计算法时,删除一个顶点以及所有从它发出的弧可用将它的所有邻接顶点的入度值减1来代替,而不是真正的在物理上删除它。拓扑排序算法的设计可用下面四个步骤来完成1、遍历整个图的邻接表求所有顶点的入度值。2、将入度为0的顶点入队。3、当队列不为空时,执行出队操作。出队的顶点必定是入队为0的顶点,输出他即可。然后将它的所有的邻接顶点的入度值减1,若到了零,则再将其入队。重复这个过程,直到队列为空为止。4、若已经输出的顶点个数等于图的顶点个数,则输出的是一个拓扑排序,否则,说明图中存在回路。拓扑排序算法设计遍历邻接表,求所有顶点的入度出度顶点的所有邻接顶点的入度1入队出队拓扑排序成功,正常输出入度0否是否队列为空是是出队个数顶点个数否该图存在回路,拓扑排序失败42获取各个顶点的入度算法设计获得所有顶点入度算法43分类型输出算法设计传入数组A保存入度从1遍历顶点遍历点下标1遍历点下标1遍历该定点的所有邻接顶点是是是否超出下标范围否否是否超出下标范围是当前顶点是是否是否为最后一个邻接顶点是否否个否该邻接顶点是否为当前操作点是遍历到下一个邻接顶点当前操作的顶点入度1五、程序代码INCLUDEINCLUDE//直接用系统封装的模板栈INCLUDE//系统封装的模板队列INCLUDEINCLUDEUSINGNAMESPACESTDSTRINGRESULTSTRUCTCOURSE//应用于DATA,保存课程号和学分。依据课程号的先修关系和学分进行拓扑排序输入学期数,学期学分上限各学期学习负担均匀课程集中到前几个学期课程数除以学期数均分按照学分累加判断STRINGCOURSE_NOINTCREDITSTRUCTARCNODE//边/弧邻接表结点INTADJVEX//邻接点下标//INTWEIGHT//权值ARCNODENEXTARCSTRUCTVNODE//顶点COURSEDATA//数值域ARCNODEFIRSTARCCLASSALGRAPHPRIVATEVNODEVERTICESINTVEXNUM,ARCNUM//顶点数边数BOOLVISITED//用于判断是否访问过,遍历时使用PUBLICALGRAPH//构造函数确定定点数和边的数量ALGRAPH//析构函数,释放邻接表中各边表结点的存储空间BOOLISEXITINTIINTLOCATEDVNODEVFORINTI0IVEXNUMARCNUMVERTICESNEWVNODEVEXNUMVISITEDNEWBOOLVEXNUMFORINTI0IVERTICESIDATACOURSE_NOCINVERTICESIDATACREDITSYSTEM“CLS“FORINTK0KV1DATACOURSE_NOV2DATACOURSE_NOIFILOCATEDV11COUTADJVEXJPNEXTARCVERTICESIFIRSTARCVERTICESIFIRSTARCPVOIDFINDINDEGREEINTINDEGREE//获取各个顶点的入度FORINTI0IADJVEXICOUNTPPNEXTARCINDEGREEICOUNTVOIDTOPOLOGICALSORTINTA//数组A获得拓扑排序结果的下标INTV,COUNT0,INDEGREEARCNODEPQUEUEQINDEGREENEWINTVEXNUMFINDINDEGREEINDEGREEFORV0VADJVEXIFINDEGREEPADJVEX0QPUSHPADJVEXPPNEXTARCIFCOUNTTERM_NUMHEST_SCOREINTICOUTISWITCHICASE1//学习负担尽量均匀。FSTREAMFILE1“GTEXTTXT“,IOSOUT||IOSAPPSYSTEM“CLS“INTX1FORINTM0MISYSTEM“CLS“SWITCHICASE1CREATALGRAPHFINAL_SORTBREAKCASE2BREAKINTMAINALGRAPHGGFIRSTSIGHTRETURN0六、运行结果1、进入主页面2输入课程号和学分3、输入先修关系4、输入学期数和学期学分上限5、输出计划编制七、课程设计总结通过本次课程设计,对图的概念有了一个新的认识,慢慢地体会到了其中的奥妙,图能够在计算机中存在,首先要捕捉他有哪些具体化、数字化的信息,比如说权值、顶点个数等,这也就说明了想要把生活中的信息转化到计算机中必须用数字来完整的构成一个信息库,而图的存在,又涉及到了顶点之间的联系。当AOV图建立完成,怎样把图按照联系的关系完整的遍历,是整个程序的核心内容。最终,按照教材的拓扑排序的方法做起了程序。但是排序完毕后怎么按照不同的规则输出又是一件费脑力的事儿,最后经过严密的思考还是想出了办法。在本课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大型程序的能力。培养了基本的、良好的程序设计技能以及合作能力。这次课程设计同样提高了我的综合运用所学知识的能力。数据结构是一门实践性很强的课程,上机实习是对学生全面综合素质进行训练的一种最基本的方法,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。上机实习一方面能使书本上的知识变“活”,起到深化理解和灵活掌握教学内容的目的另一方面,上机实习是对学生软件设计的综合能力的训练,包括问题分析,总体结构设计,程序设计基本技能和技巧的训练。此外,还有更重要的一点是机器是比任何教师更严厉的检查者。因此,在“数据结构”的学习过程中,必须严格按照老师的要求,主动地、积极地、认真地做好每一个实验,以不断提高自己的编程能力与专业素质。
最后
以上就是可爱煎蛋为你收集整理的数据结构计算机专业教学计划编制,数据结构与算法课程设计报告--教学计划编制...的全部内容,希望文章能够帮你解决数据结构计算机专业教学计划编制,数据结构与算法课程设计报告--教学计划编制...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复