数据结构课程设计地图着色问题

数据结构课程设计地图着色问题
数据结构课程设计地图着色问题

课程设计报告

课程设计题目:地图着色问题

专业:xxxxxxxxx

班级:xxxxxxxxx

姓名:xxxxxxxxx

一:需求分析:

1)已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使

用的颜色总数最少;

2)将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关系;

3)演示程序以用户和计算机的对话方式进行;

4)最后对结果做出简单分析。

二:概要设计

一:设计思路

把34个省看成34个顶点,从选定的第一个顶点开始着色,先试第一种颜色,如果这个颜色与这个顶点的其他邻接顶点的颜色不重复,则这个顶点就是用这种颜色,程序开始对下一个顶点着色;如果着色重复,则使用下一种颜色重复上面的操作。着色过程就是一个递归的过程,直到所有的顶点都处理完后结束着色。

二:数据结构设计

因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构选用邻接表,考虑用邻接表是因为一般的地图的某一个顶点并不会与很多的顶点相邻接,如果用邻接矩阵会浪费很多的存储空间,所以我选择的邻接表来存储。

其中:

typedef struct ArcNode

{

int x; (表示与当前顶点所表示省份相邻的省份的位置信息)

struct ArcNode *next; (指向下一个弧结点)

}ArcNode; (表示省份之间相邻关系的弧结点)

typedef struct

{

char *name; (顶点所表示的省份的名称)

int color; (省份的颜色,用数字表示不同的颜色)

ArcNode *firstnext; (指向第一个弧)

}shengfen[35];

三:详细设计

该程序一共包含三个模版:分别为初始化模版、着色模版和输出模版。

1.初始化模块

声明表示省份的顶点信息、省份之间相邻关系的弧的信息,并为其赋值。2.着色模块

为各个省份着色。

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

{

sheng[i].color=0;

}

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

{

j=1;

p=sheng[i].firstnext;

while(p!=NULL)

{

while(p!=NULL&&j!=sheng[p->x].color)

{

p=p->next;

}

if(p!=NULL)

j++;

}

sheng[i].color=j;

}

3.输出模块

输出各个省份的颜色信息。

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

{

printf("%s:",sheng[i].name);

printf("%d\n",sheng[i].color);

}

printf("/n0表示白色,1表示蓝色,2表示红色,3表示绿色,4表示黄色");

return 0;

四:调试分析

因为我们的程序已知是中国地图,为中国地图染色,所以程序没有输入,只有输出信息。从输出的信息来看,我们最多使用了4种颜色。关于程序测试时存在的问题,我们程序在写完之后,出现了没有错误但是无法输出信息的问题,从网上查找发现是对警告没处理好的原因,随后我们参考了网上的解决方案把问题解决了。关于程序的改进,我们的程序使用的是有向图,但省份之间的相邻关系用无向图就可以表示,这是程序可以改进的地方。其次,我们的程序输出结果描述省份颜色的是数字,也可以改进后使之输出具体的颜色。

五:源程序清单

#include

#include

typedef struct ArcNode{

int x;

struct ArcNode *next;

}ArcNode;

typedef struct{

char *name;

int color;

ArcNode *firstnext;

}shengfen[35];

int main()

