教学计划编制问题课程设计数据结构
教学计划编制问题_数据结构课程设计报告_湖南工程学院

课程设计报告课程名称数据结构课程设计课题名称教学计划编制问题专业网络工程班级 0901 学号 2009031201XX姓名指导教师长松华光杰君2011年 7 月 15 日工程学院课程设计任务书课程名称数据结构课程设计课题教学计划编制问题专业班级网络工程0901 学生 X X学号 2009031201XX 指导老师长松华光杰君审批任务书下达日期: 2011 年 6 月 26 日任务完成日期:2011 年 7 月 15 日一、设计容与设计要求1.设计容:1)问题描述大学的每个专业都要制订教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
试在这样的前提下设计一个教学计划编制程序。
2)基本要求a.输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。
b.允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。
c.若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。
计划的表格格式自行设计。
3)测试数据学期总数:6;学分上限:10;该专业共开设课数:12课程号:从C01到C12;学分顺序:2,3,4,3,2,3,4,4,7,5,2,3。
先修关系如下图:4)实现提示可设学期总数不超过12,课程总数不超过100。
如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。
应建立部课程号与课程号之间的对应关系。
2.设计要求:●课程设计报告规1)需求分析a.程序的功能。
b.输入输出的要求。
2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。
数据结构课程设计(5篇)

数据结构课程设计(5篇)第一篇:数据结构课程设计课程设计说明书设计名称:数据结构课程设计题目:设计五:二叉树的相关操作学生姓名:专业:计算机科学与技术班级:学号:指导教师:日期: 2012 年 3 月 5 日课程设计任务书计算机科学与技术专业年级班一、设计题目设计五二叉树的相关操作二、主要内容建立二叉树,并对树进行相关操作。
三、具体要求1)利用完全二叉树的性质建立一棵二叉树。
(层数不小于4层)2)统计树叶子结点的个数。
3)求二叉树的深度。
4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。
四、进度安排依照教学计划,课程设计时间为:2周。
本设计要求按照软件工程的基本过程完成设计。
建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。
三个阶段时间分配的大概比例是:35: 45: 20。
五、完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。
其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:1、课程设计的基本思想,系统的总功能和各子模块的功能说明;2、课程设计有关算法的描述,并画出有关算法流程图;3、源程序中核心代码的说明。
4、本课程设计的个人总结,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。
5、源代码要求在关键的位置有注释,增加程序的可读性。
程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。
数据结构实验 教学计划编制问题(共6篇)

