- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教学计划编制问题
软 件 学 院
课程设计报告书
课程名称 数据结构
设计题目 教学计划编制问题
专业班级 软 件 09—6
学 号 0920010602
姓 名 李玲玲
指导教师 孙 一
2010 年月
1 设计时间
2010年12月27日——2011年1月2日
2 设计目的
通过本次数据结构课程设计,让我们对数据结构的知识有更深刻的理解,也对本学期的学习做了一个小小的测验。通过本次试验提高我们的动手实验的能力,培养我们软件设计和开发能力和分析解决实际问题。
3设计任务
大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。
4 设计内容
4.1需求分析
4.1.1程序所能达到的功能
设计一个程序,以人机交互的方式执行,利用图、栈和拓扑排序。本程序是用户编排课程,根据用户输入的信息来编排出每学期要学的课程第学期学的课程有:学期总数6,一学期的学分上限10,该专业共开课程数目12,入课程名,课程号,课程学分。输出正确的课程编排结果。设计ADT Graph{
数据对象V:V是具有相同特性的数据元素的集合,称为顶点集.
数据关系R:?R={VR}
VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在直接先修关系基本操作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{
???数据对象:D={ai|ai∈ElemSet,i=1,2,…n,n=0}
???? 数据关系:R1={﹤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 Stackint main()
{
int numterm;
int uplcredit; //每学期的学分上限
int selectway;
printf(请输入学期总数:);
scanf(%d,numterm);
printf(请输入一个学期的学分上限:);
scanf(%d,uplcredit);
构造出图表G,包含键入的课程名称,课程号,课程学分,以及学期总数,一个学期学分上限
printf(1.课程尽可能集中到前几个学期 2.课程尽量均匀分布\n);
输入选择的编排策略,运行出结果
system(pause);
return 0;
}
4.2.3、本程序有三个模块,调用关系简单
???? 主程序模块↓
栈模块
??????? ↓
???? 拓扑排序模块设计#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 ind
文档评论(0)