{

shengfen sheng;

int i,j;

ArcNode

*p,*hu1,*hu2,*hu3,*hu4,*hu5,*hu6,*hu7,*hu8,*hu9,*hu10,*hu11,*hu12,*hu13,*hu1 4,*hu15,*hu16,*hu17,*hu18;

ArcNode

*hu19,*hu20,*hu21,*hu22,*hu23,*hu24,*hu25,*hu26,*hu27,*hu28,*hu29,*hu30,*hu 31,*hu32,*hu33,*hu34,*hu35;

ArcNode

*hu36,*hu37,*hu38,*hu39,*hu40,*hu41,*hu42,*hu43,*hu44,*hu45,*hu46,*hu47,*hu 48,*hu49,*hu50,*hu51,*hu52;

ArcNode

*hu53,*hu54,*hu55,*hu56,*hu57,*hu58,*hu59,*hu60,*hu61,*hu62,*hu63,*hu64,*hu 65,*hu66;

ArcNode

*hu67,*hu68,*hu69,*hu70,*hu71,*hu72,*hu73,*hu74,*hu75,*hu76,*hu77,*hu78,*hu 79,*hu80,*hu81,*hu82,*hu83,*hu84;

ArcNode

*hu85,*hu86,*hu87,*hu88,*hu89,*hu90,*hu91,*hu92,*hu93,*hu94,*hu95,*hu96,*hu 97,*hu98,*hu99,*hu100;

ArcNode

*hu101,*hu102,*hu103,*hu104,*hu105,*hu106,*hu107,*hu108,*hu109,*hu110,*hu1 11,*hu112,*hu113,*hu114,*hu115,*hu116,*hu117;

ArcNode

*hu118,*hu119,*hu120,*hu121,*hu122,*hu123,*hu124,*hu125,*hu126,*hu127,*hu1 28,*hu129;

ArcNode

*hu130,*hu131,*hu132,*hu133,*hu134,*hu135,*hu136,*hu137,*hu138,*hu139,*hu1

40,*hu141,*hu142;

hu1=(ArcNode *)malloc(sizeof(ArcNode));

hu2=(ArcNode *)malloc(sizeof(ArcNode));

hu3=(ArcNode *)malloc(sizeof(ArcNode));

hu4=(ArcNode *)malloc(sizeof(ArcNode));

hu5=(ArcNode *)malloc(sizeof(ArcNode));

hu6=(ArcNode *)malloc(sizeof(ArcNode));

hu7=(ArcNode *)malloc(sizeof(ArcNode));

hu8=(ArcNode *)malloc(sizeof(ArcNode));

hu9=(ArcNode *)malloc(sizeof(ArcNode));

hu10=(ArcNode *)malloc(sizeof(ArcNode));

hu11=(ArcNode *)malloc(sizeof(ArcNode));

hu12=(ArcNode *)malloc(sizeof(ArcNode));

hu13=(ArcNode *)malloc(sizeof(ArcNode));

hu14=(ArcNode *)malloc(sizeof(ArcNode));

hu15=(ArcNode *)malloc(sizeof(ArcNode));

hu16=(ArcNode *)malloc(sizeof(ArcNode));

hu17=(ArcNode *)malloc(sizeof(ArcNode));

hu18=(ArcNode *)malloc(sizeof(ArcNode));

hu19=(ArcNode *)malloc(sizeof(ArcNode));

hu20=(ArcNode *)malloc(sizeof(ArcNode));

hu21=(ArcNode *)malloc(sizeof(ArcNode));

hu22=(ArcNode *)malloc(sizeof(ArcNode));

hu23=(ArcNode *)malloc(sizeof(ArcNode));

hu24=(ArcNode *)malloc(sizeof(ArcNode));

hu25=(ArcNode *)malloc(sizeof(ArcNode));

hu26=(ArcNode *)malloc(sizeof(ArcNode));

hu27=(ArcNode *)malloc(sizeof(ArcNode));

hu28=(ArcNode *)malloc(sizeof(ArcNode));

hu29=(ArcNode *)malloc(sizeof(ArcNode));

hu30=(ArcNode *)malloc(sizeof(ArcNode));

hu31=(ArcNode *)malloc(sizeof(ArcNode));

hu32=(ArcNode *)malloc(sizeof(ArcNode));

hu33=(ArcNode *)malloc(sizeof(ArcNode));

hu34=(ArcNode *)malloc(sizeof(ArcNode));

hu35=(ArcNode *)malloc(sizeof(ArcNode));

hu36=(ArcNode *)malloc(sizeof(ArcNode));

hu37=(ArcNode *)malloc(sizeof(ArcNode));

hu38=(ArcNode *)malloc(sizeof(ArcNode));

hu39=(ArcNode *)malloc(sizeof(ArcNode));

hu40=(ArcNode *)malloc(sizeof(ArcNode));

hu41=(ArcNode *)malloc(sizeof(ArcNode));

hu42=(ArcNode *)malloc(sizeof(ArcNode));

hu43=(ArcNode *)malloc(sizeof(ArcNode));

hu45=(ArcNode *)malloc(sizeof(ArcNode)); hu46=(ArcNode *)malloc(sizeof(ArcNode)); hu47=(ArcNode *)malloc(sizeof(ArcNode)); hu48=(ArcNode *)malloc(sizeof(ArcNode)); hu49=(ArcNode *)malloc(sizeof(ArcNode)); hu50=(ArcNode *)malloc(sizeof(ArcNode)); hu51=(ArcNode *)malloc(sizeof(ArcNode)); hu52=(ArcNode *)malloc(sizeof(ArcNode)); hu53=(ArcNode *)malloc(sizeof(ArcNode)); hu54=(ArcNode *)malloc(sizeof(ArcNode)); hu55=(ArcNode *)malloc(sizeof(ArcNode)); hu56=(ArcNode *)malloc(sizeof(ArcNode)); hu57=(ArcNode *)malloc(sizeof(ArcNode)); hu58=(ArcNode *)malloc(sizeof(ArcNode)); hu59=(ArcNode *)malloc(sizeof(ArcNode)); hu60=(ArcNode *)malloc(sizeof(ArcNode)); hu61=(ArcNode *)malloc(sizeof(ArcNode)); hu62=(ArcNode *)malloc(sizeof(ArcNode)); hu63=(ArcNode *)malloc(sizeof(ArcNode)); hu64=(ArcNode *)malloc(sizeof(ArcNode)); hu65=(ArcNode *)malloc(sizeof(ArcNode)); hu66=(ArcNode *)malloc(sizeof(ArcNode)); hu67=(ArcNode *)malloc(sizeof(ArcNode)); hu68=(ArcNode *)malloc(sizeof(ArcNode)); hu69=(ArcNode *)malloc(sizeof(ArcNode)); hu70=(ArcNode *)malloc(sizeof(ArcNode)); hu71=(ArcNode *)malloc(sizeof(ArcNode)); hu72=(ArcNode *)malloc(sizeof(ArcNode)); hu73=(ArcNode *)malloc(sizeof(ArcNode)); hu74=(ArcNode *)malloc(sizeof(ArcNode)); hu75=(ArcNode *)malloc(sizeof(ArcNode)); hu76=(ArcNode *)malloc(sizeof(ArcNode)); hu77=(ArcNode *)malloc(sizeof(ArcNode)); hu78=(ArcNode *)malloc(sizeof(ArcNode)); hu79=(ArcNode *)malloc(sizeof(ArcNode)); hu80=(ArcNode *)malloc(sizeof(ArcNode)); hu81=(ArcNode *)malloc(sizeof(ArcNode)); hu82=(ArcNode *)malloc(sizeof(ArcNode)); hu83=(ArcNode *)malloc(sizeof(ArcNode)); hu84=(ArcNode *)malloc(sizeof(ArcNode)); hu85=(ArcNode *)malloc(sizeof(ArcNode)); hu86=(ArcNode *)malloc(sizeof(ArcNode)); hu87=(ArcNode *)malloc(sizeof(ArcNode));

hu89=(ArcNode *)malloc(sizeof(ArcNode)); hu90=(ArcNode *)malloc(sizeof(ArcNode)); hu91=(ArcNode *)malloc(sizeof(ArcNode)); hu92=(ArcNode *)malloc(sizeof(ArcNode)); hu93=(ArcNode *)malloc(sizeof(ArcNode)); hu94=(ArcNode *)malloc(sizeof(ArcNode)); hu95=(ArcNode *)malloc(sizeof(ArcNode)); hu96=(ArcNode *)malloc(sizeof(ArcNode)); hu97=(ArcNode *)malloc(sizeof(ArcNode)); hu98=(ArcNode *)malloc(sizeof(ArcNode)); hu99=(ArcNode *)malloc(sizeof(ArcNode)); hu100=(ArcNode *)malloc(sizeof(ArcNode)); hu101=(ArcNode *)malloc(sizeof(ArcNode)); hu102=(ArcNode *)malloc(sizeof(ArcNode)); hu103=(ArcNode *)malloc(sizeof(ArcNode)); hu104=(ArcNode *)malloc(sizeof(ArcNode)); hu105=(ArcNode *)malloc(sizeof(ArcNode)); hu106=(ArcNode *)malloc(sizeof(ArcNode)); hu107=(ArcNode *)malloc(sizeof(ArcNode)); hu108=(ArcNode *)malloc(sizeof(ArcNode)); hu109=(ArcNode *)malloc(sizeof(ArcNode)); hu110=(ArcNode *)malloc(sizeof(ArcNode)); hu111=(ArcNode *)malloc(sizeof(ArcNode)); hu112=(ArcNode *)malloc(sizeof(ArcNode)); hu113=(ArcNode *)malloc(sizeof(ArcNode)); hu114=(ArcNode *)malloc(sizeof(ArcNode)); hu115=(ArcNode *)malloc(sizeof(ArcNode)); hu116=(ArcNode *)malloc(sizeof(ArcNode)); hu117=(ArcNode *)malloc(sizeof(ArcNode)); hu118=(ArcNode *)malloc(sizeof(ArcNode)); hu119=(ArcNode *)malloc(sizeof(ArcNode)); hu120=(ArcNode *)malloc(sizeof(ArcNode)); hu121=(ArcNode *)malloc(sizeof(ArcNode)); hu122=(ArcNode *)malloc(sizeof(ArcNode)); hu123=(ArcNode *)malloc(sizeof(ArcNode)); hu124=(ArcNode *)malloc(sizeof(ArcNode)); hu125=(ArcNode *)malloc(sizeof(ArcNode)); hu126=(ArcNode *)malloc(sizeof(ArcNode)); hu127=(ArcNode *)malloc(sizeof(ArcNode)); hu128=(ArcNode *)malloc(sizeof(ArcNode)); hu129=(ArcNode *)malloc(sizeof(ArcNode)); hu130=(ArcNode *)malloc(sizeof(ArcNode)); hu131=(ArcNode *)malloc(sizeof(ArcNode));

hu133=(ArcNode *)malloc(sizeof(ArcNode)); hu134=(ArcNode *)malloc(sizeof(ArcNode)); hu135=(ArcNode *)malloc(sizeof(ArcNode)); hu136=(ArcNode *)malloc(sizeof(ArcNode)); hu137=(ArcNode *)malloc(sizeof(ArcNode)); hu138=(ArcNode *)malloc(sizeof(ArcNode)); hu139=(ArcNode *)malloc(sizeof(ArcNode)); hu140=(ArcNode *)malloc(sizeof(ArcNode)); hu141=(ArcNode *)malloc(sizeof(ArcNode)); hu142=(ArcNode *)malloc(sizeof(ArcNode)); sheng[1].name="heilongjiang";

hu1->x=2;

hu2->x=4;

sheng[1].firstnext=hu1;

hu1->next=hu2;

hu2->next=NULL;

sheng[2].name="jilin";

hu3->x=4;

hu4->x=3;

hu141->x=1;

sheng[2].firstnext=hu3;

hu3->next=hu4;

hu4->next=hu141;

hu141->next=NULL;

sheng[3].name="liaoning";

hu5->x=4;

hu6->x=10;

hu142->x=2;

sheng[3].firstnext=hu5;

hu5->next=hu6;

hu6->next=hu142;

hu142->next=NULL;

sheng[4].name="neimenggu";

hu7->x=1;

hu8->x=2;

hu9->x=3;

hu10->x=10;

hu11->x=9;

hu12->x=8;

hu13->x=7;

hu14->x=6;

hu15->x=5;

sheng[4].firstnext=hu7;

hu8->next=hu9;

hu9->next=hu10;

hu10->next=hu11;

hu11->next=hu12;

hu12->next=hu13;

hu13->next=hu14;

hu14->next=hu15;

hu15->next=NULL; sheng[5].name="xinjiang"; hu16->x=6;

hu17->x=13;

hu18->x=16;

sheng[5].firstnext=hu16; hu16->next=hu17;

hu17->next=hu18;

hu18->next=NULL; sheng[6].name="gansu"; hu19->x=4;

hu20->x=7;

hu21->x=8;

hu22->x=17;

hu23->x=13;

hu24->x=5;

sheng[6].firstnext=hu19; hu19->next=hu20;

hu20->next=hu21;

hu21->next=hu22;

hu22->next=hu23;

hu23->next=hu24;

hu24->next=NULL; sheng[7].name="ningxia"; hu25->x=4;

hu26->x=8;

hu27->x=6;

sheng[7].firstnext=hu25; hu25->next=hu26;

hu26->next=hu27;

hu27->next=NULL; sheng[8].name="shanxi1"; hu28->x=4;

hu29->x=9;

hu30->x=14;

hu31->x=19;

hu33->x=17;

hu34->x=6;

hu35->x=7;

sheng[8].firstnext=hu28; hu28->next=hu29;

hu29->next=hu30;

hu30->next=hu31;

hu31->next=hu32;

hu32->next=hu33;

hu33->next=hu34;

hu34->next=hu35;

hu35->next=NULL; sheng[9].name="shanxi2"; hu36->x=4;

hu37->x=10;

hu38->x=14;

hu39->x=8;

sheng[9].firstnext=hu36; hu36->next=hu37;

hu37->next=hu38;

hu38->next=hu39;

hu39->next=NULL; sheng[10].name="hebei"; hu40->x=4;

hu41->x=3;

hu42->x=11;

hu43->x=12;

hu44->x=15;

hu45->x=14;

hu46->x=9;

sheng[10].firstnext=hu40; hu40->next=hu41;

hu41->next=hu42;

hu42->next=hu43;

hu43->next=hu44;

hu44->next=hu45;

hu45->next=hu46;

hu46->next=NULL; sheng[11].name="beijing"; hu47->x=10;

sheng[11].firstnext=hu47; hu47->next=NULL; sheng[12].name="tianjin";

sheng[12].firstnext=hu48;

hu48->next=NULL;

sheng[13].name="qinghai"; hu49->x=5;

hu50->x=6;

hu51->x=17;

hu52->x=16;

sheng[13].firstnext=hu49;

hu49->next=hu50;

hu50->next=hu51;

hu51->next=hu52;

hu52->next=NULL;

sheng[14].name="henan"; hu53->x=9;

hu54->x=10;

hu55->x=15;

hu56->x=21;

hu57->x=20;

hu58->x=19;

hu59->x=8;

sheng[14].firstnext=hu53;

hu53->next=hu54;

hu54->next=hu55;

hu55->next=hu56;

hu56->next=hu57;

hu57->next=hu58;

hu58->next=hu59;

hu59->next=NULL;

sheng[15].name="shandong"; hu60->x=10;

hu61->x=14;

hu62->x=21;

sheng[15].firstnext=hu60;

hu60->next=hu61;

hu61->next=hu62;

hu62->next=NULL;

sheng[16].name="xizang"; hu63->x=5;

hu64->x=13;

hu65->x=17;

hu66->x=23;

sheng[16].firstnext=hu63;

hu63->next=hu64;

hu65->next=hu66;

hu66->next=NULL;

sheng[17].name="sichuan"; hu67->x=13;

hu68->x=6;

hu69->x=8;

hu70->x=18;

hu71->x=24;

hu72->x=23;

hu73->x=16;

sheng[17].firstnext=hu67;

hu67->next=hu68;

hu68->next=hu69;

hu69->next=hu70;

hu70->next=hu71;

hu71->next=hu72;

hu72->next=hu73;

hu73->next=NULL;

sheng[18].name="chongqing"; hu74->x=17;

hu75->x=8;

hu76->x=19;

hu77->x=25;

hu78->x=24;

sheng[18].firstnext=hu74;

hu74->next=hu75;

hu75->next=hu76;

hu76->next=hu77;

hu77->next=hu78;

hu78->next=NULL;

sheng[19].name="hubei";

hu79->x=8;

hu80->x=14;

hu81->x=20;

hu82->x=26;

hu83->x=25;

hu84->x=18;

sheng[19].firstnext=hu79;

hu79->next=hu80;

hu80->next=hu81;

hu81->next=hu82;

hu82->next=hu83;

hu83->next=hu84;

sheng[20].name="anhui"; hu85->x=14;

hu86->x=21;

hu87->x=27;

hu88->x=26;

hu89->x=19;

sheng[20].firstnext=hu85; hu85->next=hu86;

hu86->next=hu87;

hu87->next=hu88;

hu88->next=hu89;

hu89->next=NULL;

sheng[21].name="jiangsu"; hu90->x=15;

hu91->x=14;

hu92->x=20;

hu93->x=27;

hu94->x=22;

sheng[21].firstnext=hu90; hu90->next=hu91;

hu91->next=hu92;

hu92->next=hu93;

hu93->next=hu94;

hu94->next=NULL;

sheng[22].name="shanghai"; hu95->x=21;

hu96->x=27;

sheng[22].firstnext=hu95; hu95->next=hu96;

hu96->next=NULL;

sheng[23].name="yunnan"; hu97->x=16;

hu98->x=17;

hu99->x=24;

hu100->x=29;

sheng[23].firstnext=hu97; hu97->next=hu98;

hu98->next=hu99;

hu99->next=hu100;

hu100->next=NULL; sheng[24].name="guizhou"; hu101->x=17;

hu102->x=24;

hu103->x=29;

hu104->x=23;

hu105->x=18;

sheng[24].firstnext=hu101; hu101->next=hu102;

hu102->next=hu103;

hu103->next=hu104;

hu104->next=hu105;

hu105->next=NULL; sheng[25].name="hunan"; hu106->x=18;

hu107->x=19;

hu108->x=26;

hu109->x=30;

hu110->x=29;

hu111->x=24;

sheng[25].firstnext=hu106; hu106->next=hu107;

hu107->next=hu108;

hu108->next=hu109;

hu109->next=hu110;

hu110->next=hu111;

hu111->next=NULL; sheng[26].name="jiangxi"; hu112->x=25;

hu113->x=19;

hu114->x=20;

hu115->x=27;

hu116->x=28;

hu117->x=30;

sheng[26].firstnext=hu112; hu112->next=hu113;

hu113->next=hu114;

hu114->next=hu115;

hu115->next=hu116;

hu116->next=hu117;

hu117->next=NULL; sheng[27].name="zhejiang"; hu118->x=22;

hu119->x=21;

hu120->x=20;

hu121->x=26;

hu122->x=28;

sheng[27].firstnext=hu118;

hu118->next=hu119;

hu119->next=hu120;

hu120->next=hu121;

hu121->next=hu122;

hu122->next=NULL;

sheng[28].name="fujian";

hu123->x=27;

hu124->x=26;

hu125->x=30;

sheng[28].firstnext=hu123;

hu123->next=hu124;

hu124->next=hu125;

hu125->next=NULL;

sheng[29].name="guangxi"; hu126->x=23;

hu127->x=24;

hu128->x=25;

hu129->x=30;

sheng[29].firstnext=hu126;

hu126->next=hu127;

hu127->next=hu128;

hu128->next=hu129;

hu129->next=NULL;

sheng[30].name="guangdong"; hu130->x=29;

hu131->x=25;

hu132->x=26;

hu133->x=28;

hu134->x=31;

hu135->x=32;

hu136->x=34;

sheng[30].firstnext=hu130;

hu130->next=hu131;

hu131->next=hu132;

hu132->next=hu133;

hu133->next=hu134;

hu134->next=hu135;

hu135->next=hu136;

hu136->next=NULL;

sheng[31].name="aomen";

hu137->x=30;

sheng[31].firstnext=hu137;

hu137->next=NULL;

sheng[32].name="xianggang";

hu138->x=30;

sheng[32].firstnext=hu138;

hu138->next=NULL;

sheng[33].name="taiwan";

hu139->x=28;

sheng[33].firstnext=hu139;

hu139->next=NULL;

sheng[34].name="hainan";

hu140->x=30;

sheng[34].firstnext=hu140;

hu140->next=NULL;

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

{

sheng[i].color=0;

}

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

{

j=1;

p=sheng[i].firstnext;

while(p!=NULL)

{

while(p!=NULL&&j!=sheng[p->x].color)

{

p=p->next;

}

if(p!=NULL)

j++;

}

sheng[i].color=j;

}

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

{

printf("%s:",sheng[i].name);

printf("%d\n",sheng[i].color);

}

printf("/n0表示白色,1表示蓝色,2表示红色,3表示绿色,4表示黄色"); return 0;

}

