教学计划编制问题 数据结构课程设计报告 湖南工程学院
湖南工程大学课程设计
湖南工程大学课程设计一、课程目标知识目标:1. 学生能够掌握课程相关的基本概念和理论,如XXX(具体概念)的应用和原理;2. 学生能够理解并解释课程内容中涉及的XXX(相关学科)知识,形成知识体系;3. 学生能够运用所学知识解决实际工程问题,具备一定的理论基础。
技能目标:1. 学生能够运用XXX(工具或方法)进行数据分析,培养数据分析与处理能力;2. 学生通过课程实践,掌握XXX(技能)的基本操作,具备实际操作经验;3. 学生能够运用所学技能解决实际问题,培养创新意识和实践能力。
情感态度价值观目标:1. 学生通过课程学习,培养对工程学科的兴趣和热情,形成积极向上的学习态度;2. 学生在课程实践中,学会团队合作,培养沟通协调能力和敬业精神;3. 学生能够认识到工程学科在国家和经济社会发展中的重要性,树立社会责任感。
本课程结合湖南工程大学的专业特点和学生实际情况,注重理论与实践相结合,旨在提高学生的专业知识水平和实践能力,培养具备创新精神和敬业态度的高素质工程技术人才。
课程目标的设定遵循具体、可衡量原则,为教学设计和评估提供明确依据。
二、教学内容本课程教学内容紧密结合课程目标,确保科学性和系统性。
具体包括以下部分:1. 理论知识:- 引导学生深入学习教材中XXX章节的基本概念、原理及其应用;- 对比分析教材中YYY章节的内容,帮助学生构建完整的知识体系;- 结合实际案例,讲解ZZZ章节的理论知识在实际工程中的应用。
2. 实践技能:- 安排实验室实践环节,指导学生掌握XXX工具或方法的使用;- 组织现场教学,让学生亲身体验YYY技能的操作,提高实际操作能力;- 开展课程设计项目,培养学生运用所学理论知识解决实际问题的能力。
3. 教学进度与安排:- 第1-2周:学习基本概念、原理,掌握理论知识;- 第3-4周:实践操作,培养数据分析与处理能力;- 第5-6周:开展课程设计项目,提高解决实际问题的能力;- 第7-8周:总结与复习,进行课程考核。
数据结构课程设计实验报告完整版
数据结构课程设计实验报告完整版【正文】一、实验目的本实验主要目的是通过实践,掌握数据结构的基本概念、常见数据结构的实现方式以及在实际应用中的应用场景和效果。
二、实验背景数据结构是计算机科学与技术领域中的一个重要概念,是研究数据的组织方式、存储方式、访问方式以及操作等方面的方法论。
在计算机科学领域,数据结构是实现算法和解决问题的基础,因此对数据结构的理解和应用具有重要意义。
三、实验内容本次数据结构课程设计实验主要分为以下几个部分:1. 实验环境的准备:包括选择合适的开发平台、安装必要的软件和工具。
2. 实验数据的收集和处理:通过合适的方式收集实验所需的数据,并对数据进行处理和整理。
3. 数据结构的选择和实现:根据实验需求,选择合适的数据结构,并进行相应的数据结构实现。
4. 数据结构的测试和优化:对所实现的数据结构进行测试,包括性能测试和功能测试,并根据测试结果对数据结构进行优化和改进。
5. 实验报告的撰写:根据实验过程和结果,撰写完整的实验报告,包括实验目的、实验背景、实验内容、实验结果和结论等。
四、实验过程1. 实验环境的准备本实验选择了Visual Studio作为开发平台,安装了相应版本的Visual Studio,并根据官方指引进行了相应的配置和设置。
2. 实验数据的收集和处理本实验选取了一份包含学生信息的数据集,包括学生姓名、学号、性别、年龄等信息。
通过编写Python脚本,成功提取了所需信息,并对数据进行了清洗和整理。
3. 数据结构的选择和实现根据实验需求,我们选择了链表作为数据结构的实现方式。
链表是一种常见的动态数据结构,能够高效地插入和删除元素,适用于频繁插入和删除的场景。
在实现链表时,我们定义了一个节点结构,包含数据域和指针域。
通过指针的方式将节点连接起来,形成一个链式结构。
同时,我们还实现了相关的操作函数,包括插入、删除、查找等操作。
4. 数据结构的测试和优化在完成链表的实现后,我们对其进行了性能测试和功能测试。
教学计划编制问题数据结构课程设计
信息科学与工程学院数据结构课程设计课程设计名称: 教学计划编制问题前言《数据结构》是一门综合性较强的计算机软件、程序设计理论和技术相结合的重要基础课程。
它主要讨论抽象数据关系和算法在计算机中的表示与实现,涉及到的数据在计算机中的表示、组织和处理,以及相应结构上的算法设计和算法性能上的分析技术。
它所包含的知识与提倡的技术方法,无论对大家进一步学习计算机领域里的其他课程,还是对今后从事理论研究、应用开发及技术管理工作都起着重要的作用。
如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。
通过学习《数据结构》这门理论性强、思维抽象、难度较大的课程后,大家就更深入透彻地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养了基本的、良好的程序设计技能,大家就能编制高效可靠的程序,更重要的也培养大家解决实际问题的能力,提高分析设计能力和编程能力,为大家后续课程的学习及实践也打下了良好的基础。
因此,学校开设了《数据结构(C语言版)》,通过学习数据结构,大家对编程有了更多的了解,为了让大家将自己所学的知识应用到实际当中,学校开设了数据结构课程设计,通过这次课程设计大家可以更好地将C语言应用到实际当中,而且可以更好的掌握算法与数据结构,将数据结构和C语言有效的结合起来,使大家的编程能力得到更大的提高。
关键字:C语言数据结构目录前言 ------------------------------------------- 2一、课题内容和设计要求 -------------------------------- 41.1 课题内容 --------------------------------------- 41.2 设计要求 --------------------------------------- 4二、课题需求分析-------------------------------------- 6三、课题实现模块设计 ---------------------------------- 63.1 程序模块设计 ----------------------------------- 63.2 函数的调用关系 --------------------------------- 7四、模块的功能实现 ------------------------------------ 74.1相关数据类型的定义 ------------------------------ 74.2主要函数的流程图------------------------------- 8五、程序调试 ---------------------------------------- 105.1 测试数据 ------------------------------------ 10 5.2 调试过程 ------------------------------------- 10 六.程序设计总结 ----------------------------------- 13七、附录 -------------------------------------------- 157.1致谢 ----------------------------------------- 157.2参考书目--------------------------------------- 157.3源程序清单 ------------------------------------- 15一、课程内容与要求1.1课题内容[ 问题描述 ]大学的每个专业都要制定教学计划。
教学计划编制问题_数据结构课程设计报告_湖南工程学院
课程设计报告课程名称数据结构课程设计课题名称教学计划编制问题专业网络工程班级 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.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。
数据结构实验 教学计划编制问题(共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; }四、调试分析略。
《教学计划编制问题》数据结构课程设计说明书
华北科技学院数据结构课程设计说明书班级计算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. 知识目标:(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课时,学习排序和查找算法,掌握各类算法的实现和应用。
课程设计湖南工程学院
课程设计湖南工程学院一、课程目标知识目标:1. 学生能掌握课程核心概念,理解学科基本原理,如公式、定律等,并与实际应用相结合。
2. 学生能描述并分析课程内容中的关键知识点,形成知识网络,为后续学习打下坚实基础。
3. 学生能运用所学知识解决与课程相关的问题,提高解决问题的能力。
技能目标:1. 学生通过课堂讨论、实践操作等方式,培养观察、分析、解决问题的能力。
2. 学生在小组合作中,提高沟通、协作、表达等社交技能。
3. 学生掌握课程相关软件、工具或设备的使用,提高实际操作能力。
情感态度价值观目标:1. 学生培养对学科的兴趣和热情,形成积极的学习态度。
2. 学生在课程学习中,树立正确的价值观,关注社会问题,提高社会责任感。
3. 学生通过课程学习,培养创新意识,敢于挑战自我,增强自信心。
课程性质:本课程注重理论与实践相结合,强调学科知识在实际中的应用。
学生特点:学生具备一定的学科基础,具有较强的求知欲和动手能力。
教学要求:教师应采用多元化的教学手段,激发学生兴趣,注重培养学生的实践能力和综合素质。
在教学过程中,关注学生的个体差异,因材施教,使学生在课程学习中取得最佳成果。
通过分解课程目标为具体的学习成果,便于后续教学设计和评估,确保课程目标的实现。
二、教学内容本课程依据课程目标,结合教材内容,进行以下组织与安排:1. 理论知识:包括课程基础概念、原理、公式、定律等,涵盖教材第一章至第三章,重点讲解学科核心知识,为学生奠定扎实的基础。
2. 实践操作:结合教材第四章,让学生动手操作相关实验或实践项目,培养观察、分析、解决问题的能力。
3. 应用拓展:以教材第五章为基础,引入实际案例,让学生了解所学知识在实际工作中的应用,提高学生的实践能力。
4. 讨论与交流:组织课堂讨论,引导学生就教材内容进行思考与探讨,激发学生的思维活力,培养沟通、协作能力。
教学内容安排如下:第一周:第一章,课程导入,基础概念讲解;第二周:第二章,原理、公式、定律学习;第三周:第三章,知识拓展,案例分析;第四周:第四章,实践操作,实验演示;第五周:第五章,应用拓展,实际应用;第六周:复习与讨论,总结课程内容,巩固所学知识。
数据结构课程设计报告格式
《数据结构》课程设计报告题目猴子选大王学生姓名学号专业班级指导老师设计日期 2009年12月19日指导老师评阅意见:一、问题定义1、课程设计目的:数据结构课程设计是学习数据结构课程的一个重要环节。
能巩固和加深课堂教学内容,提高学生实际工作能力,培养科学作风,为学习后续课程和今后的系统开发奠定基础。
通过课程设计,使学生熟练掌握数据结构课程中所学的理论知识,并实际应用,通过综合运用数据结构的基本知识来解决实际问题,加强学生分析和解决问题的能力。
2、课程设计的要求:本次课程设计要求学生正确理解课题,考虑问题要细致,全面,解决问题的方法要科学合理,切合实际。
并能上机实现。
3、课程设计的意义:1、有利于基础知识的理解。
学生对计算机运行的机理等知识内容的理解比较肤浅。
如果接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。
2、有利于逻辑思维的锻炼。
程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。
即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。
3、有利于治学态度的培养。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼猴子选大王任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
数据结构课设_教学计划编制问题
数据结构课程设计教学计划编制问题班级学号*******学生姓名周子健提交日期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. 学生能够掌握课程相关的基础知识,如数学公式、概念、定理等,并能够运用到具体问题中。
2. 学生能够理解并描述课程内容的核心概念,形成知识体系,为后续学习打下坚实基础。
技能目标:1. 学生通过本课程的学习,能够培养良好的逻辑思维能力,提高解决问题的技巧。
2. 学生能够运用所学知识,解决实际生活中的问题,提高实践操作能力。
情感态度价值观目标:1. 学生在学习过程中,培养对学科的热爱,激发学习兴趣,形成积极向上的学习态度。
2. 学生能够认识到所学知识在实际生活中的应用价值,树立正确的价值观。
3. 学生通过团队合作学习,培养良好的沟通协作能力,增强集体荣誉感。
课程性质分析:本课程为湖南工程学院基础课程,旨在培养学生的基本素养和实际操作能力。
课程内容紧密结合实际,注重理论与实践相结合。
学生特点分析:学生处于成长发展阶段,好奇心强,求知欲旺盛。
他们对新鲜事物充满兴趣,但注意力容易分散。
因此,课程设计需注重趣味性和实用性,以提高学生的学习积极性。
教学要求:1. 教师应关注学生的个体差异,因材施教,使每位学生都能在课程中找到适合自己的学习方法。
2. 教学过程中,注重启发式教学,引导学生主动思考,培养解决问题的能力。
3. 创设实践性强的教学活动,让学生在实际操作中巩固所学知识,提高综合运用能力。
内容。
教学内容应包括:一、核心理论知识:包括课程的基础概念、原理和公式,为学生提供扎实的理论基础。
二、案例分析:通过具体案例的分析,使学生能够将理论知识与实际情境相结合,增强解决问题的能力。
三、实践操作:设计实验或动手操作环节,让学生在实际操作中深化对理论知识的理解。
四、拓展阅读:推荐与课程相关的拓展阅读材料,拓宽学生的知识视野,提高自主学习能力。
五、互动讨论:设置小组讨论、课堂问答等互动环节,激发学生的思考,培养批判性思维和交流表达能力。
六、课后作业:布置有针对性的课后作业,巩固学生对知识的掌握,并及时反馈学习效果。
教学计划编制数据结构课程设计报告
数据结构课程设计教学计划编制问题(图的应用)班级学号21333班2133326学生姓名孙丽提交日期2015年7月23日成绩计算机与通信工程学院目录一需求分析·11.设计任务·12.功能模块图·13.流程图·24.目标测试·2二详细设计·41.运行环境·42.开发工具·43.涉及知识点·44.数据结构定义及基本操作·45.函数调用关系图·56.伪码流程·6三调试分析·91.调试过程中遇到的问题与解决方法·92.算法的时空分析·93.改进思想·94.经验体会·9四用户手册·9五测试结果·111.输入·112.输出·14六附录·16七参考文献·23一、需求分析1、设计任务教学计划编制问题(图的应用)[问题描述]大学的每个专业都要制定教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
试在这样的前提下设计一个教学计划编制程序。
[实现提示]输入参数应包括:学期总数,一学期的学分上限,每门课的课程号(可以是固定占3位的字母数字串)、学分和直接先修课的课程号。
应允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。
若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。
计划的表格格式可以自己设计。
可设学期总数不超过12,课程总数不超过100。
如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。
2、功能模块图CreateGraph():构造图InitStack():构造一个空栈StackEmpty():判断是否为空栈Push():入栈Pop():出栈FindInDegree():求顶点的入度TopologicalSort():输出G顶点的拓扑排序结果3、流程图(具体流程图见详细设计伪码流程)4、目标测试正确测试:错误测试:二、详细设计1、运行环境:(1)WINDOWS 7系统(2)C-Free 5.02、开发工具:C语言3、涉及知识点:(1)栈。
数据结构课程设计报告书教学计划编制问题
数据结构课程设计报告书教学计划编制问题题目:制定教学计划1.内容摘要摘要:首先利用拓扑排序对课程先后顺序进行分析,邻接表为主要存储结构,栈为主要辅助结构。
给出课程的先后关系,即AOV网,然后进行拓扑排序,但当有向图中存在环时,无法查找该图的一个拓扑排序。
当图中所有定点全部输出,表示对该图排序成功。
实现拓扑排序算法时,相应的建立邻接表存储AOV网。
为了避免重复检测入度为零的顶点,建立一个栈来对入度为零的点进行存放。
根据课程先后关系,对各个学期的课程进行拓扑排序,输出。
2.索引关键词关键词:邻接表存储,栈的应用,拓扑排序。
目录1.题目要求及设计要求------------------------------------------ 12.系统完成功能及功能框图----------------------------------- 2—43.核心算法及说明------------------------------------------ 5—214.运行及测试结论----------------------------------------- 22—235.参考资料-------------------------------------------------- 236.后记------------------------------------------------------- 23第一部分:课程设计题目要求1.1课程设计目的大学的每个专业都要制定教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
在这样的前提下设计一个教学计划编制程序。
1.2课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。
数据结构课设报告
《数据结构》课程设计报告一、设计目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。
二、设计要求1、通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
2、学生必须仔细研读《数据结构》课程设计(实习)要求,以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导教师沟通。
3、本次课程设计按照教学要求需要在三周时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时地向指导教师汇报。
4、编程语言任选。
一〉.基础类题目1.猴子选大王(*)任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1--m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:(注:分别顺序存储结构和链式存储实现)输入数据:输入m,n。
m,n 为整数,n<m输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能㈠、数据结构与核心算法的设计描述链式存储实现:#include<iostream.h>#include<malloc.h>#include<stdio.h>typedef struct LNode{int data;struct LNode *next;}LNode, *LinkList;void CreateList(LinkList &L,int m)//尾插法建立单向循环链表int ListDetele(LinkList &q,int n)//删除被点到的猴子㈡、程序调试及运行结果分析㈢、程序清单#include<iostream.h>#include<malloc.h>#include<stdio.h>typedef struct LNode{int data;struct LNode *next;}LNode, *LinkList;void CreateList(LinkList &L,int m){ //尾插法建立单向循环链表int i;L = (LinkList)malloc(sizeof(LNode));L->next = NULL;LNode *r;r = L;for(i=1;i<=m;i++){LNode *p;p = (LinkList)malloc(sizeof(LNode));p->data = i;r->next = p;r = p;}r->next=L->next;}int ListDetele(LinkList &q,int n) {LinkList s;int j=1;while(q->next!=q){ while(j<=n-1){q=q->next;j++;}s=q->next;q->next=s->next;free(s);j=1;}cout<<" 猴王: "<<q->data<<endl;return 1;}void main(){LinkList q;int n,m;cout<<"输入猴子个数m和n:";cin>>m>>n;CreateList(q,m);ListDetele(q,n);}顺序存储结构:㈠、数据结构与核心算法的设计描述#include<iostream.h>void main(){int n,m;cout<<"输入猴子数m和报数n:";cin>>m>>n;int *a=new int[m];int i,sum=0,count=m;//存剩余猴子数for(i=0;i<m;i++)a[i]=1;i=0;while(i<=m){if(i==m)i=0;//当i=n时,循环回去sum+=a[i];if(sum==n)//当报到n时{sum=a[i]=0; //淘汰倒霉猴子;即赋0count--;//剩余猴子数-1if(count==1)break;//剩1只时结束}i++;}for(i=0;i<m;i++)if(a[i]!=0)cout<<"猴王是"<<i+1<<endl;delete []a;}㈡、程序调试及运行结果分析2.线索二叉树(**)任务:1.建立中序线索二叉树,并且中序遍历;2. 求中序线索二叉树上已知结点中序的前驱和后继;㈠、数据结构与核心算法的设计描述#include<malloc.h>#include<stdlib.h>#include<iostream.h>#define MAX 100typedef enum PointerTag {Link,Thread}; //Link==0:指针,Thread==1:线索typedef struct BitNode{char data;struct BitNode *lchild,*rchild;//左右孩子的指针PointerTag LTag,RTag; //左右标志}BitNode, *Bitree;Bitree pre=NULL;Bitree point[MAX+1];int CreatBiTree(Bitree &T)//先序创建二叉树void InThreading(Bitree p)//中序遍历线索化二叉树int InOrderThreading(Bitree &Thrt,Bitree T)//中序遍历线索化二叉树T,并将其中序线索化,Thrt指向头节点Bitree InPre(Bitree p)//前驱Bitree InNext(Bitree p)//后继int Traverse_Thr(Bitree T)//各个节点的前驱和后继㈡、程序调试及运行结果分析㈢、程序清单#include<malloc.h>#include<stdlib.h>#include<iostream.h>#define MAX 100typedef enum PointerTag {Link,Thread}; //Link==0:指针,Thread==1:线索typedef struct BitNode{char data;struct BitNode *lchild,*rchild;//左右孩子的指针PointerTag LTag,RTag; //左右标志}BitNode, *Bitree;Bitree pre=NULL;Bitree point[MAX+1];int CreatBiTree(Bitree &T)//先序创建二叉树{ //该节点非空返回1,双亲节点对应标志Link,//空时返回0,双亲节点对应标志应为Threadchar ch;cout<<"输入结点元素(#表示空):";cin>>ch;if(ch=='#'){T=NULL;return 0;}else{if(!(T=(BitNode *)malloc(sizeof(BitNode)))) {cout<<"存储分配失败"<<endl;exit(1);}T->data=ch;if(CreatBiTree(T->lchild))T->LTag=Link;elseT->LTag=Thread;if(CreatBiTree(T->rchild))T->RTag=Link;elseT->RTag=Thread;}return 1;}void InThreading(Bitree p)//中序遍历线索化二叉树{if(p!=NULL){InThreading(p->lchild);//左子树线索化if(p->lchild==NULL) //前驱线索{p->LTag=Thread;p->lchild=pre;}if(pre->rchild==NULL)//后继线索{pre->RTag=Thread;pre->rchild=p;}pre=p; //保持pre指向p的前驱InThreading(p->rchild);//右子树线索化}}int InOrderThreading(Bitree &Thrt,Bitree T){//中序遍历线索化二叉树T,并将其中序线索化,Thrt指向头节点Thrt=(Bitree)malloc(sizeof(BitNode)); //申请头结点地址if(Thrt==NULL) exit(1);Thrt->LTag=Link; //建立头结点Thrt->RTag=Thread;Thrt->rchild=Thrt;//右指针回指if(T==NULL)Thrt->lchild=Thrt;//若二叉树为空,则左指针回指else{Thrt->lchild=T;pre=Thrt;InThreading(T); //中序遍历线索化二叉树pre->rchild=Thrt;pre->RTag=Thread;//最后一个结点的线索化Thrt->rchild=pre;}return 1;}Bitree InPre(Bitree p)//前驱{Bitree q;q=p->lchild;if(p->LTag==Thread)return(p->lchild);if(q==NULL){return NULL;}while(q->RTag==Link){q=q->rchild;}return (q);}Bitree InNext(Bitree p)//后继{Bitree q;q=p->rchild;if(p->RTag==Thread)return(p->rchild);if(q==NULL){return NULL;while(q->LTag!=Thread){q=q->lchild;}return(q);}int Traverse_Thr(Bitree T){int i=0;Bitree p;p=T->lchild;cout<<"1--代表是,0--代表否"<<endl;cout<<"是否有"<<"前驱"<<"节点"<<"是否有"<<"后继"<<"顶点序号"<<endl;cout<<" 前驱"<<" "<<"节点"<<"后继"<<"while(p!=T)//空树或遍历结束时p==T{while(p->LTag==Link)p=p->lchild;//找开始结点cout<<p->LTag<<" ";if(p->LTag==Thread){cout<<InPre(p)->data<<" ";}elsecout<<" ";cout<<p->data<<" ";point[i++];cout<<p->RTag<<" ";if(p->RTag==Thread)cout<<InNext(p)->data<<" ";elsecout<<" ";cout<<i<<endl; point[i]=p;while(p->RTag==Thread&&p->rchild!=T)//寻找后继结点{p=p->rchild;cout<<p->LTag<<" ";if(p->LTag==Thread){cout<<InPre(p)->data<<" ";}elsecout<<" ";cout<<p->data<<" ";point[i++];cout<<p->RTag<<" ";if(p->RTag==Thread)cout<<InNext(p)->data<<" ";elsecout<<" ";cout<<i<<endl;point[i]=p;}p=p->rchild;}return i;}int main(){Bitree T,Thrt,prenode,Nextnode;int n,index;char str;cout<<"先序创建二叉树"<<endl;CreatBiTree(T);cout<<endl;InOrderThreading(Thrt,T);n=Traverse_Thr(Thrt);do {cout<<"请输入你要查找节点的序号(按中序输出时的序号)"<<endl;cin>>index;if(index<0||index>n){cout<<"请输入数的序号大于0并小于等于节点数"<<endl;return 0;}prenode=InPre(point[index]);Nextnode=InNext(point[index]);if(point[index]->LTag==Thread)cout<<"你要查找第"<<index<<"个节点的前驱结点为"<<prenode->data<<endl;elsecout<<"你要查找第"<<index<<"个节点无前驱结点"<<endl;if(point[index]->RTag==Thread)cout<<"你要查找第"<<index<<"个节点后继结点为"<<Nextnode->data<<endl;elsecout<<"你要查找第"<<index<<"个节点无后继结点"<<endl;cout<<"你是否要继续?y--是;n--否"<<endl;cin>>str;}while(str=='Y'||str=='y');return 0;}3.宿舍管理查询软件(**)任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:(1)采用交互工作方式(2)可以增加、删除、修改信息(3)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(选择、快速排序、堆排序等任选一种)(4) 查询 : a.按姓名查询 ;b.按学号查询 ;c按房号查询(5) 打印任一查询结果(可以连续操作)㈠、数据结构与核心算法的设计描述#include<iostream.h>#include<string.h>#include<stdlib.h>#define MAXSIZE 100int n;typedef struct //学生结构体的定义{int num;//学号char name[10];//姓名char room[10];//房号}Student;typedef struct SqList//顺序表结构体的定义{Student Stu[MAXSIZE+1];//定义一个存放学生信息的数组}SqList;void CreatInfo(SqList &L) //建立学生信息void print(SqList &L)//输出顺序表void Insertsort(SqList &L)//直接插入排序(房号优先)void InPut(SqList &L)//添加新的学生信息int Partition(SqList &L,int i,int j)//快速排序void Quicksort(SqList L,int low,int high)//快速排序void Selectsort(SqList &L)//选择排序(姓名优先) void find(SqList &L,int n)//查找修改学生并打印㈡、程序调试及运行结果分析1.建立学生信息2.插入学生信息并插入排序(房号优先)3.选择排序(姓名优先)4.快速排序5.查找修改学生并打印㈢、程序清单#include<iostream.h>#include<string.h>#include<stdlib.h>#define MAXSIZE 100int n;typedef struct //学生结构体的定义{int num;//学号char name[10];//姓名char room[10];//房号}Student;typedef struct SqList//顺序表结构体的定义{Student Stu[MAXSIZE+1];//定义一个存放学生信息的数组}SqList;void CreatInfo(SqList &L){cout<<"请输入你要创建的学生数:"<<endl;cin>>n;cout<<"学生的信息:"<<endl;cout<<"姓名学号房号:"<<endl;for(int i=1;i<=n;i++){cin>>L.Stu[i].name>>L.Stu[i].num>>L.Stu[i].room;}}void print(SqList &L)//输出顺序表{cout<<"输出学生信息:"<<endl;for(int i=1;i<=n;++i){cout<<L.Stu[i].name<<" "<<L.Stu[i].num<<" "<<L.Stu[i].room<<endl;}}void Insertsort(SqList &L)//直接插入排序(房号优先){int i,j;for(i=2;i<=n;++i)if(strcmp(L.Stu[i].room,L.Stu[i-1].room)<0){L.Stu[0]=L.Stu[i];for(j=i-1;strcmp(L.Stu[0].room,L.Stu[j].room)<0;--j)L.Stu[j+1]=L.Stu[j];L.Stu[j+1]=L.Stu[0];}}void InPut(SqList &L){n++;cout<<"输入学生的信息:"<<endl;cout<<"姓名学号房号:"<<endl;cin>>L.Stu[n].name>>L.Stu[n].num>>L.Stu[n].room;}int Partition(SqList &L,int i,int j)//快速排序{Student p;L.Stu[0]=L.Stu[i];p=L.Stu[i];while(i<j){while(i<j &&L.Stu[j].num>=p.num)j--;L.Stu[i]=L.Stu[j];while(i<j &&L.Stu[i].num<=p.num)i++;L.Stu[j]=L.Stu[i];}L.Stu[i]=p;return i;}void Quicksort(SqList L,int low,int high)//快速排序{int location;if(low<high){location=Partition(L,low,high);Quicksort(L,low,location-1); //对左区间递归排序Quicksort(L,location+1,high); //对右区间递归排序}}void Selectsort(SqList &L)//选择排序(姓名优先){Student t;int i,j,k;for(i=1;i<=n;i++){k=i;for(j=i+1;j<=n;j++)if(strcmp(L.Stu[j].name,L.Stu[k].name)<0)k=j;if(k!=i){t=L.Stu[i];L.Stu[i]=L.Stu[k];L.Stu[k]=t;}}}void find(SqList &L,int n)//查找学生信息{int t,m=1,i;char ch,a;cout<<"请输入你要查找的学号:"<<endl;cin>>t;cout<<"该学生的信息为:"<<endl;while(m<=n&&L.Stu[m].num!=t)m++;if(L.Stu[m].num==t){cout<<"学号是:"<<L.Stu[m].num<<"\t姓名:"<<L.Stu[m].name<<"\t房号:"<<L.Stu[m].room<<endl;cout<<"是否修改信息(Y/N):";cin>>a;if(a=='y'||ch=='Y'){cout<<"1.修改学号"<<endl;cout<<"2.修改姓名"<<endl;cout<<"3.修改房号"<<endl;cout<<"请选择:";cin>>i;switch(i){case 1:cout<<"输入修改学号:";cin>>L.Stu[m].num;break;case 2:cout<<"输入修改姓名:";cin>>L.Stu[m].name;break;case 3:cout<<"输入修改房号:";cin>>L.Stu[m].room;break;default:cout<<"输入错误!"<<endl;}}}elsecout<<"没有你要查找的学生!"<<endl;cout<<"是否打印学生信息(Y/N):";cin>>ch;if(ch=='y'||ch=='Y')print(L);}int main(){SqList L;int k;CreatInfo(L);//创建学生信息print(L);//按输入顺序打印出顺序表loop: cout<<"请选择排序方式:"<<endl;cout<<"1 插入学生信息"<<endl;cout<<"2 插入排序(房号优先)"<<endl;cout<<"3 选择排序(姓名优先)"<<endl;cout<<"4 快速排序"<<endl;cout<<"5 按查找修改学生并打印"<<endl;cout<<"0 退出排序程序"<<endl;cin>>k;if(k!=0){switch(k){case 1:InPut(L);break;case 2:Insertsort(L);//进行插入排序print(L);break; //输出插入排序后的顺序表case 3:Selectsort(L);//进行选择排序print(L);break;//输出排序后的顺序表case 4:Quicksort(L,1,n);//选择快速排序print(L);break;//输出排序后的顺序表case 5:find(L,n);break;//查找学生信息default:cout<<"输入错误!"<<endl;}}cout<<endl;goto loop;return 0;}4.停车场管理(**)任务:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
数据结构教学计划
数据结构教学计划篇一:数据结构教学计划编制软件学院课程设计报告书课程名称数据结构设计题目教学计划编制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篇二:数据结构课程设计——教学计划编制摘要教学计划(课程计划)是课程设置的整体规划,它规定不同课程类型相互结构的方式,也规定了不同课程在管理学习方式的要求及其所占比例,同时,对学校的教学、生产劳动、课外活动等作出全面安排,具体规定了学校应设置的学科、课程开设的顺序及课时分配,并对学期、学年、假期进行划分。
《数据结构》课程设计报告
《数据结构》课程设计报告《数据结构》课程设计报告如下:一、课程设计分析在学习了数据结构课本理论知识后,为了检验自己所学知识的牢固性巩固大家的理论知识,调动大家的编程兴趣;同时为大家提供一个实践自己,检验自己的平台,以增加大家对将来工作的适应能力;也为了锻炼大家的动手实践能力,遂在学期末进行了本次课程设计。
“数据结构”在计算机科学中是一门综合性的专业基础课。
“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。
在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。
因此,可以认为“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
在计算机科学中,“数据结构”不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。
我们本着自己的兴趣及挑战自己的态度,也为检验我们理论知识的熟练度,锻炼我们动手实践能力,我们选择了小型图书管理系统的编写。
因为我们生活在大学,图书馆是我们学习的天堂,借书和还书又是必不可少的,一个好的图书管理系统对于我们学生和管理人员都会为大家提供很多便利。
本着挑战和创新的思想,我们进行了此次课程设计程序编写及报告撰写。
二、课程设计基本理论运用所学的数据结构相关内容,设计一个小型图书馆管理系统,我们将运用到的原理有:链表的操作,包括插入,删除等;还有数据的排序;文件的操作等;遍历查找,插入排序等原理。
也运用了c语言的基本图形界面,使用户使用界面更加人性化,更加美观。
数据结构的创建是本课程设计的一个重要内容,我们这里使用的是单链表的数据结构,结合c语言语言特点、实际的图书馆管理系统的基本操作实现了一个简单的图书管理系统的正常运行,实现一些简单的功能。
三、课程算法设计通过对图书管理系统内的图书进行添加和删除操作,实现同学借书和还书的记录工作,通过对图书的查找和按指定方式排序,更有利于同学们挑选自己所需要的图书,借阅借书所需时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程名称数据结构课程设计课题名称教学计划编制问题专业网络工程班级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。
如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。
应建立内部课程号与课程号之间的194212101136578对应关系。
2.设计要求:●课程设计报告规范1)需求分析a.程序的功能。
b.输入输出的要求。
2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。
b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
3)详细设计a.采用C语言定义相关的数据类型。
b.写出各模块的类C码算法。
c.画出各函数的调用关系图、主要函数的流程图。
4)调试分析以及设计体会a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
b.程序调试中遇到的问题以及解决问题的方法。
c.课程设计过程经验教训、心得体会。
5)使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。
6)书写格式见附带说明。
7)附录a.参考书目b.源程序清单(带注释)●考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。
具体考核标准包含以下几个部分:①平时出勤(占10%)②系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)③程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)④设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
⑤独立完成情况(占10%)。
课程验收要求①运行所设计的系统。
②回答有关问题。
③提交课程设计报告。
④提交电子文档(源程序、设计报告文档)。
⑤依内容的创新程度,完善程序情况及对程序讲解情况打分。
二、进度安排第19周星期一星期二星期三星期四星期五上午√8:00~12:00下午√√√13:30~17:30晚上√18:00~20:00第20周星期一星期二星期三星期四星期五上午√8:00~12:00下午13:30~17:30晚上18:00~20:00附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录1、需求分析 (1)1.1程序的功能: (1)1.2输入输出的要求: (1)2、概要设计 (1)2.1程序模块功能图 (1)2.2数据结构 (2)3、详细设计 (3)3.1采用C语言定义相关的数据类型 (3)3.2各模块的类C码算法 (3)3.3各函数的调用关系图、主要函数的流程图 (9)4、调试分析以及设计体会 (11)4.1测试数据: (11)4.2程序调试中遇到的问题以及解决问题的方法: (12)4.3课程设计过程经验教训、心得体会: (12)5、使用说明 (14)6.参考书目 (20)7、附录 (21)7.1.源程序清单(带注释) (21)1、需求分析1.1程序的功能:编制教学计划。
大学的每个专业都要制订教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
1.2输入输出的要求:a.输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。
b.允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。
c.若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。
计划的表格格式自行设计。
2、概要设计2.1程序模块功能图图2.1-1 功能模块图2.2数据结构int termtime=0;//学期总数int limitgrade=0; //学分上线char str[100][4]; //课程号int score[100]={0}; //课程学分int totalcourse=0; //课程总数struct node//课程节点 { int variable; //标志属不属于同一个学期所修 int previous; //前修课程 int next;//后学课程struct node * courselink[100];//后修课程的指针}* coursenode[100]={NULL};//课程数目节点main() 主函数initialNod e()初始化课程节点 createNode ()建立课程顺序sortNode() 课程 inputBasicInformation()输入基本信息cls() 清空信息 menu() 主菜单3、详细设计3.1采用C语言定义相关的数据类型FILE *fp //保存到文件int termtime=0; //学期总数int limitgrade=0; //学分上线char str[100][4]; //课程号int score[100]={0}; //课程学分int totalcourse=0; //课程总数struct node //课程节点{int variable; //标志属不属于同一个学期所修int previous; //前修课程int next; //后学课程struct node * courselink[100]; //后修课程的指针}* coursenode[100]={NULL}; //课程数目节点3.2各模块的类C码算法A. 初始化课程节点void initialNode() //初始化课程节点{int i;int j;printf("\n正在初始化。
\n");for(i=0;i<100;i++){后修课程的指针置零;同学期学习的课程置零;前修课程置零;后修课程置零;for(j=0;j<100;j++)coursenode[i]->courselink[j]=NULL;}printf("\n初始化完毕。
\n");}B. 建立课程顺序void createNode() //建立课程顺序{int i;int temp;int flag;for(i=0;i<totalcourse;i++){printf("\n请输入%d的深入课程数目:",i+1);scanf("%d",&(coursenode[i]->next));printf("\n请输入%d的深入课程课程代号分别是什么(用空格分开):",i+1);for(temp=0;temp<coursenode[i]->next;temp++){scanf("%d",&flag);coursenode[i]->courselink[temp]=coursenode[flag-1];coursenode[flag-1]->previous++;}}printf("\n课程代号\t前修课程数\t深入课程数\n");for(temp=0;temp<totalcourse;temp++){printf("%d\t\t%d\t\t%d\n",temp+1,coursenode[temp]->previous,coursenode[temp]->next);}}C.排课程void sortNode() //排课程{int i,j,flag=0,session=1;FILE *fp;if((fp=fopen("d:\\course.txt","a"))==NULL) //如果文件已经存在,可以追加学生信息{if((fp=fopen("d:\\course.txt","w"))==NULL) // 文件不存在时,创建新文件,输入学生信息{printf("文件打开失败!\n");return;}}printf("\n-----------------------------\n");printf("课程代号\t课程号\t课程学分\n");fprintf(fp,"课程代号\t课程号\t课程学分\n");while(1){flag=1;for(i=0;i<totalcourse;i++)if(课程数目节点为空)if(同学期学习课程为空)if(前修课程为0){printf("%d\t\t%s\t%d\n",i+1,str[i],score[i]);fprintf(fp,"%d\t%s\t%d\n",i+1,str[i],score[i]);for(j=0;j<coursenode[i]->next;j++){前修课程数目节点减一;coursenode[i]->courselink[j]->variable=1;coursenode[i]->courselink[j]=NULL;}coursenode[i]->next=0;释放数目结点;flag=0;}if(flag!=0)break;else{if(session<=termtime){ printf("第%d学期课程结束\n------------------------------------\n",session);fprintf(fp,"第%d学期课程结束\n------------------------------------\n",session) ;session++;}else{printf("学习时间不够!!!\n");exit(0);}if(session<=termtime);}for(i=0;i<totalcourse;i++)if(课程节目数不为O)coursenode[i]->variable=0;}fclose(fp); //关闭文件指针}D,输入基本信息void inputBasicInformation() //输入基本信息{int i;printf("请输入学期总数:");scanf("%d",&termtime);if(termtime>=12){printf("\n对不起,学期总数不能超过12\n");exit(0);}printf("\n请输入学分上限:");scanf("%d",&limitgrade);printf("\n请输入课程总数:");scanf("%d",&totalcourse);for(i=0;i<totalcourse;i++){printf("请输入第%d门课程号(三个字符,回车结束):",i+1);scanf("%s",&str[i]);str[i][3]='\0';printf("请输入第%d门课程学分(回车结束):",i+1);scanf("%d",&score[i]);if(学分高于上限){printf("\n对不起,课程学分不能超过学分上限\n");exit(0);}}printf("\n您所输入的数据如下,请核实:\n");printf("课程代号\t课程号\t课程学分\n");for(i=0;i<totalcourse;i++){printf("%d\t\t%s\t%d\n",i+1,str[i],score[i]);}}E.清空信息void cls(){int i=0;学期数置零;学分上限置零;for(i=0;i<100;i++){str[i][0]='\0';score[100]=0;}总课程数置零;printf("\n原来数据已经清空\n");}F.菜单void menu(){printf(" ************************* 教学计划编制************************\n ");printf("\n 1 输入课程安排基本信息");printf("\n 2 建立课程顺序");printf("\n 3 排列课程顺序");printf("\n 4 原来数据清空");printf("\n 5 退出");}G.主函数void main(){int n;initialNode();while(1){menu();printf("\n 请输入您要选择的操作序号,按回车键确认:");scanf("%d",&n);switch(n){case 1: inputBasicInformation();;break;case 2: createNode();;break;case 3: sortNode();;break;case 4: cls();break;case 5: exit(0);default: printf("输入错误,请输入列表中存在的序号!\n ");}}}3.3各函数的调用关系图、主要函数的流程图图2.3-1 流程图开始设辅助数组indegree 记录图的各顶点的入度值,并将indegree 数组各变量赋初值。