超市选址课程设计报告.doc

上传人:b****2 文档编号:341992 上传时间:2022-10-09 格式:DOC 页数:12 大小:94.50KB
下载 相关 举报
超市选址课程设计报告.doc_第1页
第1页 / 共12页
超市选址课程设计报告.doc_第2页
第2页 / 共12页
超市选址课程设计报告.doc_第3页
第3页 / 共12页
超市选址课程设计报告.doc_第4页
第4页 / 共12页
超市选址课程设计报告.doc_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

超市选址课程设计报告.doc

《超市选址课程设计报告.doc》由会员分享,可在线阅读,更多相关《超市选址课程设计报告.doc(12页珍藏版)》请在冰豆网上搜索。

超市选址课程设计报告.doc

计算机科学与技术学院课程设计成绩单

课程名称:

数据结构课程设计指导教师:

李顺新

姓名

彭伟华

性别

学号

201113137131

班级

计科1103

综合成绩

成绩等级

程序运行情况

(占总成绩20%)

□能正确运行□基本能正确运行□能运行但结果不完善

(20分)(15分)(10分)

程序功能的完善程度

(占总成绩10%)

□完善□基本完善□不完善

(10分)(8分)(5分)

程序结构的合理性

(占总成绩10%)

□合理□基本合理□不太合理

(10分)(8分)(5分)

对问题的答辩情况

(占总成绩40%)

□概念正确有创新□能正确回答所有问题□基本能正确回答

(40分)(35分)(30分)

□部分问题回答概念不清晰

(20分)

学生的工作态度与独立工作能力

(占总成绩10%)

□工作态度认真能独立完成任务□工作态度认真但独立性较差

(10分)(8分)

□工作态度基本认真但缺乏独立性

(5分)

设计报告的规范性

(占总成绩10%)

□符合规范□基本符合规范□规范性较差

(10分)(8分)(5分)

优秀:

90分~100分良好:

80分~89分中等:

70~79分及格:

60~69分不及格0分~59分

武汉科技大学计算机科学与技术学院制表

计算机科学与技术学院

课程设计报告

课程名称:

数据结构课程设计

专业:

计算机科学与技术

班级:

2011级03班

学号:

201113137131

姓名:

彭伟华

指导老师:

李顺新

2013年9月20日

计算机科学与技术专业课程设计任务书

设计题目

小区便利店选址问题

学生姓名

彭伟华

所在院系

计算机科学与技术

专业、班级

计科1103

主要内容:

对于某一小区便利店,其他各栋楼到其的距离不同,同时各栋楼的居民数也各不相同,不考虑各居民去超市的频率,请为便利店选址,要求实现总体最优,方便更多的住户购物。

【提示】

1)便利店无论选址何处,八栋楼的居民均可直接到达,即八栋楼与便利店均相邻,且距离为直线距离;

2)八栋楼的居民人数为权重,应该方便大多数人,实现总体最优。

学生应完成的工作:

l设计友好的用户界面

l数据设计合理,模块划分清晰

l程序能正确无错误地运行,提交完整源代码

l写出符合要求的课程设计报告书

参考文献阅读:

[1]《数据结构(C语言版)》严蔚敏清华大学出版社.

[2]《数据结构题集(C语言版)》严蔚敏清华大学出版社.

[3]《c语言程序设计》谭浩强清华大学出版社.

[4]《数据结构与算法分析》张铭 电子工业出版社

[5]《DATASTRUCTUREWITHC++》WilliamFord,WilliamTopp清华大学出版社

工作计划:

第1-2天:

课题分析与总体设计

第3-7天:

程序设计,调度与测试

第8-9天:

设计总结,完成课程设计报告书

第10天:

检查考核

任务下达日期:

2013年9月10日

任务完成日期:

2013年9月20日

学生(签名):

便利店选址

摘要:

该课题是为小区内的某一便利店选址,要求实现总体最优,这是带权的最小生成树的问题,小区平面图采用邻接矩阵表示,设计小区的平面图是一有向网,边表示各单位到便利店的路径,边上的权值表示路径的长度。

关键词:

权邻接矩阵有向网

1引言

1.1课题背景

便利店的选址问题是一个很复杂的决策过程,既需要定性分析,又需要定量计算。

选址问题主要取决于店铺位置的地形特点及其周围的人口状况、城市设施状况、交通条件、地租成本和竞争环境等,正确的选址决策能在减少投资运行成本的同时提高经济效益。

近几年,由于选址数据的愈加复杂以及计算机技术的迅速发展,人们开始利用计算机的强大计算能力对选址数据进行分析计算,从而决定最佳的选址方案。

1.2课程设计目的