地图学课程设计说明书

佛山科学技术学院 《地图学课程设计》 说明书 专业自然地理与资源环境姓名薛春惠成绩 班级 13自然地理与资源环境学号2013804142 日期 2015/6/27

目录 一、地图内容 二、设计步骤 收集资料 绘制地图 三、城市状况 四、南海旅游景点 六、存在的不足 七、专题图 一、地图内容

二、设计步骤 1 收集资料 收集各种地图、影像、数据和文字资料,分析汇总资料,选取有效部分加工使用,分别用到《中国自然地理地图集》、《广东省交通地图》、《佛山市旅游地图》、《佛山市南海区地图》、1:10万佛山市地形图、佛山市卫星影像等。 2、绘制地图 (1)投影网格与比例尺:依据地图内容、用途选用等比例尺底图,注意 图廓的配准、注记与经纬网密度删减。 (2)水系:选用河流、湖泊、水库、海岸线等,适当概括。 (3)居民点:居民点分级、概括,地名分级注记。 (4)边界线:视专题地图需要选取(国、省、市、县、镇边界),线性符 号选用与设计。 (5)交通线:铁路(车站)、国道、高速公路和水运航线(码头) 三、城市状况 3.1 地理位置

3.2 地形地貌 3.3 行政规划 3.4 人口概况 3.5 矿产资源 3.6 水资源和水文情况 3.7 商业广场情况 四、南海旅游景点 西樵山 西樵山风景名胜区位于广东省南海市西南部,面积约十四平方公里,西樵山有七十二峰,以山青,水奇著称,享有“岭南佳境”之盛名。1988年被定为国家重点风景名胜区。 西樵山是七八千万年前由海底火山喷发岩浆,岩状,火山灰后形成的死火山,山体外陡内平,状若莲衣复合,大秤峰居群峰之首,九龙岩,冬菇石,石燕石等峰岩形态万千。西樵山岩石节理发育,裂隙纵横,富有潜水,形成多处水景,有232口泉眼,28处瀑布。“欲览西樵胜,应先访白云”。位于西樵山西北部的白云洞为——马蹄形山谷,它兼收岩泉飞瀑之美,有“胜甲西樵”之称。三峰之间有两飞泉左右迂回而下,称“大云泉”、“小云泉”。泉水折叠汇成了三个湖,即所谓“白云飞下过三湖”:上为“应潮湖”,中为“鉴湖”,下为“会龙湖”。现在其下又增辟“白云”、“人工”两湖,形成五湖飞瀑交辉,亭台山水相映的奇泉。洞山腰的云泉仙馆原是明代的玉楼书院,云泉仙馆西的“三湖书院”门额为林则徐所题,康有为青年时代曾在此面壁苦读三年,山西南部有西天湖和左垂虹瀑,右垂虹瀑等景;山东南部有清暑岩,云岩飞瀑等景,山东北部有全山最大的瀑布玉岩飞瀑,以及玉岩,仙人石,东天湖等景。 早在新、旧石器时代,西樵山就有人类活动,留下许多历史遗迹,史学界称为“西樵山文化”。明代中叶成为南国理学名山,至今还保存着白云古寺,以及大量摩崖石刻等文物古迹。 西樵山碧玉洞 碧玉洞为峰间峡谷,两边怪石嶙峋、谷底狭径崎岖、洞中有玉岩珠瀑,听玉石室、遇仙桥,垂云石、东天湖等景点。其中,玉岩珠瀑为西樵山最大瀑布。 其中“西樵云瀑”在清朝已列为“羊城八景”之一,君行西樵,宛若画中游历,秀甲西樵的白云洞景区,融二十四景于一体,而其间古代建筑掩映,错落有致,碧玉洞,

