数据结构课程设计校园导航

数据结构课程设计校园导航
数据结构课程设计校园导航

一、课程设计目的

本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。

设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。

通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

二、课程设计内容

1)问题描述

用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。

2)基本要求

(1)查询各景点的相关信息;

(2)查询图中任意两个景点间的最短路径。

(3)查询图中任意两个景点间的所有路径。

(4)增加、删除、更新有关景点和道路的信息

三、课程设计过程

1.需求分析

(1)设计学校的校园平面图,选取出若干的具有代表性的景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。

(2)将景点的序号,名称,介绍存放起来准备查询。

(3)提供任意景点的信息;

(4)提供任意经典的路径查询及其最优路线的查询

(5)平面图景点的增加及删除,以及边和权值(长度)的改变

2.概要设计

1:第一点是主界面的设计,首先,为了该系统各个功能的管理,设计出含有多个菜

单项的主菜单界面,可以更方便的使用该系统。

2:第二点是存储结构的设计,采取了图结构类型(mgraph)存储校园图的信息,

景点信息用结构数组vexs存储,而且利用全局变量:visited[]数组用于存储顶点是否被访问标志;d[]数组用于存放权值和查找路径顶点的编号;campus是一个图结构的全局变量。

3:第三点是设计各个功能的实现,学校景点的介绍通过函数browsecompus()来

实现;查询景点间的最段路径通过Floyd(弗洛伊德)算法实现;查询景点间的所有路径通过allpath函数和path函数来实现;更改图的信息可以由主函数changegraph以及其他函数可以实现。

3.详细设计

(1)主要的操作界面的显示以及无向网操作

void initgraph(graph *ga)

{

int i,j;

ga->n=9;

ga->e=11;

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

{

ga->vexs[i].num=i;

}

strcpy(ga->vexs[0].name,"西门");

strcpy(ga->vexs[0].introduce,"学校的正大门,设有公交站");

strcpy(ga->vexs[1].name,"风雨篮球场");

strcpy(ga->vexs[1].introduce,"");

strcpy(ga->vexs[2].name,"田径场");

strcpy(ga->vexs[2].introduce,"举办运动会,平时体育跑步锻炼等");

strcpy(ga->vexs[3].name,"京元食堂");

strcpy(ga->vexs[3].introduce,"新食堂");

strcpy(ga->vexs[4].name,"苍霞湖畔");

strcpy(ga->vexs[4].introduce,"戏称“分手湖”,景色宜人");

strcpy(ga->vexs[5].name,"思源楼");

strcpy(ga->vexs[5].introduce,"学校王牌土木的教学区");

strcpy(ga->vexs[6].name,"图书馆");

strcpy(ga->vexs[6].introduce,"是大学城最高的标志性建筑");

strcpy(ga->vexs[7].name,"北教区");

strcpy(ga->vexs[7].introduce,"北校区集中的教学楼");

strcpy(ga->vexs[8].name,"禾堂餐厅");

strcpy(ga->vexs[8].introduce,"旧食堂");

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

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

ga->edges[i][j]=1000;

ga->edges[0][1]=1;

ga->edges[1][2]=2;

ga->edges[1][3]=5;

ga->edges[2][4]=4;

ga->edges[3][4]=9;

ga->edges[4][5]=1;

ga->edges[4][8]=1;

ga->edges[5][6]=5;

ga->edges[5][7]=7;

ga->edges[7][8]=1;

ga->edges[6][7]=9;

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

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

ga->edges[j][i]=ga->edges[i][j];

}

(2)确定顶点是否存在已经顶点是否已经被访问过来确定路径

void Create_graph(graph *ga)

{

int i,j,k,w;

printf("请输入顶点数和边数:\n");

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

printf("请输入景点编号,景点名字,景点介绍,建立信息表:\n");

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

{

scanf("%d",&(ga->vexs[i].num));

gets(ga->vexs[i].name);

gets(ga->vexs[i].introduce);

}

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

for(j=0;j<=ga->n;j++)

ga->edges[i][j]=1000;

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

{

printf("请输入%d条边的景点序号i,j和长度:",k+1);

scanf("%d %d %d",&i,&j,&w);

ga->edges[i][j]=w;

ga->edges[j][i]=w;

}

}

void print(graph ga)

