数据结构课程设计教学计划安排检验程序(拓扑排序)-用C++做

数据结构课程设计教学计划安排检验程序(拓扑排序)-用C++做,第1张

#include<iostream>

#include<stdlib.h>

#include<windows.h>

#include<string>

#include<conio.h>

#define FILE_PATH "D:/text.txt"

using namespace std

int superscript[20]

int MARK=0

char FLAG='f'

int credits=0

struct Node

{

char data[10]

int num

Node *next

}

class Stack

{

public:

Stack(){top=NULL}

~Stack(){}

void Push(char a[10],int num)

void Pop(FILE *fp,int cre)

int Empty()

{

if(top==NULL)

return 0

else

return 1

}

private:

Node *top

}

void Stack::Push(char a[],int num)

{

Node *m

m=new Node

strcpy(m->data,a)

m->num=num

m->next=top

top=m

}

void Stack::Pop(FILE *fp,int cre)

{

char a[10]

int num

Node *p

if(top==NULL)

{

cout<<" "

}

else

{

credits+=top->num

if(credits<=cre)

{

strcpy(a,top->data)

num=top->num

p=top

top=top->next

delete p

cout<<a<<" "<<num<<""

fprintf(fp,"%s %d",a,num)

MARK=0

}

else if(credits>cre)

{

MARK=1

credits-=top->num

}

}

}

struct ArcNode

{

int adjvex

ArcNode *next

}

struct VertexNode

{

int in

char CourseNum[10]

char ProCourseNum[10][10]

int Credit

ArcNode *firstedge

}

class Courses

{

public:

Courses(int n)

~Courses(){}

void Plan1(Courses a,int term,int cre)

void Plan2(Courses a,int term,int cre)

private:

VertexNode adjlist[20]

int vertexNum

}

Courses::Courses(int n)

{

int i,j,k

ArcNode *s

vertexNum=n

for(i=0i<vertexNumi++)

{

k=0

cin>>adjlist[i].CourseNum

cin>>adjlist[i].Credit

while(1)

{

cin>>adjlist[i].ProCourseNum[k]

if(strcmp(adjlist[i].ProCourseNum[k],&FLAG)==0)

break

k++

}

adjlist[i].firstedge=NULL

adjlist[i].in=0

}

for(i=0i<vertexNumi++)

for(j=0j<vertexNumj++)

{

k=0

while(1)

{

if(strcmp(adjlist[j].ProCourseNum[k],&FLAG)==0)

break

else if(strcmp(adjlist[j].ProCourseNum[k],adjlist[i].CourseNum)==0)

{

s=new ArcNode

s->adjvex=j

s->next=adjlist[i].firstedge

adjlist[i].firstedge=s

adjlist[j].in++

}

k++

}

}

}

void Courses::Plan1(Courses co,int term,int cre)

{

ArcNode *p

FILE *fp=NULL

int a[10]

int j=0,f=0,k,i,l=0,m=0,z,count=0,addterm=0,flag=0

Stack s

for(i=0i<co.vertexNumi++)

{

if(co.adjlist[i].in==0)

{

s.Push(co.adjlist[i].CourseNum,co.adjlist[i].Credit)

superscript[j]=i

j++

}

}

fp=fopen(FILE_PATH,"w")

if(fp!=NULL)

{

fprintf(fp,"\t教学计划安排如下\n")

while(s.Empty()==1)

{

if(flag==1)

break

l=0j=0

while(s.Empty()==1)

{

addterm++

if(addterm>term)

{

cout<<"课程条件与学期条件不符,出现错误,抱歉!!"<<endl

fprintf(fp,"课程条件与学期条件不符,出现错误,抱歉!!")

flag=1

break

}

credits=0

cout<<"第"<<addterm<<"学期应安排的课程为:"

fprintf(fp,"第%d学期应安排的课程为:",addterm)

for(z=0z<2z++)

{

s.Pop(fp,cre)

a[l]=superscript[j]

j++

l++

if(MARK==1)

break

count++

}

cout<<"本学期获得学分为:"<<credits<<"分"

fprintf(fp,"本学期获得学分为:%d分",credits)

cout<<endl

fprintf(fp,"\n")

}

j=0

for(f=0f<lf++)

{

m=a[f]

p=co.adjlist[m].firstedge

while(p!=NULL)

{

k=p->adjvex

co.adjlist[k].in--

if(co.adjlist[k].in==0)

{

s.Push(co.adjlist[k].CourseNum,co.adjlist[k].Credit)

superscript[j]=k

j++

}

p=p->next

}

}

}

}

while(addterm<term)

{

addterm++

cout<<"第"<<addterm<<"学期无课程安排"<<endl

fprintf(fp,"第%d学期无课程安排\n",addterm)

}

fclose(fp)

if(count<co.vertexNum)

cout<<"课程安排出错!"<<endl

}