C语言地图着色

课程设计 地图着色 课程设计名称:课程设计 专业班级: 学生姓名: 学号: 指导教师: 课程设计时间:

计算机专业课程设计任务书 学生姓名专业班级学号题目地图着色 课题性质课题来源 指导教师同组姓名 主要内容学习掌握并熟练运用C语言进行程序设计; 针对具体应用问题,选择、设计和实现合适的抽象数据类型;进行简单的需求分析,给出设计方案。 任务要求综合运用和融化所学理论知识,提高分析和解决实际问题的能力,达到培养良好程序设计能力和习惯的目的,为开发满足问题要求的小型应用软件奠定基础,达到软件工程的综合性基础训练的目的。 完成需求分析报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。 参考文献《数据结构(C语言版)》严蔚敏清华大学出版社《C语言程序设计》(第三版)谭浩强清华大学出版社

指导教师签字: 审查意见 教研室主任签字: 2014年6月15 日

目录 1 需求分析 (4) 2 概要设计 (4) 3详细设计 (5) 4 运行环境 (6) 5开发环境 (6) 6 程序设计.............................................................................................6~9 7 调试分析........................................................................................9~10 8 测试结果 (10) 9参考文献 (11) 10心得体会 (11) 11成绩评价表 (12)

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

数据结构课程设计题目2010

