ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:48.54KB ,
资源ID:2265314      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2265314.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(教学计划编制.doc)为本站上传会员【天****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

教学计划编制.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 离散数学 C1 C3 数据结构 C1,C2 C4 汇编语言 C1 C5 语言的设计和分析 C3,C4 C6 计算机原理 C11 C7 编译原理 C5,C3 C

3、8 操作系统 C3,C6 C9 高等数学 无 C10 线性代数 C9 C11 普通物理 C9 C12 数值分析 C9,C10,C1 实现提示 可设学期总数不超过12,课程总数不超过100。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。应建立内部课程序号与课程号之间的对应关系。 #include #include #include #define null 0 #define MAXNODE 64 //最大课程个数 typedef struct

4、{ char c[3]; }cid; //课程号 typedef struct Course { cid id[3]; //课程号 char name[30]; //课程名 float xf; //学分 }Course; ////////////////////////////////////////////////课程 typedef struct PreCourse { int adjvex; //课程在数组中的下标 struct PreCourse *pre; //指向下一先修的课程节点 }Pre

5、Course;/////////////////////////////////////////////////先修的课程节点 typedef struct { Course course;//课程 PreCourse *firstnext; //指向第一个先修的课程节点 }CourseNode;////////////////////////////////////////////////////////////课程节点 typedef struct { CourseNode courses[MAXNODE]; //邻接表 int xqs;//学期总数

6、int num; //课程的数目 float xfsx;/////学分上限 }AlGraph;///////////////////////////////////////////////////////////////课程图 typedef struct { int data[MAXNODE];//队中元素 int f,r;//队头r 队尾f }queue; int IsCricle=0;//判断是否环 1表示是 0表示不是 int jxq;//用于计算学期的 ///////////////////////////////////////////

7、////////////////////////////// void queueinit(queue *q)///////////////队初始化 { q->f=q->r=0; } void queuein(queue *q,int x)//入队 { if((q->r+1)%MAXNODE==q->f) { printf("队满\n"); exit(0); } q->r=(q->r+1)%MAXNODE; q->data[q->r]=x; } int queueout(queue *q)//出队 { if(q->f==q->

8、r) { printf("队空\n"); exit(0); } q->f=(q->f+1)%MAXNODE; return q->data[q->f]; } int queueempty(queue *q)///////////////队判空 1为空 { if(q->f==q->r) return 1; else return 0; } void creatpre(AlGraph *CGraph)///////////////建立先修关系 { system("cls");//用来清屏 int choice; fflush

9、stdin);/////////////////////////////////////////////清空输入流 int i,j,n;//////临时变量 PreCourse *p,*q;//////临时变 printf("\n建立先修关系:\n"); printf("\n请输入每一门课程号的编号:"); for(i=0;inum;i++) { if(i%4==0)printf("\n"); printf("%d) ",i+1); printf("%s\t",CGraph->courses[i].course.id); }

10、 printf("\n请根据以上的编号,输入每一门课程的先修课程(输入0 表示没有或结束):\n"); for(i=0;inum;i++) { printf("%s的先修课程:",CGraph->courses[i].course.id); scanf("%d",&j); n=0; while(j) { while(j<1||j>CGraph->num||j==i+1) { if(j==i+1) printf("先修课程号不能是本课程号"); else

11、 printf("输入的先修课程号不在该专业开设的课程序列中"); fflush(stdin);/////////////////////////////////////////////清空输入流 printf("重新输入:"); scanf("%d",&j); } p=(PreCourse *)malloc(sizeof(PreCourse)); p->adjvex=j-1; p->pre=null; if(n==0) { CGraph->courses[i].firstnext=p;

12、q=CGraph->courses[i].firstnext; n++; } else { q->pre=p; q=p; n++; } scanf("%d",&j); } } printf(" 1)重新建立先修关系 2)确定\n"); printf("请选择:"); scanf("%d",&choice); if(choice==1) creatpre(CGraph); jxq=0; } AlGraph input()////////////////////

13、//////////////输入并建立课程图 { AlGraph CGraph; int xqzs=0,kczs=0;////////////////学期总数:xqzs 专业共开设课程数:kczs int i,j;//////临时变量 float xf,xfsx=0;//////临时变量xf 学分上限:xfsx printf("教学计划编制\n\n"); printf("输入参数:\n"); printf("1、学期总数:"); scanf("%d",&xqzs); CGraph.xqs=xqzs; printf("2、专业共开设课程数:

14、"); scanf("%d",&kczs); CGraph.num=kczs;///////////////////////////////////课程数 printf("3、学分上限(每个学期的学分上限都一样):"); scanf("%f",&xfsx); CGraph.xfsx=xfsx; printf("4、每门课的课程号(固定占3位的字母数字串)、课程名、学分:\n"); for(i=0;i

15、清空输入流 printf("课程号:"); scanf("%s",CGraph.courses[i].course.id); fflush(stdin);/////////////////////////////////////////////清空输入流 printf("课程名:"); scanf("%s",CGraph.courses[i].course.name); fflush(stdin);/////////////////////////////////////////////清空输入流 printf("学分:"); scanf("%f

16、",&xf); fflush(stdin);/////////////////////////////////////////////清空输入流 while(xf>xfsx||xf<=0) { printf("本课程学分大于学期学分上限或小于等于零,请重新输入学分:"); fflush(stdin);/////////////////////////////////////////////清空输入流 scanf("%f",&xf); } CGraph.courses[i].course.xf=xf; CGraph.courses[i]

