课程设计.docx

上传人:b****2 文档编号:24548987 上传时间:2023-05-28 格式:DOCX 页数:15 大小:1.07MB
下载 相关 举报
课程设计.docx_第1页
第1页 / 共15页
课程设计.docx_第2页
第2页 / 共15页
课程设计.docx_第3页
第3页 / 共15页
课程设计.docx_第4页
第4页 / 共15页
课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

课程设计.docx

《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(15页珍藏版)》请在冰豆网上搜索。

课程设计.docx

课程设计

六.附录

1.演示图片

软件概览图

东大门到体育馆

A座到3,4食堂

1教到操场B

从东大门逛校园

从图书馆逛校园

第一教学楼的介绍

图书馆的介绍

2.主要源代码

//SoftService.java

publicclassSoftService{

privateSoftDtodto;

privateboolean[]visited;//是否遍历过

privateint[]vertex;

privateintno=0;

publicSoftService(SoftDtodto){

this.dto=dto;

}

/*P[v]的值为前驱顶点下标,D[v]表示v0到v的最短路径长度和*/

publicvoidShortestPath(intv0,intv1){

this.dto.setStartIndex(v0);

this.dto.setEndIndex(v1);

if(v0==v1){

this.dto.setEdges(null);

return;

}

int[]P=newint[SoftDto.SPOT_SIZE];

int[]D=newint[SoftDto.SPOT_SIZE];

intv,w,k,min;

boolean[]fin=newboolean[SoftDto.SPOT_SIZE];

for(v=0;v

fin[v]=false;/*全部顶点初始化为未知最短路径状态*/

D[v]=this.dto.getPaths()[v0][v].length;

P[v]=0;/*初始化路径数组P为0*/

}

D[v0]=0;/*v0至v0路径为0*/

fin[v0]=true;/*v0至v0不需要求路径*/

/*开始主循环,每次求得v0到某个v顶点的最短路径*/

for(v=1;v

k=-1;

min=10000;/*当前所知离v0顶点的最近距离*/

for(w=0;w

if(!

fin[w]&&D[w]

k=w;

min=D[w];/*w顶点离v0顶点更近*/

}

}

if(k==-1){

break;

}

fin[k]=true;/*将目前找到的最近的顶点置为1*/

for(w=0;w

/*如果经过v顶点的路径比现在这条路径的长度短的话*/

if(!

fin[w]&&(min+this.dto.getPaths()[k][w].length

D[w]=min+this.dto.getPaths()[k][w].length;

P[w]=k;

}

}

}

intj=v1;

ArrayListedges=newArrayList();

while(P[j]!

=0){

edges.add(this.dto.getPaths()[j][P[j]].number);

j=P[j];

}

edges.add(this.dto.getPaths()[j][v0].number);

this.dto.setEdges(edges);

}

publicStringoneKeyPath(intselectedIndex){

visited=newboolean[SoftDto.SPOT_SIZE];

vertex=newint[SoftDto.SPOT_SIZE];

no=0;

for(inti=0;i

visited[i]=false;

}

visited[selectedIndex]=true;

vertex[no++]=selectedIndex;

showPath(selectedIndex);

this.dto.setEdges(null);

this.dto.setStartIndex(-1);

this.dto.setEndIndex(-1);

Stringmessage="从";

for(inti=0;i

if(i==0){

message+=this.dto.getSpotNames()[vertex[i]];

}else{

message+="—>"+this.dto.getSpotNames()[vertex[i]];

}

if(i==7){

message+="\n";

}

}

returnmessage;

}

privatevoidshowPath(intx){

for(inti=0;i

if(this.dto.getPaths()[x][i].length!

=0&&this.dto.getPaths()[x][i].length<10000&&visited[i]==false){

visited[i]=true;//设置为到达

vertex[no++]=i;

showPath(i);//递归遍历点

}

}

}

}

 

//SoftDto.java

publicclassSoftDto{

publicstaticintSPOT_SIZE=15;

privatePath[][]paths;

privateSpot[]spots;

privateintvertexNum;

privateintedgesNum;

privateinttotalLength;

privateintstartIndex=-1;

privateintendIndex=-1;

privateArrayListedges;

privateString[]spotNames={"东大门","4教","1教","2教","电气学院","3教","A座","B座","D座","图书馆","1~2食堂","操场A","操场B","体育馆","3,4食堂"};

privateString[]details={"安徽工程大学主大门","安徽工程大学四教学楼","安徽工程大学一教学楼(考研楼,建筑工程学院)","安徽工程大学二教学楼","安徽工程大学电气学院(实验楼)","安徽工程大学第三教学楼(数理学院实验楼)","安徽工程大学行政主楼","安徽工程大学计算机与信息学院,机械学院(实验楼)","安徽工程大学纺织与服装学院(实验楼)","安徽工程大学图书馆","安徽工程大学1食堂,1.5风味餐厅,2食堂","安徽工程大学主操场","安徽工程大学副操场","安徽工程大学体育馆","安徽工程大学3食堂,4食堂"};

publicSoftDto(){

dtoInit();

}

publicvoiddtoInit(){

paths=newPath[SPOT_SIZE][SPOT_SIZE];

spots=newSpot[SPOT_SIZE];

vertexNum=SPOT_SIZE;

for(inti=0;i

spots[i]=newSpot();

spots[i].number=i;

spots[i].name=spotNames[i];

spots[i].detail=details[i];

}

for(inti=0;i

for(intj=0;j

if(i==j){

paths[i][j]=newPath();

paths[i][j].length=0;

}else{

paths[i][j]=newPath();

paths[i][j].length=10000;

}

}

}

intnumber=0;

creatPath(paths,0,1,110,number++);

creatPath(paths,1,2,110,number++);

creatPath(paths,1,3,90,number++);

creatPath(paths,2,3,100,number++);

creatPath(paths,3,4,100,number++);

creatPath(paths,3,5,60,number++);

creatPath(paths,3,6,210,number++);

creatPath(paths,4,5,80,number++);

creatPath(paths,4,6,220,number++);

creatPath(paths,5,6,190,number++);

creatPath(paths,5,9,60,number++);

creatPath(paths,6,7,50,number++);

creatPath(paths,6,9,340,number++);

creatPath(paths,6,10,380,number++);

creatPath(paths,6,11,380,number++);

creatPath(paths,7,8,80,number++);

creatPath(paths,7,9,380,number++);

creatPath(paths,7,10,420,number++);

creatPath(paths,7,11,420,number++);

creatPath(paths,8,9,330,number++);

creatPath(paths,8,10,370,number++);

creatPath(paths,8,11,170,number++);

creatPath(paths,9,10,200,number++);

creatPath(paths,9,11,300,number++);

creatPath(paths,10,11,340,number++);

creatPath(paths,10,14,300,number++);

creatPath(paths,11,12,140,number++);

creatPath(paths,11,13,170,number++);

creatPath(paths,12,13,170,number++);

creatPath(paths,12,14,210,number++);

edgesNum=number*2;

}

privatevoidcreatPath(Path[][]paths,inti,intj,intlength,intnumber){

paths[j][i].length=length;

paths[j][i].number=number;

paths[i][j].length=length;

paths[i][j].number=number;

}

publicPath[][]getPaths(){

returnpaths;

}

publicvoidsetPaths(Path[][]paths){

this.paths=paths;

}

publicSpot[]getSpots(){

returnspots;

}

publicvoidsetSpots(Spot[]spots){

this.spots=spots;

}

publicintgetVertexNum(){

returnvertexNum;

}

publicvoidsetVertexNum(intvertexNum){

this.vertexNum=vertexNum;

}

publicintgetEdgesNum(){

returnedgesNum;

}

publicvoidsetEdgesNum(intedgesNum){

this.edgesNum=edgesNum;

}

publicintgetTotalLength(){

returntotalLength;

}

publicvoidsetTotalLength(inttotalLength){

this.totalLength=totalLength;

}

publicArrayListgetEdges(){

returnedges;

}

publicvoidsetEdges(ArrayListedges){

this.edges=edges;

}

publicString[]getSpotNames(){

returnspotNames;

}

publicvoidsetSpotNames(String[]spotNames){

this.spotNames=spotNames;

}

publicString[]getDetails(){

returndetails;

}

publicvoidsetDetails(String[]details){

this.details=details;

}

publicintgetStartIndex(){

returnstartIndex;

}

publicvoidsetStartIndex(intstartIndex){

this.startIndex=startIndex;

}

publicintgetEndIndex(){

returnendIndex;

}

publicvoidsetEndIndex(intendIndex){

this.endIndex=endIndex;

}

}

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

当前位置:首页 > 法律文书 > 调解书

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

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