版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中北大学数据结构课程设计说明书
学生姓名:张宁学号:1021011524
学院:软件学院专业:软件工程题目:教学计划编制问题指导教师何志英
2011年1设计任务概述1.1问题描述大学的每个专业都要制定教学计划。针对软件工程本专业制定一个教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。1.2需求分析根据问题描述及要求,可知设计中需要定义先修关系的AOV网图中的顶点及弧边的结构体,在运行结果中将图的信息显示出来,利用先修关系将课程排序,最后解决问题输出每学期的课程。(1)用学分来实现每学期课程数大致相同;(2)根据教学计划中的课程及其关系和学分来定义图的顶点及边的结构体。(3)创建图CreateGraph():结合先修关系的AOV网,采用邻接表存储。(4)菜单OUTPUT():显示代号所对应课程及课程的先修课程。(5)拓扑排序TopoSort(G):将课程排序后并决定出每学期所学课程。(6)输出图G的信息Display(G):将图的顶点和弧边输出。1.3本程序包括2个模块:主程序模块和拓扑排序模块。拓扑排序模块主程序模块拓扑排序模块主程序模块本设计所采用的数据结构(1)voidOUTPUT()//显示代号所对应课程及课程的先修课程(2)intLocateVex(ALGraphG,VertexTypeu)
//查找图中某个顶点位置
(3)intCreateGraph(ALGraphG)//采用邻接表存储结构(4)voidDisplay(ALGraphG)//输出图G的信息(5)voidFindInDegree(ALGraphG,intindegree[])//求顶点的入度(6)voidpuanduan(VertexTypestr,structNamename[],intn)(7)intInitStack(SqStack&S)//栈的初始化(8)intStackEmpty(SqStackS)//判空(9)intPop(SqStack&S,SElemType&e)//出栈(10)intPush(SqStack&S,SElemTypee)//入栈(11)intTopoSort(ALGraphG,AdjListTemp,structNamename[])//拓扑排序(12)voidmain()//主函数功能模块详细设计3.1详细设计思想12main()12main()13411256789103.2核心代码3.21.数据类型定义(1)头结点,表结点,邻接表的定义typedefcharVertexType[MAX_NAME];intTotalTerms;
//学期总数intMaxScores;
//学分上限typedefstructArcNode{
intadjvex;
//该弧所指向的顶点的位置弧的节点结构
structArcNode*nextarc;
//指向下一条弧的指针}ArcNode;
//表结点
typedefstructVNode
{
VertexTypedata;
//顶点信息
intgrades;
//存储学分信息
ArcNode*firstarc;
//指向第一条依附该顶点的弧的指针}VNode,AdjList[MAX_VERTEX_NUM];
//头结点
typedefstructALGraph//邻接表{
AdjListvertices;
//vertices存储课程名
intvexnum,arcnum;
//图的当前顶点数和弧数}ALGraph;邻接表的基本操作:voidCreatGraph(ALGraph*);创建邻接表voidFindInDegree(ALGraph,int*);求一个结点的入度intTopoSort(ALGraphG,AdjListTemp,structNamename[])//拓扑排序(2)栈的定义:typedefintSElemType;
//栈类型#defineStack_NUM20
//存储空间初始分配量#defineStack_MoreNUM5
//存储空间分配增量typedefstructSqStack{
SElemType*base;
SElemType*top;
intstacksize;
//分配的存储空间}SqStack;基本操作:voidInitStack(SqStack*S);栈的初始化intStackEmpty(SqStackS);判断栈是否为空voidPush(SqStack*S,int);入栈操作intPop(SqStack*S,int*e);出栈操作3.22系统主要子程序详细设计(1)主函数模块设计voidmain(){ALGraphG;AdjListTemp;structNamename[N]={{"C1"},{"C2"},{"C3"},{"C4"},{"C5"},{"C6"},{"C7"},{"C8"},{"C9"},{"C10"},{"C11"},{"C12"}};OUTPUT();printf("**********教学计划编制问题**********\n");printf("请输入学期总数:");scanf("%d",&TotalTerms);printf("请输入学期的学分上限:");scanf("%d",&MaxScores);CreateGraph(G);Display(G);TopoSort(G,Temp,name);printf("OK\n");scanf("*c");}(2)拓扑排序模块设计intTopoSort(ALGraphG,AdjListTemp,structNamename[]){inti,k,j=0,count,indegree[MAX_VERTEX_NUM];SqStackS;ArcNode*p;FindInDegree(G,indegree);//对各顶点求入度InitStack(S);//初始化栈for(i=0;i<G.vexnum;++i)//建零入度顶点栈Sif(!indegree[i])Push(S,i);//入度为0者进栈count=0;//对输出顶点计数while(!StackEmpty(S)){Pop(S,i);printf("%s(%d分),",G.vertices[i].data,G.vertices[i].grades);Temp[j++]=G.vertices[i];//将当前的拓扑序列保存起来++count;//输出i号顶点并计数for(p=G.vertices[i].firstarc;p;p=p->nextarc)//对i号顶点的每个邻接点的入度减1{k=p->adjvex;if(!(--indegree[k]))//若入度减为0,则入栈Push(S,k);}}if(count<G.vexnum){printf("此有向图有回路无法完成拓扑排序");returnERROR;}elseprintf("为一个拓扑序列");printf("\n");intq=1,Z=0;while(q<=TotalTerms){intC=Temp[Z].grades;printf("\n第%d个学期应学课程:",q);while(C<=MaxScores){C=C+Temp[Z+1].grades;if(Z<G.vexnum){puanduan(Temp[Z].data,name,N);++Z;}}printf("\n");if(q==TotalTerms)printf("\n课程编制完成!");q++;}returnOK;}3.3程序运行结果(1)主界面设计显示课程代号所对应课程及先修课程。(2)输入1-16的任意数回车(3)按要求输入学期数,学分上限,课程数,课程号和各课程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026鲁南技师学院第一批招聘教师8人备考题库含答案
- 2026重庆永川区大安街道办事处招聘11人备考题库含答案
- 2026黑龙江哈尔滨市哈工大计算学部信息对抗技术研究所招聘1人备考题库附答案
- 物业服务协议(2025年保洁标准)
- 案场物业培训课件
- 课件直方图教学课件
- 医疗资源优化配置与智慧医疗平台
- 案场主管培训课件
- 2026年智能拉绳报警器项目公司成立分析报告
- 2026年端侧NPU低功耗处理单元项目营销方案
- 医保DIP付费知识培训课件
- 私立医院的营销方案与管理
- 《人生三修》读书分享会
- 【语文】上海市杨浦区打虎山路第一小学小学二年级上册期末试卷(含答案)
- 集水井施工方案
- 大学美育课件 第十二章 生态美育
- 美国技术贸易壁垒对我国电子产品出口的影响研究-以F企业为例
- 2025至2030中国电站汽轮机行业项目调研及市场前景预测评估报告
- MK6油雾检测器(中文)1
- 靶向阿托品递送系统设计-洞察及研究
- 2025检验科个人年终工作总结
评论
0/150
提交评论