一、数据结构课程设计要求 1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。 2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。 3.课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上2小时的上机来调试C 或C++语言设计的程序,总共至少要上机调试程序20小时。属教师安排上机时间学生不得缺席。 二、数据结构课程设计题目 1. 运动会分数统计(限1 人完成) 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2. 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

地图学课程设计报告

地图学课程设计报告 学生姓名 序号 班级地信 指导老师 日期 2013 .6 .25

目录 一、前言 (1) 二、基于ArcMap的全国人口分布、构成及演变分析 (1) (一)ArcMap中专题现象的表示方法 (1) (二)反映全国人口分布、构成及演变的专题图表示方法的选择 (1) (三)1990年全国的人口分布与构成分析 (1) (四)从1982年到1990年全国人口的演变趋势分析 (5) 三、武汉市电子地图设计与编绘 (8) (一)总体方案 (8) (二)地图分层 (8) (三)地图数字化与图形编辑 (9) (四)表属性辑 (10) (五)图面配置 (10) (六)图幅关联及媒体链接........................................................................................ (10) (七)制作完成后截图 (11) 四、收获与建议 (13) 附件

一、前言 本次课程设计是在学完《地图学》课程后开展的实践教学。目的是通过课程 设计,巩固课堂所学书本知识,进一步理解和掌握各类电子地图的编绘方法,学会运用常用GIS软件开展机助制图的方法与步骤,并能根据具体的任务独立开展地图的设计与编绘,对专题地图进行专题分析,为GIS软件开发中的地理信息可视化打下基础。 通过对1982和1990年全国人口状况专题地图的制作,熟悉专题地图的制作与表示方法;通过武汉市电子地图的制作,进一步熟悉纸质地图的矢量化与地图的多媒体化即制作电子地图。 二、基于ArcGIS的全国人口分布、构成及演变分析 (一)MapInfo中专题现象的表示方法 1、点值法——用点状符号表示数量的分布。 2、等值线法——用线状符号表示定量的分布,用于表示连续分布的事物的数量变化特征。 3、范围法——用于用面状符号表示不连续分布的面状事物。 4、质底法——用于用面状符号表示连续分布的事物的定性特征。 5、量底法(分级统计图法)——用于用面状符号表示连续分布的事物的数量特征。 6、定域统计图法(分区统计图法)——用点状符号表示面状分布事物的数量特征。着重表示不同区域单元同一事物的数量对比,也可以兼顾同一区域内组成某一事物的各组分间的数量对比。 7、定位统计图法——用点状符号表示面状分布事物的数量特征。着重表示同一区域单元内某一事物的各组分间的数量对比,也可以兼顾不同区域单元同一事物的数量对比。 (二)反映全国人口分布、构成及演变的专题图表示方法的选择在反映全国人口分布时,用了点值法表示,反映出了各省的人口密度分布,用柱状图表示了全国各年龄段的人口比例,用饼状图表示了男女比例,从82年 到90年人口的增长趋势用了柱状图表示。 (三)1990年全国的人口分布与构成分析

地图着色问题

一、需求分析 1、问题描述 现在有一张地图,为了便于区别各个地图上的板块,地图上相 邻的颜色块应该是不同的颜色。现在的任务是给定一张地图,要对其进行着色,相邻的板块之间的颜色不能相同,输出最后 的着色的方案。 2、基本分析 功能一:为了程序的灵活性,可以让程序自由建立图 功能二:为建好的图进行着色。 3、输入输出 输入一张图的信息,正确输入边数和顶点数,输入边的关系(两 个顶点之间的),颜色只要四种,分别用数字1到4表示。 输出时根据每个顶点不同的标号输出着色的结果。 二、概要设计 1、设计思路 给定四种颜色,从选定的第一个顶点开始着色,先是第一种颜 色,如果这个颜色与这个顶点的其他邻接顶点颜色不重复,则 这个顶点可以使用此颜色,程序开始对下一个顶点着色;如果 着色重复,则使用下一种颜色重复上述过程。着色过程就是一 个递归的过程,直到所有的顶点都有着色后结束着色过程

结束

2、数据结构设计: 因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构是邻接矩阵,考虑用邻接表是因为一般的地图的某一 个顶点并不会与很多的顶点邻接,如果用邻接矩阵就能符合实 际的需求,虽然占用稍大的空间,但是增强了程序的实际使用 性。 抽象数据类型定义如下: 数据对象是点和边(vex&adj) 数据关系是颜色分布以及边的相邻的两个顶点 基本操作: CreatGrouph(&G); 创建一张需要操作的无向图G Destroy(Graph &G); 初始条件:无向图G存在 操作结果:销毁图G LocateVex(&G,i) 初始条件:无向图G存在 操作结果:若在图G中存在顶点i,则返回该顶点在图中的位置,否则返回其他信息 Trycolor(current &G,store[]) 初始条件:无向图G存在,在图中有第current个顶点

数据结构课程设计题目选择

