(店铺管理)超市选址问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2008/2009学年度第二学期

《数据结构》课程设计

说明书

题目:学校超市选址问题

班级:

姓名:

学号:

指导教师:

日期:2009-6-22~2009-6-26

计算机与信息工程系

1、问题描述

2、需求分析

3、开发环境

4、算法设计思想

5、流程图

6、课程设计过程中的关键算法

7、测试及结果

测试数据:

输入:单位个数、单位间的路径数、单位名称、相通两单位以及之间的距离、和各单位去超市的频率

输出:相通两单位之间的路径和他的长度

结果:

8、总结与收获

这次的程序软件基本上运行成功,可以简单的对已经输入的数据进行计算,求出超市的最佳选址单位。但是程序较小,功能不全面,只是理论,并未实践。

同时,这次数据结构课程设计让我们感触很深,使我们每个人都了解到的学习不应该只局限于我们的课本,因为课本上告诉我们的只是很有限的一部分,所涉及的面也是狭窄的。但是怎样在有限的范围内学习到无限的知识呢?那就要我们自己懂得竞争,懂得自学,懂得充分利用身边的任何资源。应该说,我们在这次的课程设计中学到了很多知识,这并不仅仅包括书本上的知识,更重要的是我们学会了如何去和别人交流,怎样用语言去实现自己的想法,在这个过程中使我懂得了勤学好问的重要性。

虽然在我的程序中有一部分是从网上搜索得来的,但我竭力将所获得的信息变成自己的资源。在我动手上机操作的同时,我在了解和看懂的基础上有所改变和创新,但是在我的程序软件中还有部分的不足,需要加以更新。同时,通过这次课程设计,我们都意识到了自己动手实践的弱势,特别是在编程方面,于是我们知道了计算机的实践操作是很重要的,只有通过上机编程才能充分的了解自己的不足。

相信通过这次的课程设计,更让我深刻意识到自己在学习中的弱点,同时也找到了克服这些弱

9、参考文献

10、指导教师评语

附件一:程序清单

#include

#include

#include

#include "malloc.h"

#include

#define TURE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define OVERFLOW -1

#define INF 32767

const int MAXVEX=100; typedef char Vextype; typedef struct

{

Vextype vexs[MAXVEX][MAXVEX]; //单位名称(顶点信息);

int adj[MAXVEX][MAXVEX]; //单位之间的相通情况(是否有边);

int dis[MAXVEX][MAXVEX]; //单位间距离(边的长度);

int f[MAXVEX]; //各单位去超市的频率;

int n; //顶点数和边数;

int e;

}Mgraph;

void CreatMgraph(Mgraph *G)

{

int i,j,k;

printf("请输入单位个数:\n");

scanf("%d",&(G->n));

printf("请输入单位间的路径数:\n");

scanf("%d",&(G->e));

printf("请输入单位名称:\n");

for(i=0;in;i++)

{

printf("请输入第%d个单位名称:\n",i);

scanf("%s",&G->vexs[i]);

}

for(i=0;in;i++) //结构体的初始化;

for(j=0;jn;j++)

{

G->adj[i][j]=0;

G->dis[i][j]=0;

G->f[i]=0;

}

for(k=0;ke;k++)

{

printf("请输入相通的两单位 (输入格式:i,j):\n");

scanf("%d,%d",&i,&j);//在距离上体现为无向;

printf("请输入相同两个单位间的距离(格式:dis):\n");

scanf("%d",&(G->dis[i][j]));

G->adj[i][j]=1;

G->adj[j][i]=1;

G->dis[j][i]=G->dis[i][j];

}

for(k=0;kn;k++)

{

printf("请输入第%d个单位去超市的相对频率:\n",k);

scanf("%d",&(G->f[k]));

}

for(i=0;in;i++) //以距离和频率之积作为权值;

for(j=0;jn;j++)

{

G->dis[i][j]*=G->f[i]; //最终权值非完全无向;

if(G->adj[i][j]==0&&i!=j)

G->dis[i][j]=INF;

}

}

void Floyed(Mgraph *G) //带权有向图求最短路径floyd算法

{

int A[MAXVEX][MAXVEX],path[MAXVEX][MAXVEX];

int i,j,k,pre;

int count[MAXVEX];

for(i=0;in;i++) //初始化A[][]和path[][]数组for(j=0;jn;j++) //置初值;

{

A[i][j]=G->dis[i][j];

path[i][j]=-1;

count[i]=0;

相关文档
最新文档