课程设计说明书。
题目: 教学计划编制问题(a类。
院系: 计算机科学系。
专业班级: 06网络工程。
学号。学生姓名。
指导教师。一。 需求分析。
1)实验内容和实验目的:
1.大学的每个专业都要编制教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限都相等。
每个专业开设的课程都是确定的,而且课程的开设时间的安排必须满足先修关系。每个课程的先修关系都是确定的,可以有任意多门,也可以没有。每一门课程恰好一个学期。
试在这样的情况下设置一个教学计划编制程序。
2.在大学的某个专业中选取几个课程作为顶点,通过各门课的先修关系来构建个图,该图用邻接表来存储,邻接表的头结点存储每门课的信息。
3.本程序的目的是为用户编排课程,根据用户输入的信息来编排出每学期要学的课程。
2)测试数据:
学期总数:6;学分上限:10;该专业共开设12门课,课程号从01到12,学分顺序为2,3,4,3,2,3,4,4,7,5,2,3。先修关系见教科书图7.26。
3)测试结果(包含正确和错误的):
正确测试结果:
错误测试结果:
二。 概要设计。
1. 抽象数据类型图的定义如下:
adt graph
vr=基本操作p:
void creatgraph(algraph *)
void findindegree(algraph , int *
void topologicalsort_1(algraph g,int numterm,int maxcredit);
void topologicalsort_2(algraph g,int numterm,int maxcredit);
adt graph
栈的定义:adt stack
数据关系:r1=
基本操作:void initstack (sqstack *s);
int stackempty(sqstack s);
void push(sqstack *s, int );
int pop(sqstack *s, int *e);
adt stack
2. 主程序
int main() 主函数。
int numterm; /学期总数。
int uplcredit; /一个学期的学分上限。
int selectway;
algraph g;
printf("请输入学期总数:");
scanf("%d",&numterm);
printf("请输入一个学期的学分上限:");
scanf("%d",&uplcredit);
creatgraph(&g);
printf("请选择编排策略:1.课程尽可能集中到前几个学期;2.课程尽量均匀分布");
scanf("%d",&selectway);
if(selectway==1)
topologicalsort_1(g,numterm,uplcredit);
if(selectway==2)
topologicalsort_2(g,numterm,uplcredit);
system("pause");
return 0;
3. 本程序只有两个模块,调用关系简单。
主程序模块。
拓扑排序模块。
三.详细设计。
1.头结点,表结点,邻接表的定义。
#define max_vertex_num 100 //最大课程总数。
typedef struct arcnodearcnode;
typedef struct vnodevnode,adjlist[max_vextex_num];
typedef structalgraph;
邻接表的基本操作:
void creatgraph(algraph *)
创建邻接表。
void findindegree(algraph , int *
求一个结点的入度。
void topologicalsort_1(algraph g,int numterm,int maxcredit);
拓扑排序来编排课程。
void topologicalsort_2(algraph g,int numterm,int maxcredit);
拓扑排序来编排课程。
2.栈的定义:
#define stack_init_size 100 //存储空间的初时分配量。
#define stackincrement 10 //存储空间的分配增量。
typedef int elemtype;
typedef structalgraph;
基本操作:void initstack (sqstack *s);
栈的初始化。
int stackempty(sqstack s);
判断栈是否为空。
void push(sqstack *s, int );
入栈操作。int pop(sqstack *s, int *e);
出栈操作。3.主程序和其他算法。
int main() 主函数。
int numterm; /学期总数。
int uplcredit; /一个学期的学分上限。
int selectway;
algraph g;
printf("请输入学期总数:");
scanf("%d",&numterm);
printf("请输入一个学期的学分上限:");
scanf("%d",&uplcredit);
creatgraph(&g);
printf("请选择编排策略:1.课程尽可能集中到前几个学期;2.课程尽量均匀分布");
scanf("%d",&selectway);
if(selectway==1)
topologicalsort_1(g,numterm,uplcredit);
if(selectway==2)
topologicalsort_2(g,numterm,uplcredit);
system("pause");
return 0;
void creatgraph(algraph *g)//构件图。
int i, m, n;
arcnode *p;
printf("请输入需要编排课程总数:");
scanf("%d",&g->vexnum);
for( i=1;i<=g->vexnum;i++)
printf("请输入课程先修关系总数:")
scanf("%d",&g->arcnum);
printf("请顺序输入每个课程先修关系(先修课程在前并以逗号作为间隔):");
for (i = 1; i <=g->arcnum; i++)
printf("请输入存在先修关系的两个课程的序号:")
scanf("%d,%d",&n,&m);
while (n < 0 ||n > g->vexnum ||m < 0 ||m > g->vexnum)
printf("输入的顶点序号不正确请重新输入:")
华信学院数据结构实习教学计划编制
findindegree g 初始条件 图g已存在。操作结果 输出一个人结点的入度。topologicalsort 初始条件 图g存在。操作结果 若g无回路,则输出g的顶点的一个拓扑序列。initstack s 操作结果 构造一个空栈。stackempty s 初始条件 栈s已存在。操作结果 若栈s...
数据结构实验之结构体与共同体
实验三 结构体和共用体。include include typedef char elemtype typedef struct node r next null return h void listinsert linklist l,int i,elemtype e if p j i 1 s li...
工作计划 之2023年初中学校教学计划
最新 工作计划 之2019年初中学校教学计划。初中校舍教授教养规划篇一。20xx年,我校教导事情的指示思维是 当真贯彻落实党的xx大和十八届三中全会肉体,深刻贯彻落实迷信发展观,周全贯彻党的教导目标,当真落实秋季教导事情集会肉体。以周全进步教导品质为焦点,以建立责任教导平衡进展和 双高普九 为抓手,...