数据结构课程设计题目 说明: (1)选用语言:C或Java语言; (2)需要注明3人(可少于3人)小组各自承担和完成的任务(据此给予成绩); (3)如下带“*”的题目,“*”越多,难度越大一些,分值权重更高---要得到更高分数,推荐选择。 要求: (1) 用中文给出设计说明书(含重要子函数的流程图); (2) 给出测试通过、能实现相应功能的源代码; (3) 测试报告。 0、小学数学四则混合运算试题出题、评价、题库自动生成与组卷系统(****)---已经有2组选择 任务: (1)将随机给出的四则混合运算表达式显示在计算机显示器上,要求应试者给出答案;并且使用堆栈对该表达式求值,同给出的答案进行比较,判断 正确和错误。给出鼓励信息和嘉奖信息; (2)保存多人在不同时间应试的题目与他(或她)给出的答案,评价所出题目的难易程度(通过多人回答正确与否的情况给出),形成题库; (3)按照用户给出的题目难易程度指标(例如让50人的得分满足怎样的正态分布,如90分以上10%,80分以上30%,70分以上30%,60分以上20%,60分 以下10%),从题库中抽取不同的题目,组成试卷。 要求:随机产生的题目中,参加运算的数据随机、运算符随机。题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。 1、集合的并、交和差运算---已经有1组选择 任务:编制一个能演示执行集合的并、交和差运算的程序。 要求: (1) 集合的元素限定为小写字母字符[…a?..?z?] 。 (2) 演示程序以用户和计算机的对话方式执行。 实现提示:以链表表示集合。 选作内容: (1) 集合的元素判定和子集判定运算。 (2) 求集合的补集。 (3) 集合的混合运算表达式求值。 (4) 集合的元素类型推广到其他类型,甚至任意类型。 2、停车场管理------已经有2组选择 任务:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最南端,最先到达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 要求:以栈模拟停车场,以队列模拟车场外的便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停车不收费)。栈以顺序存储结构实现,队列以链表结构实现。 3、哈夫曼码的编/译码系统(**)---已经有1组选择

数据结构课程设计

福建工程学院课程设计 课程:数据结构课程设计 题目: 1.综合应用 2.折半查找 3.快速排序 专业:软件工程 班级:1101 座号:3110305129 姓名:潘聪 2012 年 6 月26 日

设计题目1:综合应用 一、问题描述 有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。然后实现以下功能: (1)将这些数据存放至文件stuf.dat中; (2)将文件中的数据读出至结构数组中,并显示之; (3)输出总分最高分和最低分的名字; (4)输出总分在340分,单科成绩不低于80分的名单; (5)求出各科平均分数; (6)按总分排名; (7)输出补考名单。 二、解决问题的算法思想描述 (1)子函数:首先确定需要的子函数,总共7个,对应的功能分别是题目要求的七项(2)主函数:主函数中,要设计出易于使用的人机界面,就必须要用到switch 。 (3)文件的存放读取,必须要用到文件的函数,fopen,fread,fclose等。 (4)把每个学生的信息定义在一个结构数组中,利用结构数组更加方便。 (5)各科成绩排名用冒泡排序即可。 (6)输出总分,补考名单,各科的平均分都比较简单。 三、设计 1. 数据结构的设计和说明 //定义结构体 typedef struct { int num; //学号 char name[10]; //姓名 int score1; //语文 int score2; //数学 int score3; //物理 int score4; //化学 }student; student stu[MAX]; //结构数组 2.模块结构图及各模块的功能:

数据结构课程设计题目及要求

实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。

实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arrival);D表示离去(Departure);E表示输入结束(End)。 【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

数据结构课程设计

<<数据结构>> 课 程 设 计 班级:111004 姓名:董丽美 学号:111004122 指导教师:史延新 完成日期:2013 _07 _10

题目一:约瑟夫环问题 【问题描述】约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n 的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m 的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出列顺序。【基本要求】利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号。 【测试数据】m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序应为:6,1,4,7,2,3,5) 一 .需求分析 1.用单循环链表存储并遍历及删除节点的方法,计算并输出约瑟夫环的问题。 2.环中总人数和节点信息由用户输入,且均为正整数。3.在窗口界面输出出列顺序的编号。 二.概要设计

1.设定链表的抽象数据类型定义: ADT List{ 数据对象:D={a(i)|a(i)∝Elemset,i=1,2,…,n,n>=0} 数据关系:R1={|a(i-1),a(i)∝D,i=2,…,n}基本操作: InitList(&L) 操作结果:构造一个空的线性表 ListInsert(&L,i,e) 初始条件:线性表L已经存在。 操作结果:在L中第i个位置之前插入新的数据元素 e,L的长度增加1。 ListDelete(&L,i,&e) 初始条件:线性表L已经存在且非空,1<=i<=ListLength(L)。操作结果:删除L的第i个数据元素,并用e返回其值,L 的长度减1 。 } 2.算法的基本思想: 根据题目要求,采用单循环线性表的基本操作来实现约瑟夫环问题。首先根据所给信息生成链表节点并插入,根据节点记录密码及其所在链表中的顺序,由给出的初始访问值进行遍历,当变量i增量等于所给的值(即关键字)时,指针所指的节点处的顺序值即为所需输出的顺序号。每输出一次顺

地理信息系统课程设计详细过程

课程设计说明书(地图编绘与课程设计)

年月日

地图学课程设计教学大纲 一、课程设计题目 基于的专题地图设计与编制。 二、课程设计目的 本设计是在完成地图学的课堂教学后进行的,旨在加深学生对专题地图的认识和理解,包括专题地图的概念、特征、类型、编辑设计、表现方法以及图例的设计和图面配置,巩固课堂教学的内容。 是中地数码集团推出的专业矢量绘图软件,是中国具有完全自主知识版权的地理信息系统软件,是全球唯一的搭建式数据中心集成开发平台,实现遥感处理与完全融合,支持空中、地上、地表、地下全空间真三维一体化的开发平台。在绘图、设计制作、编辑合成、输入输出和网页制作等方面功能强大,包括海量无缝图库管理、空间数据库管理、空间分析工具、网络分析功能、多源图像分析与处理等。学生应了解绘图环境,熟练掌握矢量成图步骤方法,会用进行符号设计。 是开发,本次设计主要应用信息编辑与分析功能,利用的桌面功能来完成设计,完成矢量数据的属性字段添加,并对其进行分析与编辑。是一个集成了众多高级应用的软件套件,它包含了一套带有用户界面组件的桌面应用(例如,,,以及)。具有三种功能级别――,,和)。 三、课程设计要求 通过上机操作,要求学生在和软件的基础上根据底图进行矢量化、地理数据的输入、编辑、存储和输出方法。具体要求学生做到: 1 专题地图的编制按照专题地图的表现方法进行,利用相应的符号表示各种自然或人文现象;专题地图的相关基础资料见附件; 2 编辑的图件将就美观、大方,可以适度张扬个性; 3 学会编写课程设计报告。课程设计报告要求格式规范,图文并茂,5000字左右; 课程设计报告内容包括: (1)课程设计的目的和意义; (2)专题地图的背景资料(包括自然地理、地质、社会经济等); (3)专题地图的编制过程; (4)专题地图的设计与优化过程;

