-
教学单位
计算机科学与技术
学生学号
数据结构
课程设计报告书
题
目
教学计划安排系统
学生姓名
专业名称
计算机科学与技术
(
软件工程
)
指导教师
李志敏
吴先飞
课程设计评分
评分标准
1
、内容完整性(
20
分)
2
、报告撰写规范性(
10
分)
3
、问题描述正确性(
10
分)
4
、设计合理与有效性(
10
分)
5
、程序代码编写规范性(
20
分)
6
、程序运行正确性(
10
分)
p>
7
、屏幕提示信息准确与充分性(
10
p>
分)
8
、测试过
程充分性与正确性(
10
分)
合计
得分
平时成绩
(30%)
:
总
成
绩:
课程设计报告成绩
(70%)
:
评阅人签名:
目录
一、
课程设计的目的
....................
..................................................
......
4
二、
设计的内容与要求
...................
..................................................
...
4
三、
总体设计
.......................
..............................
错误!未定义书签。
四、
详细设计
.......................
..................................................
...............
5
五、
调试与测试
......................
..................................................
..........
1
5
六、
课程设计的总结
....................
..................................................
....
1
7
一、
课程设计的目的
1.
巩固和加深学生对
C
语言课程的基本知识的理解和掌握
2.
掌握
C
语言编程和程序调试的基本技能
3.
利用
C
p>
语言进行基本的软件设计
4.
掌握书写程序设计说明文档的能力
5.
提高运用
C
语言解决实际问题的能力
二.设计的内容与要求
要建立
一个图,
因而要输入图的结点数和边数以及图的每一个结
点的名
称,
要对所输入课程进行排课,
因而要确定每一个结点的入度<
/p>
是否为零
,
并且将入度为零的结点分别进
栈再出栈,再进另一个栈,
最后出栈,最后实现对所输入的课程进行排课
三.总体设计
(
1
)该教学计划安排系统分为
6
个
模块
1.
建立图
2.
栈的初始化
3.
出栈
4.
进栈
5
求结点的入度
6
拓扑排序
(
2
)算法描述(此程序中所包含的函数)
1.
主函数
main():
p>
调用
C
reat
eALGraph(G)
函数和
TopologicalSor
t(G)
函
数。
ALGraph()
函数
:
从键盘
上输入所需要的值,
并对每一个结点的
*firstarc
p>
赋值为
NULL
。
ack()
函数
:
将栈分配存储空间,并对
top
和
base
赋值。
()
函数
:
进满足条件的元素压入栈中,并改变
top
指针的值
5. Pop()
函数
:
开始判断栈中的
top
和
base
指针是否相等,若相等则返
回,否则进行
出栈操作。
mpty()
函数
:
通过判断栈是否为空来返回相应的值。
<
/p>
Degree()
函数
:
通过循环求出每一个结点的入度
gicalSort
()
函数
:
通过拓扑排序将相应的课程
给输出来
四.详细设计
数据的组织描述(比如主要的变量
类型,结构体等等)
,模块
之间的参数设计(接口设计,模块的
功能说明)
,系统控制流程图,
各个模块的流程图,采用的算法
typedef struct
{
NULL
SElemType *top;
//
栈顶指针
int
stacksize; //
当前已分配的存储空间
,
以元素为单位
SElemType
*base;
//
在栈构造之前和销
毁之后
,base
的值为
}SqSta
ck;
typedef struct ArcNode
{
int
adjvex;//
该弧所指向的顶点的位置
struct ArcNode
*nextarc;//
指向第一条依附该顶点的弧的指针
}ArcNode;
typedef struct
VNode
{
char data[10];
ArcNode
*firstarc;
}AdjList[max_vertex_num];
typedef struct
{
AdjList vertices;
int
vexnum,arcnum;//
图的当前顶点数和弧数
}ALGraph;
1.
主函数模块
定
义
p>
一
个
图
的
变
量
,
调
用
CreateALGraph(G)
函
数
,
和
Topologi
calSort(G)
函数。
2.
创建图的模块
p>
从键盘上输入学期数,再输入课程数目(即结点数)和课程
之间的关
系数(即边数)
,并把指向第一条依附该顶点的弧的指针赋
值为
NULL
,同时把每一个结点所指向的其他结点形成一个链表。
为
NULL
。
3
栈的初始化模块
p>
使栈中
base
指针分配一定的存储空间,
并使栈中
top
指针指
向
base
指针。
4.
栈的进栈模块
先开始
判断这个栈是否为满,若满了,则重新分配一定的存
储空间,栈中的
top
指针重新赋值之后,再使该元素进栈,并使
top<
/p>
指针指向下一位。
5.
栈的出栈模块
判断栈的
top
指针和
base
指针是否相等,
若相等则为空,
否则
不为空。
6.
栈空的模块
通过判断栈的
top
指针和
base
指针是否相等,来返回相应的值
7.
求结点的入度模块
对每一个结点已经形成了一个链表进行查找,
若发现有一个结点指向
另一个结点,就把另一个结点的入度加
1
,直到
循环结束
8.
拓扑排序模块
p>
首先对栈进行初始化,
然后找出结点的入度为零的结点,
若入度
为零,则进栈。
当是
S1
不为空时,就将栈中的
S1
进行
出栈操作,并
把序号所对应的结点给输出来。
与此同时,
把结点所对应的序号压入
栈
S2
,同时将
count
加
1<
/p>
,并判断栈
S2
是否为空,
若不为空,则把栈
S2
中
的元素进行出栈操作,并把该结点所形成的
链表中每一个结点的入度减一,
若减之后,
就把该结点的序号压入栈
S1
。如此循环,直到该循环结束
图
(1)
是
CreateALGraph()
函数
CreateALGraph
函数
输入学期数
semester_
num>8
inti,semester_n
um,
v,w,vex
N
vex>=20
Y
课程数目
输入课程之间
的关系数
输入课程的名
字
N
i
.vexnum
Y
输入课程的之间的先
后关系数
v,w
结束
i
.arcnum
图
(1)
p>
图
(2)
是
Ini
tStack()
函数
=(SEle
mType*)malloc(stac
k_init_size*sizeof(SE
lemType))
return 0
否
!=0
=,
ize=stack_init_size
return 1
图
(2)
(3)
是
Pop()
函数
图
return 0
是
否
==
e=*--
return 1
图
(3)
p>
图
(4)
是
Pus
h
函数
>=
ize
=(SElemType
*)realloc(,(ize+cre
atestack)
*sizeof(SElemType))
==0
是
return 0
否
=+ize,
ize+=createstack;
*++=e
return 1
图
(4)
-
-
-
-
-
-
-
-
-
上一篇:契约面前亲子互惠-新
下一篇:事迹材料:洪水无情人有情大灾面前有大爱