学校超市选址问题_第1页
学校超市选址问题_第2页
学校超市选址问题_第3页
学校超市选址问题_第4页
学校超市选址问题_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目:学校超市选址问题目录第1章需求分析 2第2章总体设计 22.1文字描述 22.2程序流程图 2第3章详细设计 33.1数据结构 3第4章实现部分 44.1核心代码 4第5章程序测试 75.1测试数据 75.2程序运行图 75.3结果分析 8第6章总结 8参考文献 9第1章需求分析我的课程设计题目为学校超市选址问题。对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同,根据以上这两个条件,确定学校的超市要建在什么地方,才能使得方案达到最优。该程序要能够确定超市的最优地址。而这个最有地址只能在所有单位所在地中选择。通过这个课程设计,真正理解弗洛伊德算法的思想,锻炼自主学习能力和程序编写能力,以及能够处理现实生活中类似的问题。第2章总体设计2.1文字描述首先,建立图的邻接矩阵。输入相关基本数据信息,以单位作为图的顶点,以单位之间的距离与各个单位去超市的频率之积作为图的权值,建立邻接矩阵。然后,调用弗洛伊德算法。单位i与j之间,加入过渡点k,若i、k间距离与k、j间距离之和小于i、j间的距离,修改矩阵。如此反复执行下去。完成后,得到i到j得最短距离。最后,确定最优地点。根据某单位到各个单位的最短距离之和最短,该单位所在地即为最优地址。2.2程序流程图开始开始MMain()函数输入数据输入数据建立图的邻接矩阵建立图的邻接矩阵 if(i!=j) { cout<<i<<"到"<<j<<"的最短路径为"<<t.a[i][j]<<":"; intnext=t.path[i][j]; cout<<j; while(next!=i) { cout<<"←"<<next; next=t.path[i][next]; }cout<<"←"<<i<<endl; } }}//计算最短距离之和voidgraph::add(graph&t){ intsum[n+1]; for(inti=0;i<n+1;i++) sum[i]=0; for(inti=1;i<=n;i++) { for(intj=1;j<=n;j++) { if(i!=j) { sum[i]=sum[i]+t.a[i][j]; } } cout<<endl; cout<<i<<"到各顶点的最短路径总和为"<<sum[i]<<endl; } sum[0]=sum[1]; intaddress=1; for(inti=2;i<n+1;i++) if(sum[0]>sum[i]) { sum[0]=sum[i]; address=i; } cout<<"所以最短路径总和为"<<sum[0]<<"学院超市的最佳选址为顶点"<<address<<endl; }//主函数voidmain(){ grapht;inti,j,w;for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i==j) t.arcs[i][j]=0; elset.arcs[i][j]=max;cout<<"***********学校超市最佳选址************"<<endl<<endl<<endl; cout<<"请输入请输入存在路径的两个单位以及相通两个单位间的距离(用空格隔开)"; cout<<endl; for(intk=1;k<=e;k++) { cin>>i>>j>>w; t.arcs[i][j]=w; } t.floyd(t,n); t.add(t);system("pause");}第5章程序测试5.1测试数据输入:请输入请输入存在路径的两个单位以及相通两个单位间的距离输出:最短距离及路径、某一顶点到各个顶点的最短路径之和以及最优地址程序设计中设顶点n=4,即4个顶点,e=8即有8条路径。(如下图)11234429523685.2程序运行图则输入如下:得出结果如下:5.3结果分析虽然该程序可以求出最优地址,但还有很多地方需要改进。首先,超市只能选在某个单位所在地,而不能选在除单位所在地以外。其次,每次运行,都要输入数据,降低了程序的效率。可以用文件来保存输入的数据,这样不必每次运行再输一遍了。最后,该程序只能确定一个地点。通过比较某单位到其他单位的距离之和,确定最优地址。虽然求出了最小的,但两个相等的话,却只能求出最先出现的。可以另外定义几个变量,来存放相等时的行号。这样,就能够确定多个地址了,而不会漏掉。第6章总结这个程序基本上运行成功,能够对输入的数据进行简单地计算,并确定超市的最优地址。但是,程序功能还不够全面。同时,这次的课程设计,使我感触颇多。我们的学习不应该只局限于课本。掌握了课本上知识是永远不够的。还需要我们懂得自学,最大限度地利用我们身边的资源。我不但学到了知识,更重要的是如何用语言及文字表达自己的想法。虽然在我的程序代码中,有一部分是从书本弗洛伊德算法程序中得来的,但我并没有生搬硬套。我竭力改进代码,力求与原有的相协调,同时有所创新突破。从中,我还意识到自己编程的弱势。通过这次课程设计,也使我认识到:只要有不退缩的精神耐力终能战胜困难。当你独自把错误找出来,把程序调试出来,你就会觉得心情有多么的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论