地图着色课程设计

算法分析与设计课程设计说明书 地图着色 学院:计算机与控制工程学院 专业:计算机科学与技术 学生姓名:xxxxx学号:成绩 学生姓名:xxxxx 学号:成绩 指导教师:

内容提要 此题为地图着色问题,由地图着色问题很容易想到图的着色问题,因此可以把地图抽象为无向图来解决地图的着色问题。对地图的抽象相当于对图的抽象,即以邻接矩阵来实现地图的区域相邻的描绘,而对地图的区域数即以图的顶点数来描绘。设计说明书的内容包括需求分析,概要设计,详细设计,代码实现,后期测试等内容,需求分析是对此问题所需要实现的功能的介绍,概要设计是对所需要实现功能的模块划分,以及初步的实现思想,详细设计通过编写大致的代码来实现功能,代码实现则是具体的解决问题,解决此问题设计了两个算法,贪心,回溯,在程序的测试阶段,回溯算法对同一个问题的解决速率高于贪心算法,但是结果都是以最少的颜色数来染色。 课题实现的环境是在window环境下的eclipse中,通过在其中输入地图的区域数,图的连接情况,来选择相应的算法来实现染色,本次课题所采用的数据结构主要是二维数组来抽象图的邻接矩阵。

目录 1引言(或绪论) (1) 2需求分析 (2) 2.1 问题分析 (2) 2.3问题解决 (2) 2.3 运行环境及开发工具 (3) 2.4功能需求 (3) 2.4.1 地图的抽象及输入 (3) 2.4.2 地图着色的算法设计 (3) 2.4.3 界面设计 (3) 2.4.4 输出设计 (3) 2.5任务分配 (4) 3概要设计 (4) 3.1 数据定义 (4) 3.2 功能模块定义 (4) 3.2.1 地图的抽象输入模块 (4) 3.2.2 输出模块 (4) 3.2.3 地图染色模块 (4) 3.2.4 界面设计模块 (5) 3.2.5 主模块 (5) 3.3 程序流程图 (6) 4 详细设计 (7) 4.1 地图输入模块 (7) 4.1.1 数据类型 (7) 4.1.2 具体实现 (7) 4.2 界面设计模块 (7) 4.2.1 数据类型 (7) 4.2.2 具体实现 (7) 4.3 算法设计模块 (9) 4.3.1 回溯法过程 (9)

数据结构课程设计

郑州工业应用技术学院 课程设计说明书 题目:手机信息数据检索 姓名:王港 院(系):信息工程学院 专业班级:16级计算机科学与技术6班 学号:1601110241 指导教师:王礼云 成绩: 时间:2018 年 1 月 2 日至2018 年 1 月12

郑州工业应用技术学院 课程设计任务书 题目手机信息数据检索 专业、班级16级计算机科学与技术6班学号1601110241姓名王港 主要内容: 开发一个手机信息数据检索,使管理员可以很好的管理回收的手机,避免平时废旧手机没有作用,不知道如何去处理旧的手机等问题。减轻废旧手机资源的浪费。本废旧手机回收系统利用单链表实现了基本信息的添加。管理员能够对各种信息进行修改,例如手机信息添加,手机信息删除,密码修改,退出系统。 基本要求: 1、巩固并加深学生对数据结构基本算法的理解; 2、认识面向过程和面向对象两种设计方法的区别; 3、进一步掌握和应用VC++6.0 集成开发环境; 4、提高运用对于数据结构的理解,增强了我解决实际问题的能力; 5、初步掌握开发小型实用软件的基本方法。 主要参考资料: [1]谭浩强. C语言基础课程[M].北京:清华大学出版社,2009. [2]刘振安. C程序设计课程设计[M].北京:机械工业出版社,2016. [3]滕国文. 数据结构课程设计[M].北京:清华大学出版社, 2010. [4]吴伟民. 数据结构[M].北京:清华大学出版社, 2017. 完成期限:2018.1.2-2018.1.12 指导教师签名: 课程负责人签名: 2018 年1 月12 日

摘要 21世纪以来,经济高速发展,人们生活发生了日新月异的变化,特别是手机普及到每个人生活的各个领域。但对于手机的回收越来越不适应现在社会的发展。计算机技术的飞速发展,也为我们带来了巨大的便利。为了适应现代人们回收旧手机方便的愿望。手机信息管理系统软件能够为我们现如今手机回收带来巨大的便利。 我国现如今已经成为手机产品的生产消费大国,伴随着通信技术的迅猛发展,手机更新换代的速度不断提高。特别是追求时尚潮流的大学生群体手机的更换频率增加更快。随着智能手机产品不断推陈出新,手机更新换代的周期也在缩短。据业内人士估计,我国存量闲置手机至少以亿计,但旧手机的回收率却不到2%,旧手机的处置成为一大问题。 中国目前废旧手机的回收现状和回收模式,造成我国手机回收效率低下,更是对垃圾回收产业带来了巨大的冲击,同时目前,我国年废旧手机产生量约上亿部,大部分闲置家中,未能有效回收利用。既浪费了资源,又威胁居民身心健康,造成环境污染。在分析我国废旧手机回收利用现状的基础上,提出了完善废旧手机回收的法律制度、增强消费者环保意识、构建绿色环保废旧手机回收利用新模式等建议。本手机信息数据检索为回收手机的人管理废旧的手机使用,使用单链表实现,对于信息的增加删除效率比较高,可以很方便的进行各种信息管理,对于数据的管理可以让我们更好的面对管理手机的繁杂工作。 关键字:信息检索;冒泡算法;单链表

地图学课程设计心得体会

地图学课程设计心得体会 通过此次课程设计,使我更加扎实的掌握了有关地图制作的基本知识,而且掌握普通地图和专题地图的编制方法与过程、制图综合的理论与技术熟使用悉用MapGIS、ArcGIS等制图软件以及结合运用 Photoshop进行地图编制的全过程及基本方法,了解MapGIS、ArcGIS在制图领域中的应用。巩固课堂上所学的地图编绘的基本原理、综合理论和方法,从而提高我们的专业水平和动手能力。 本次课程设计在制图过程中然遇到了不少的问题,但经过一次又一次的思考,一次又一次的实践,并通过同学间互相帮助以及向各师兄的询问,最终完成了省市普通地图和专题地图的制作。在制图过程中也暴露出了自己在这方面的知识欠缺和对软件不不熟悉。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 过而能改,善莫大焉。在课程设计过程中,我们不断发现错误和不足,不断改正,不断领悟,不断获取。在制图过程中,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中学习到了曾经不知道不懂的东西。所以在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的去探究,然后一一进行解决,只有这样,才能很好的完成想做的事,才能在今后的道路上劈荆斩棘,收获喜悦,收获成功! 课程设计诚然是一门专业课,使我很多专业知识以及专业技能上的提升,同时又是一门辩思课,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了专业软件件的运用;掌握了地图矢量化的不同方法,地图匹配,属性编辑,以及如何提高地图质量,地图美观,也掌握了制图方法和技术,通过查询和收集资料,也懂得了很多的专业术语和知识。 我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这也是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 回顾起此课程设计,感慨颇多,从理论到实践,在这几天的时间里,可以说得是苦多于甜,累,但是可以学到很多很多的东西,不仅巩固了以前所学过的知识,也学到了很多在书本上所没有学到过的知识。在设计的过程中遇到问题也颇多,但可喜的是最终都得到了解决。 此次课程设计给自己最大的感触是,不管什么样的软件,懂的也好不懂的也好,都要动手去用,只有自己操作了,才会真正明白其中的用处,其次是,在遇到困难的时候,不要总是一个人在那捣鼓,同学间应该互相的帮助,有时候向别人学习,会比自己一个人在哪儿毫无头绪的摸索更好。 此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