{

int i,j;

for(i=0;i

for(j=0;j

{

printf("%d",ga.edges[i][j]);

if(j+1==ga.n)

printf("\n");

}

}

void visit(graph ga)

{

int a;

printf("请输入景点编号:");

scanf("%d",&a);

int i;

for( i=0;i

{

if(a==ga.vexs[i].num)

{

printf("景点编号为%d \n",ga.vexs[i].num);

printf("景点名称为");

puts(ga.vexs[i].name);

printf("景点介绍为");

puts(ga.vexs[i].introduce);

break;

}

}

if(i==ga.n)printf("无此点\n");

}

(3)得出景点间的最短路径

void shortestpath_djst(graph ga){

}

void shortestpath_floyd(graph ga)

{

int i,j,k,v,u,w,d[35][35],p[35][35][35];

for(v=0;v

{

for(w=0;w

{

d[v][w]=ga.edges[v][w];

for(u=0;u

{

p[v][w][u]=0;

}

if(d[v][w]<1000)

{

p[v][w][v]=1;

p[v][w][w]=1;

}

}

}

for(u=0;u

{

for(v=0;v

for(w=0;w

if(d[v][u]+d[u][w]

{

d[v][w]=d[v][u]+d[u][w];

for(i=0;i

p[v][w][i]=p[v][u][i]||p[u][w][i];

}

}

printf("\n请输入出发点和目的地编号:");

scanf("%d %d",&k,&j);

printf("\n\n");

while(k<0||k>ga.n||j<0||j>ga.n)

{

printf("\n输入的编号不存在");

printf("\n请重新输入编号:\n\n");

scanf("%d %d",&k,&j);

printf("\n\n");

}

printf("%s",ga.vexs[k].name);

for(u=0;u

if(p[k][j][u] && k!=u &&j!=u)

printf("--->%s",ga.vexs[u].name);

printf("--->%s",ga.vexs[j].name);

printf("\n\n\n总长度为%d千米\n\n\n",d[k][j]);

}

(4)得到景点之间的所有路径

void path(graph c,int m,int n,int k) {

int s,x=0;

int t;

t=k+1;

if(d[k]==n && k<8)

{

for(s=0;s

{

printf("%s--->",c.vexs[d[s]].name);

}

printf("%s\n\n",c.vexs[d[s]].name);

}

else

{

s=0;

while(s

{

if((c.edges[d[k]][s]<1000)&&(visited[s]==0))

{

visited[s]=1;

d[k+1]=s;

path(c,m,n,t);

visited[s]=0;

}

s++;

}

}

}

void allpath(graph c)

{

int k,i,j,m,n;

printf("\n\n请输入您要查询的两个景点的编号:\n\n");

scanf("%d %d",&i,&j);

printf("\n\n");

m=locatevex(c,i);

n=locatevex(c,j);

d[0]=m;

for(k=0;k

visited[k]=0;

visited[m]=1;

path(c,m,n,0);

}

(5)删除边

int delarc(graph &ga) {

int m,n,v0,v1;

if(ga.e<=0)

{

printf("图中已经无顶边,无法删除");

return 1;

}

printf("\n请输入要删除的边的起点和终点的编号:");

scanf("%d %d",&v0,&v1);

m=locatevex(ga,v0);

if(m<0)

{

printf("此顶点%d已删除",v0);

return 1;

}

n=locatevex(ga,v1);

if(n<0)

{

printf("此顶点%d已删除",v1);

return 1;

}

ga.edges[m][n]=1000;

ga.edges[n][m]=1000;

ga.e--;

return 1;

}

int enarc(graph &ga)

{

int m,n,distance;

printf("请输入边的起点和终点编号,权值:");

scanf("%d %d %d",&m,&n,&distance);

while(m<0||m>ga.n||n<0||n>ga.n)

{

printf("输入错误,请重新输入:");

scanf("%d %d",&m,&n);

}

if(locatevex(ga,m)<0)

{

printf("此节点%d已经删除",m);

return 1;

}

if(locatevex(ga,n)<0)

{

printf("此节点%d已经删除",n);

return 1;

}

ga.edges[m][n]=distance;

ga.edges[n][m]=ga.edges[m][n];

return 1;

}

4.调试分析

内容包括:

a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;

b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;

c.经验和体会等。

5.用户使用说明

通过主菜单提示,选择出你所想要知道的信息,然后通过输入节点来代替景点,从而得到景点间的所有路径,最短路径等其他信息。

6.测试结果

(1)操作的主界面

(2)学校景点的介绍

(3)学校景点从西门的禾堂餐厅的所有路径所有路径

(4)学校景点从西门的禾堂餐厅的所有路径最短路径

(5)图的更改的界面

(6)边的删除界面展示

7.附录

#define MAX 100 //数据类型的定义

#include

#include

using namespace std;

int visited[35];

int d[35];

struct views{

int num;

char name[10];

char introduce[100];

};

typedef views datatype;

typedef struct {

datatype vexs[MAX];

int edges[MAX][MAX];

int n,e;

}graph;

void initgraph(graph *ga)//主要的操作界面的显示以及无向网操作

{

int i,j;

ga->n=9;

ga->e=11;

{

ga->vexs[i].num=i;

}

strcpy(ga->vexs[0].name,"西门");

strcpy(ga->vexs[0].introduce,"学校的正大门,设有公交站");

strcpy(ga->vexs[1].name,"风雨篮球场");

strcpy(ga->vexs[1].introduce,"");

strcpy(ga->vexs[2].name,"田径场");

strcpy(ga->vexs[2].introduce,"举办运动会,平时体育跑步锻炼等");

strcpy(ga->vexs[3].name,"京元食堂");

strcpy(ga->vexs[3].introduce,"新食堂");

strcpy(ga->vexs[4].name,"苍霞湖畔");

strcpy(ga->vexs[4].introduce,"戏称“分手湖”,景色宜人");

strcpy(ga->vexs[5].name,"思源楼");

strcpy(ga->vexs[5].introduce,"学校王牌土木的教学区");

strcpy(ga->vexs[6].name,"图书馆");

strcpy(ga->vexs[6].introduce,"是大学城最高的标志性建筑");

strcpy(ga->vexs[7].name,"北教区");

strcpy(ga->vexs[7].introduce,"北校区集中的教学楼");

strcpy(ga->vexs[8].name,"禾堂餐厅");

strcpy(ga->vexs[8].introduce,"旧食堂");

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

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

ga->edges[i][j]=1000;

ga->edges[0][1]=1;

ga->edges[1][2]=2;

ga->edges[1][3]=5;

ga->edges[2][4]=4;

ga->edges[3][4]=9;

ga->edges[4][5]=1;

ga->edges[4][8]=1;

ga->edges[5][6]=5;

ga->edges[5][7]=7;

ga->edges[7][8]=1;

ga->edges[6][7]=9;

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

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

ga->edges[j][i]=ga->edges[i][j];

}

int locatevex(graph ga,int v) / /查找景点在图中的序号

{

int i;

if(v==ga.vexs[i].num)return i;

return -1;

}

void Create_graph(graph *ga)

{

int i,j,k,w;

printf("请输入顶点数和边数:\n");

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

printf("请输入景点编号,景点名字,景点介绍,建立信息表:\n");

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

{

scanf("%d",&(ga->vexs[i].num));

gets(ga->vexs[i].name);

gets(ga->vexs[i].introduce);

}

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

for(j=0;j<=ga->n;j++)

ga->edges[i][j]=1000;

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

{

printf("请输入%d条边的景点序号i,j和长度:",k+1);

scanf("%d %d %d",&i,&j,&w);

ga->edges[i][j]=w;

ga->edges[j][i]=w;

}

}

void print(graph ga)

{

int i,j;

for(i=0;i

for(j=0;j

{

printf("%d",ga.edges[i][j]);

if(j+1==ga.n)

printf("\n");

}

}

void visit(graph ga)

{

int a;

printf("请输入景点编号:");

scanf("%d",&a);

int i;

{

if(a==ga.vexs[i].num)

{

printf("景点编号为%d \n",ga.vexs[i].num);

printf("景点名称为");

puts(ga.vexs[i].name);

printf("景点介绍为");

puts(ga.vexs[i].introduce);

break;

}

}

if(i==ga.n)printf("无此点\n");

}

void shortestpath_djst(graph ga)

{

}

void shortestpath_floyd(graph ga)

{

int i,j,k,v,u,w,d[35][35],p[35][35][35];

for(v=0;v

{

for(w=0;w

{

d[v][w]=ga.edges[v][w];

for(u=0;u

{

p[v][w][u]=0;

}

if(d[v][w]<1000)

{

p[v][w][v]=1;

p[v][w][w]=1;

}

}

}

for(u=0;u

{

for(v=0;v

for(w=0;w

if(d[v][u]+d[u][w]

{

d[v][w]=d[v][u]+d[u][w];

for(i=0;i

p[v][w][i]=p[v][u][i]||p[u][w][i];

}

}

printf("\n请输入出发点和目的地编号:");

scanf("%d %d",&k,&j);

printf("\n\n");

while(k<0||k>ga.n||j<0||j>ga.n)

{

printf("\n输入的编号不存在");

printf("\n请重新输入编号:\n\n");

scanf("%d %d",&k,&j);

printf("\n\n");

}

printf("%s",ga.vexs[k].name);

for(u=0;u

if(p[k][j][u] && k!=u &&j!=u)

printf("--->%s",ga.vexs[u].name);

printf("--->%s",ga.vexs[j].name);

printf("\n\n\n总长度为%d千米\n\n\n",d[k][j]);

}

void path(graph c,int m,int n,int k)

{

int s,x=0;

int t;

t=k+1;

if(d[k]==n && k<8)

{

for(s=0;s

{

printf("%s--->",c.vexs[d[s]].name);

}

printf("%s\n\n",c.vexs[d[s]].name);

}

else

{

s=0;

while(s

{

if((c.edges[d[k]][s]<1000)&&(visited[s]==0))

{

visited[s]=1;

d[k+1]=s;

path(c,m,n,t);

visited[s]=0;

}

s++;

}

}

}

void allpath(graph c)

{

int k,i,j,m,n;

printf("\n\n请输入您要查询的两个景点的编号:\n\n");

scanf("%d %d",&i,&j);

printf("\n\n");

m=locatevex(c,i);

n=locatevex(c,j);

d[0]=m;

for(k=0;k

visited[k]=0;

visited[m]=1;

path(c,m,n,0);

}

void newgraph(graph &ga)

{

int changenum;

int i,m,n,t,distance,v0,v1;

printf("\n请输入要修改景点的个数:\n");

scanf("%d",&changenum);

while(changenum<0||changenum>ga.n)

{

printf("\n输入错误!请重新输入");

scanf("%d",&changenum);

}

for(i=0;i

{

printf("\n请输入景点的编号:");

scanf("%d,&m");

t=locatevex(ga,m);

printf("\n请输入景点的名称:");

scanf("%s",ga.vexs[t].name);

printf("\n请输入景点简介:");

scanf("%s",ga.vexs[t].introduce);

}

printf("\n请输入您要更新的边数");

scanf("%d",&changenum);

while(changenum<0||changenum>ga.n)

{

printf("输入错误,请重新输入:");

scanf("%d",&changenum);

}

printf("\n请输入更新边的信息:\n");

for(i=1;i<=changenum;i++)

{

printf("\n修改的第%d条边的起点终点长度为:",i);

scanf("%d %d %d",&v0,&v1,&distance);

m=locatevex(ga,v0);

n=locatevex(ga,v1);

if(m>=0&&n>=0)

{

ga.edges[m][n]=distance;

ga.edges[n][m]=ga.edges[m][n];

}

}

}

int delvex(graph &ga) //删除顶点

{

int i=0,j;

int m,v;

if(ga.n<=0)

{

printf("图中已经无顶点");

return 1;

}

printf("\n请输入要删除的景点编号:");

scanf("%d",&v);

while(v<0||v>ga.n)

{

printf("\n输入错误,请重新输入");

scanf("%d",&v);

}

m=locatevex(ga,v);

if(m<0)

{

printf("此顶点%d已删除",v);

return 1;

}

for(i=m;i

{

strcpy(ga.vexs[i].name,ga.vexs[i+1].name);

strcpy(ga.vexs[i].introduce,ga.vexs[i+1].introduce);

}

for(i=m;i

for(j=0;j

ga.edges[i][j]=ga.edges[i+1][j];

for(i=m;i

for(j=0;j

ga.edges[j][i]=ga.edges[j][i+1];

ga.n--;

return 1;

}

int delarc(graph &ga) //删除边

{

int m,n,v0,v1;

if(ga.e<=0)

{

printf("图中已经无顶边,无法删除");

return 1;

}

printf("\n请输入要删除的边的起点和终点的编号:");

scanf("%d %d",&v0,&v1);

m=locatevex(ga,v0);

if(m<0)

{

printf("此顶点%d已删除",v0);

return 1;

}

n=locatevex(ga,v1);

if(n<0)

{

printf("此顶点%d已删除",v1);

return 1;

}

ga.edges[m][n]=1000;

ga.edges[n][m]=1000;

ga.e--;

return 1;

}

int enarc(graph &ga)

{

int m,n,distance;

printf("请输入边的起点和终点编号,权值:");

scanf("%d %d %d",&m,&n,&distance);

while(m<0||m>ga.n||n<0||n>ga.n)

{

printf("输入错误,请重新输入:");

scanf("%d %d",&m,&n);

}

if(locatevex(ga,m)<0)

{

printf("此节点%d已经删除",m);

return 1;

}

if(locatevex(ga,n)<0)

{

printf("此节点%d已经删除",n);

return 1;

}

ga.edges[m][n]=distance;

ga.edges[n][m]=ga.edges[m][n];

return 1;

}

int envex(graph &ga) //增加节点

{

int i;

printf("请输入增加节点的信息:");

printf("\n编号:");

scanf("%d",&ga.vexs[ga.n].num);

printf("名称:");

scanf("%s",ga.vexs[ga.n].name);

printf("简介:");

scanf("%s",ga.vexs[ga.n].introduce);

ga.n++;

for(i=0;i

{

ga.edges[ga.n-1][i]=1000;

ga.edges[i][ga.n-1]=1000;

}

return 1;

}

校园导航系统---算法与分析课程设计

算法设计与分析课程设计 题目:校园导航问题 文档: 物联网工程学院物联网工程专业 学号 学生姓名 班级物联网1101 二〇一三年十二月

设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路(最短路径)。 本系统为用户提供以下功能: (一)、查询了解学校概况,为导游参观者提供关于学校的相关信息。 (二)、查询校园各个场所和景点信息; (三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学校。完成需要操作时,退出系统 校园导航查询系统的开发方法总结如下: (1) 需求分析,了解学校各个场所与场所或者是各个景点与景点之间的信息,路径和距离,考虑该如何设计才能满足用户需求。 (2) 概要设计,对调查得到的数据进行分析,根据其要求实现的功能分析系统结构和界面将实现的基本功能。 (3) 详细设计,设计系统界面并编辑实现其各个功能的代码。 (4) 调试分析,在设计完成后,调试系统运行的状况,修改完善系统,然后进行测试。 一、需求分析 1学校以及各景点介绍模块 采用一维数组将学校景点依次排放好编号G.vex[i].number=i 在选择校园介绍的时候,弹出G.vex[0]校园简介。在选择各景点信息的时候,可按编号查询2查询最短路径(主要) 查出出发地到想要到达的景点的最短路径,初步构想采用最经典的迪杰斯特拉算法最短路径函数 3查询各点距离 将所有景点的距离显示出来。 4主菜单页面显示 提供使用者选择功能界面,按照提示进行操作。 5退出 完成需要操作时,退出系统

校园导航系统模式图 二、概要设计 2.1算法设计说明 校园导航模型是由各个景点和景点以及场所和场所之间的路径组成的,所 以这完全可以用数据结构中的图来模拟。用图的结点代表景点或场所,用图的边 代表景点或场所之间的路径。所以首先应创建图的存储结构。结点值代表景点信 息,边的权值代表景点间的距离。结点值及边的权值采用图存储。本系统需要查 询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所 以给每个景点一个代码,用结构体类型实现。计算路径长度,最短路线和最佳路 径时可分别用迪杰斯特拉(Dijkastra )算法和哈密而顿回路算法实现。最后switch 选择语句选择执行浏览景点信息或查询最短路径和距离。 2.1.1学校以及各景点介绍模块 采用了图的邻接矩阵存储结构,首先初始化每一个景点名称(一维数组) fo r(i=1;i

数据结构课程设计-校园导航

数据结构课程设计-校 园导航 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

课程设计报告 课程名称数据结构课程设计题目校园导航 指导教师 设计起始日期 5.9~5.16 学院计算机学院 系别计算机科学与工程 学生姓名 班级/学号 成绩

一、需求分析 本次实验设计的任务是实现一个简易的北京信息科技大学的校园导航平面图。设计要包括下列要求: 设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 本课题实现校园多个场所(至少10个)的最短路径求解。 (1)输入的形式和输入值的范围:本系统主要数据类型为字符型char及整形int,char型主要包括单位编号,单位名称,单位简介,功能编号;输入功能编号与单位编号进行操作。 (2 ) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。 (3) 程序所能达到的功能:本程序可供任何人使用,主要功能1.浏览各单位及简介;2.查看所有游览路线;3.选择出发点和目的地求出最佳路径;4.查看某一单位信息。 (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 a.首先看到的是校园导航系统的菜单: b.查看浏览路线等待输入起始景点: C.选择出发点与目的地等待输入起始景点与目的地编号: d.参看景点信息等待输入景点编号:

二、概要设计 本系统包含一个文件。设计分有菜单,显示信息,弗洛伊德算法,迪杰斯特拉算法,查找景点信息等程序段。主程序为整系统的入口处,菜单主要实现显示系统功能,显示信息主要实现显示景点信息,弗洛伊德算法主要实现求两景点之间最短路径,迪杰斯特拉算法实现求两景点之间最短路径,查找景点信息主要实现显示某一景点信息。 系统首先通过主程序调用void main( );进入系统主菜单函数,根据用户的选择可分别进入:1.浏览各景点及简介;2.查看所有游览路线;3.选择出发点和目的地求出最佳路径;4.查看景点信息;5.退出系统。 选择“浏览各景点及简介”项,显示十个景点的有关信息,包括景点编号,景点名称,景点简介。 选择“查看所有游览路线”项,会进入输入起始景点编号的界面,输入正确编号后会显示起始景点到其余九个景点的最短路线的方案。 选择“选择出发点和目的地”项,会进入输入起始景点与目的景点的界面,输入起始景 点与目的景点,并有空格隔开就得到两景点之间的最佳路径。 选择“查看景点信息”项,会进入输入要查看的景点的界面,如入后会显示该景点的有关信息。 选择“退出系统”项,就会退出程序。 三、详细设计 (1)十三个单位的图

概预算课程设计 (1)

工程概预算课程设计 学 院: 经济管理学院 专 业: 工程管理131 题 目:某居民楼建筑工程施工图预算 小组成员: 郝思琦、时磊、杨旭钊、赵啸天、 孙永超 、詹磊 《工程概预算课程设计》任务书 一、课程设计题目: 某居民楼建筑工程施工图预算。 二、课程设计目的: 1、熟悉建筑工程预算定额,掌握单位工程施工图预算的编制依据、编制内容、编制方法和步骤,掌握单位工程预算造价的基本组成。 2、培养学生运用工程造价的基本理论和基本知识、合理编制单位工程施工图预算的能力。 3、了解单位工程施工图预算在工程建设、施工企业生产经营管理、项目管理中的作用。 4、了解工程量清单计价的原理与基本步骤。 三、课程设计要求: 1、认真、全面的熟悉施工图纸,了解工程的总概况及各种构造方法。 2、根据建筑工程预算定额,对照施工图纸,对整个工程进行项目划分,划分成若干个计算子目。 3、依据建筑工程预算定额中各个分部工程的说明和工程量计算规则,对各计算子目进行工程量计算,形成工程量计算书。 4、根据分部分项工程的工程量,套用建筑预算定额,计算出直接工程费。 5、套用现行的费用定额,进行各种取费计算,汇总出工程总造价,并算出主要技术经济指标。 6、运用造价信息进行材料价差调整。 装订线

7、编写工程预算编制说明。 四、上交成果: 整理出施工图预算书并装订成册,并附工程量计算书。 五、参考资料 1、全国统一建筑工程基础定额,全国统一建筑工程基础定额工程量计算规则。 2、《河北建筑工程预算基价2008》。 3、相关概预算教材。 六、课程设计时间:1周。 编制说明 一、工程概况: 1.工程名称:河北某居民楼 2.建设地点:河北石家庄裕华区 3.建筑面积:平方米 4.本工程为砖混结构,全现浇楼板。 5.本工程结构设计使用年限为 50年,建筑结构安全等级为二级,建筑物抗震设防分类为丙类建筑。 6.抗震设防烈度为 7度(第一组),设计基本地震加速度值为,建筑场地类别为 III类。 二、编制依据: 1、全国统一建筑工程基础定额,全国统一建筑工程基础定额工程量计算规则。 2、河北城乡建设管理委员会发布的《河北建筑工程预算基价》2000年版。 3、《建设工程造价管理基础知识》。 4、其他相关概预算教材。 5、本工程相关建筑、结构施工图纸。

数据结构课程设计-校园导航

课程设计报告 课程名称数据结构课程设计题目校园导航 指导教师 设计起始日期 5.9~5.16 学院计算机学院 系别计算机科学与工程 学生姓名 班级/学号 成绩

一、需求分析 本次实验设计的任务是实现一个简易的北京信息科技大学的校园导航平面图。设计要包括下列要求: 设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路, 且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 本课题实现校园多个场所(至少10个)的最短路径求解。 (1)输入的形式和输入值的范围:本系统主要数据类型为字符型char及整形int,char 型主要包括单位编号,单位名称,单位简介,功能编号;输入功能编号与单位编号进行操作。 (2 ) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。 (3) 程序所能达到的功能:本程序可供任何人使用,主要功能1.浏览各单位及简介; 2.查看所有游览路线; 3.选择出发点和目的地求出最佳路径; 4.查看某一单位信息。 (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 a.首先看到的是校园导航系统的菜单: b.查看浏览路线等待输入起始景点: C.选择出发点与目的地等待输入起始景点与目的地编号: d.参看景点信息等待输入景点编号: 二、概要设计 本系统包含一个文件。设计分有菜单,显示信息,弗洛伊德算法,迪杰斯特拉算法,查找景点信息等程序段。主程序为整系统的入口处,菜单主要实现显示系统功能,显示信息主要实现显示景点信息,弗洛伊德算法主要实现求两景点之间最短路径,迪杰斯特拉算法实现求两景点之间最短路径,查找景点信息主要实现显示某一景点信息。

单层住宅楼建筑工程施工图预算_课程设计

天水师范学院工学院 工程概预算课程设计 单层住宅楼建筑工程 施工图预算 班级10级土木一班 2013年6月5日

土木工程概预算课程设计任务书 一、土木工程概预算课程设计题目: 根据所给施工图纸和甘肃省计价依据完成工程施工图预算。 二、课程设计主要内容及要求 1、根据《建设工程工程量清单计价规范》编制分部分项工程量清单计价表; 2、根据《甘肃省建筑工程预算定额》列出各分部分项工程项目名称、定额编号、分项工程量及其相应的预算单价,编制分部分项工程定额预算表; 3、根据《甘肃省建筑工程费用构成及计算规则》规定的费用计算程序和措施费参考费率、利润率、税率,以及规费费编制某工程造价汇总表; 4、根据施工图预算编制过程中的有关需要说明的事项,编写“**工程施工图预算编制说明”。 5、计算工程量保留两位小数,费用计算保留两位小数。 6、成果答辩。 三、需提交成果: 用A4纸完成书写或打印,最后成果按如下顺序装订 1、封面 2、目录 3、施工图预算编制说明 4、分部分项工程工程量清单计价表 5、分部分项工程定额预算表 6、含税总造价计算表 7、分部分项工程量清单 四、主要参考资料: 1、《建设工程工程量清单计价规范》 2、《甘肃省建筑工程预算定额》(上、下册) 3、《甘肃省建筑工程费用构成及计算规则》 4、《“甘肃省建筑工程消耗量定额”综合解释》等 五、设计分组,

每班分三组,三组分别完成以下三个工程 1、某单层住宅楼工程 2、某二层餐厅工程 3、某办公楼工程 附录1 某单层住宅楼工程 一、场地及施工条件 1、本单层住宅建于某市市区。施工中所用材料均可由城市道路直接运进工地。施工用电均可由附近已有的水网、电网引入。 2、多孔板、架空板均由场外混凝土预制构件厂加工制作,用汽车运入工地安装,运距为5 km,其它零星混凝土预制构件均在现场预制。 3、基础持力层以上土层为普通土,地下常水位在基础底面以下。 4、土方可现场堆放,余土外运距离为3km。 5、铝合金门窗为成品安装,木门窗现场制作,刷清漆两遍。 二、建筑及结构设计说明: 1、基础采用MU10 普通粘土砖,M 5.0 水泥砂浆砌筑;半砖墙墙基防潮层用20 厚1:2 水泥砂浆(加5%防水粉)铺设;一砖墙墙基设240 x180 地圈梁一道。 2、砖墙采用MU10 普通粘土砖,M 5.0 混合砂浆砌筑;其中所有的砖墙沿墙高每 隔500 设置 6 2φ 通长钢筋加固。 3、门窗过梁采用M7.5 水泥砂浆砌筑的钢筋砖过梁,配筋为: GL-2 配 6 4φ,GL -3 配 6 3φ ,GL-4 配 6 2φ,过梁钢筋两端按规范设置弯钩,并伸入墙内250。 4、圈梁(QL)为现浇,搁板(YB)为现场预制,材料均为C20混凝土。 5、屋面预应力多孔板的规格、配筋以及混凝土含量见下表

校园导航系统

题号:第七题 题目:校园导航问题 1,需求分析: 设计你的学校的平面图,至少包括10个以上的景点(场所),每两个景点间可以有不同的路,且路长也可能不同,找出从任意景点到达另一景点的最佳路径(最短路径)。 要求: (1)以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。 (4)修改景点信息。 实现提示: 一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。顶点和边均含有相关信息。 选做内容: (1)提供图的编辑功能:增、删景点;增、删道路;修改已有信息等。 (2)校园导游图的仿真界面。 2,设计: 2.1 设计思想: <1>,数据结构设计: (1)图。采用邻接矩阵存储,其中图所用到的结构体为: typedef struct

{ SeqList vertices; //表示图中的顶点 int Edge[MaxVertices][MaxVertices]; //表示图中的边 int numOfEdge; //表示图中边的数目}AdjMGraph; (2)景点。用顺序表存储。所用到的结构体为: typedef struct { char name[20]; //顶点名称 int code; //顶点代号 char introduction[50]; //顶点信息简介 }DataType; (3)景点之间的连接描述,所用到的结构体为: typedef struct { int row; int col; int weight; }RowColWeight; 用图来存放所提供的所有景点,然后用线性表来存放每一个景点的信息,其中包括景点的名称,代号,信息简介,以及其它的一些信息。这样就将对景点的操作,变成对图中各顶点的操作。 <2>,算法设计: 关于本课题的算法,很大部分来源于这学期数据结构课程的学习,其中包括:

校园导航系统源代码

数据结构-校园导航系统 简介:本系统采用C语言编写,运行环境为Dev-C++; 容以电子科技大学南校区为例; 主要功能有:1.查询景点信息;2.查询两景点间最短距离;3.查询两景点间所有路线;4.查询西电校园地图;5.修改景点和路径信息. 注意事项:在进行修改景点和路径信息操作前,请在可执行文件目录下用记事本创建”superUser.CODE”文件来存放用户名与密码(中间以空格隔开),否则无法进入.

源代码: #include #include #include #include #include #define Max 20000 typedef struct ArcCell { int adj; //两个景点间的距离 }ArcCell; typedef struct VertexType { int number; //景点编号 char sight[100]; //景点名称 char description[1000]; //景点简介

char particular1[1000]; char particular2[1000]; char particular3[1000]; //景点详情 }VertexType; typedef struct { VertexType vex[20]; //最多存放20个景点信息ArcCell arcs[20][20]; //两个景点间的距离 int vexnum,arcnum; }MGraph; MGraph G; char nameofschool[100]; //学校名称 int NUM=9; int P[20][20]; int p[20]; int visited[20]; int a=0; long int D[20]; int x[20]={0}; //函数声明 void CreateUDN(int v,int a); void narrate(); void ShortestPath(int num); void output(int sight1,int sight2); char Menu(); void search(); char SearchMenu(); void HaMiTonian(int); void Searchpath1(MGraph g); void disppath(MGraph g,int i,int j); void path(MGraph g,int i,int j,int k); void NextValue(int); void display(); int Addnewsight(int n); int Deletesight(int n); void Changesight(); char Changemenu(); char Sightmenu(); int Maintain(void); int VerificatianIdentity(void); void map();

数据结构课程设计—校园导航报告

课程设计报告 院、系: 专业:软件工程 班级: 课程设计科目数据结构 学生姓名: 指导教师: 完成时间:

校园导航系统设计报告 一、设计任务与目标 设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 本系统是一个涉及吉林大学珠海学院相关景点和场所查询系统,是为了方便人们能够更快更准地获得学校各个景点和场所的详细信息。 本系统为用户提供以下功能: (一)、查询了解学校概况,为导游参观者提供关于学校的相关信息。 (二)、查询校园各个场所和景点信息; (三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学 校。 校园导航查询系统的开发方法总结如下: (1) 调查,了解学校各个场所与场所或者是各个景点与景点之间的信息, 路径和距离,从外来人员或者参观者和走访者的角度出发,该如何设 计才能满足用户需求。 (2) 分析,对调查得到的数据进行分析,根据其要求实现的功能分析系统 结构和界面将实现的基本功能。 (3) 设计与开发,设计系统界面并编辑实现其各个功能的代码。 (4) 调试,在设计完成后,调试系统运行的状况,修改完善系统,然后进行 测试。 二、方案设计与论证 校园旅游模型是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点或场所,用图的

边代表景点或场所之间的路径。所以首先应创建图的存储结构。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值采用图存储。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度,最短路线和最佳路径时可分别用迪杰斯特拉(Dijkastra)算法和哈密而顿回路算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径和距离。 搭建程序框架图,其图如下所示: 三、算法说明 (一)设计功能的实现 接下来根据以上搭建的程序框架完成各个模块的算法 1、首先是抽象数据类型的定义:

建筑工程预算课程设计

建筑工程预算课程设计 一、工程名称: 范例五工程施工图预算 二、工程内容: 工程范围内所涉及的建筑与结构内容,具体包括:图纸范围内楼地面、墙面、顶棚、门窗、楼梯、栏杆、外墙、土石方、全部混凝土量;钢筋与模板只需计算基础、柱与顶层的梁板部分。 三、设计目的: 通过编写范例五工程施工图预算,熟悉建筑工程预算定额子项内容,能够正确找到分部分项工程所对应的定额编号,掌握施工图预算的编制过程、方法及要求。 四、编著要求要求: 1、预算内容包括:封面、编制说明、工程预算表、价差汇总表、工程造价取费表等。 2、本预算采用工料单价法编制。 3、定额采用《2004年江西省建筑工程定额》、《2004年江西省装饰装修工程定额》,定额中缺项部分采用市场价形式,市场价自定,只计税金。 4、工程取费费率采用江西省现行费用定额,工程所在地为南昌市。 5、价差调整:人工按江西省现行文件执行,材料单价见附表,价差部分只计税金。 五、设计时间:17周 六、参考资料 1、《建筑工程计量与计价》主编:胡洋、孙旭琴等 2、施工图纸与相关定额。 3、类似工程的施工图预算。 主要材料价格汇总表

3 螺纹钢筋Φ20以内t 3530 4 螺纹钢筋Φ20以外t 3510 5 钢管(脚手架与支架用) t 3480 6 水泥 32、5 kg 0、4 7 水泥 42、5 kg 0、42 8 水泥 52、5 kg 0、45 9 中(粗)砂m3 60 10 卵石m3 90 11 木胶板m2 20 12 粘土空心砖240*115*90 百块60 13 加气混凝土砌块m3 260 14 水m3 2、35 15 16 17 合计

实用文库汇编之数据结构课程设计校园导航

*作者:座殿角* 作品编号48877446331144215458 创作日期:2020年12月20日 实用文库汇编之一、课程设计目的 本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。 设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。 通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 二、课程设计内容 1)问题描述 用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。 2)基本要求 (1)查询各景点的相关信息; (2)查询图中任意两个景点间的最短路径。 (3)查询图中任意两个景点间的所有路径。

(4)增加、删除、更新有关景点和道路的信息 三、课程设计过程 1.需求分析 (1)设计学校的校园平面图,选取出若干的具有代表性的景点构成一个抽象的无向带权图,顶点为景点,边的权值代表了景点间路径的长度。 (2)将景点的序号,名称,介绍存放起来准备查询。 (3)提供任意景点的信息; (4)提供任意经典的路径查询及其最优路线的查询 (5)平面图景点的增加及删除,以及边和权值(长度)的改变 2.概要设计 1:第一点是主界面的设计,首先,为了该系统各个功能的管理,设计出含有多个菜单项的主菜单界面,可以更方便的使用该系统。 2:第二点是存储结构的设计,采取了图结构类型(mgraph)存储校 园图的信息,景点信息用结构数组vexs存储,而且利用全局变量:visited[]数组用于存储顶点是否被访问标志;d[]数组用于存放权值和查找路径顶点的编号;campus是一个图结构的全局变量。 3:第三点是设计各个功能的实现,学校景点的介绍通过函数 browsecompus()来实现;查询景点间的最段路径通过Floyd(弗洛伊德)算法实现;查询景点间的所有路径通过allpath函数和path函数来实现;更改图的信息可以由主函数changegraph以及其他函数可以实现。 3.详细设计 (1)主要的操作界面的显示以及无向网操作 void initgraph(graph *ga)

概预算课程设计-土木

建筑工程概预算课程 设计 姓名: 学号: 专业: 班级: 指导老师: 二零一三年六月十日

目录 工程概预算课程设计任务书 (2) 工程概预算课程设计计算书 一、工程概况 (4) 二、基本依据 (4) 三、施工图预算编制说明 (4) 四、工程量计算规则说明 (4) 五、分项工程费工程量计算表 (5) 六、分项工程取费表 (13) 七、分项工程费汇总表 (14) 附录 一、建筑设计说明 (15) 二、结构设计说明 (16) 三、设计图纸附后 (17)

工程概预算课程设计任务书 一、工程概预算课程设计题目 根据所给施工图纸和河北省消耗量定额完成分部分项工程施工图预算。 二、课程设计主要内容及要求 1、根据《河北省建筑工程消耗量定额》及《河北省建筑工程工程量计算规则》列出定额项目,并计算相应定额工程量,并编制工程量计算表; 2、根据《河北省消耗量定额》(2008版)套用相应定额项目单价,并编制分部分项工程取费表(可以利用EXCEL) 3、编制分项工程造价汇总表 注:以上三项工作手工完成,可以利用EXCEL完成表格编制和数据计算。 4、根据施工图预算编制过程中的有关需要说明的事项,编写“**工程施工图预算编制说明” 三、需提交成果: 用A4纸完成书写或打印,最后成果按如下顺序装订 1、封面 2、目录 3、施工图预算编制说明(自己编写) 4、表1.1分项工程费工程量计算表 5、表1.2 分项工程取费表(手算) 6、表1.3 分项工程费汇总表 四、进度要求:(共7天) 1、定额工程量计算和定额项目套用3天;

2、建筑工程费用计算2天 3、整理设计资料2天 五、主要参考资料: 1、《河北省建筑工程工程量计算规则》 2、《河北省建筑工程消耗量定额》 六、设计分组, 每五人一组(班长分组,并将分组情况报送指导老师),分别完成以下分项工程 1、混凝土工程和模板工程 2、砌体工程和钢筋工程 3、基础工程和土方工程

《校园导航系统》课程设计报告

《校园导航系统》课程设计报告 姓名: 学号: 班级:网络 专业:网络工程 指导教师: 时间:2

目录 摘要 (1) 1.题目 (1) 2.概要设计 (1) 3.调试分析 (15) 4.参考文献 (15)

1.题目 校园导航系统 设计一个校园导游程序,后台操作: 1、操作员信息管理如修改密码等 2、能根据学校的规模进行添加景点信息、修改景点信息等功能, 3、若临时有交通管制,能进行交通管制的设置和撤销(如某某时间段那条路进行那个方向的交通管制等) 前台为来访的客人提供各种信息查询服务: 1、设计学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名 称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 2、为来访客人提供图中任意景点相关信息的查询。 3、提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径。 1.1 需求分析 设计一个校园导航系统,导航系统又分为游客和管理员。要进行管理操作还是游客操作由用户自己选择 管理员的操作:修改景点信息、增加景点信息、交通管制等。 游客的操作:查看景点信息和查最短路径。 2.概要设计 景点的信息由一维数组存放,景点关系由二维数据来存放 景点的信息和关系从文件读取,进而初始化 typedef struct //保存单个景点信息的结构体 { char code[10]; //存放景点代码 char name[20]; //存放景点名称 char instruction[100]; //存放景点简介 }ViewPoint; typedef struct //存放景点关系的二维数组 { int edges[MAXV][MAXV]; //两景点间的距离 int number; //景点的数量 ViewPoint V[MAXV]; //保存景点信息的结构体数组 }MGraph;

校园导航课程设计

数据结构课程设计

蚌埠学院计算机科学与技术系课程设计任务书

目录 1 引言 (4) 1.1 问题的提出 (4) 1.2任务与功能简介 (4) 1.2.1任务 (4) 1.2.2功能简介 (4) 2 程序运行平台 (5) 3 总体设计与模块分析 (6) 3.1抽象数据类型定义 (6) 3.2主程序模块的整体流程 (6) 3.3各模块调用和函数关系如下 (6) 4 程序的主要功能实现 (8) 4.1 main()——主函数 (8) 4.2赋值init函数 (8) 4.3输出蚌埠学院校园导航平面图的map函数 (10) 4.4菜单menu函数 (11) 4.5输出地点信息的information函数 (12) 4.7输出路径way函数 (13) 4.8调用floyd和way的最短路径shortestpath算法 (14) 5系统测试 (15) 5.1系统运行后主界面 (15) 5.2查询最短路径 (16) 5.3查询地点信息 (17) 致谢 (19) 参考文献 (20) 附录 (21)

1 引言 为了加深对《数据结构》这一课程所学内容的进一步理解与巩固,我们这一组按课程设计要求完成了校园导航系统的设计。 1.1 问题的提出 我们这次基于对导航这个热门问题的研究设计了简易校园导航系统,我们的导航平面图中至少包括8个以上校园的场所,每两个场所间可以有不同的路,且路长也可能不同,给出校园各主要建筑的名称信息及有线路联通的建筑之间的距离,利用校园导航系统计算出给定的起点到终点之间的最近距离及线路。本导航系统能够很好的向同学们提供距离与地点的详细信息。 1.2任务与功能简介 1.2.1任务 (1)本次作业的核心是利用弗洛伊德算法计算给定有向网中两点最短距离;给出有向网中所要求点的信息。在调试过程中,除了简单语法错误外,就是对弗洛伊德算法的理解和实现,以及菜单的设置,这是我以前没有实现过的。出于简单化,并没有对有向图中各个点进行输入,而是在程序中直接赋值。 (2)在对各个功能操作的实现上,由于有弗洛伊德算法时间复杂度大多数是O(n3),空间上增加了二维数组,空间复杂度为O(n+s)。 1.2.2功能简介 程序所能达到的功能: (1) map——输出蚌埠学院导航平面图。 (2) init()——按相应编号输入各个节点内容,对相应路径赋值的函数。 (3) menu()——菜单函数 (4) information()——输出简介的函数 (5) way()——最短路径的输出函数 (6) shortestpath()——调用弗洛伊德和最短路径输出的函数 (7) main()——主函数

《建筑工程预算》课程设计

河南理工大学万方科技学院(郑州)《建筑工程预算》课程设计 任 务 书 系别 专业 班级 姓名 学号 日期

《建筑工程预算》课程设计任务书 一、设计时间及地点 1.设计时间:本次课程设计时间为1周,本学期第12周(5月25号-5月29号)。 2.设计地点:各班级主教室。 二、设计的目的和要求 1.课程设计的目的 《建筑工程预算》是一门实践性很强的课程,必须通过一定时间的动手训练,才能使学生掌握施工图预算的基本原理及基本编制方法,达到教学大纲要求的程度,并为今后的工作打下良好的基础。准对这种要求,按照教学计划的安排对学生进行一次综合性的实践活动,编制一份工程量计算书,使学生将所学的理论内容能够紧密的结合实践,提高学生独立思考独立解决问题的能力。 2.课程设计要求 根据课程特点,本次课程设计主要要求学生将以前所学的建筑工程预算课程以及其他相关的建筑构造,建筑施工技术,建筑材料等课程相结合,在教师的指导下,进行系统的、完整的工程量清单的编制,主要掌握其方法,建立其对建筑工程预算的感性认识。要求各位同学

在设计过程中认真对待、刻苦学习,在有限的时间内圆满完成本次设计任务。 三、设计的题目和内容 1.课程设计题目:某单层房屋施工图预算,主要是工程量的计算 2.课程设计的内容(见图纸) 四、设计成果 课程设计结束后,要提交以下设计成果(见附件),并装订成册。 五、评分标准及成绩评定 本次课程设计结束后每位同学提交一份工程量汇总表及工程量计算书。课程设计成绩由指导老师根据计算书质量综合评定。成绩分为优、良、中、及格、不及格五个档次,不及格的同学应另行安排补做课程设计。 有以下情况之一者成绩视为不及格: 1.不努力,有违纪行为,表现差; 2.未能达到课程设计所规定的基本要求; 3.弄虚作假,有抄袭行为或部分内容由其他同学代做; 4.工程量计算书模糊不清,内容部齐全。

校园导航系统 数据结构课程设计 C++开发

分类号编号 华北***大学 North China Institute of Water Conservancy and Hydroelectric Power 课程设计 题目校园导航 院系信息工程学院 专业计算机科学与技术 姓名****** 学号201117000 指导教师***** 2012年7月6 日

目录 1.需求分析 (1) 1.1问题描述 (1) 1.2课程设计目的 (1) 1.3设计要求 (1) 2.概要设计 (2) 2.1任务定义 (2) 2.2数据结构 (2) 2.3 校园平面图展示 (2) 2.4系统功能图 (4) 3.详细设计 (4) 3.1各个模块名称和功能 (4) 3.2具体函数模块详解 (5) 3.2.1校园平面图展示 (5) 3.2.2任意两点的所有路径 (5) 3.2.3校园基础设施介绍 (6) 3.2.4指定两点间最短路径 (6) 3.2.5单点到其他左右顶点间最短路径 (6) 3.2.6华北水利水电学院简介 (7) 3.2.7访客留言 (7) 3.2.8浏览访客留言 (7) 3.3 主要算法思想描述 (7) 3.4各函数之间的调用关系示意图 (7) 4.测试与分析 (8) 4.1测试显示 (8) 4.2调试分析 (12) 4.2.1调试过程中遇到的问题与解决方案 (12) 4.2.2算法的时空复杂度分析 (12) 5.用户使用说明 (12) 6.实验总结 (14) 7.参考文献 (14) 8.附件 (15)

校园导航系统 1.需求分析 1.1问题描述 我们熟悉一个地方的地形情况通常是借助于一张地图,通常的地图包含的信息十分的有限,而且具体到某一个建筑物,你不能了解到它的进一步的详细的情况。因此,导航系统就应运而生了。 具体到本系统,作为用户浏览校园时,只拿着学校的地图是能够游遍全校,但是各建筑内部的情况就必须实地考察才能了解,既费时又费力。有了我们的校园的导航系统,用户可以根据自己的需要,迅速找到所关心的地点,并且可以看到它的详细的信息。 1.2课程设计目的 本课程设计的目的就是要达到理论与实际应用相结合,使我们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,培养程序设计技能如下: (1)了解并掌握数据结构算法的设计方法,具备初步的独立分析和设计能力; (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (3) 独立完成,提高运用所学的理论知识和方法独立分析和解决问题的能力; 1.3设计要求 设计一个校园导航系统,为来访的客人提供导航服务,具体要求: (1) 设计学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 (2)以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息 (3) 为来访客人提供图中任意景点相关信息的查询。 (4) 提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径以及任意景点到其他所有景点的最短路径查询。 (5) 列出所有校内无重复排列的景点,将所有景点的距离以邻接矩阵的方式呈现给使用者,提供使用者选择功能界面,按照提示进行操作。

校园导航系统课程设计报告

题目石铁大校园导航系统 学院信息科学与技术学院 专业计算机科学与技术 学号 20112840 学生姓名刘铸辉 指导教师姓名陈娜 日期:2013-8-31

一.题目与要求 实习一 校园导游程序 [ 问题描述] 用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景 点介绍、游览路径等问题。游客通过终端可询问: (1 )从某一景点到另一景点的最短路径。 (2 )游客从公园进入,选取一条最佳路线。 (3 )使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。 [ 基本要求] (1 )将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离.为此图选择适当的数据结构。 (2 )把各种路径都显示给游客,由游客自己选择浏览路线。 (3 )画出景点分布图于屏幕上。 [ 实现提示] (1 )构造一个无向图G 并用邻接矩阵来存储。 (2 )利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][] 来记录,最短路径长度就用一维数组d[i] 存放;i 的范围:0 ~20 。 (3 )一维数组have[] 是用来记录最短路径出现顶点的顺序。 (4 )根据起点和终点输出最短路径和路径长度。 二.需求分析 本校园导航系统由C语言编写,主要掌握最短路径的实现方法,以及构造无向图G并用邻接矩阵来存储,掌握迪杰斯特拉算法来算最短路径。 1.输入的形式和输出的范围: 2.输出的形式: 3.程序所能到达的功能: A.图中任意景点的相关信息查询 B.任意两个景点间的最短路径 C.任意两个景点间的所有路径 D.增加有关景点和道路的信息 E.删除更新有关景点和道路的信息 F.更新有关景点和道路的信息 G.显示全景 H.退出该系统

数据结构—课程设计—校园导航问题报告

数学与计算机学院 课程设计说明书 课程名称: 数据结构-课程设计 课程代码: 8404181 题目: 校园导航问题 年级/专业/班: 学生姓名: 学号: 开始时间:年月日 完成时间:年月日 课程设计成绩: 指导教师签名:年月日

数据结构课程设计任务书 学院名称:数学与计算机学院课程代码:8404181 专业:年级: 一、设计题目 校园导航问题 二、主要内容 设计西华大学的平面图,至少包括10个以上的场所,找出从任意场所到达另一场所的最短路径。 三、具体要求及应提交的材料 1.每个同学以自己的学号和姓名建一个文件夹,如:“312009*********张三”。里面应包括:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中)、任务书和课程设计说明书的电子文档。 2.打印的课程设计说明书(注意:在封面后夹入打印的“任务书”以后再装订)。 四、主要技术路线提示 涉及无向图的操作。该设计共分三部分,一是建立西华大学平面图的存储结构,二是解决单源点最短路径问题,最后再实现任意一对场所之间的最短路径问题。 五、进度安排 共计两周时间,建议进度安排如下: 选题,应该在上机实验之前完成 需求分析、概要设计可分配4学时完成 详细设计可分配4学时

调试和分析可分配10学时。 2学时的机动,可用于答辩及按教师要求修改课程设计说明书。 注:只用课内上机时间一般不能完成设计任务,所以需要学生自行安排时间做补充。 六、推荐参考资料(不少于3篇) [1]苏仕华等编著,数据结构课程设计,机械工业出版社,2007 [2]严蔚敏等编著,数据结构(C语言版),清华大学出版社,2003 [3]严蔚敏等编著,数据结构题集(C语言版),清华大学出版社,2003 指导教师签名日期年月日 系主任审核日期年月日

C语言校园导航系统

课程设计报告 课程设计题目:校园导航 专业:计算机科学与技术 班级:1230701 学号:2 学生姓名:胡玖龙 指导教师:刘志锋 2014年6月19日 1 / 17

实验题目: 校园导航系统 实验时间: 2014/6/16-2014/6/19 实验地点: 软件楼402 实验目的: 综合运用所学的数据结构知识解决一个关于学校导航系统的问题,侧重对图的相关内容特别是求最短路径的应用,使得能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下基础。 实验要求: 设计学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从某个场所到达另一场所的最佳路径。 求最短路径用Dijkstra或Floryd算法实现。 2 / 17

实现思路: 先分析需求,本程序的主要目的是提供本学校地点的路径查询,并提供其他各种信息查询服务。 需求: 1、提供校园平面图,使得能直观的了解学校。 2、提供地点信息查询,为各地点提供简短的介绍。 3、提供任意两地点间最短路径查询,并计算总路程。 根据要求,先将校园平面图信息抽象为无向网,用邻接矩阵存储。 需求1: 定义map()函数,功能是输出校园的平面图。可简单的通过printf()函数实现。 需求2: 定义Query()函数,功能是查询输出地点信息。可直接输出无向网中的顶点信息。 需求3: 根据输入的起点和终点,运用Floryd算法,求出最短路径,计算路径长度并输出。 考虑到使用者并不一定需要使用所有的功能,所以开始时需要一个选择菜单。定义Menu()函数,功能是提供功能选择。 输入1,选择查看学校平面图 输入2,选择查看各地点信息 输入3,选择查找两地点间最短路径 输入4,退出程序 3 / 17

校园导航系统

目录 摘要 (2) 正文 (3) 1设计目的及要求 (3) 2 设计原理 (3) 2.1 C/C++语言简介 (3) 2.2 开发环境 (3) 2.3系统模块分析 (4) 3设计内容 (4) 3.1方案设计与论证 (4) 3.2数据结构描述与定义 (5) 3.3主要函数的说明 (6) 3.4设计结果验证 (11) 总结与致谢 (14) 参考文献 (15) 附录 (16)

摘要 与传统的地图相比较,地理信息系统有着不可比拟的优势,信息量大,切换方便,可扩展性强。校园导航问题是基于校园中的不同的景点,从陌生人的角度,为来往的客人提供校园景点相关信息的查询以及为来往的客人提供校园中任意景点的问路查询,以便客人能用最短的时间从某一地点到达想要去的地方。大大节约了旅客参观校园的时间。 本文是采用C++作为开发语言,又最大程度上用了C语言的有关的语法。以visual c++6.0为开发工具。旨在实现校园导航系统中,学校的简介,景点的介绍,路线查询等基本的问题。为来往客人参观校园提供方便。 关键字:visual c++6.0 ;校园导航系统;

正文 1设计目的及要求 1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3. 独立完成,提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 5. 设计学校平面图,至少包括10个以上场所,校园导航系统能自动找出校园平面图中任意起始点与终点的最佳路径(最短路径)。求并输出路径及路径长度。 2 设计原理 2.1 C/C++语言简介 C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。 C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。 2.2 开发环境 随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行校园导航已成为衡量校园数字化的重要标志。校园导航效率的好坏对于来校参观的客人和学校管理者来说都至关重要,在很大程度上影响着校园的数字化建设和学校的影响力。因此,本文所研究的校园导航系统具有一定的使用价值和现实意义。

相关文档
最新文档