收藏 分享(赏)

景区旅游信息管理系统.doc

上传人:cjc2202537 文档编号:5153408 上传时间:2019-02-10 格式:DOC 页数:28 大小:1.32MB
下载 相关 举报
景区旅游信息管理系统.doc_第1页
第1页 / 共28页
景区旅游信息管理系统.doc_第2页
第2页 / 共28页
景区旅游信息管理系统.doc_第3页
第3页 / 共28页
景区旅游信息管理系统.doc_第4页
第4页 / 共28页
景区旅游信息管理系统.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、校园旅游信息管理系统1.1 项目需求分析在旅游景区,经常会遇到游客打听从一个景点到另一个景点的最短路径和最短距离,这类游客不喜欢按照导游图的线路来游览,而是挑选自己感兴趣的景点游览。为于帮助这类游客信息查询,就需要计算出所有景点之间最短路径和最短距离。算法采用迪杰斯特拉算法或弗洛伊德算法均可。建立一个景区旅游信息管理系统,实现的主要功能包括制订旅游景点导游线路策略和制订景区道路铺设策略。任务中景点分布是一个无向带权连通图,图中边的权值是景点之间的距离。1)景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一个入口景点,建立一个导游线路图,导游线路图用有向图表示。遍历采用深度

2、优先策略,这也比较符合游客心理。(2 )为了使导游线路图能够优化,可通过拓朴排序判断图中有无回路,若有回路,则打印输出回路中的景点,供人工优化。(3 )在导游线路图中,还为一些不愿按线路走的游客提供信息服务,比如从一个景点到另一个景点的最短路径和最短距离。在本线路图中将输出任意景点间的最短路径和最短距离。(4 )在景区建设中,道路建设是其中一个重要内容。道路建设首先要保证能连通所有景点,但又要花最小的代价,可以通过求最小生成树来解决这个问题。本任务中假设修建道路的代价只与它的里程相关。因此归纳起来,本任务有如下功能模块:创建景区景点分布图;输出景区景点分布图(邻接矩阵)输出导游线路图;判断导游

3、线路图有无回路;求两个景点间的最短路径和最短距离;输出道路修建规划图。主程序用菜单选项供用户选择功能模块。1.2 项目设计流程 1.2.1 项目总体框架校园旅游信息管理系统创建景区景点分布图输出景区景点分布图输出景区导游线路图导游线路图有无回路两个景点间的最短路径输出道路修建规划图1.2.2 项目数据结构#ifndef SUCCESS /标志位成功#define SUCCESS 1#endif#ifndef FAILURE /标志位失败#define FAILURE 0#endif#ifndef INF /标志位无穷#define INF 0x3f3fffff#endif#ifndef MAX

4、NUM #define MAXNUM 20#endiftypedef bool STATUS; /定义函数状态数据类型typedef char VERTEXTYPEMAXNUM11; /定义顶点向量数据类型typedef int ADJMATRIXMAXNUMMAXNUM; /定义邻接矩阵数据类型typedef struct GRAPH /定义图数据类型VERTEXTYPE Vexs; /图的顶点向量ADJMATRIX Arcs; /图的邻接矩阵int VexNum; /图的当前顶点int ArcNum; /图的当前弧*PGRAPH; /定义图的指针数据类型typedef struct CLO