数据结构课程设计报告地图着色问题

课程设计报告 课程设计题目:地图着色问题 专业:xxxxxxxxx 班级:xxxxxxxxx 姓名:xxxxxxxxx

一:需求分析: 1)已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使 用的颜色总数最少; 2)将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关系; 3)演示程序以用户和计算机的对话方式进行; 4)最后对结果做出简单分析。 二:概要设计 一:设计思路 把34个省看成34个顶点,从选定的第一个顶点开始着色,先试第一种颜色,如果这个颜色与这个顶点的其他邻接顶点的颜色不重复,则这个顶点就是用这种颜色,程序开始对下一个顶点着色;如果着色重复,则使用下一种颜色重复上面的操作。着色过程就是一个递归的过程,直到所有的顶点都处理完后结束着色。 二:数据结构设计 因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构选用邻接表,考虑用邻接表是因为一般的地图的某一个顶点并不会与很多的顶点相邻接,如果用邻接矩阵会浪费很多的存储空间,所以我选择的邻接表来存储。 其中: typedef struct ArcNode { int x; (表示与当前顶点所表示省份相邻的省份的位置信息) struct ArcNode *next; (指向下一个弧结点) }ArcNode; (表示省份之间相邻关系的弧结点) typedef struct { char *name; (顶点所表示的省份的名称) int color; (省份的颜色,用数字表示不同的颜色) ArcNode *firstnext; (指向第一个弧) }shengfen[35];

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目2教学计划编制 班级:700 学号:09070026 姓名:尹煜 完成日期:2011年11月7日

一.需求分析 本课设的任务是根据课程之间的先后的顺序,利用拓扑排序算法,设计出教学计划,在七个学期中合理安排所需修的所有课程。 (一)输入形式:文件 文件中存储课程信息,包括课程名称、课程属性、课程学分以及课程之间先修关系。 格式:第一行给出课程数量。大于等于0的整形,无上限。 之后每行按如下格式“高等数学公共基础必修6.0”将每门课程的具体信息存入文件。 课程基本信息存储完毕后,接着给出各门课程之间的关系,把每门课程看成顶点,则关系即为边。 先给出边的数量。大于等于0的整形。 默认课程编号从0开始依次增加。之后每行按如下格式“1 3”存储。此例即为编号为1的课程与编号为3的课程之间有一条边,而1为3的前驱,即修完1课程才能修3课程。 例: (二)输出形式:1.以图形方式显示有向无环图

2.以文本文件形式存储课程安排 (三)课设的功能 1.根据文本文件中存储的课程信息(课程名称、课程属性、课程学分、课程之间关系) 以图形方式输出课程的有向无环图。 拓展:其显示的有向无环图可进行拖拽、拉伸、修改课程名称等操作。 2.对课程进行拓扑排序。 3.根据拓扑排序结果以及课程的学分安排七个学期的课程。 4.安排好的教学计划可以按图形方式显示也可存储在文本文件里供用户查看。 5.点击信息菜单项可显示本人的学好及姓名“09070026 尹煜” (四)测试数据(见六测设结果)

二.概要设计 数据类型的定义: 1.Class Graph即图类采用邻接矩阵的存储结构。类中定义两个二维数组int[][] matrix 和Object[][] adjMat。第一个用来标记两个顶点之间是否有边,为画图服务。第二个 是为了实现核心算法拓扑排序。 2.ArrayList list用来存储课程信息。DrawInfo类是一个辅助画图的类,其中 包括成员变量num、name、shuxing、xuefen分别代表课程的编号、名称、属性、 学分。ArrayList是一个DrawInfo类型的数组,主要用来在ReadFile、DrawG、DrawC、SaveFile、Window这些类之间辅助参数传递,传递课程信息。 3.Class DrawInfo, 包括int num;String name;String shuxing;float xuefen;四个成员变量。 4.Class Edge包括int from;int to;double weight;三个成员变量。 5.Class Vertex包括int value一个成员变量。 主要程序的流程图: //ReadFile.java

《地图学课程设计》大纲

《地图学课程设计》大纲 一、目的、内容和要求 1、目的 通过本项课程设计,掌握地理底图和专题地图编制的基本原理与方法,能够熟练运用制图软件编绘地图,提高数据资料收集、图形化设计和信息综合表达的能力。 2、内容 具体内容包括: 2.1地理底图的编制: (1)投影网格与比例尺:依据地图内容、用途选用等比例尺底图,注意图廓的配准、 注记与经纬网密度删减。 (2)水系:选用河流、湖泊、水库、海岸线等,适当概括。 (3)居民点:居民点分级、概括,地名分级注记。 (4)边界线:视专题地图需要选取(国、省、市、县、镇边界),线性符号选用与 设计。 (5)交通线:铁路(车站)、国道、高速公路和水运航线(码头) (6)地貌信息:根据专题需要,选取少量等高线。 2.2专题地图设计 (7)收集专题信息相关的图件、文本、数据和参考资料。 (8)资料加工处理,数据统计分析,图象资料运用。 (9)专题内容表示:符号设计与表现形式,图例系统设计。 (10)地图概括:地图内容的选择,点、线、面要素的分类、简化、夸张与合并。 (11)图面内容设计:地图幅面上图名、图例、主图、附图、图表、比例尺、文字等 位置安排;图廓、色彩、网纹配置、版权说明等。 2.3 编写专题地图说明书 (12)资料与数据来源,分析方法与成图过程。 (13)专题信息导读:专业信息时空分布规律、成因与对策分析。 (14)存在问题分析。 2.4 地图专题内容 赣州市地理地图(行政分区地图)基础上(网上搜索),编绘旅游专题、经济专题、人口专题、交通专题、城市专题、环境专题等。 3、要求 学生地图课程设计时按地图出版设计要求进行,每人按时上交一份装订成册的专题地图(二分之一开本787*960,彩色打印)及其说明书,并备份存档电子文本和图象、图形格式文件一套。

相关文档
最新文档