好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

我的课程设计.doc

24页
  • 卖家[上传人]:M****1
  • 文档编号:498977753
  • 上传时间:2024-01-13
  • 文档格式:DOC
  • 文档大小:219KB
  • / 24 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 吉 首 大 学 信息科学与工程学院 数据结构课程设计 课程设计名称: 教学计划编制问题 专 业 班 级 : 10级 计科二班 学 生 姓 名 : 熊海燕 朱敏 刘思 学 号 : 20104042026/28/22 指 导 教 师 : 周铁老师 课程序设计时间: 2012.11.24-2012.12.05 前 言 《数据结构》是一门综合性较强的计算机软件、程序设计理论和技术相结合的重要基础课程它主要讨论抽象数据关系和算法在计算机中的表示与实现,涉及到的数据在计算机中的表示、组织和处理,以及相应结构上的算法设计和算法性能上的分析技术它所包含的知识与提倡的技术方法,无论对大家进一步学习计算机领域里的其他课程,还是对今后从事理论研究、应用开发及技术管理工作都起着重要的作用如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价通过学习《数据结构》这门理论性强、思维抽象、难度较大的课程后,大家就更深入透彻地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养了基本的、良好的程序设计技能,大家就能编制高效可靠的程序,更重要的也培养大家解决实际问题的能力,提高分析设计能力和编程能力,为大家后续课程的学习及实践也打下了良好的基础。

      因此,学校开设了《数据结构(C语言版)》,通过学习数据结构,大家对编程有了更多的了解,为了让大家将自己所学的知识应用到实际当中,学校开设了数据结构课程设计,通过这次课程设计大家可以更好地将C语言应用到实际当中,而且可以更好的掌握算法与数据结构,将数据结构和C语言有效的结合起来,使大家的编程能力得到更大的提高关键字:C语言 数据结构 目 录前 言 ------------------------------------------- 2一、课题内容和设计要求 -------------------------------- 41.1 课题内容 --------------------------------------- 41.2 设计要求 --------------------------------------- 4二、课题需求分析 -------------------------------------- 6三、课题实现模块设计 ---------------------------------- 63.1 程序模块设计 ----------------------------------- 63.2 函数的调用关系 --------------------------------- 7四、模块的功能实现 ------------------------------------ 74.1相关数据类型的定义 ------------------------------ 74.2主要函数的流程图 ------------------------------- 8五、程序调试 ---------------------------------------- 10 5.1 测试数据 ------------------------------------ 10 5.2 调试过程 ------------------------------------- 10六.程序设计总结 ----------------------------------- 13七、附录 -------------------------------------------- 157.1致谢 ----------------------------------------- 157.2参考书目 --------------------------------------- 157.3源程序清单 ------------------------------------- 15一、课程内容与要求1.1课题内容 [ 问题描述 ] 大学的每个专业都要制定教学计划。

      假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有每门课恰好占一个学期试在这样的前提下设计一个教学计划编制程序 [ 基本要求 ] (1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中3)若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中计划的表格格式自行设计1.2 设计要求(1)按照需求分析和内容要求实现每个模块的功能以及对输入输出的要求2)概要设计a、程序是由哪几个大模块构成,模块下又是由哪几个子程序组成,子程序与子程序、模块与模块之间的层次结构、调用关系以及功能的实现b、课题要求用的数据结构和数据,它们之间具有怎样的内部联系,数据该怎样存储,数据又该存在哪3)具体设计 a、采用C语言书实现整个程序 b、利用有向图的一个拓扑序列及其应用问题的算法实现程序,图的邻接表来存储相关数据。

      c、画出主函数的流程图和子程序间的调用关系图 (4)测试分析 a、应采用课题内容要求的数据,并且输出结果能很好的满足要求 b、输入数据是应注意其输入的格式 c、输入的数据应包括正确的输入、输出数据和错误的 输入、输出数据,以便对数据和模块的功能有很好的分析与调整 d、遇到问题应及时作出修改和调整 (5)后续工作 a、及时的总结设计中遇到的问题及解决的办法写下得到的经验教训和心得b、编制整个设计的目录,记录下大体流程正文后附带相关参考文件c、正文书写格式采用四号宋体字二、需求分析根据问题描述及要求,可知设计中需求定义先修关系的AOV网图中的顶点及弧边的结构体,在运行结果中将图的信息显示出来,利用先修关系将课程排序,最后解决问题输出每学期的课程1) 采用第二种策略:使课程尽可能地集中在前几学期中2) 根据教学计划中的课程及其关系和学分定义图的顶点和边的结构体3) 创建图CreateGraph():结合先修关系的AOV图,采用邻接表存储4) 菜单Output():显示代码所对应课程及课程的先修课程。

      5) 拓扑排序TopogicalSort():将课程排序后并决定出每学期所学课程6) 输出图G大的信息Display():将图的顶点和弧边输出三、课题实现模块设计3.1程序模块设计LocateVex(): 图的邻接表存储的基本操作CreateGraph(): 构造生成树Display(): 输出图的邻接矩阵FindInDegree(): 求顶点的入度InitStack(): 构造一个空栈StackEmpty(): 判断是否为空栈Pop(): 出栈Push(): 入栈ClearStack(): 清空栈Judge(): 判断课程号对应的课程序号TopologicalSort():输出G顶点的拓扑排序结果Output(): 图形输出函数3.2 函数的调用关系Void main( )TopologicalSort ( )Display ( )CreatGraph ( )Output ( )四、模块的功能实现 4.1相关数据类型的定义 a、程序的实现采用了C语言定义相关的数据类型。

      其中包括字符常量,整型,字符型,字符串型,typedef 定义的类型,结构体型,单链表节点类型,结构体数组 b、储存的数据为结构体类型数组,以及结构体单链表结点类型,例如:typedef struct、 ArcNodetypedef struct4.2 主要函数的流程图 Begin CreateGraph() Printf(“请输入教学计划的课程数:”) Scanf(“%d”,&(*G).vexnum)Printf(“先修关系的边数:”)Scanf(“%d”,&(G).arcnum)Printf(“输入%d课程号...”,(*G).vexnum,MAX_NAME) i++ i<(*G).vexnum Scanf(“%s”,(*G).vertices(i).data) (*G).vertices[i].firstarc=nulli++ Printf(“输入每条弧....”) k++k<(*G).arcnum Scanf(“%s%s”,...)i=LocateVex(*G,va)j=LocateVex(*G,vb)P=(ArcNode*)malloc(size...)p-->adjvex=jP-->info=null····++kReturn 0 End 五、程序调试5.1测试数据:准备典型的测试数据和测试方案,包括输入及输出结果。

      数据如下:学期总数:6; 学分上限:10; 该专业共开设课数:12 课程号:从C01到C12; 学分顺序:2,3,4,3,2,3,4,4,7,5,2,3 先修顺序:19421221011365788(其中C1~C12分别代表:程序设计基础、离散数学、数据结构、汇编语言、语言的设计和分析、计算机原理、编译原理、操作系统、高等数学、线性代数、普通物理、数值分析)5.2调试过程依照提示依次输入:学期总数、每学期的学分上限、教学计划的课程数、按拓扑排序所形成的课程纤秀关系的边数、输入课程的课程号、输入课程的学分值、输入每条弧的弧尾和弧头输出的结果如图:六、程序设计总结 在几天的共同努力中,我们这组在周。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.