数据结构实验教学计划编制问题(共6篇)第1篇:数据结构实验报告十—教学计划编制问题问题描述:若用有向网表示教学计划,其中顶点表示某门课程,有向边表示课程之间的先修关系(如果A课程是B课程的先修课程,那么A到B之间有一条有向边从A 指向B)。
试设计一个教学计划编制程序,获取一个不冲突的线性的课程教学流程。
(课程线性排列,每门课上课时其先修课程已经被安排)。
基本要求:(1)输入参数:课程总数,每门课的课程号(固定占3位的字母数字串)和直接先修课的课程号。
(2)若根据输入条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。
一、需求分析:本程序需要基于图的基本操作来实现二、概要设计:抽象数据类型:为实现上述功能需建立一个结点类,线性表类,图类。
算法的基本思想:1、图的构建:建立一个结点类,类的元素有字符型变量用来存储字母,整形变量用来存储位置,该类型的指针,指向下一个元素。
建立一个线性表类,完成线性表的构建。
建立一个图类,完成图的信息的读取,(如有n个点,则建立n个线性表,将每个结点与其指向的结点组成一个线性表,并记录线性表的长度)。
2、Topsort算法:先计算每个点的入度,保存在数组中。
找到第一个入度为0的点,将该点所连的各点的入度减一。
再在这些点中找入度为0 的点。
如果找到,重复上述操作。
如果找不到,则跳出while循环,再搜索其他的点,看入度是否为0。
再重复上述操作,如果所有的入度为0的点都被寻找到,但个数少于输入顶点的个数,说明该图存在环。
程序的流程程序由三个模块组成:输入模块:读入图的信息(顶点和边,用线性表进行存储)。
处理模块:topsort算法。
输出模块:将结果输出。
三、详细设计算法的具体步骤:cla Node{//结点类public: string node; int position; //位置 Node* next; bool visit; //是否被访问Node(){visit=false;next=NULL;position=0;node=‘ ‘;} }; cla Line{ //线性表类 public: int num; Node* head; Node* rear; Node* fence; Line(){num=0;head=fence=rear=new Node();} void insert(int v,string ch){ //插入元素Node* current=new Node();current->node=ch;current->position=v;fence->next=current;fence=current;num++; } }; cla Graph{ //图类 private: int numVertex; int numEdge; Line* line; public: Graph(int v,int e){numVertex=v;numEdge=e;line =new Line[v];} void pushVertex(){ //读入点string ch;for(int i=0;icoutcin>>ch;line[i].head->node=ch;line[i].head->position=i;} } void pushEdge(){ //读入边string ch1,ch2;int pos1,pos2;for(int i=0;i{coutcin>>ch1>>ch2;for(int j=0;jif(line[j].head->node==ch1)pos1=j; //找到该字母对应的位置if(line[j].head->node==ch2){pos2=line[j].head->position;break;}}line[pos1].insert(pos2,ch2);} } void topsort(){ //拓扑排序int i;int *d=new int[numVertex];for(i=0;id[i]=0; //数组初始化for(i=0;iNode* p=line[i].head;while(p->next!=NULL){d[p->next->position]++; //计算每个点的入度 p=p->next;}} int top=-1,m=0,j,k;for(i=0;iif(d[i]==0){d[i]=top; //找到第一个入度为0的点top=i;}while(top!=-1){ j=top; top=d[top];coutnodeNode* p=line[j].head;while(p->next!=NULL){k=p->next->position;d[k]--; //当起点被删除,时后面的点的入度-1if(d[k]==0){d[k]=top;top=k;}p=p->next;}}} coutcout>n>>m; Graph G(n,m); G.pushVertex(); G.pushEdge();G.topsort (); system(“pause”); return 0; }四、调试分析略。
数据结构教学设计教案

数据结构教学设计教案标题:数据结构教学设计教案引言概述:数据结构是计算机科学中非常重要的基础知识,对于学生来说,掌握数据结构是理解和应用计算机算法的基础。
因此,设计一份有效的数据结构教学教案对于教师来说至关重要。
本文将从教学目标、教学内容、教学方法、教学评价和教学资源等方面详细介绍如何设计一份数据结构教学教案。
一、教学目标1.1 确定教学目标:明确学生在学完数据结构课程后应该具备的知识和能力,例如掌握数据结构的基本概念、熟练运用各种数据结构解决问题等。
1.2 分解目标:将整体的教学目标分解为具体的学习目标,例如学生能够理解栈和队列的概念、能够实现二叉树的各种操作等。
1.3 设定评价标准:为每一个学习目标设定明确的评价标准,以便教师能够评估学生的学习情况并及时调整教学方法。
二、教学内容2.1 确定教学内容:根据教学目标确定教学内容,包括数据结构的基本概念、线性表、树、图等内容。
2.2 设计教学大纲:将教学内容按照逻辑顺序编排成教学大纲,确保学生能够系统地学习数据结构知识。
2.3 制定教学计划:根据教学大纲,设计每节课的具体内容和教学方法,确保教学进度和教学效果。
三、教学方法3.1 多媒体辅助教学:结合多媒体技术,利用PPT、视频等教学工具展示数据结构的概念和操作过程,提高学生的学习兴趣。
3.2 问题导向学习:通过提出实际问题,引导学生运用数据结构知识解决问题,培养学生的问题解决能力。
3.3 分组合作学习:组织学生分组合作进行数据结构的实践操作,促进学生之间的交流和合作,提高学习效果。
四、教学评价4.1 设计考核方式:制定不同形式的考核方式,如笔试、实践操作、课堂讨论等,全面评价学生对数据结构知识的掌握情况。
4.2 定期评估学生学习情况:定期进行学生学习情况的评估,及时发现学生的学习难点并采取相应的教学措施。
4.3 提供反馈:赋予学生及时的学习反馈,鼓励他们继续努力学习数据结构知识,匡助他们提高学习效果。
《教学计划编制问题》数据结构课程设计说明书

华北科技学院数据结构课程设计说明书班级计算B121小组成员: 成绩:小组成员: 成绩:小组成员: 成绩:设计题目: 教学计划编制问题设计时间: 2014.6.23 至2014.6.27指导教师:评语:评阅教师: _____________________________________目录设计总说明 0第1章绪论 (1)第2章教学计划编制问题陈述及需求分析 (2)2.1教学计划编制问题陈述 (2)2.2功能需求分析 (2)第3章系统设计 (3)3.1总体设计 (3)3.2主要模块简介 (5)第4章详细设计 (6)4.1数据结构 (6)4.3设计说明 (8)4.4算法说明 (8)第5章编码与调试 (12)5.1教学计划编制问题实例 (12)5.2程序运行结果 (14)第6章总结 (18)参考文献 (19)附录源程序 (20)教学计划编制问题设计总说明根据任务要求及对实际情况的了解,可知设计中需要定义先修关系的AOV网图中的顶点及弧边的结构体,采用邻接表存储结构,利用栈作辅助结构,在运行结果中将图的信息显示出来,利用先修关系将课程排序,最后解决问题——输出每学期的课程。
整个系统从符合操作简便、界面简洁、灵活、实用、安全的要求出发,完成教学计划编制问题的全过程,包括创建三个数据结构(邻接表存储结构、栈、拓扑排序)、数据的处理与计算、数据的分析、结果的输出。
本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。
关键词:教学计划编制问题;数据结构;邻接表存储结构;栈;拓扑排序第1章绪论数据结构是研究数据元素之间的逻辑关系的一门课程,以及数据元素及其关系在计算机中的存储表示和对这些数据所施加的运算。
该课程设计的目的是通过课程设计的综合训练培养分析和编程等实际动手能力,系统掌握数据结构这门课程的主要内容。
本次课程设计的内容是教学计划编制问题,邻接表是图的一种链式存储结构。
《数据结构》课程教案

《数据结构》课程教案一、引言数据结构是计算机科学中非常重要的一门课程,它涉及到对数据的组织、存储和访问方法的研究。
数据结构的学习能够帮助学生建立起对计算机中数据处理的基本概念和方法的理解,并培养学生分析和解决实际问题的能力。
本教案旨在为《数据结构》课程提供一套系统的教学计划,以确保学生能够全面掌握该学科的知识和技能。
二、教学目标本课程的主要教学目标如下:1. 掌握常见的数据结构,包括线性表、栈、队列、树、图等,并理解它们的基本概念与特点;2. 理解各种数据结构之间的联系与区别,能够根据问题需求选择合适的数据结构;3. 学习并掌握常用的数据结构算法,如查找、排序等;4. 培养学生分析和解决实际问题的能力,提高编程实践的能力;5. 增强学生的团队合作与沟通能力,通过小组项目实践提升学生能力。
三、教学内容与安排本课程的教学内容将按照以下顺序进行讲解和实践操作:第一章:绪论1. 数据结构的基本概念与作用;2. 学习数据结构的意义与价值;3. 课程的教学方法和学习要求。
第二章:线性表1. 线性表的定义与分类;2. 线性表的顺序存储结构与链式存储结构;3. 线性表的基本运算和实例分析。
第三章:栈与队列1. 栈的定义与基本操作;2. 栈的应用场景与实例分析;3. 队列的定义与基本操作;4. 队列的应用场景与实例分析。
第四章:树与二叉树1. 树的定义与基本术语;2. 二叉树的定义与性质;3. 二叉树的遍历方法与实例分析;4. 哈夫曼树的构建与应用。
第五章:图1. 图的定义与基本术语;2. 图的存储方式与基本操作;3. 图的遍历算法与实例分析;4. 最短路径算法与实例分析。
第六章:查找算法1. 顺序查找与二分查找;2. 哈希查找的原理与实现方法。
第七章:排序算法1. 冒泡排序与插入排序;2. 快速排序与归并排序;3. 堆排序与希尔排序。
第八章:课程总结与展望1. 对整个课程内容的回顾;2. 对数据结构的进一步学习与应用的展望;3. 学生反馈与教师建议。
《数据结构》课程设计报告

《数据结构》课程设计报告一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中数据结构的基本概念、原理及实现方法,培养其运用数据结构解决实际问题的能力。
本课程目标如下:1. 知识目标:(1)理解数据结构的基本概念,包括线性表、栈、队列、串、数组、树、图等;(2)掌握各类数据结构的存储表示和实现方法;(3)了解常见算法的时间复杂度和空间复杂度分析;(4)掌握排序和查找算法的基本原理和实现。
2. 技能目标:(1)能够运用所学数据结构解决实际问题,如实现字符串匹配、图的遍历等;(2)具备分析算法性能的能力,能够根据实际问题选择合适的算法和数据结构;(3)具备一定的编程能力,能够用编程语言实现各类数据结构和算法。
3. 情感态度价值观目标:(1)培养学生对计算机科学的兴趣,激发其探索精神;(2)培养学生团队合作意识,提高沟通与协作能力;(3)培养学生面对问题勇于挑战、善于分析、解决问题的能力;(4)引导学生认识到数据结构在计算机科学中的重要地位,激发其学习后续课程的兴趣。
本课程针对高年级学生,课程性质为专业核心课。
结合学生特点,课程目标注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。
在教学过程中,教师需关注学生的个体差异,因材施教,确保课程目标的达成。
通过本课程的学习,学生将具备扎实的数据结构基础,为后续相关课程学习和职业发展奠定基础。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、串、数组、树、图等;教学大纲:第1章 数据结构概述,第2章 线性表,第3章 栈和队列,第4章 串。
2. 数据结构的存储表示和实现方法:教学大纲:第5章 数组和广义表,第6章 树和二叉树,第7章 图。
3. 常见算法的时间复杂度和空间复杂度分析:教学大纲:第8章 算法分析基础。
4. 排序和查找算法:教学大纲:第9章 排序,第10章 查找。
教学内容安排和进度如下:1. 第1-4章,共计12课时,了解基本概念,学会使用线性表、栈、队列等解决简单问题;2. 第5-7章,共计18课时,学习数据结构的存储表示和实现方法,掌握树、图等复杂结构;3. 第8章,共计6课时,学习算法分析基础,能对常见算法进行时间复杂度和空间复杂度分析;4. 第9-10章,共计12课时,学习排序和查找算法,掌握各类算法的实现和应用。
教学计划编制问题数据结构课程设计

教学计划编制问题数据结构课程设计前言数据结构》是一门综合性较强的计算机软件、程序设计理论和技术相结合的重要基础课程。
它主要讨论抽象数据关系和算法在计算机中的表示与实现,涉及到的数据在计算机中的表示、组织和处理,以及相应结构上的算法设计和算法性能上的分析技术。
这门课程所包含的知识和提倡的技术方法对于进一步研究计算机领域里的其他课程、从事理论研究、应用开发及技术管理工作都起着重要的作用。
通过研究《数据结构》这门理论性强、思维抽象、难度较大的课程,学生们可以更深入透彻地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,提高分析设计能力和编程能力,为后续课程的研究及实践打下良好的基础。
为了让学生们将所学的知识应用到实际当中,学校开设了《数据结构(C语言版)》课程。
通过研究数据结构,学生们可以对编程有更多的了解。
为了更好地将C语言应用到实际当中,学校开设了数据结构课程设计。
通过这次课程设计,学生们可以更好地掌握算法与数据结构,将数据结构和C语言有效地结合起来,提高编程能力。
关键字:C语言、数据结构目录本文是一篇关于《高级语言程序设计》课程设计的报告。
报告主要涉及课题内容和设计要求、需求分析、实现模块设计、模块功能实现、程序调试和总结等方面的内容。
1.2设计要求本课程设计要求学生使用高级语言设计一个程序,实现特定功能。
具体要求包括程序要求具有较高的实用性和可扩展性,代码规范,注释清晰等。
二、课题需求分析在进行课题设计前,我们首先对需求进行了分析。
通过分析,我们确定了程序的功能和实现方式,并对程序进行了初步的设计。
三、课题实现模块设计为了方便程序的开发和维护,我们将程序分为不同的模块,并对每个模块进行了详细的设计。
其中,包括程序模块设计和函数的调用关系等。
四、模块的功能实现在设计完成后,我们开始对程序进行编写和调试。
在此过程中,我们定义了相关的数据类型,并绘制了主要函数的流程图,以确保程序的正确性和稳定性。
数据结构课设_教学计划编制问题

数据结构课程设计教学计划编制问题班级学号*******学生姓名周子健提交日期2016年1月19日成绩计算机与通信工程学院设计要求:针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。
1.1 课程设计目的本课程设计主要是针对计算机系本科课程,根据课程之间的依赖关系,制定课程安排计划,并满足各学期课程数目大致相同。
教学计划编制系统是基于C++的软件系统,通过建立AOV网,按学期对课程序号、课程代号、课程名称以及课程学分进行相应输出,并且保证用户实现自由选择专业选修课功能。
1.2 课程设计内容教学计划编制系统主要是处理课程之间的依赖关系。
表1.1列出了若干门计算机系本科课程,其中有些课程不要求先修课程,例如,C1是独立于其他课程的基础课,而有些课程却需要有先修课程,比如,学完程序设计语言C++和离散数学后才能学习数据结构。
具体情况如表1.1所示。
表1.1 课程以及课程之间的依赖关系先修课程规定了课程之间的依赖关系,这种关系可以用AOV网来表示,其中顶点表示课程,弧表示依赖关系,如图1.1所示。
图1.1 表1.1对应的AOV 网程序的主要功能是实现课程的排序,以满足同一学期所修的课程相互之间无依赖关系,并且已修完其所有先修课程。
另外,设置学分变量,控制每个学期的课程量基本均匀。
2 概要设计2.1 数据表示教学计划编制问题中,操作对象是课程。
课程之间的依赖关系用AOV 网表示, AOV 网的构造采用邻接表实现。
因此,本程序设计定义了两个类:课程类和邻接表类。
课程类(Lesson )添加了5个私有成员变量用来定义课程的5个属性:课程代号、课程名称、课程序号、课程学分以及是否被选择过的课程标记。
同时还定CCCCCCC义了8个成员函数,已实现相关的操作功能。
邻接表类(ALGraph)定义了2个整型成员变量和1个结构体数组来存放顶点数、边数和顶点表。
数据结构课程设计报告书教学计划编制问题

数据结构课程设计报告书教学计划编制问题题目:制定教学计划1.内容摘要摘要:首先利用拓扑排序对课程先后顺序进行分析,邻接表为主要存储结构,栈为主要辅助结构。
给出课程的先后关系,即AOV网,然后进行拓扑排序,但当有向图中存在环时,无法查找该图的一个拓扑排序。
当图中所有定点全部输出,表示对该图排序成功。
实现拓扑排序算法时,相应的建立邻接表存储AOV网。
为了避免重复检测入度为零的顶点,建立一个栈来对入度为零的点进行存放。
根据课程先后关系,对各个学期的课程进行拓扑排序,输出。
2.索引关键词关键词:邻接表存储,栈的应用,拓扑排序。
目录1.题目要求及设计要求------------------------------------------ 12.系统完成功能及功能框图----------------------------------- 2—43.核心算法及说明------------------------------------------ 5—214.运行及测试结论----------------------------------------- 22—235.参考资料-------------------------------------------------- 236.后记------------------------------------------------------- 23第一部分:课程设计题目要求1.1课程设计目的大学的每个专业都要制定教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
在这样的前提下设计一个教学计划编制程序。
1.2课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。
数据结构教学计划

数据结构教学计划篇一:数据结构教学计划编制软件学院课程设计报告书课程名称数据结构设计题目教学计划编制20XX年1月目录1设计时间............................................12设计目的............................................13设计任务 (14)设计内容............................................14.1需求分析.........................................14.2总体设计.........................................24.3详细设计.........................................64.4测试与分析......................................124.4.1测试.........................................................................124.4.2分析.........................................................................154.5附录...........................................165总结与展望..........................................26参考文献 (27)成绩评定 (28)123篇二:数据结构课程设计——教学计划编制摘要教学计划(课程计划)是课程设置的整体规划,它规定不同课程类型相互结构的方式,也规定了不同课程在管理学习方式的要求及其所占比例,同时,对学校的教学、生产劳动、课外活动等作出全面安排,具体规定了学校应设置的学科、课程开设的顺序及课时分配,并对学期、学年、假期进行划分。
数据结构教学计划编制问题课程设计

课程设计(论文)题目名称教学计划编制问题课程名称数据结构学生姓名杨满平学号**********系、专业信息工程系、2010级计算机科学与技术指导教师黄同成2011年12 月25 日摘要数据结构是计算机科学与技术专业的专业基础课,是一门十分重要的核心课程。
数据结构的知识为后续专业课程的学习提供必要的知识和技能准备,学好“数据结构”这门课程,对于学习计算机专业的其他课程,如操作系统、编译原理、数据库管理系统、软件工程、人工智能等都是十分有益的,而且所有的计算机系统软件和应用软件都要用到各种类型的数据结构。
因此,要想更好地运用计算机来解决实际问题,仅掌握几种计算机程序设计语言是难以应付众多复杂的课题的,要想有效地使用计算机、充分发挥计算机的性能,还必须学习和掌握好数据结构的有关知识。
例如本次程序设计题目大学的每个专业都要制订教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
试在这样的前提下设计一个教学计划编制程序AbstractData structures in computer science and technology professional courses, is a very important core curriculum. The data structure knowledge for the following courses to provide the knowledge and skills necessary to prepare, learn" data structure" of the course, for learning other computer science courses, such as operating system, compiler theory, database management system, software engineering, artificial intelligence, are very useful, and all of the computer system software and the application of software to use various types of data structure. Therefore, in order to better use the computer to solve practical problems, only to grasp some computer programming language is hard to cope with the many complex issues, in order to effectively use computers, give full play to the computer's performance, also must learn and master some knowledge about data structure.For example, the program design of University of each professional should develop teaching plans. The assumption that any profession has a fixed length, each school year with two semesters, each semester and the length of time equal to the credit limit are. Each professional courses are determined, and the creation of curriculum time arrangements must meet prevocational relations. Each course which is a pre-determined curriculum, can have any number of doors, there will be No. Each class just for a semester. Test this premise in the design of a teaching plan programming目录一、课题的主要功 (1)1.1程序的功能 (1)1.2.输入输出的要求 (1)1.3运行环境 (1)1.4开发工具 (1)二、概要设计 (2)2.1程序的模块组成 (2)2.2模块的层次结构及调用关系 (2)2.3模块的主要功能 (3)2.4数据结构和数据库结构 (3)三.主要功能的实现 (3)3.1采用C语言定义相关的数据类型。
教学计划编制问题课程设计数据结构

教学计划编制问题课程设计数据结构(总32页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--攀枝花学院本科毕业设计(论文)[教学计划编制问题]学生姓名:学生学号:院(系)年级专业:指导教师:助理指导教师:无二〇一一年六月攀枝花学院本科学生课程设计任务书注:任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表目录摘要 (4)一需求分析 (5)实验内容和实验目的 (5)设计要求 (5)理论与实践教学体系的关系 (5)二流程图设计 (6)三概要设计 (8)抽象数据类型图的定义 (8)主程序 (9)程序模块调用关系 (10)四详细设计 (10)头结点,表结点,邻接表的定义 (10)栈的定义 (11)主程序和其他算法 (11)五调试分析 (20)用户使用和说明 (20)测试数据 (22)测试结果 (23)实验过程中出现的问题及解决方法 (24)六实验分工 (24)七实验体会 (25)八参考文献 (26)摘要教学计划是学校保证教学质量和人才培养的关键,也是组织教学过程、安排教学过程、安排教学任务、确定教学编制的基本依据和课程安排的具体形式。
是稳定教学秩序、提高教学质量的重要保证。
从教学计划的设计、实施等方面,阐明了如何搞好教学管理,从而为提高教学质量提供保证。
随着教育改革的不断深入和社会发展的需要,原旧的教学计划在定位上的方向性偏差,已经不再适应社会的需求。
因此,应重视教学计划的改革和修订工作,以确保教育教学质量,提高教育教学水平。
教学计划编制中的思路:一是明确培养目标;二是注重学科设置的整体性、统一性和灵活性、全面性;三是与学分制改革有机结合.教学计划是高校实施常规教学活动的基本管理文档,由于传统的手工编制方式存在诸多弊端,开发基于Web应用程序形式的教学计划编制系统具有很好的应用价值。
使用C程序设计语言,研究开发教学计划编制系统Web应用系统。
关键词教学计划编制培养目标管理一需求分析实验内容和实验目的大学的每个专业都要编制教学计划。
教学计划编制数据结构课程设计报告模板

3、流程图(具体流程图见详细设计伪码流程)
4、目标测试
正确测试:
错误测试:
二、详细设计
1、运行环境:
(1)WINDOWS 7系统
(2)C-Free 5.0
2、开发工具:
C语言
3、涉及知识点:
(1)栈。用到有关栈的操作有初始化栈、判断栈是否为空、入栈和出栈。其中栈主要用来存放入度为零的顶点,即当前无先修关系能够编排的课程。
1、设计任务
教学计划编制问题(图的应用)
[问题描述]
大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,能够有任意多门,也能够没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。
1.调试过程中遇到的问题与解决方法·············································9
2.算法的时空分析·····························································9
3.改进思想···································································9
可设学期总数不超过12,课程总数不超过100。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。
2、功能模块图
CreateGraph():构造图
InitStack():构造一个空栈
StackEmpty():判断是否为空栈
《数据结构》课程设计计划书

《数据结构》课程设计计划书《数据结构》课程设计计划书班级:2012信计专业授课教师:马阿曼⼀、课程设计⽬的《数据结构》课程是计算机科学与技术专业的核⼼专业基础课。
本课程设计的⽬的是将数据结构理论和实践结合起来,锻练学⽣编写程序过程中的数据结构使⽤和分析、解决实际问题的能⼒。
1、使学⽣进⼀步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使⽤⽅法。
2、使学⽣掌握软件设计的基本内容和设计⽅法,并培养学⽣进⾏规范化软件设计的能⼒。
3、使学⽣掌握使⽤各种计算机资料和有关参考资料,提⾼学⽣进⾏程序设计的基本能⼒。
⼆、课程设计内容《数据结构》课程设计包含以下主要内容:1、查阅相关资料确定课题;2、课题所设计的数据结构设计、算法设计;3、编写代码并调试;4、完成课程设计报告;5、进⾏课设答辩。
三、设计地点及时间安排地点:瑞樟6-402时间:2014年6⽉3、4、5、6、7、8号四、课程设计报告的书写格式1、问题描述:描述要求编程解决的问题。
2、基本要求:给出程序要达到的具体的要求。
3、测试数据:设计测试数据,或具体给出测试数据。
要求测试数据能全⾯地测试所设计程序的功能。
4、算法思想:描述解决相应问题算法的设计思想。
5、模块划分:描述所设计程序的各个模块(即函数)功能。
6、数据结构:给出所使⽤的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。
7、算法设计分析:给出算法的设计分析和算法流程图。
8、源程序:给出所有源程序清单,要求程序有充分的注释语句,⾄少要注释每个函数参数的含义和函数返回值的含义。
9、测试情况:给出程序的测试情况,并分析运⾏结果。
10、收获及体会:写出此次课程设计过程中的收获及体会。
五、评分标准1、程序运⾏结果(30%)2、设计报告(30%)3、设计考勤,平时上机成绩,教师不定期检查(10%)4、学⽣根据⾃⼰设计报告对教师的提问可以熟练的解释(10%)5、设计课题的难易程度(20%)六、参考设计题⽬课程设计题⼀:学⽣成绩管理系统设计⽬的:1、掌握线性链表的建⽴。
数据结构课程设计——教学计划编制

摘要教学计划(课程计划)是课程设置的整体规划,它规定不同课程类型相互结构的方式,也规定了不同课程在管理学习方式的要求及其所占比例,同时,对学校的教学、生产劳动、课外活动等作出全面安排,具体规定了学校应设置的学科、课程开设的顺序及课时分配,并对学期、学年、假期进行划分。
根据一定的教育目的和培养目标制定的教学和教育工作的指导文件。
它决定着教学内容总的方向和总的结构,并对有关学校的教学、教育活动,生产劳动和课外活动校外活动等各方面作出全面安排,具体规定一定学校的学科设置、各门学科的教学顺序、教学时数以及各种活动等。
教学计划、教学大纲和教科书互相联系,共同反映教学内容。
近代以来,特别是在实行学科课程的条件下,教学计划主要是学科的计划,或只是学科表。
随着社会经济和科学技术的新发展,教育结构不断发生变革,现代教育和教学理论主张对教学计划的结构实行改革。
除了教学以外,生产劳动、科技活动、发展体力和增进健康的活动、艺术活动和社会活动等也应列入教学计划。
下面就利用对此进行程序设计,已达到预期的目的。
关键字:数据结构,教学计划编制,抽象数据类型,程序设计1. 需求分析根据课程之间的依赖关系制定课程安排计划,输入课程数及课程之间的关系。
需要利用代码实现排序,以及对各个学期课程安排进行排序并输出。
1.1问题描述大学的每个专业都要制定教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
试在这样的前提下设计一个教学计划编制程序。
1.2设计思路首先利用拓扑排序对课程先后顺序进行分析,邻接表位主要存储结构,栈为主要辅助结构,给出课程之间的先后关系比如AOV网,然后进行拓扑排序,但当又向图中存在环时,无法查找该图的一个拓扑排序,当图中的所有顶点全部输出,表示对该图排序成功,实现拓扑排序算法时,相应的建立邻接表存储AOV网,为了避免重复检测入度为零的顶点,建立一个栈来对入度为零的顶点进行存放。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
攀枝花学院本科毕业设计(论文)[教学计划编制问题]学生姓名:学生学号:院(系)年级专业:指导教师:助理指导教师:无二〇一一年六月攀枝花学院本科学生课程设计任务书注:任务书由指导教师填写。
目录摘要 (4)一需求分析 (5)1.1 实验内容和实验目的 (5)1.2设计要求 (5)1.3理论与实践教学体系的关系 (5)二流程图设计 (6)三概要设计 (8)3.1 抽象数据类型图的定义 (8)3.2主程序 (9)3.3程序模块调用关系 (10)四详细设计 (10)4.1头结点,表结点,邻接表的定义 (10)4.2 栈的定义 (11)4.3 主程序和其他算法 (11)五调试分析 (20)5.1 用户使用和说明 (20)5.2 测试数据 (22)5.3 测试结果 (23)5.4 实验过程中出现的问题及解决方法 (24)六实验分工 (24)七实验体会 (25)八参考文献 (26)摘要教学计划是学校保证教学质量和人才培养的关键,也是组织教学过程、安排教学过程、安排教学任务、确定教学编制的基本依据和课程安排的具体形式。
是稳定教学秩序、提高教学质量的重要保证。
从教学计划的设计、实施等方面,阐明了如何搞好教学管理,从而为提高教学质量提供保证。
随着教育改革的不断深入和社会发展的需要,原旧的教学计划在定位上的方向性偏差,已经不再适应社会的需求。
因此,应重视教学计划的改革和修订工作,以确保教育教学质量,提高教育教学水平。
教学计划编制中的思路:一是明确培养目标;二是注重学科设置的整体性、统一性和灵活性、全面性;三是与学分制改革有机结合.教学计划是高校实施常规教学活动的基本管理文档,由于传统的手工编制方式存在诸多弊端,开发基于Web应用程序形式的教学计划编制系统具有很好的应用价值。
使用C程序设计语言,研究开发教学计划编制系统Web应用系统。
关键词教学计划编制培养目标管理一需求分析1.1实验内容和实验目的大学的每个专业都要编制教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限都相等。
每个专业开设的课程都是确定的,而且课程的开设时间的安排必须满足先修关系。
每个课程的先修关系都是确定的,可以有任意多门,也可以没有。
每一门课程恰好一个学期。
试在这样的情况下设置一个教学计划编制程序。
在大学的某个专业中选取几个课程作为顶点,通过各门课的先修关系来构建个图,该图用邻接表来存储,邻接表的头结点存储每门课的信息.本程序的目的是为用户编排课程,根据用户输入的信息来编排出每学期要学的课程.1.2设计要求针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。
1.3理论与实践教学体系的关系理论教学体系和实践教学体系是培养职业能力的两个主导因素是相互联系的,要处理好两者关系。
基础理论教学要以应用为目的,以必需、够用为度,专业课教学要加强针对性和应用性。
实践教学要改变过分依附理论教学的状况,探索建立相对独立的实践教学体系,形成基本实践能力与操作技能,专业技术应用能力与专业技能,综合实践能力与综合技能有机结合的实践教学体系。
二概要设计2.1抽象数据类型图的定义ADT Graph{数据对象V:V是具有相同特性的数据元素的集合,称为顶点集.数据关系R:R={VR}VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在直接先修关系}基本操作P:void CreatGraph(ALGraph *);void FindInDegree(ALGraph , int * );void TopologicalSort_1(ALGraph G,int numterm,int maxcredit);void TopologicalSort_2(ALGraph G,int numterm,int maxcredit);}ADT Graph栈的定义:ADT Stack{数据对象:D={ai|ai∈ElemSet,i=1,2,…n,n>=0}数据关系:R1={﹤ai-1 ai﹥|ai-1,ai∈D,i=2,…,n}基本操作:void InitStack (SqStack *S);int StackEmpty(SqStack S);void Push(SqStack *S, int );int Pop(SqStack *S, int *e);}ADT Stack2.2主程序int main() //主函数{int numterm; //学期总数int uplcredit; //一个学期的学分上限int selectway;ALGraph G;printf("请输入学期总数:\n");scanf("%d",&numterm);printf("请输入一个学期的学分上限:\n");scanf("%d",&uplcredit);CreatGraph(&G);printf("请选择编排策略:1.课程尽可能集中到前几个学期;2.课程尽量均匀分布\n");scanf("%d",&selectway);if(selectway==1)TopologicalSort_1(G,numterm,uplcredit);if(selectway==2)TopologicalSort_2(G,numterm,uplcredit);system("pause");return 0;}三代码设计3.1头结点,表结点,邻接表的定义#define MAX_VERTEX_NUM 100 //最大课程总数typedef struct ArcNode{int adjvex;struct ArcNode *nextarc;}ArcNode;typedef struct VNode{char name[24]; //课程名int classid; //课程号int credit; //课程的学分int indegree; //该结点的入度int state; //该节点的状态ArcNode *firstarc; //指向第一条依附该顶点的弧的指针}VNode,AdjList[MAX_VEXTEX_NUM];typedef struct{AdjList vertices;int vexnum, arcnum;}ALGraph;邻接表的基本操作:void CreatGraph(ALGraph *);创建邻接表void FindInDegree(ALGraph , int * );求一个结点的入度void TopologicalSort_1(ALGraph G,int numterm,int maxcredit); 拓扑排序来编排课程void TopologicalSort_2(ALGraph G,int numterm,int maxcredit); 拓扑排序来编排课程3.2栈的定义#define STACk_INIT_SIZE 100 //存储空间的初时分配量#define STACKINCREMENT 10 //存储空间的分配增量typedef int ElemType;typedef struct{AdjList vertices;int vexnum, arcnum;}ALGraph;基本操作:void InitStack (SqStack *S);栈的初始化int StackEmpty(SqStack S);判断栈是否为空void Push(SqStack *S, int );入栈操作int Pop(SqStack *S, int *e);出栈操作3.3主程序和其他算法int main() //主函数{ int numterm; //学期总数int uplcredit; //一个学期的学分上限int selectway;ALGraph G;printf("请输入学期总数:\n");scanf("%d",&numterm);printf("请输入一个学期的学分上限:\n");scanf("%d",&uplcredit);CreatGraph(&G);printf("请选择编排策略:1.课程尽可能集中到前几个学期;2.课程尽量均匀分布\n");scanf("%d",&selectway);if(selectway==1)TopologicalSort_1(G,numterm,uplcredit);if(selectway==2)TopologicalSort_2(G,numterm,uplcredit);system("pause");return 0;}void CreatGraph(ALGraph *G)//构件图{ int i, m, n;ArcNode *p;printf("请输入需要编排课程总数:\n");scanf("%d",&G->vexnum);for( i=1;i<=G->vexnum;i++){printf("请输入课程名\n");scanf("%s",&G->vertices[i].name);printf("请输入课程号\n");scanf("%d",&G->vertices[i].classid);printf("请输入该课程的学分\n");scanf("%d",&G->vertices[i].credit);G->vertices[i].indegree=0;G->vertices [i].state=NOTSTUDY;G->vertices[i].firstarc=NULL;}printf("请输入课程先修关系总数:");scanf("%d",&G->arcnum);printf("请顺序输入每个课程先修关系(先修课程在前并以逗号作为间隔):\n");for (i = 1; i <= G->arcnum; i++){printf("\n请输入存在先修关系的两个课程的序号:");scanf("%d,%d",&n,&m);while (n < 0 || n > G->vexnum || m < 0 || m > G->vexnum){printf("输入的顶点序号不正确请重新输入:");scanf("%d,%d",&n,&m);}p = (ArcNode*)malloc(sizeof(ArcNode));if (p == NULL){printf("memory allocation failed,goodbey");exit(1);}p->adjvex = m;p->nextarc = G->vertices[n].firstarc;G->vertices[n].firstarc = p;}printf("\n建立的邻接表为:\n"); //输出建立好的邻接表for(i=1;i<=G->vexnum;i++){printf("%d:->",G->vertices[i].classid);for(p=G->vertices[i].firstarc;p!=NULL;p=p->nextarc)printf("%d->",p->adjvex);printf("NULL");printf("\n");}}void InitStack(SqStack *S){S->base=(int *)malloc(STACK_INIT_SIZE *sizeof(int));if (!S->base){printf("ERROR");exit(1);}S->top=S->base;S->stacksize=STACK_INIT_SIZE;}int StackEmpty(SqStack *S){if(S->top==S->base)return OK;elsereturn ERROR;}void Push(SqStack *S,int e){if(S->top - S->base >= S->stacksize){S->base = (int *) realloc (S->base , (S->stacksize + STACKINCREMENT) * sizeof(int));if(!S->base){printf("ERROR");exit(1);S->top = S->base + S->stacksize;S->stacksize += STACKINCREMENT;}*S->top++ = e;}int Pop(SqStack *S, int *e){if(S->top == S->base) exit(1);*e = * --S->top;return 0;}void FindInDegree(ALGraph G, int indegree[])//求图中各节点的入度{int i;for (i = 1; i <= G.vexnum; i++)indegree[i] = 0;for (i = 1; i <= G.vexnum; i++){while (G.vertices[i].firstarc)indegree[G.vertices[i].firstarc->adjvex]++;G.vertices[i].firstarc =G.vertices[i].firstarc->nextarc;}}}void TopologicalSort_1(ALGraph G,int numterm,int uplcredit){FILE *fp;fp=fopen("bianpai.txt","w");ArcNode *p;SqStack S;int indegree[M];//存放各节点的入度int i,j, k, m,n;int count; //课程编排数目计数器int sumcredit;//每个学期的课程学分累加器FindInDegree(G, indegree);for (i = 1; i <= G.vexnum; i++)G.vertices[i].indegree=indegree[i];InitStack(&S);count=0;k=0;while(count!=G.vexnum && k<=numterm){sumcredit=0;for(i=1;i<=G.vexnum;i++) //入度为零的节点入栈,即无先修的课程入栈if((G.vertices[i].indegree==0)&&(G.vertices[i] .state==NOTSTUDY)){Push(&S,i);G.vertices[i].state = STUDY;//避免入度为零节点重复入栈}if(!StackEmpty(&S)&&(sumcredit<=uplcredit)){k= k+1;printf("\n");printf("第%d个学期学得课程有:\n",k);sumcredit = 0;for(i=1;i<=G.vexnum;i++)//入度为零的节点入栈,即无先修的课程入栈if((G.vertices[i].indegree==0)&&(G.verti ces[i].state==NOTSTUDY))Push(&S,i);while((!StackEmpty(&S))&&(sumcredit<uplcredit))/ /栈非空&&学分总数小于学分上限{Pop(&S,&j);sumcredit = sumcredit +G.vertices[j].credit;if(sumcredit <= uplcredit){printf(" %s",G.vertices[j].name);fprintf(fp," %s",G.vertices[j].name);count++;for(p=G.vertices[j].firstarc;p;p=p ->nextarc)//对j号顶点每个邻接点的入度减一G.vertices[p->adjvex].in degree--;}else Push(&S,j);//将未输出的节点重新压入栈}}fprintf(fp,"\n");}printf("\n");if(count<G.vexnum)printf("\n课程编排出错\n");else{printf("\n课程编排成功\n");}fclose(fp);}void TopologicalSort_2(ALGraph G,int numterm,int uplcredit) {FILE *fp;fp=fopen("bianpai.txt","w");ArcNode *p;SqStack S;int indegree[M];int i,j, k, m,n;int maxnum;int sumnum;int count; //课程编排数目计数器int sumcredit;//每个学期的课程学分累加器FindInDegree(G, indegree);for (i = 1; i <= G.vexnum; i++)G.vertices[i].indegree = indegree[i];InitStack(&S);count=0;k=0;maxnum = G.vexnum/numterm+1;sumnum = 0;while(count!=G.vexnum && k<=numterm){for(i=1;i<=G.vexnum;i++)if((G.vertices[i].indegree==0)&&(G.v ertices[i].state==NOTSTUDY)){Push(&S,i);G.vertices[i].state = STUDY;}if(!StackEmpty(&S)&&(sumcredit<=uplcredit)&&(sum num<=maxnum)){k= k+1;printf("\n");printf("第%d个学期学得课程有:",k);sumcredit = 0;sumnum = 0;for(i=1;i<=G.vexnum;i++)//入度为零的节点入栈,即无先修的课程入栈if((G.vertices[i].indegre e==0)&&(G.vertices[i].state==NOTSTUDY))Push(&S,i);while((!StackEmpty(&S))&&(sumcre dit<uplcredit)&&(sumnum<maxnum))//栈非空&&学分总数小于学分上限&&学期课程数目小于学期最大数目{Pop(&S,&j);//出栈sumcredit = sumcredit + G.vertices[j].credit;sumnum = sumnum+1;if((sumcredit <= uplcredit)&&(sumnum <= maxnum)){printf(" %s ",G.vertices[j].name);fprintf(fp," %s ",G.vertices[j].name);count++;for(p=G. vertices[j].firstarc;p;p=p->nextarc)//对j号顶点每个邻接点的入度减一G .vertices[p->adjvex].indegree--;}else Push(&S,j);}}fprintf(fp,"\n");}printf("\n");if(count<G.vexnum)printf("课程编排出错\n");else{printf("课程编排成功\n");}fclose(fp);}3.4程序模块调用关系主程序模块→拓扑排序模块四流程图设计流程图如下所示:void FindInDegree(ALGraph G, int indegree[])//求图中各节点的入度(如图4.1)void CreatGraph(ALGraph *G)//构件图(如图4.2)图4.1 图4.2void TopologicalSort_1(ALGraph G,int numterm,int uplcredit) //有向图G采用邻接表存储结构(如图4.3)void TopologicalSort_2(ALGraph G,int numterm,int uplcredit) //有向图G采用邻接表存储结构(如图4.4)图4.3 图4.4主函数:void main() 图4.4五调试分析5.1用户使用和说明使用VC++,打开教学计划编制问题.cpp文件,接着编译,无错误,然后重建也没有错误,最后执行该文件。