1、得 分评价内涵工 作 表 现20%01学习态度6遵守各项纪律,工作刻苦努力,具有艮好的科学 工作态度。02科学实践、调研7通过实验、试验、查阅文献、深人生产实践等渠 道获取与课程设计有关的材料。03课题工作量按期圆满完成规定的任务,工作量饱满。能 力 水 平35%04综合运用知识的能力10能运用所学知识和技能去发现与解決实际问题, 能正确处理实验数据,能对课题进行理论分析, 得岀有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提岀并 较好地论述课题的实施方案;有收集、加工各种 信息及获取新知识的能力。06设计(实验)能力,方案 的设计能力能正确设计实验方案,独立进行装置安
2、装、调试、 操作等实验工作,数据正确、可靠;研究思路清 晰、完整。07计算及计算机应用能力具有较强的数据运算与处理能力;能运用计算机 进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析 能力(综合分析能力、技 术经济分析能力)具有较强的数据收集、分析、处理、综合的能力。45%09插图(或图纸)质量、篇 幅、设计(论文)规范化 程度符合本专业相关规范或规定要求;规范化符合本 文件第五条要求。设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分, 结论严谨合理;实验正确,分析处理科学。11创新对前人工作有改进或突破,或有独特见解。成绩指 导 教 师 评 语指导教师签名:
3、 年 月曰摘要 , 需求分析 ,11 ij V、丿1/ 1 jjjjjjjjjjjjjjjjjjjjjjjjjjjj41.1实验内容和实验目的 ,1.2设计要求 ,1.3理论与实践教学体系的关系 ,二流程图设计 ,J 1 1L-*- 11 =0数据关系:R1= v ai-1 ai |ai- 1,ai D,i=2,n基本操作 :void InitStack (SqStack *S);int StackEmpty(SqStack S);void Push(SqStack *S, int );int Pop(SqStack *S, int *e);ADT Stack2.2主程序int main()
4、/ 主函数int numterm; / 学期总数int uplcredit; / 一个学期的学分上限int selectway;ALGraph G;printf( 请输入学期总数 :n);scanf(%d,&numterm); 请输入一个学期的学分上限 :uplcredit);CreatGraph(&G);2. 课程尽量均 请选择编排策略 :1. 课程尽可能集中到前几个学期; 匀分布 nselectway);if(selectway=1)TopologicalSort_1(G,numterm,uplcredit);if(selectway=2)TopologicalSort_2(G,numte
5、rm,uplcredit);system(pausereturn 0;3代码设计3.1 头结点,表结点,邻接表的定义#define MAX_VERTEX_NUM 100 /最/ 大课程总数 typedef struct ArcNodeint adjvex;struct ArcNode *nextarc;ArcNode;typedef struct VNodechar name24; /课程名int classid;、b -rrt 口课程号int credit;课程的学分int indegree;该结点的入度int state;该节点的状态ArcNode *firstarc;指向第一条依附该顶点
6、的弧的指针VNode,AdjListMAX_VEXTEX_NUM;typedef structAdjList vertices;int vexnum, arcnum;ALGraph;邻接表的基本操作:创建邻接表 求一个结点的入度 拓扑排序来编排课程3.2栈的定义#define STACk_INIT_SIZE 100 / 存储空间的初时分配量#define STACKINCREMENT 10 / 存储空间的分配增量typedef int ElemType;基本操作:栈的初始化判断栈是否为空入栈操作出栈操作3.3主程序和其他算法 int numterm;2. 课程尽量均匀分 布 nvoid Cre
7、atGraph(ALGraph *G)/ 构件图 int i, m, n;ArcNode *p; 请输入需要编排课程总数 :G-vexnum);for( i=1;ivexnum;i+) 请输入课程名 n scanf(%sverticesi.name); 请输入课程号 nverticesi.classid); 请输入该课程的学分 nverticesi.credit);verticesi.indegree=0;vertices i.state=NOTSTUDY;verticesi.firstarc=NULL; 请输入课程先修关系总数: arcnum); 请顺序输入每个课程先修关系 ( 先修课程在前
8、并以逗号作为间隔):for (i = 1; i arcnum; i+)n 请输入存在先修关系的两个课程的序号 :%d,%dn,&m);while (n G-vexnum | m vexnum) 输入的顶点序号不正确 请重新输入 :p = (ArcNode*)malloc(sizeof(ArcNode);if (p = NULL)memory allocation failed,goodbeyexit(1); p-adjvex = m; p-nextarc = G-verticesn.firstarc;verticesn.firstarc = p;n 建立的邻接表为 : / 输出建立好的邻接表
9、for(i=1;%d:-,G- for(p=G-verticesi.firstarc;p!=NULL;p=p-nextarc) printf(%d-,p-adjvex);NULLvoid InitStack(SqStack *S)S-base=(int *)malloc(STACK_INIT_SIZE *sizeof(int);if (!base)ERRORtop=S-base;stacksize=STACK_INIT_SIZE;int StackEmpty(SqStack *S)if(S-top=S-return OK;elsereturn ERROR;void Push(SqStack *
10、S,int e)top - S-base = S-stacksize)base = (int *) realloc (S-base , (S-stacksize + STACKINCREMENT) * sizeof(int);if(!top = S-base + S-stacksize;stacksize += STACKINCREMENT;*S-top+ = e;int Pop(SqStack *S, int *e)top = S-base) exit(1);*e = * -S-top;求图中各节点的入度void FindInDegree(ALGraph G, int indegree)/i
11、nt i;= G.vexnum;indegreei = 0;while (G.verticesi.firstarc)indegreeG.verticesi.firstarc-adjvex+;G.verticesi.firstarc = G.verticesi.firstarc-nextarc;void TopologicalSort_1(ALGraph G,int numterm,int uplcredit)FILE *fp;fp=fopen(bianpai.txt,wSqStack S;int indegreeM;/ 存放各节点的入度int i,j, k, m,n;int count; /
12、课程编排数目计数器int sumcredit;/ 每个学期的课程学分累加器 FindInDegree(G, indegree); i+) G.verticesi.indegree=indegreei;InitStack(&S);count=0;k=0;while(count!=G.vexnum & k=numterm)sumcredit=0;for(i=1;=G.vexnum;i+) / 入度为零的节点入栈,即无先修的课程 入栈if(G.verticesi.indegree=0)&(G.verticesi.state=NOTSTUDY)Push(&S,i);G.verticesi.state
13、= STUDY;/ 避免入度为零节点重复入栈StackEmpty(&S)&(sumcredit=uplcredit)k= k+1;printf(” 第(:1个学期学得课程有:,k);sumcredit = 0;i+)/ 入度为零的节点入栈, 即无先修的课程入栈(G.verticesi.state= =NOTSTUDY)栈非空 &while(!S)&uplcredit)/ 学分总数小于学分上限Pop(&S,&j);sumcredit = sumcredit + G.verticesj.credit;if(sumcredit adjvex.indegree-;else Push(&S,j);/ 将未输出的节点重新压入栈if(countG.vexnum)n 课程编排出错 nn 课程编排成功 nfclose(fp);void TopologicalSort_2(ALGraph G,int numterm,int uplcredit) int maxnum;int sumnum;G.verticesi.indegree = indeg
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1