void Courses::Plan2(Courses co,int term,int cre)

{

ArcNode *p

FILE *fp=NULL

int a[10]

int j=0,f,i,k,l=0,m=0,count=0,addterm=0,flag=0,zhan=0

Stack s

for(i=0i<co.vertexNumi++)

{

if(co.adjlist[i].in==0)

{

s.Push(co.adjlist[i].CourseNum,co.adjlist[i].Credit)

superscript[j]=i

j++

}

}

fp=fopen(FILE_PATH,"w")

if(fp!=NULL)

{

fprintf(fp,"\t教学计划安排如下\n")

while(s.Empty()==1)

{

l=0j=0

addterm++

if(addterm>term)

{

cout<<"课程条件与学期条件不符,出现错误,抱歉!!"<<endl

fprintf(fp,"课程条件与学期条件不符,出现错误,抱歉!!")

break

}

credits=0

cout<<"第"<<addterm<<"学期应安排的课程为:"

fprintf(fp,"第%d学期应安排的课程为:",addterm)

while(s.Empty()==1)

{

s.Pop(fp,cre)

a[l]=superscript[j]

j++

l++

if(MARK==1)

break

count++

}

cout<<"本学期获得学分为:"<<credits<<"分"

fprintf(fp,"本学期获得学分为:%d分",credits)

cout<<endl

fprintf(fp,"\n")

j=0

for(f=0f<lf++)

{

m=a[f]

p=co.adjlist[m].firstedge

while(p!=NULL)

{

k=p->adjvex

co.adjlist[k].in--

if(co.adjlist[k].in==0)

{

s.Push(co.adjlist[k].CourseNum,co.adjlist[k].Credit)

superscript[j]=k

j++

}

p=p->next

}

}

}

}

while(addterm<term)

{

addterm++

cout<<"第"<<addterm<<"学期无课程安排"<<endl

fprintf(fp,"第%d学期无课程安排\n",addterm)

}

fclose(fp)

if(count<co.vertexNum)

cout<<"课程安排出错!"<<endl

}

void show()

{

cout<<endl

cout<<"$**************************************************************************$"<<endl

cout<<"$ 科目 学分 科目 学分 科目 学分 $"<<endl

cout<<"$ 01.C语言-------------2 02.高等数学--------203.离散数学-------1 $"<<endl

cout<<"$ 04.数字逻辑----------2 05.计算机组成原理--106.面向对象程序---3 $"<<endl

cout<<"$ 07.数据结构与算法----3 08.数据库原理------409.Java语言-------4 $"<<endl

cout<<"$ 10.图形程序设计------3 11.嵌入式 *** 作系统--212.大型数据库技术-3 $"<<endl

cout<<"$**************************************************************************$"<<endl

}

int main()

{

int i,max,m,k=1,term

string FIRST="1"

string SECOND="2"

system("color 75")

char ch

string g

for(i=0i<6i++)

cout<<endl

cout<<"\t$**************************************************$"<<endl

cout<<"\t$ $"<<endl

cout<<"\t$ 欢迎进入教学计划编制系统!!!$"<<endl

cout<<"\t$ Ver3.14.1.0 $"<<endl

cout<<"\t$郝智博$"<<endl

cout<<"\t$ $"<<endl

cout<<"\t$**************************************************$"<<endl

for(i=0i<5i++)

cout<<endl

cout<<"请按任意键继续......."

ch=getch()

system("cls")

cout<<"请输入学期总数(请小于等于8个学期)、每学期学分上限(至少为4)以及所需学习课程总数(课程数请小于等于12门):"<<endl

cin>>term>>max>>m

cout<<"请输入每一门课程的课程号、学分、和直接先修课程的课程号(若没有先修课则输入'00',先修课输入完毕按'f'结束):"<<endl

show()

Courses cou(m)

system("cls")

cout<<"请选择您所需的安排策略:"<<endl<<"->1.各学期学习负担均匀"<<endl<<"->2.课程集中在前几个学期"<<endl

while(k)

{

cin>>g

if(g==FIRST) {

system("cls")

cout<<"教学安排如下:"<<endl

cou.Plan1(cou,term,max)

k=0

}

else if(g==SECOND)

{

system("cls")

cout<<"教学安排如下:"<<endl

cou.Plan2(cou,term,max)

k=0

}

else

{

cout<<"输入错误请重新输入"<<endl

k=1

}

}

cout<<"请按任意键退出......."

ch=getch()

system("cls")

cout<<"教学计划已存入指定文件,感谢您的使用,再见!!"<<endl

return 0

}

这个代码基本满足要求了

