资源描述:
《教学计划编制.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.word格式,教学计划编制问题问题描述:大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。基本要求:(1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。(2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期
2、中。(3)若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。计划的表格格式自行设计。测试数据:学期总数:6;学分上限:10;该专业共开设12门课,课程号从C01到C12,学分顺序为2,3,4,3,2,3,4,4,7,5,2,3。先修关系如下:课程编号课程名称先决条件C1程序设计基础无C2离散数学C1C3数据结构C1,C2C4汇编语言C1C5语言的设计和分析C3,C4C6计算机原理C11C7编译原理C5,C3C8操作系统C3,C6C9高等数学无C10线性代数C9C11普通物理C9C12数值分析C9,C10,C1实现提示可设学期总数不超过12,课程总数不超过1
3、00。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。应建立内部课程序号与课程号之间的对应关系。,专业.专注..word格式,#include#include#include#definenull0#defineMAXNODE64//最大课程个数typedefstruct{charc[3];}cid;//课程号typedefstructCourse{cidid[3];//课程号charname[30];//课程名floatxf;//学分}Course;////////////////////////////////
4、////////////////课程typedefstructPreCourse{intadjvex;//课程在数组中的下标structPreCourse*pre;//指向下一先修的课程节点}PreCourse;/////////////////////////////////////////////////先修的课程节点typedefstruct{Coursecourse;//课程PreCourse*firstnext;//指向第一个先修的课程节点}CourseNode;//////////////////////////////////////////////////////////
5、//课程节点typedefstruct{CourseNodecourses[MAXNODE];//邻接表intxqs;//学期总数intnum;//课程的数目floatxfsx;/////学分上限}AlGraph;///////////////////////////////////////////////////////////////课程图typedefstruct{intdata[MAXNODE];//队中元素,专业.专注..word格式,intf,r;//队头r队尾f}queue;intIsCricle=0;//判断是否环1表示是0表示不是intjxq;//用于计算学期的////
6、/////////////////////////////////////////////////////////////////////voidqueueinit(queue*q)///////////////队初始化{q->f=q->r=0;}voidqueuein(queue*q,intx)//入队{if((q->r+1)%MAXNODE==q->f){printf("队满");exit(0);}q->r=(q->r+1)%MAXNODE;q->data[q->r]=x;}intqueueout(queue*q)//出队{if(q->f==q->r){printf("队空"
7、);exit(0);}q->f=(q->f+1)%MAXNODE;returnq->data[q->f];}intqueueempty(queue*q)///////////////队判空1为空{if(q->f==q->r)return1;elsereturn0;}voidcreatpre(AlGraph*CGraph)///////////////建立先修关系{system("cls");//用来清屏,专业.专注..word格式,