5、SEDGE /定义辅助数组数据类型VERTEXTYPE Vexs; /图的顶点向量int LowcostMAXNUM; /*PCLOSEDGE; /定义辅助数组指针数据类型1.2.3 项目模块设计创建景区景点分布图一. 邻接矩阵 (Adjacency Matrix)(二维数组表示法)在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点表,还有一个表示各个顶点之间关系的邻接矩阵。设图 A = (V, E)是一个有 n 个顶点的图, 图的邻接矩阵是一个二维数组 A.edgenn,定义(满足如下条件的 n 阶矩阵) :无向图数组表示法特点:1)无向图邻接矩阵是对称矩阵,同一条边表示了两次;2)顶点 v

6、 的度:在无向图中等于二维数组对应行(或列)中 1 的个数;在有向图中, 统计第 i 行 1 的个数可得顶点 i 的出度,统计第 j 列 1 的个数可得顶点 j 的入度。3)判断两顶点 v、u 是否为邻接点:只需判二维数组对应分量是否为 1;4)顶点不变,在图中增加、删除边:只需对二维数组对应分量赋值 1 或清 0;5)设存储顶点的一维数组大小为 n(图的顶点数 n), G 占用存储空间:n+n 2;G 占用存储空间只与它的顶点数有关,与边数无关;适用于边稠密的图;流程图:初始化图的顶点数s c a n f ( “ % d “ , i f ( p G r a p h - V e x N u m

7、 2 0 )初始化图的弧数s c a n f ( “ % d “ , i f ( p G r a p h - A r c N u m 2 0 )初始化图的顶点名称初始化图的弧权值为最大值输入弧的信息终止 otherwisif0, ) Ej)(, ,(VexNum);/检查if(pGraph-VexNum20)printf(“ttt 警告:输入数据错误!n“);printf(“ttt 按任意键回主菜单!“);getch();return FAILURE;/初始化图的弧数printf(“ttt 请输入图的弧度数(ArcNum);/检查if(pGraph-ArcNum20)printf(“ttt 警

8、告:输入数据错误!n“);printf(“ttt 按任意键回主菜单!“);getch();return FAILURE;/初始化图的顶点名称printf(“ttt-n“);printf(“ttt 初始化的顶点名称n“);for(int i=0;iVexNum;i+)printf(“ttt 请输入第%d 个顶点名称:“,i+1);scanf(“%s“,pGraph-Vexsi);/初始化图的弧权值为最大值for(i=0;iVexNum;i+)for(int j=0;jVexNum;j+)pGraph-Arcsij=INF;/输入弧的信息printf(“ttt-n“);printf(“ttt 初始

9、化的弧的信息n“);printf(“ttt 请输入弧的信息( 注:从 0 开始):n“);for(i=0;iArcNum;i+)int Stav,Endv,Weight;printf(“ttt 请输入第%d 条弧(格式:Vi Vj Weight):“,i+1);scanf(“%d%d%d“,pGraph-ArcsEndvStav=Weight;pGraph-ArcsStavEndv=Weight;printf(“ttt 创建景区景点分布图成功!n“);printf(“ttt 按任意键回主菜单!“);getch();return SUCCESS;输出景区景点分布图流程图:景区景点名称i = 0i

10、 V e x N u mp r i n t f ( “ % s t “ , p G r a p h - V e x s i ) ;i + +景区景点信息i = 0i V e x N u mj = 0j V e x N u mi f ( p G r a p h - A r c s i j = =I N F )p r i n t f ( “ t “ ) ;p r i n t f ( “ % d t “ , p G r a p h - A r c s i j ) ;j + +i + +终止程序:/输出景区景点分布图STATUS PrintGraph(const PGRAPH pGraph)print

11、f(“ttt_n“);printf(“nttt$t 显示景区景点分布图 t$n“);printf(“ttt_nn“);/printf(“t 景区景点名称nt“);for(int i=0;iVexNum;i+)printf(“%st“,pGraph-Vexsi);printf(“nnt 景区景点信息n“);for(i=0;iVexNum;i+)printf(“t_nt“);for(int j=0;jVexNum;j+)if(pGraph-Arcsij=INF)printf(“t“);elseprintf(“%dt“,pGraph-Arcsij);printf(“n“);printf(“t_nt“

12、);printf(“按任意键回主菜单!“);getch();return SUCCESS;输出景区导游线路图图的遍历从图中某一顶点出发访遍图中所有的顶点,且使每个顶点仅被访问一次,这一过程就叫做图的遍历 (Traversing Graph)。图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。为了避免重复访问,可设置一个标志顶点是否被访问过的辅助数组 visited 。辅助数组 visited 的初始状态为 0, 在图的遍历过程中, 一旦某一个顶点 i 被访问, 就立即让 visited i 为 1, 防止它被多次访问。两种图的遍

13、历方法:深度优先搜索 DFS (Depth First Search)广度优先搜索 BFS (Breadth First Search)广度优先搜索遍历图(BFS)对连通图,从起始点 V 到其余各顶点必定存在路径。 其中,V-w 1, V-w2, V-w8 的路径长度为 1; V-w7, V-w3, V-w5 的路径长度为 2; V-w6, V-w4 的路径长度为 3从图中的某个顶点 V0 出发,并在访问此顶点之后依次访问 V0 的所有未被访问过的邻接点,之后按这些顶点被访问的先后次序依次访问它们的邻接点,直至图中所有和 V0 有路径相通的顶点都被访问到。 若此时图中尚有顶点未被访问,则另选图

14、中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。流程图:定义访问标志数组初始化访问标志数组为 f a l s e定义队列 、 并初始化队列i f ( I n i t Q u e u e ( 标志访问过V i s i t V e r t e x = t r u e ;出队D e Q u e u e ( i = 0i V e x N u mi f ( V i s i t i = = f a l s e是i + +否w h i l e ( Q u e u e L en ( 终止程序:/输出景区导游线路图(注:广度优先遍历)STATUS TraverseGraph(con

15、st PGRAPH pGraph)printf(“ttt_n“);printf(“nttt$t 输出景区导游线路图 t$n“);printf(“ttt_nn“);/定义访问标志数组bool* Visit=(bool*)malloc(pGraph-VexNum*sizeof(bool);/初始化访问标志数组为 falsefor(int i=0;iVexNum;i+)Visiti=false;/定义队列、并初始化队列QUEUE Queue;if(InitQueue(printf(“ttt 按任意键回主菜单!“);getch();return FAILURE;/定义访问顶点变量,并初始值为 0int

16、 Vertex=0;doif(!VisitVertex)printf(“ttt%s 景点n“,pGraph-VexsVertex);/标志访问过VisitVertex=true;/遍历与 Vertex 相连的顶点并进队for(i=0;iVexNum;i+)if(Visiti=false/出队DeQueue(while(QueueLen(/销毁队列DestroyQueue(printf(“ttt 按任意键回主菜单!“);getch();return SUCCESS;有向图的拓扑排序何谓“拓扑排序”? 对有向图进行如下操作:假设 G=(V,E) 是一个具有 n 个顶点的有向图,V 中顶点序列 vl

17、,v2,vn 称做一个拓扑序列(Topological Order),当且仅当该顶点序列满足下列条件:若在有向图 G 中存在从顶点 vi 到 vj 的一条路径,则在顶点序列中顶点 vi 必须排在顶点 vj 之前。通常,在AOV 网中,将所有活动排列成一个拓扑序列的过程叫做拓扑排序(Topological Sort)。在 AOV 网中不应该出现有向环。因为环的存在意味着某项活动将以自己为先决条件,显然无法形成拓扑序列。判定网中是否存在环的方法:对有向图构造其顶点的拓扑有序序列,若网中所有顶点都出现在它的拓扑有序序列中,则该 AOV 网中一定不存在环。例如:对于有向图 可求得拓扑有序序列: A B

18、 C D 或 A C B D例如, 对学生选课工程图进行拓扑排序, 得到的拓扑有序序列为C1 , C2 , C3 , C4 , C5 , C6 , C8 , C9 , C7 或 C1 , C8 , C9 , C2 , C5 , C3 , C4 , C7 , C6 反之,对于下列有向图 BADc不能求得它的拓扑有序序列。 因为图中存在一个回路 B, C, D 如何进行 ?输入 AOV 网络。令 n 为顶点个数。 (1)在 AOV 网络中选一个没有直接前驱的顶点,并输出之; (2)从图中删去该顶点, 同时删去所有它发出的有向边;重复以上步骤,直到全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;或

19、图中还有未输出的顶点,但已跳出处理循环。这说明图中还剩下一些顶点,它们都有直接前驱,再也找不到没有前驱的顶点了。这时 AOV 网络中必定存在有向环。在实现拓扑排序的算法中,采用邻接表作为有向图的存储结构,每个顶点设置一个单链表,每个单链表有一个表头结点,在表头结点中增加一个存放顶点入度的域 count,这些表头结点构成一个数组。为了避免重复检测入度为 0 的点,另设一栈存放所有入度为 0 的点。对于有 n 个顶点和 e 条边的有向图而言,for 循环中建立入度为 0 的顶点栈时间为O(n);若在拓扑排序过程中不出现有向环,则每个顶点出栈、入栈和入度减 1 的操作在while 循环语句中均执行

20、e 次,因此拓扑排序总的时间花费为 O (n+e)。流程图:计算各顶点的入度j = 0j V e x N u mi = 0i V e x N u mi f ( p G r a p h - A r c s i j ! = I N F)I n d e g r e e j + + ;i f ( ! I n d e g r e e j )P u s h S t a c k ( i + +j + +w h i l e ( S t a c k L en ( i = 0i f ( p G r a p h - A r c s k i ! =I N F )i f ( ! ( - -I n d e g r e e

21、 i ) )P u s h S t a c k ( i + +i V e x N u m程序:/有向图的拓扑排序STATUS TopologicalSort(const PGRAPH pGraph)printf(“ttt_n“);printf(“nttt$t 导游线路图有无回路 t$n“);printf(“ttt_nn“);/定义入度数组,记录每个顶点的入度,初始化为 0int IndegreeMAXNUM=0;/定义桟、并初始化桟STACK Stack;if(InitStack(printf(“ttt 按任意键回主菜单!“);getch();return FAILURE;printf(“tt

22、t 计算各顶点的入度.n“);for(int j=0;jVexNum;j+)/求各个顶点的入度for(int i=0;iVexNum;i+)if(pGraph-Arcsij!=INF)Indegreej+;/入度为 0 的顶点入栈 if(!Indegreej)PushStack(printf(“ttt 进行拓扑排序.n“);/Count 用来指示入度为 0 的顶点个数int Count=0,k;while(StackLen(printf(“%st“,pGraph-Vexsk);Count+;/对出栈的顶点所指向的顶点减一 ,并且将入度为 0 的顶点入栈for(int i=0;iVexNum;i

23、+)if(pGraph-Arcski!=INF)if(!(-Indegreei)PushStack(/销毁桟DestroyStack(/判断是否是拓扑排序if(CountVexNum)printf(“ttt 结果:导游线路图有回路n“);elseprintf(“ttt 结果:导游线路图无回路n“);printf(“ttt 按任意键回主菜单!“);getch();return SUCCESS;求两个景点间的最短路径最短路径定义所谓最短路径问题是指:如果从图中某一顶点(源点)到达另一顶点(终点)的路径可能不止一条,如何找到一条路径似的沿此路径上各边的权值总和(称为路径长度)达到最小。迪杰斯特拉(D

24、ijkstra)算法求单源最短路径由 Dijkstra 提出的一种按路径长度递增序产生各顶点最短路径的算法。(1)按路径长度递增序产生各顶点最短路径若按长度递增的次序生成从源点 s 到其它顶点的最短路径,则当前正在生成的最短路径上除终点以外,其余顶点的最短路径均已生成(将源点的最短路径看作是已生成的源点到其自身的长度为 0 的路径)。(2)具体做法一开始第一组只包括顶点 v 1 ,第二组包括其他所有顶点, v 1 对应的距离值为 0 ,第二组的顶点对应的距离值是这样确定的:若图中有边 , 则 v j 的距离为此边所带的权值,否则 v j 的距离值为一个很大的数 ( 大于所有顶点间的路径长度 )

25、 ,然后每次从第二组的顶点中选一个其距离值为最小的 v m 加入到第一组中。每往第一组加入一个顶点 v m ,就要对第二组的各个顶点的距离值进行一次修正。若加进 v m 做中间顶点,使从 v 1 到 v j 的最短路径比不加 v m 的路径为短,则要修改 v j 的距离值。修改后再选距离最小的顶点加入到第一组中。如此进行下去,直到图中所有顶点都包括在第一组中,或再也没有可加入到第一组中的顶点存在为止。假设有向图 G 的 n 个顶点为 1 到 n, 并用邻接矩阵 cost 表示 , 若 是图 G 中的边,则 costij 的值等于边所带的权 ; 若 不是图 G 中的边,则 costij 等于一个

26、很大的数;若 i=j, 则 costij=0 。另外 , 设置三个数组 Sn 、 distn 、 pren 。 S 用以标记那些已经找到最短路径的顶点,若 Si-1=1, 则表示已经找到源点到顶点 i 的最短路径 , 若 Si-1=0, 则表示从源点到顶点 i 的最短路径尚未求得。disti-1 用来记录源点到顶点 i 的最短路径。 prei-1 表示从源点到顶点 i 的最短路径上该点的前趋顶点,若从源点到该顶点无路径,则用 0 作为其前一个顶点序号。流程图:定义路径矩阵 、 距离矩阵A D J M A T R I X P a t h M a t r i x , D i s M a t ri

27、x ;初始化路径矩阵 、距离矩阵i = 0i V e x N u mj = 0j V e x N u mD i s M a t r i x i j = p Gr a p h - A r c s i j ;P a t h M a t r i x i j = -1 ;j + +i + +求 P a t h M a t r i x 矩阵K = 0k V e x N u mi = 0i V e x N u mj = 0j V e x N u mi f ( D i s M a t r i x i j D i s M a t r i x i k + D i sM a t r i x k j )D i s

28、M a t r i x i j =D i s M a t r i x i k +D i s M a t r i x k j ;P a t h M a t r i x i j = k ;j + +i + +K + +程序:/求两个景点间的最短路径STATUS MinShortPath(const PGRAPH pGraph)printf(“ttt_n“);printf(“nttt$t 景点之间的最短路径 t$n“);printf(“ttt_nn“);/定义路径矩阵、距离矩阵ADJMATRIX PathMatrix,DisMatrix;/定义辅助变量int i,j,k;/初始化路径矩阵、距离矩阵f

29、or(i=0;iVexNum;i+)for(j=0;jVexNum;j+)DisMatrixij=pGraph-Arcsij;PathMatrixij=-1;/求 PathMatrix 矩阵for(k=0;kVexNum;k+)for(i=0;iVexNum;i+)for(j=0;jVexNum;j+)if(DisMatrixijDisMatrixik+DisMatrixkj)DisMatrixij=DisMatrixik+DisMatrixkj;PathMatrixij=k;/定义起点、终点int Stav=-1,Endv=-1;/定义起点、终点名称char StaNamMAXNUM,End

30、NamMAXNUM;printf(“ttt 输入起始点和终点名称( 格式:Sta End): “);scanf(“%s%s“,StaNam,EndNam);for(i=0;iVexNum;i+)if(!strcmp(pGraph-Vexsi,StaNam)/起始点名称下标Stav=i;if(!strcmp(pGraph-Vexsi,EndNam)/终点名称下标Endv=i;/判断起始点名称和终点名称是否存在if(Stav=-1|Endv=-1)return FAILURE;/定义桟、并初始化STACK Stack;if(InitStack(printf(“ttt 按任意键回主菜单!“);get

31、ch();/将所有路径入桟while(Endv!=-1)PushStack(Endv=PathMatrixStavEndv;/将所有路径出桟、并输出printf(“ttt“);while(1)printf(“%s“,pGraph-VexsStav);if(!StackLen(PopStack(printf(“终点“);/销毁桟DestroyStack(printf(“nttt 按任意键回主菜单!“);getch();return SUCCESS;输出道路修建规划图prim 算法在无向加权图中,n 个顶点的最小生成树有 n-1 条边,这些边使得 n 个顶点之间可达,且总的代价最小。prim 算法

32、是一种贪心算法,将全部的顶点划分为 2 个集合,每次总在 2 个集合之间中找最小的一条边,局部最优最终达到全局最优,这正是贪心的思想。具体的描述参见相关书籍:描述从单一顶点开始,普里姆算法按照以下步骤逐步扩大树中所含顶点的数目,直到遍及连通图的所有顶点。1.输入:一个加权连通图,其中顶点集合为 V,边集合为 E; 2.初始化:Vnew = x,其中 x 为集合 V 中的任一节点(起始点) ,Enew = ; 3.重复下列操作,直到 Vnew = V: 1.在集合 E 中选取权值最小的边(u, v) ,其中 u 为集合 Vnew 中的元素,而 v 则不是(如果存在有多条满足前述条件即具有相同权值

33、的边,则可任意选取其中之一) ; 2.将 v 加入集合 Vnew 中,将(u, v)加入集合 Enew 中; 4.输出:使用集合 Vnew 和 Enew 来描述所得到的最小生成树。例如: 流程图:定义辅助数组变量C L O S E D G E C l o s e d g e ;i = 1i V e x N u mC l o s e d g e . L o w c o s t i = p G ra p h - A r c s M i n i ;s t r c p y ( C l o s e dg e . V e x s i , p G r a p h - V e x s M i n ) ;i +

34、 +i = 1i V e x N u m保存辅助数组中C l o s e d g e . L o w c o s t 权值最小值查找第一个权值不是0 的位置查找辅助数组中最小值输出信息选择最小边j = 0j V e x N u mi f ( p G r a p h - A r c s M i n j A r c s M i n j ;s t r c p y ( C l o s e d g e . V e x s j , p G r a p h - V e x s M i n ) ;j + +i + +程序:/输出道路修建规划图(注:最小生成树)STATUS MininumCST(const P

35、GRAPH pGraph)printf(“ttt_n“);printf(“nttt$t 输出道路修建规划图 t$n“);printf(“ttt_nn“);/定义辅助数组变量CLOSEDGE Closedge;int Min=0;/初始化辅助数组,从第一个顶点开始for(int i=1;iVexNum;i+)Closedge.Lowcosti=pGraph-ArcsMini;strcpy(Closedge.Vexsi,pGraph-VexsMin);Closedge.LowcostMin=0;/选这其余的 pGraph-VexNum-1 个点for(i=1;iVexNum;i+)/保存辅助数组中

36、 Closedge.Lowcost 权值最小值/查找第一个权值不是 0 的位置for(int j=0;jVexNum;j+)if(Closedge.Lowcostj!=0)break;Min=j;/查找辅助数组中最小值for(j=0;jVexNum;j+)if(Closedge.Lowcostj/Closedge.LowcostMin=0;/选择最小边for(j=0;jVexNum;j+)if(pGraph-ArcsMinjArcsMinj;strcpy(Closedge.Vexsj,pGraph-VexsMin);printf(“nttt 按任意键回主菜单!“);getch();return

37、 SUCCESS;1.3 项目编码实现#include #include #include “Graph.h“int Frame()printf(“ttt_n“);printf(“nttt$t 景区旅游信息管理系统 t$n“);printf(“ttt_nn“);printf(“ttt1.创建景区景点分布图 nn“);printf(“ttt2.保存景区景点分布图 nn“);printf(“ttt3.读取景区景点分布图 nn“);printf(“ttt4.输出景区景点分布图 nn“);printf(“ttt5.输出景区导游线路图 nn“);printf(“ttt6.导游线路图有无回路 nn“);p

38、rintf(“ttt7.景点之间的最短路径 nn“);printf(“ttt8.输出道路修建规划图 nn“);printf(“ttt9.退出信息管理系统 nn“);printf(“ttt 请选择相应功能:“);return 0;int Menu()GRAPH Graph;int Select;while(1)system(“cls“);Frame();scanf(“%d“,system(“cls“);switch(Select)case 1:CreateGraph(break;case 2:SaveGraph(break;case 3:ReadGraph(break;case 4:PrintG

39、raph(break;case 5:TraverseGraph(break;case 6:TopologicalSort(break;case 7:MinShortPath(break;case 8:MininumCST(break;case 9:return 0;default:break;int main()Menu();return 0;主界面:创建景区景点分布图:输出景区景点分布图:输出景区导游线路图:有向图的拓扑排序:求两个景点间的最短路径:输出道路修建规划图:1.3 项目心得体会通过本次景区旅游管理系统的开发,我对数据结构的图有了基本的了解.我对图这章的知识有了一个结构的框架,对于

40、一些以前自己从未见过的算法有了一定的了解,并能够自己写出来,这是对我能力的一种提高在编码方面.在开发这个系统时,遇到了很多的难题,例如: 求最短路径等比较有难度的算法时不得不上网查大量的资料,结合书本上写的慢慢的理解,这真是一个漫长的过程, 可能有时一天也不能弄懂一个算法的本质.我凭着不放弃的心态,最终还是克服了重重困难, 解决了自己从未解决过的难题.这也是自己的一个突破.在系统开发的过程中依然有一些本质性的问提没有解决,我现在没有过多的深究,但我相信我会在以后的学习中一一解决这些难题.例如:求顶点之间的最短路径我一直还不懂求 PATH 数组.在系统开发的过程中我学到了很多的新的知识,最重要的就是学会了一种思想.模块化思想,以前老师总是提到我们以后写代码不必写那么多, 拿来用就行,我一直不懂他的意思, 原来是当你的模块被集成之后,以后这些模块就可以不必写了可以直接引用.例如:这次我用到了桟和队列的知识, 我以前就写过 ,如果我要是重新去写又得花一定的时间,这并不是一个好的习惯, 我以前写过集成了我拿来用不就行了吗, 这样提高了编码的速度提高了效率.不过代码重用的考虑很多的东西,要求比较高.总的来说这次系统开发我学到了很多.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 管理信息系统

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报