教学计划编制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教学计划编制问题

实现提示

可设学期总数不超过12,课程总数不超过100。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。应建立内部课程序号与课程号之间的对应关系。

#include

#include

#include

#define null 0

#define MAXNODE 64 //最大课程个数

typedef struct

{

char c[3];

}cid; //课程号

typedef struct Course

{

cid id[3]; //课程号

char name[30]; //课程名

float xf; //学分

}Course; ////////////////////////////////////////////////课程

typedef struct PreCourse

{

int adjvex; //课程在数组中的下标

struct PreCourse *pre; //指向下一先修的课程节点

}PreCourse;/////////////////////////////////////////////////先修的课程节点typedef struct

{

Course course;//课程

PreCourse *firstnext; //指向第一个先修的课程节点

}CourseNode;////////////////////////////////////////////////////////////课程节点typedef struct

{

CourseNode courses[MAXNODE]; //邻接表

int xqs;//学期总数

int num; //课程的数目

float xfsx;/////学分上限

}AlGraph;///////////////////////////////////////////////////////////////课程图typedef struct

{

int data[MAXNODE];//队中元素

int f,r;//队头r 队尾f

}queue;

int IsCricle=0;//判断是否环1表示是0表示不是

int jxq;//用于计算学期的

/////////////////////////////////////////////////////////////////////////

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->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(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);

}

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

printf("输入的先修课程号不在该专业开设的课程序列中");

fflush(stdin);/////////////////////////////////////////////清空输入流

printf("重新输入:");

scanf("%d",&j);

}

p=(PreCourse *)malloc(sizeof(PreCourse));

p->adjvex=j-1;

p->pre=null;

if(n==0)

{

相关文档
最新文档