数据结构是计算机学科实践性很强的一门核心课程。

课程设计是加强学生实践能力的一个强有力手段,要求学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C(C++)程序并上机调试的基本方法,还要求学生在完成程序设计的同时能够写出比较规范的设计报告。

严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

1.3课程设计任务

对于某一小区便利店,其他各栋楼到其的距离不同,同时各栋楼的居民数也各不相同,不考虑各居民去超市的频率,请为便利店选址,要求实现总体最优,方便更多的住户购物。

【提示】

1)便利店无论选址何处,八栋楼的居民均可直接到达,即八栋楼与便利店均相邻,且距离为直线距离;

2)八栋楼的居民人数为权重,应该方便大多数人,实现总体最优。

通过该题目的设计过程,可以加深理解图数据结构,掌握某些基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养学生的动手能力。

1.4系统开发平台

1、题目:

便利店选址

2、开发工具:

MicrosoftVisualC++6.0

3、操作系统:

Windows7

2系统结构分析

2.1需求分析

核心问题:

求最短路径(选址的要求就是便利店到各单位权值之和最少)

数据模型(逻辑结构):

带权有向图(权值计算:

距离*人数)

存储结构:

typedefstruct

{

stringvexs[MAX_VERTEX_SIZE];

intarcs[MAX_VERTEX_SIZE][MAX_VERTEX_SIZE];

intvexnum;//,arcnum;

}MGraph;

核心算法:

Floyd算法(弗洛伊德算法-每一对顶点之间的最短路径)

输入数据:

单位个数、各单位地址、各单位人数

输出数据:

便利店地址值

总体思路:

 如果便利店所选地址为(x,y),那么先求出各单位到该地址的含参直线距离,在保证总体最优(权值最小)的情况下计算出便利店地址的精确值。

2.2方案选择

1)直角距离选址模型

使总体最优的的便利店选址问题可表述为:

minZ=∑CjQj(|X-Xa|+|Y-Ya|)

可将问题分解成两个单独最小化问题:

minZ=minZ1+minZ2

minZ1=min∑CjQj|X-Xa|

minZ2=min∑CjQj|Y-Ya|

2)欧式距离选址模型

两点之间的欧式距离定义如下:

Dj=√[(X-Xa)*(X-Xa)+(Y-Ya)*(Y-Ya)]

使总体最优的便利店选址问题可表述为:

minZ=∑CjQj√[(X-Xa)*(X-Xa)+(Y-Ya)*(Y-Ya)]

分别求Z对Xa和Ya的偏导数,令所得方程等于零,求Xa和Ya的值:

Xa=(∑CjQjXj/Dj)/(∑CjQj/Dj)

Ya=(∑CjQjYj/Dj)/(∑CjQj/Dj)

3)修正距离选址模型

在方案2)所得结果的基础上,采用迭代法求解更精确的结果。

Dj=k√[(X-Xa)*(X-Xa)+(Y-Ya)*(Y-Ya)]

minZ=∑kCjQj√[(X-Xa)*(X-Xa)+(Y-Ya)*(Y-Ya)]

由于本课题所给数据比较简单,通过综合比较分析,本课题决定采用方案1)。

3应用程序设计

3.1流程图设计

开始

Main()

输入基本信息

GreatMgraph(Gh)

建立邻接矩阵的存储结构

Floyd算法

N

Y

A[i][j]==INF,i!

=j

i到j不存在路径

输出i->j的路径和路径长度

Floyed(Gh)

输出超市的最佳地址:

i

结束

3.2源程序

#include

#include

usingnamespacestd;

structbuilding

{

doublex;

doubley;

doublevalue;

};

buildingbd[1000];

intn;//n栋楼

doubleminx,maxx,miny,maxy;//记录各栋楼的区域

doublemidx,mmidx,midy,mmidy;

doubleresult_x,result_y,sum=100000;//最后结果

doubledis(doublex,doubley)//计算距离

{

doublesum=0;

for(inti=0;i

{

sum+=sqrt((x-bd[i].x)*(x-bd[i].x)+(y-bd[i].y)*(y-bd[i].y))*bd[i].value;

}

returnsum;

}

voidD_Divide()//三分法求位置

{

midx=(minx+maxx)/2;

mmidx=(midx+maxx)/2;

midy=(miny+maxy)/2;

mmidy=(midy+maxy)/2;

while((maxx-minx)>0.01)

{

while((maxy-miny)>0.01)

{

if(dis(midx,midy)>dis(midx,mmidy))

miny=midy;

else

maxy=mmidy;

midy=(miny+maxy)/2;

mmidy=(midy+maxy)/2;

};

if(dis(midx,midy)>dis(mmidx,midy))

minx=

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

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1