17、firstnext=null; } creatpre(&CGraph);///////////////建立先修关系 return CGraph; } void output(AlGraph CGraph)///////////////输出先修关系 { int i,j,n;//////临时变量 PreCourse *p;//////临时变量 printf("先修关系如下:\n\n"); printf("课程编号\t课程名称\t\t 先决条件\n"); for(i=0;i

18、s\t\t",CGraph.courses[i].course.id,CGraph.courses[i].course.name); j=0; p=CGraph.courses[i].firstnext; while(p) { n=p->adjvex; printf("%s ",CGraph.courses[n].course.id); p=p->pre; j++; } if(j==0)printf("无"); printf("\n"); } } void findoutdegree(AlGraph *CG

19、raph,int outdegree[])/////////找出度数,即找出每一门课程的先修课数 { int i; PreCourse *p; for(i=0;inum;i++) { outdegree[i]=0; p=CGraph->courses[i].firstnext; while(p) { outdegree[i]++; p=p->pre; } } } void judgingcricle(AlGraph *CGraph,queue *q2)////////判断是否有环 { int o

20、utdegree[MAXNODE];/////////出度 int i,m,j,pd=0; float xf=0; PreCourse *p; queue q; queueinit(&q);///////////////队初始化 findoutdegree(CGraph,outdegree);/////////找出度 for(i=0;inum;i++) if(outdegree[i]==0&&(xf+CGraph->courses[i].course.xf)<=CGraph->xfsx)/////////出度为零的,并且学分还没达到学分上限的

21、入队,即没有先修课的课程入队 {queuein(&q,i);outdegree[i]--;xf+=CGraph->courses[i].course.xf;} m=0;xf=0;queuein(&q,-1);jxq++; while(1) { i=queueout(&q); queuein(q2,i); if(i!=-1) { m++; for(j=0;jnum;j++) if(j!=i) { if(outdegree[j]==0&&(xf+CGraph->courses[j].course

22、xf)<=CGraph->xfsx)/////////将之前因学分上限受制的出度为零的入队,即没有先修课的课程入队 {queuein(&q,j);outdegree[j]--;xf+=CGraph->courses[j].course.xf;} else{ p=CGraph->courses[j].firstnext; while(p) { if(p->adjvex==i) { outdegree[j]--; if(outdegree[j]==0&&(xf+CGraph->co

23、urses[i].course.xf)<=CGraph->xfsx)/////////出度为零的入队 {queuein(&q,j);outdegree[j]--;pd=1;xf+=CGraph->courses[i].course.xf;} } p=p->pre; } } } } else {if(pd){pd=0;queuein(&q,-1);jxq++;xf=0;}else break;} } if(jxq>CGraph->xqs){printf("\n错误报告:\n在%d学期内是无法修完

24、这些课程\n",CGraph->xqs);exit(0);} if(mnum) { printf("\n错误报告:\n"); for(i=0;inum;i++) if(outdegree[i]>0) printf("%s ",CGraph->courses[i].course.id); printf("存在循环,因此课程安排不了\n"); IsCricle=1; } } void layout1(AlGraph *CGraph,queue *q)////////////////编排1/////

25、 { printf("\n学生在各学期中的学习负担尽量均匀:\n\n"); int i,j,xq=1,cxq=CGraph->xqs-jxq,ck[20]; float xf,m=CGraph->num/CGraph->xqs*1.0f;//m是每学期要学的课程数 queue q1=*q;//// while(!queueempty(&q1)) { for(i=0;i<20;i++)ck[i]=-1; for(i=0;i

26、 } if(ck[0]!=-1) { printf("\n第%d学期学:",xq++); xf=0;i=0; do{ j=ck[i]; printf(" %s ",CGraph->courses[j].course.id);i++;xf+=CGraph->courses[j].course.xf; }while(ck[i]!=-1); printf("获得学分是%.2f\n",xf); } } } void layout2(AlGraph *CGraph,queue *q)////////

27、////////编排2 { printf("\n课程尽可能地集中在前几个学期中:\n\n"); int i,j,xq=1;float xf; printf("\n第%d学期学:",xq++);xf=0; queue q1=*q;//// for(i=0;inum;) { j=queueout(&q1); if(j!=-1) {printf(" %s ",CGraph->courses[j].course.id);i++;xf+=CGraph->courses[j].course.xf;} else {printf("获

28、得学分是%.2f\n第%d学期学:",xf,xq++);xf=0;} } while(xq<=CGraph->xqs){printf("获得学分是%.2f\n第%d学期学:无\t",xf,xq++);xf=0;} printf("获得学分是%.2f\n"); } void main() { int choice; queue q;//用来存放已编排好的课程 queueinit(&q);///////////////队初始化 AlGraph CGraph;//课程图 fflush(stdin);/////////////////////////////

29、////////////////清空输入流 CGraph=input();//输入并建立课程图 system("cls");//用来清屏 output(CGraph);///////////////输出先修关系 printf("\n\n"); fflush(stdin);/////////////////////////////////////////////清空输入流 judgingcricle(&CGraph,&q);////////判断是否有环 if(!IsCricle) { printf("请选择编排策略:\n"); printf("1.使学

30、生在各学期中的学习负担尽量均匀;\n"); printf("2.使课程尽可能地集中在前几个学期中。\n"); printf("请选择:"); // scanf("%d",&choice); // fflush(stdin);/////////////////////////////////////////////清空输入流 // if(choice==1) layout1(&CGraph,&q);////////////////编排1 // else layout2(&CGraph,&q);////////////////编排2 } }

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服