数据结构与算法课程设计报告--教学计划编制

数据结构与算法课程设计报告题目教学计划编制目录一、需求分析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图建立完成,怎样把图按照联系的关系完整的遍历,是整个程序的核心内容。最终,按照教材的拓扑排序的方法做起了程序。但是排序完毕后怎么按照不同的规则输出又是一件费脑力的事儿,最后经过严密的思考还是想出了办法。在本课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写大型程序的能力。培养了基本的、良好的程序设计技能以及合作能力。这次课程设计同样提高了我的综合运用所学知识的能力。数据结构是一门实践性很强的课程,上机实习是对学生全面综合素质进行训练的一种最基本的方法,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。上机实习一方面能使书本上的知识变“活”,起到深化理解和灵活掌握教学内容的目的另一方面,上机实习是对学生软件设计的综合能力的训练,包括问题分析,总体结构设计,程序设计基本技能和技巧的训练。此外,还有更重要的一点是机器是比任何教师更严厉的检查者。因此,在“数据结构”的学习过程中,必须严格按照老师的要求,主动地、积极地、认真地做好每一个实验,以不断提高自己的编程能力与专业素质。

数据结构计算机专业教学计划编制,数据结构与算法课程设计报告--教学计划编制...相关推荐

  1. 数据结构c语言程序设计报告,数据结构与算法课程设计报告模版.doc

    数据结构与算法课程设计报告模版.doc 数据结构与算法课程设计报告题 目本科生导师制问题与家族关系查询系统院 (系) 信息科学与工程 专业班级 计算机应用技术1301班 学生姓名 顾 泉 学 号 20 ...

  2. 计算机组成原理源码,计算机组成原理源码两位乘课程设计报告.docx

    PAGE 沈阳航空航天大学 计算机组成原理课程设计报告 院系 计算机学院 专 业 题目 定点原码两位乘法程序的设计与实现 班级 姓 名 学号 指导教师 以下内容由指导教师填写 序号 评价项目 评分 满 ...

  3. 成贤学院计算机组成原理,东南大学成贤学院计算机硬件课程设计报告.doc

    东南大学成贤学院计算机硬件课程设计报告 计算机硬件课程设计 设计报告 学号 姓名:王宇 学号 姓名:杜冰 2015年10月29日一.课题名称: 微程序控制模型计算机的设计 二.实验目的: 1.运用&q ...

  4. 计算机信息管理是学什么课程设计,毕业论文计算机专业学生信息管理系统(数据库课程设计)...

    毕业论文计算机专业学生信息管理系统(数据库课程设计) (70页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 兰州石化职业技术学院毕业设计( ...

  5. 成贤学院计算机组成原理,东南大学成贤学院计算机硬件课程设计报告解读.doc...

    计算机硬件课程设计 设计报告 学号 姓名:王宇 学号 姓名:杜冰 2015年10月29日一.课题名称: 微程序控制模型计算机的设计 二.实验目的: 1.运用"计算机组成原理"和&q ...

  6. 数据结构与算法 课程设计报告——学生信息管理系统

    一.概述 1.开发背景 使用计算机对学生信息进行管理,拥有手工管理所无法比拟的优点.例如:检索迅速.查找方便.可靠性高.存储量大.成本低等.这些优点能够极大地提高学生信息的效率,也是管理科学化.正规化 ...

  7. 数据结构与算法——课程设计报告(全国交通咨询模拟)

    C++ 全国交通咨询模拟 源文件点击此处下载⏬ 1 要求 [问题描述] 全国交通咨询模拟** 处于对不同目的的旅客对交通工具有不同的要求.例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客 ...

  8. 统考计算机2010年版,2010年计算机专业统考试题数据结构

    <2010年计算机专业统考试题数据结构>由会员分享,可在线阅读,更多相关<2010年计算机专业统考试题数据结构(23页珍藏版)>请在人人文库网上搜索. 1.第七章,图,基本内容 ...

  9. 数据结构java教学计划编排_数据结构课程设计_教学计划编制问题

    数据结构课程设计_教学计划编制问题 (教学计划编制问题)目 录1.需求分析 -------.3-52.概要设计 -------.6-83.详细设计 ------ 8-134.调试分析 ------ 1 ...

最新文章

  1. 五一到底去哪玩?哪个景点人少又好玩?手把手教你玩Python爬虫
  2. 【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式
  3. Oracle SQL语句大全(三)
  4. 使用 matlab 数字图像处理(七)—— 频率域处理
  5. 传世经典书丛-UNIX编程艺术
  6. python mpi4py 读取json_mpi4py 点到点通信总结
  7. html5 json.stringify,JSON.stringify()妙用
  8. 空号筛选接口的应用场景
  9. 机器学习之线性回归(机器学习基石)
  10. 圆柱壳matlab,[matlab遗传算法工具箱论文]基于遗传算法和BP神经网络的圆柱壳大...
  11. 正大国际:期货日内波段交易
  12. 解决Page index must not be less than zero问题
  13. python一行输入n个数据
  14. 大数据决策的误区案例之一
  15. 运动耳机什么牌子好、这五款是最值得推荐的运动耳机
  16. 希腊字母及对应的英文
  17. 写bug的日常——KeyError错误原因
  18. Python之数据挖掘实践--scikit learn库介绍和下载、实践、采坑
  19. java查询日期类的表,JAVA菜鸟入门篇 - 时间处理相关类实例:打印该月日期表 (29)...
  20. 【解决】移动用户如何使用APP自行取消全国亲情网业务

热门文章

  1. 油田信息化:通往智慧之路(1.3-智慧油田在全球的实践)
  2. 人工智能在fpga的具体应用_FPGA与人工智能浅谈
  3. 基于php+MySQL的网络精品课程教学平台
  4. 创建第一个iOS程序
  5. 关于如何查询一个期刊是否被SCI或其他机构收录
  6. Base64编码的原理
  7. 单排——六级听力训练
  8. 百度搜索结果如何屏蔽百家号内容
  9. [SECCON CTF 2016 Quals] Chat 分析与思考
  10. 疫情之下,墙布窗帘业1800万的自救之路