随着教育技术普遍受到重视及其在教学中被广泛应用,教学设计也引起了广大教师的重视,并在实践中尝试应用。但如果运用不当,教学设计流于形式,不仅不能真正发挥作用,也给广大教师增加负担。要科学地运用这一技术,应该在教学实践中注意以下问题。 (1)明确教学设计的出发点。教学设计的出发点是为了促进教学,因此教师要深入分析教学中存在的问题,并围绕教学问题的解决而开展设计活动,不能为了设计而设计,为了编写教学设计方案而设计。 (2)立足于正确的教学设计观。在教学设计中,一方面,要充分体现教师的主导作用和学生的主体地位,另一方面,要强调方法等的应用,从方法论范畴来思考设计教学,而不是以媒体观为指导,围绕教学资源展开教学设计活动。 (3)注重教学设计的规范性。教学设计要综合考虑各个因素的作用,使之发挥整体效应。教学设计的每一个环节都有其特定的作用,都会对学习的过程和结果产生重要影响,因此,不能忽视每一个环节的设计,要认真对待每一个环节,使之能够真正为解决教学问题服务。并且,在编写教学设计方案时也要注意描述的规范性,不能似是而非,甚至产生错误。 (4)重视教学设计的情境性。教学设计实践面向具体的教学问题,因此教学设计必然会受到教师的教学风格、学生的特征(尤其是非一般性特征)、具体的教学环境等因素的影响,这就要求设计时必须对具体的教学内容、环境、学生具有较强的解释力,不能采用宽泛、空洞的设计方法和描述方式。 (5)强调教学设计的一致性。教学设计的一致性主要表现在两个方面:一是教学设计各环节应该相互依存、紧密联系,因此要注意整个教学设计方案的一致性,不要孤立地进行各个环节的设计;二是教学活动是教学策略的具体体现,活动的形式和内容都要与所选择的教学策略保持一致,不能出现张冠李戴的现象。 (6)体现教学设计的创造性。教学设计是一个创造性的活动。在注重教学设计的规范化的同时教师要充分发挥创造性,在教学设计过程应该坚持灵活运用教学设计过程模式,根据实际教学的需要,选择合适的教学设计过程作为教学设计的参考。 选择教学媒体的依据和原则 一、选择教学媒体的理论基础:戴尔的“经验之塔” 二、选择教学媒体的依据 (1)依据教学目标。每个知识点都有具体的教学目标,为达到不同的教学目标常需要使用不同的媒体去传递教学信息。 (2)依据教学内容。各门学科的性质不同,适用的教学媒体会有所区别;同一学科内各章节内容不同,对教学媒体的使用也有不同要求。 (3)依据教学对象。不同年龄阶段的学生对事物的接受能力不一样,选用教学媒体时必须顾及他们的年龄特征。 (4)依据教学条件。教学中能否选用某种媒体,还要看当时当地的具体条件,其中包括资源状况、经济能力、师生技能、使用环境、管理水平等因素。 三、选择教学媒体的原则 1.最优决策原则 美国传播学家施拉姆(wilberSchramm)提出的决定媒体选择几率的公式,是选择媒体的最优决策的依据,如下: 媒体选择的几率(P)=媒体的功效(V)/需付出的代价(C) 2.有效信息原则 从戴尔的“经验之塔”我们可以看出,各种教学媒体所提供的学习经验层次是不同的:有的属于具体的经验,有的属于替代的经验、间接的经验, 有的则属于抽象的经验。因而,不同的教学内容应选择不同的教学媒体来体现。或者说,不同的教学媒体适合表现不同的教学内容。 学生的认知结构是逐步形成的,它不但与年龄有关,更与他们的知识、经验、思维的发展程度有关。 因此,只有当所选择的教学媒体所反映的信息与学生的认知结构以及教学内容有一定的重叠时,教学媒体才能有效发挥作用。 3.优化组合原则各种教学媒体都有各自的优点,也有各自的局限性,没有一种可以适合所有教学情况的“超级媒体”。 各种教学媒体的有机组合将会扬长避短、优势互补,取得整体优化的教学效果。但是,媒体的组合要以取得最佳的教学效果为出发点,而不只是形式上的相加。 选择教学媒体的程序和方法 一、选择教学媒体的程序 选择教学媒体的程序(见下图)主要分为三个步骤: 图媒体选择工作程序 (1)在确定教学目标和知识点的基础上,首先确定媒体使用目标; (2)选择媒体类型; (3)选择媒体内容。 媒体内容是指把教学信息转化为学习者的感官产生有效刺激的符号。选择媒体内容可通过选编、修改、新制三种途径进行。 由于人们在选择媒体时考虑的因素不同,思考问题的角度不同,设计的选择方案也就不同,因而形成了各种各样的媒体选择程序,此处不再赘述。如果您对这部分内容感兴趣,可以阅读配套光盘中的相关资料。 二、选择教学媒体的方法 1.教学媒体类型的选择 按照戴尔的“经验之塔”理论进行选择,见下图: 图教学媒体类型的选择 2.教学媒体内容的选择 图教学媒体内容的选择 (转引自李克东,1992,有改动) 3.根据在上述活动中所得到的媒体选择的原则和方法,对您过去一节课的教学设计方案进行分析,找出其中的成功之处和不足之处。对已往选择媒体方法进行反思 教学资源与信息化资源 资源,顾名思义,是一切可被人类开发和利用的物质、能量和信息的总称。教学资源指的是在学校教学过程中,支持教与学的所有资源,即一切可以被师生开发和利用的在教与学中使用的物质、能量和信息,包括各种学习材料、媒体设备、教学环境以及人力资源等,具体表现为教科书、练习册、活动手册和作业本,也包括实验和课堂演示时所使用的实物,还包括录像、软件、CD—ROM、网站、电子邮件、在线学习管理系统、计算机模拟软件、网上讨论BBS、网络教室、电教室、教师、辅导员等大量可利用的资源。 本模块中讨论的主要是信息化教学资源,而且是一种狭义的信息化教学资源,它主要是指信息技术环境下的各种数字化素材、课件、数字化教学材料、网络课程和各种认知、情感和交流工具……严格来说,信息化教学资源与信息化学习资源在概念内涵与外延上都有一些不同,但在本书中对教学资源与学习资源不作严格区分,即将它们看成同一概念。 我国目前正在实行的新课程需要丰富的教学资源作支持,课程结构和课程内容的变革扩大了信息化教学资源的需求并为之提供更大的应用空间。如果没有适用的信息化教学资源,信息技术的先进技术潜力就将难以被充分发掘,势必影响人们对信息技术作用的认识,进而阻碍现代教学观念形成,影响教学方式的改革,信息技术的普及和远程教育也就失去了意义。 信息化教学资源的教学应用及其特性 随着教育信息化的不断推进和新的教育理论和教学模式的出现,信息化学习资源的教学应用形态包括(转引自何克抗等,2005): (1)课堂演示:一般来说是为了解决某一学科的教学重点与教学难点而开发的,它注重对学生的启发、提示,反映问题解决的全过程,主要用于课堂演示教学。这种类型的教学软件要求画面要直观,尺寸比例较大,能按教学思路逐步深入地呈现。 (2)个别化学习:具有完整的知识结构,能反映一定的教学过程和教学策略,提供相应的形成性练习供学生进行学习评价,并设计友好的界面让学习者进行人一机交互活动。利用个别化系统交互学习型多媒体教学软件,学生可以在个别化的教学环境下进行自主学习。 (3)模拟实验:借助计算机仿真技术,提供可更改参数的指标项,当学生输入不同的参数时,能随时真实模拟对象的状态和特征,供学生进行模拟实验或探究发现学习使用。 (4)训练复习:主要是通过问题的形式用于训练、强化学生某方面的知识和能力。这种类型的教学软件在设计时要保证具有一定比例的知识点覆盖率,以便全面地训练和考核学生的能力水平。另外,考核目标要分为不同等级,逐级上升,根据每级目标设计题目的难易程度。 (5)教学游戏:这与一般的游戏软件不同,它是基于学科的知识内容,寓教于乐,通过游戏的形式,教会学生掌握学科的知识和能力,并引发学生对学习的兴趣。对于这种类型软件的设计,特别要求趣味性强、游戏规则简单。 (6)资料与工具:各种电子工具书、电子字典以及各类图形库、动画库、声音库等,这种类型的教学软件只提供某种教学功能或某类教学资料,并不反映具体的教学过程。这种类型的多媒体教学软件可供学生在课外进行资料查阅使用,也可根据教学需要事先选定有关片断,配合教师讲解,在课堂上进行辅助教学。 (7)网络课程:融学习的课程资料、教学活动和支持环境于一体的信息化教学资源。 信息化教学资源具有以下特性: (1)处理数字化:是指将声音、文本图形、图像、动画、视频等信息经过转换器抽样量化由模拟信号转换成数字信号,数字信号的可靠性远比模拟信号高,对它的纠错处理也容易实现。 (2)存储海量化、管理智能化:信息化资源一般包括大量视音频数据,需要海量的存储设备,一般是大容量的磁盘阵列或者光盘库,通过大型数据库管理,可以实现快速的查询和检索。这些大量的多媒体信息和资料,创设了丰富有效的教学情景,不仅利于学生对知识的获取和保持,而且大大地扩大了学生的知识面。 (3)显示多媒体化:这是指利用多媒体计算机技术存储、传输、处理多种媒体学习资源,如声音、文本、图形、图像、动画等。这与传统的单纯用文字或图片处理信息资源的方式相比要丰富得多。给学生提供的外部刺激不是单一的刺激,而是多种感官的综合刺激,这种刺激能引起学生的学习兴趣和提高学生的学习积极性。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/6779438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存