实践教学。兰州理工大学。
计算机与通信学院。
2012年春季学期。
数据结构课程设计。
题目:教学计划编制问题。
专业班级:信计一班
姓名: 肖雄
学号: 10500113
指导教师: 张永
成绩。目录。
摘要 11. 采用类c语言定义相关的数据类型 2
2. 各模块的伪码算法 3
3. 函数的调用关系图 6
4. 调试分析 9
5. 源程序(带注释) 11
总结 24参考文献 25
致谢 25附件ⅰ 任务一源程序** 26
教学计划(课程计划)是课程设置的整体规划,它规定不同课程类型相互结构的方式,也规定了不同课程在管理学习方式的要求及其所占比例,同时,对学校的教学、生产劳动、课外活动等作出全面安排,具体规定了学校应设置的学科、课程开设的顺序及课时分配,并对学期、学年、假期进行划分。
根据一定的教育目的和培养目标制定的教学和教育工作的指导文件。它决定着教学内容总的方向和总的结构,并对有关学校的教学、教育活动,生产劳动和课外活动校外活动等各方面作出全面安排,具体规定一定学校的学科设置、各门学科的教学顺序、教学时数以及各种活动等。教学计划、教学大纲和教科书互相联系,共同反映教学内容。
近代以来,特别是在实行学科课程的条件下,教学计划主要是学科的计划,或只是学科表。随着社会经济和科学技术的新发展,教育结构不断发生变革,现代教育和教学理论主张对教学计划的结构实行改革。除了教学以外,生产劳动、科技活动、发展体力和增进健康的活动、艺术活动和社会活动等也应列入教学计划。
下面就利用对此进行程序设计,已达到预期的目的。
关键字:数据结构,教学计划编制,抽象数据类型,程序设计
头结点、表结点、邻接表的定义。
#define max_vertex_num 100 //最大课程总数。
typedef struct arcnode{
int adjvex;
struct arcnode *nextarc;
arcnode;
typedef struct vnode{
char name[24]; 课程名
int classid; /课程号。
int credit; /课程的学分。
int indegree; /该结点的入度。
int state; /该节点的状态。
arcnode *firstarc; /指向第一条依附该顶点的弧的指针。
vnode,adjlist[max_vextex_num];
typedef struct{
adjlist vertices;
int vexnum, arcnum;
algraph;
邻接表的基本操作:
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);
拓扑排序来编排课程。
栈的定义。#define stack_init_size 100 //存储空间的初时分配量。
#define stackincrement 10 //存储空间的分配增量。
typedef int elemtype;
typedef struct
adjlist vertices;
int vexnum, arcnum;
algraph;
基本操作:void initstack (sqstack *s);
栈的初始化。
int stackempty(sqstack s);
判断栈是否为空。
void push(sqstack *s, int );
入栈操作。int pop(sqstack *s, int *e);
出栈操作。void findindegree(algraph g,int indegree)
/*求顶点的入度,算法调用 */
int i;
arcnode *p;
for(i=0;i<
indegree[i]=0; /赋初值 */
for(i=0;i<
p=while(p)
indegree[p->adjvex]++
p=p->nextarc;
typedef int pathone[maxclass];
typedef int pathtwo[maxclass];
status topologicalsort(algraph g)
/*有向图g采用邻接表存储结构。若g无回路,则输出g的顶点的一个拓扑序列并返回ok, *
* 否则返回error。 *
int i,k,j=0,count,indegree[max_vertex_num];
sqstack s;
pathone a;
pathtwo b;
arcnode *p;
findindegree(g,indegree); 对各顶点求入度indegree[0..vernum-1] *
initstack(&s); 初始化栈 */
for(i=0;i< /建零入度顶点栈s */
if(!indegree[i])
push(&s,i); 入度为0者进栈 */
count=0; /对输出顶点计数 */
while(!stackempty(s))
/*栈不空 */
pop(&s,&i);
a[i]=*
b[i]=*
printf("课程%s→学分%s ",输出i号顶点并计数 */
+count;
for(p=>nextarc)
/*对i号顶点的每个邻接点的入度减1 */
k=p->adjvex;
if(!(indegree[k]))若入度减为0,则入栈 */
push(&s,k);
if(count<
printf("此有向图有回路");
return error;
elseprintf("为一个拓扑序列。");
本程序只有两个模块,调用关系简单。
主程序模块→拓扑排序模块。
void findindegree(algraph g, int indegree)求图中各节点的入度(如下左图)void creatgraph(algraph *g)//构件图(如下右图)。
void topologicalsort_1(algraph g,int numterm,int uplcredit) /有向图g采用邻接表存储结构(如下左图);
void topologicalsort_2(algraph g,int numterm,int uplcredit) /有向图g采用邻接表存储结构(如下右图)。
4.1实验过程**现的问题及解决方法
我们在实验过程中遇到的最大难题是两个课程排序算法的编写。刚开始的时候没有任何的思路,网上也只有拓扑排序的算法,对于课程设计要求的排序算法没有任何头绪。经过请教老师和同学以及翻阅了一些相关书籍,并在网上的搜索有了排序算法的大体思路。
经过三天的修改,终于写出了符合要求的排序算法。
4.2测试数据。
学期总数:6;学分上限:10;该专业共开设12门课,课程号从01到12,学分顺序为2,3,4,3,2,3,4,4,7,5,2,3。
4.3测试结果(包含正确和错误的)
正确测试结果:
错误的测试结果。
注:最好能给出一个测试实例)
4.4测试数据及程序运**况。
输入的内容如下:
课程编号课程名称学分先决条件。
01 程序设计基础 2无。
02 离散数学 3 01
03数据结构 4 01,02
04 汇编语言 3 01
05 语言的设计和分析 2 03,04
06 计算机原理 3 11
07编译原理 4 05,03
08操作系统 4 03,06
09 高等数学 7 无。
10 线性代数 509
11普通物理 2 09
12 数值分析 3 09,10,01
两种编排方法都输出结果为:
第一学期学的课程有:高等数学程序设计基础;
第二学期学的课程有:普通物理线性代数汇编语言;
第三学期学的课程有:数值分析计算机原理离散数学;
第四学期学的课程有:数据结构;
数据结构教学计划编制
摘要。教学计划 课程计划 是课程设置的整体规划,它规定不同课程类型相互结构的方式,也规定了不同课程在管理学习方式的要求及其所占比例,同时,对学校的教学 生产劳动 课外活动等作出全面安排,具体规定了学校应设置的学科 课程开设的顺序及课时分配,并对学期 学年 假期进行划分。根据一定的教育目的和培养目标制...
计划员岗位说明书
一 岗位资料 职位名称 计划员岗位编号 wk005 直属上司职位 物控主管。职位部门 物控部 岗位 物控员晋升岗位 物控副主管 主管 二 岗位在组织中的位置 三 岗位职责 1 物料bom表的完善。2 物料申购的审核 汇总,根据生产计划制定物料需求计划。3 物料进度的控制 追踪,异常情况反馈跟进。4 ...
岗位说明书
电气队各岗位说明书 目录 一 电气队队长岗位说明书2 二 电气队队长助理岗位说明书6 三 电气队厂用班班长岗位说明书10 四 电气队电机班班长岗位说明书14 五 电气队高压班班长岗位说明书18 六 电气队厂用班技术员岗位说明书22 七 电气队电机班技术员岗位说明书26 八 电气队高压班技术员岗位说明...
职位说明书
大智汇股份 职位说明书。1.1董事长。职位编号 01 职责范围 1,企业发展战略 主持制定企业长期发展战略与企业发展目标,推动 监督企业发展目标和企业长期发展的战略的执行。2,主持董事会及日常工作 主持公司董事会的召开和董事会闭会期间的日常工作 按公司章程的规定,定期召开公司的董事会 组织董事会的各...
职位说明书
xx市某服装辅料 0610修订版 管理部。目录。一 总经办 1 1.1部门职责 1 1.2总经理 2 1.3营运副总经理 4 1.4行政副总经理 7 1.5项目副总经理 10 1.6总经理助理 12 1.7总经办文员 14 二 投资发展部 16 2.1部门职责 16 2.2.投资发展部长 17 三 ...
岗位说明书
职务说明书编写。一 基本信息。1 职务名称 指公司内部的工作职位,它应该能反映该职位的主要功能。如销售员 污水操作工等。2 直接上级 指直接向该职位下达行政指令的职位。原则上只有1个,如多头领导,应列全。3 所辖人员 指所管辖范围内的人数。3 直接下属 指直接接受该职位行政指令的职位。4 定员 指该...
职位说明书
链组织体系。职位名称 链总监。所属部门 链部。工作地点 苏州工业园区。汇报对象 总经理。职位详细描述 1 在职责范围内,落实公司方针目标,对部门方针目标的完成情况负责。2 对公司整个 链动作负责,设计并改善公司物流 链系统,制定并完善切实可行的采购 生产 物流 仓储 配送等管理工作流程,并实施监督和...
岗位说明书
岗位名称 资深副经理。工作地点 值班经理室。一 岗位设置目的。餐厅人员管理,控制餐厅成本,负责 和培训的管理。同时监督餐厅的日常运行,处理一些突发事件和顾客抱怨。并且负责与其他肯德基餐厅之间货物 人员的协调。岗位定员 1人所在部门 行政部。二 岗位职责与任务。序号。主要工作职责及内容。营运方面 1....