前言

学校数据结构课程要求做的课程设计

一.设计目的

(1).首先,在选择校园导航系统的图的存储结构时,由于当时还没有确定课题题目,最后一段时光临时学习了图的两种存储结构,由于本人认为邻接矩阵存储比较简单,就选择了该存储结构。

(2).其次,该课程设计是本人第一次进行的比较认真的设计,即使比较简单,但也经历了一个星期左右的设计加调试,在不断选择中所得到的成果,即使最后可能在学校所得到的分数不是很高,但我觉得有一定的纪念意义,索性就发布出来,希望能对大家有一定的帮助。

(3).最后,该系统实现了网上我一直找不到的导航方式的一定功能,并从文件中读取数据,结合网上其他人的方法,给出了我自身对于导航方式的理解。

二.设计内容与要求

一.设计要求

为本校设计一个校园导航程序,具体要求如下:

① 校园地图存储于格式自定义的文本文件中,包括地点编号、名称、简介;道路名称、 长度、 种类(车行、骑行、步行)等信息,至少包含 15 个地点、25 条道路。

② 所存储的校园地图需以图形方式输出。

③ 能根据编号(或名称)查询任意地点、道路的相关信息。

④ 能根据指定的出发、目的地点、导航方式(车行、骑行、步行),计算出最短路径。

⑤ 能为用户提供从指定地点出发游览完其他所有地点的路线信息。 涉及算法及知识:图的创建、遍历、最短路径、文本文件读 API。

二.设计内容

首先,构建校园导航图的各个组成结构:

一:顶点结构

typedef struct Vex //景点信息
{int position; //编号char name[Max];//名称char introduction[100];//介绍
}VexInfo[100];

其中,position是指各个顶点的编号,name指的是顶点名称,introduction是指顶点介绍

二:边结构

typedef struct Rd {char name[Max];char infor[40];int length;int type;   // 1-车行道,2-骑行道,3-步行道int last;              //道路一端的序号int next;              //道路另一端的序号
}Road[100];

该边结构中包含一条边的上一个顶点和下一个顶点,边的名字和介绍,边的长度,最后是边的类型

三:邻接矩阵

typedef struct ArcNode
{int adj;
}AdjMAtrix;

其实,可以省略该结构体,直接在图结构体中定义邻接矩阵,此处本人不改了

四:图结构体

typedef struct maps //景点的图
{int VexNum; //顶点数int ArcNum; //边数VexInfo ves;//顶点表Road rd;//边表AdjMAtrix arcs[Max][Max];//邻接矩阵}Map;

其中,图的成员包含了顶点数和边数,也包含了顶点信息和边的信息,最后包含一个邻接矩阵

---------------------------------------------------------------------------------------------------------------------------------

三.设计过程

文件路径在我的电脑中为D盘下

fopen和fscanf为文件的两个基本操作,注意在读取文件时要将文本文件的格式转换成ANSI,否则读出来的汉字为乱码,此处重点注意!!!!!!

文件读取操作并不难,直接上网现查就ok,基本都是这么个模式

---------------------------------------------------------------------------------------------------------------------------------

一(定位顶点表下标函数)

基本操作,注意,为使序号与下标一一对应,不管是上方的文件读取中的循环,还是往后的循环,都从下标1开始进行,直到等于顶点数或边数结束

int LocateVex(Map& G, int v) {//i因为是需要记录使用的变量,因此定义在外部int i;//遍历图的一维顶点数组,找到顶点v的下标for (i = 1; i <= G.VexNum; i++) {if (G.ves[i].position == v) {//如果已经找到直接退出循环,不需要再次进入循环break;}}//如果找不到,输出提示语句,返回-1if (i > G.VexNum) {printf("No such vertex.\n");return -1;}//寻找成功返回v的下标return i;
}

二(无向图创建函数)

参数为Map类型的指针G

(1)在该函数中定义边数和顶点数

(2)并定义了两个图外部的表,在使用read_graph()函数后,顶点表和边表中从文件中读取到了数据

(3)之后两个for循环的操作就是用外部的顶点表和边表为图中的顶点表和边表填充数据

(4)再然后,就是初始化邻接矩阵,并使用最后的双重for循环为邻接矩阵赋边值(即权值)

void CreateUDG(Map* G) {//设置图的顶点数与边数int i, j, k;int v1, v2;G->VexNum = 20;G->ArcNum = 31;Rd road[Max];Vex ves[Max];read_graph(ves, road);for (i = 1; i <= G->VexNum; i++) {G->ves[i].position = ves[i].position;strcpy(G->ves[i].name, ves[i].name);strcpy(G->ves[i].introduction, ves[i].introduction);}for (int n = 1; n <= G->ArcNum; n++){strcpy(G->rd[n].name, road[n].name);strcpy(G->rd[n].infor, road[n].infor);G->rd[n].last = road[n].last;G->rd[n].next = road[n].next;G->rd[n].type = road[n].type;}//初始化for (i = 1; i <= G->VexNum; i++){for (j = 1; j <= G->VexNum; j++){if (i == j)G->arcs[i][j].adj = 0;elseG->arcs[i][j].adj = MaxLen;}}for (k = 1; k <= G->ArcNum; k++){v1 = road[k].last;v2 = road[k].next;i = LocateVex(*G, v1);j = LocateVex(*G, v2);for (int m = 1; m <= G->ArcNum; m++){if ((road[m].last == i && road[m].next == j) || (road[m].next == i && road[m].last == j)){G->arcs[i][j].adj = road[m].length;G->arcs[j][i].adj = road[m].length;}}}}

三(Dijkstra算法)

该代码的内容说难也难,说简单也简单,说是思想简单,代码实现很难,本人谈谈对这部分代码的理解。

迪杰斯特拉算法主要是求解最短路径问题,本人的理解是定义三个数组:

(1)即visited[100]:表示该顶点是否已访问

(2)即D[100]:表示从v0(起始顶点)顶点到各个顶点的最短距离

(3)即Path[100]:  如D[i]  表示存储的是第i个顶点的上一个顶点

使用迪杰斯特拉算法本质上就是往这三个数组中填充数据,最终得到从v0到各个顶点的最短路径

下面解释代码

(1)先初始化三个数组。

(2)向D数组中填充数据,即从起始顶点v0到其余各个顶点的权值,如果此时D中的值不为定义的无穷大MaxLen,则说明该顶点是与v0直接相连的,故v0作为这些顶点的上一个顶点被记录在Path数组内。

(3)将v0设为已访问,开始循环。

最外层的循环保证使v0到每一个顶点都有最短路径。

内层的第一个循环选出与v0直接相连且距离最短且没被访问过的顶点,该顶点到v0的距离为最小距离min,该顶点的下标为u,u此时是与v0顶点直接相连的顶点,说明顶点u已找到最短路径,将u加入visited数组中。

内层的第二个循环是对v0到各顶点的权值进行更新,更新条件是

D[u] + G->arcs[u][v].adj < D[v]

这时,u是v相连的上一个顶点被记录到Path数组中去,并更新

D[v] = D[u] + G->arcs[u][v].adj;

当此算法执行完毕后,三个数组中就存入了v0到各个顶点的关于最短路径的数据

void Dijkstra(Map* G, int v0)
{int i, j, u, v;int min;memset(Path, -1, sizeof(Path));memset(NewPath, 0, sizeof(NewPath));memset(visited, 0, sizeof(visited));//对各数组进行初始化for (i = 1; i <= G->VexNum; i++){D[i] = G->arcs[v0][i].adj;if (D[i] != MaxLen)//如果有与v0直接相连的顶点{Path[i] = v0;//则将vo记录为哪一个顶点的前一个顶点}}//由于以v0位下标的顶点为起始点,所以不用再判visited[v0] = 1;//途径点for (i = 1; i < G->VexNum; i++)//循环VexNum次,使vo到每一个顶点都有最短路径{min = MaxLen;for (j = 1; j <= G->VexNum; j++)//该循环的目的是选出与v0直接相连且距离最短且没被访问过的顶点,该顶点到v0的距离为最小距离min,该顶点的下标为u{if (visited[j] == 0 && D[j] < min){min = D[j];u = j;}}//设置该顶点的标志位为1,避免下次重复判断visited[u] = 1;//对v0到各顶点的权值进行更新for (v = 1; v <= G->VexNum; v++){if (visited[v] == 0){if (D[u] + G->arcs[u][v].adj < D[v]){Path[v] = u;D[v] = D[u] + G->arcs[u][v].adj;//记录各个最短路径上存在的顶点 }}}}
}


四(边表的下标定位函数)

该代码的功能应用在下一个函数中,即已知一条边的左顶点和右顶点,找到该顶点在边表中的下标。

int index(Map* G, int u, int v)
{int k;for (k = 1; k <= G->ArcNum; k++){if ((G->rd[k].last == u && G->rd[k].next == v) || (G->rd[k].last == v && G->rd[k].next == u)){return k;}}// 没有找到对应的边return -1;
}


五(Showpath函数)

该部分代码的功能包含两个部分,一是展示出来一条从v0到s的最短路径二是判断导航方式与道路类型是否匹配,这部分内容也是使本人比较纠结的地方,下面开始介绍代码:

(1)该部分代码的思想是提取Path数组中的值,并根据此输出最短路径

while (Path[end] != v0)
    {
        NewPath[start++] = Path[end];
        end = Path[end];
    }

这一步即将Path中的从v0到s的最短路径提取到NewPath数组中,此时NewPath[1]记录的是终点的前一个顶点,NewPath最后一个记录的是起点的后一个顶点。

(2)再将NewPath中的值逆序存到GOOD数组中

例如,此时从4到2是数组GOOD中从1到最后的存储内容,v0和s并不在GOOD数组内

v0 4 3 1 5 2 s

在输出最短路径时,由于不可抗力的因素(其实是因为GOOD数组后来写的,懒得改了),还是使用NewPath逆序输出,而GOOD则是用在判断导航类型

(3)NewPath输出一段最短路径

(4)判断起点是否为终点,若不是,则开始从GOOD数组中提取v0后的顶点一直到s顶点

过程则是将v0顶点作为一条边的左顶点,v0后面的一个顶点作为那条边的右顶点,用index函数找到该边在边数组中的下标,判断该边的类型与输入的导航类型是否相等,如果相等,则正常输出最短路径,若不等,则提示是哪些路的类型不符导航要求,提示用户到时更改导航方式。

此为该函数的具体功能实现,一言以蔽之,即输出两个顶点间的最短路径和判断该路径中是否有边的类型与用户输入的导航方式不符,若不符,则提示用户该条边的类型与导航方式不符。

void Showpath(Map* G, int v0, int s, int op)
{int Good[100];if (D[s] == MaxLen) {printf("无法到达目的地\n");return;}int end = s;int start = 1;while (Path[end] != v0){NewPath[start++] = Path[end];end = Path[end];}for (int i = 0; i <= start - 1; i++){Good[i] = NewPath[start - 1 - i];}printf("\n");int i = start - 1;printf("为您规划的最短路线为:\n");printf("(%d)%s--->", G->ves[v0].position, G->ves[v0].name);for (start = start - 1; start >= 1; start--){printf("(%d)%s--->", G->ves[NewPath[start]].position, G->ves[NewPath[start]].name);}printf("(%d)%s\n", G->ves[s].position, G->ves[s].name);printf("全程%d米\n", D[s]);int j = 0;if (v0 != s){for (; j < i; j++){int k = index(G, v0, Good[j]);if (G->rd[k].type != op){printf("%-15s道路不满要求,建议在此另选导航方式\n", G->rd[k].name);}v0 = Good[j];Good[j] = Good[j + 1];}int m = index(G, v0, s);if (G->rd[m].type != op){printf("%s道路不满要求,建议在此另选导航方式\n", G->rd[m].name);}}printf(" 用时%d分钟\n", D[s] / 60 + 1);
}

该部分内容还是挺多的,可能有些内容有些冗余与多余,希望有大佬能给出更符合实际的解决方案


六(SearchVex()函数和Searchroad()函数)

该部分代码为查询顶点和道路信息函数,内容都很简单,就不展开细聊了。

void SearchVex(Map* G)
{while (1){int n;printf("请输入你想要查询的景点编号(按0退出):\n");scanf_s("%d", &n);if (n == 0){break;}else if (n < 1 || n>20){printf("输入有误,请重新输入!!!\n\n");continue;}else{printf("地点:%s\n", G->ves[n].name);printf("地点介绍:%s\n", G->ves[n].introduction);}}
}void Searchroad(Map* G)
{while (1){for (int i = 1; i <= G->ArcNum; i++) {printf("%2d:%s\n", i, G->rd[i].name);}int n;printf("请输入你想要查询的道路编号:\n");printf("按0退出\n");scanf_s("%d", &n);if (n == 0){break;}else if (n < 1 || n>G->ArcNum){printf("输入有误,请重新输入!!!\n\n");continue;}else{printf("\n%s:%s\n", G->rd[n].name, G->rd[n].infor);system("pause");system("cls");}}return;
}

七(FirstAdjVex和NextAdjVex函数)

用在下一个深度优先搜索函数,常规代码

int FirstAdjVex(Map* G, int v)
{int i;for (i = 1; i <= G->VexNum; i++){if (G->arcs[v][i].adj != MaxLen)return i;}return -1;
}int NextAdjVex(Map* G, int u, int w)
{for (int i = w + 1; i <= G->VexNum; i++){if (G->arcs[u][i].adj != MaxLen)return i;}return -1;
}

八(DFS深度优先搜索函数(递归实现))

在DFStravel中输入起始地点的编号,开始进行DFS遍历

在DFS中输出顶点信息,并定义DFSvisited数组表示顶点是否被访问,将起始顶点 i 标记为已访问,

FirstAdjVex函数中找到与 i 直接相连的第一个顶点下标赋值给 j ,用 j+1 在NextAdjVex函数中的进行循环,找到与u相连的下一个顶点下标更新,判断 i 到 j 是否有边且 j 未被访问,再进行递归,直到遍历完所有的顶点。

void DFS(Map* G, int i)
{int j;printf("(%d).%-20s-->", G->ves[i].position, G->ves[i].name);cout << endl;DFSvisited[i] = 1;for (j = FirstAdjVex(G, i); j >= 0; j = NextAdjVex(G, i, j)){if ((G->arcs[i][j].adj > 0) && (DFSvisited[j] == 0))DFS(G, j); //对i的尚未访问的邻接顶点j递归调用DFS }
}void DFStravel(Map* G) {int i = 0;while (i < 1 || i>20){printf("请输入起始地点的编号:");scanf_s("%d", &i);if (i < 1 || i>20){printf("输入有误!请重新输入。\n");}}DFS(G, i);printf("\n");
}

九(界面函数)

该部分内容按照真实地图进行改造,选取出重点顶点和道路,设计出大概地图样式,并规定了各个边的权值,设计不到之处敬请谅解。

void MapList() //地图界面
{printf("                                                       【安徽工程大学】                                         \n");printf("                                                         【本院地图】  \n");printf("                  ————      —————————————————————————————————————————————————— \n");printf("                  |     1.|o小北门|     12.|o男11--15|     13.|o菜鸟驿站|       |    |  17.|男寝|       18.|o东区食堂|      \n");printf("                  |                                                             |    |                                      \n");printf("                  |                                                             |    |                         \n");printf("  ———— 2.|o女寝|                   11. |o食堂|                              |    |                       19.|o男19--25|    \n");printf("  |                                                                             |    |                              \n");printf("  |                                                           15.|o师生活动中心 |    | 16.|o6教|                |           \n");printf("  |                                                                             —————                      |        \n");printf("  |                   3.|o食堂|                                                    天桥                         |        \n");printf("  |                                                                             —————                      |        \n");printf("  |                                                                             |                               |       \n");printf("  |                                        10.|o第一田径场|      14.|o体育馆|   |                 20.|o5教|     |      \n");printf("  |                                                                             |               \n");printf("  |                                                                             |\n");printf("  |         4.|o校医院|                                                         |\n");printf("  | 5.|o教职工宿舍|                                                  9.|oABCD座||\n");printf("  |                                                                             |\n");printf("  |                                 6.|o生物食品工程学院|                       |\n");printf("  |                                                                             |\n");printf("  |                                                          8.|o2,3,4教|     |\n");printf("  |                                                                             |\n");printf("  ——————|南一门|———————— 7.|o南大门| —————————\n");}void BuildList()//建筑物一览图
{printf("——————————————————————————————————\n\n");printf("                        【AHPU校园导航系统】\n");printf("                             校园一览图\n\n");printf("(1)小北门              (2)女寝               (3)一二食堂          (4)校医院         (5)教职工宿舍\n\n");printf("(6)生物食品工程学院    (7)大南门             (8)#2,3,4教学楼    (9)A,B,C,D座   (10)第一田径场\n\n");printf("(11)三四食堂           (12)男寝(11-16)     (13)菜鸟驿站         (14)体育馆        (15)师生活动中心\n\n");printf("(16)六教               (17男寝(研3-4.17-19)  (18)东区食堂         (19)男寝(19-25)   (20)五教\n\n");printf("——————————————————————————————————\n\n");
}
void Welcome()//欢迎界面
{printf("——————————————————————————————————\n\n");printf("                        【AHPU校园导航系统】\n\n");printf("                     欢迎使用AHPU校园导航系统\n");printf("                (导航数据仅供参考,并不代表实际)\n\n");printf("——————————————————————————————————\n\n");system("pause");system("cls");
}
void Menu()//菜单界面
{system("cls");printf("——————————————————————————————————\n\n");printf("                         【AHPU校园导航系统】\n\n");printf("                      (1)     查看地图\n\n");printf("                      (2)  查看校园一览图\n\n");printf("                      (3)     进入导航\n\n");printf("                      (4)   查看浏览路线\n\n");printf("                      (5)   查询道路信息\n\n");printf("                      (6)     退出系统\n\n\n");printf("——————————————————————————————————\n\n");
}void Quit()//退出界面
{system("cls");printf("——————————————————————————————————\n\n");printf("                        【AHPU校园导航系统】\n\n");printf("                      感谢您使用AHPU导航系统!\n\n");printf("                       作者:软件212班  赵星宇\n\n");printf("——————————————————————————————————\n\n");
}

十(菜单选择函数)

此处内容为菜单选择的基本逻辑,使用switch选择进行基本操作

void MenuSystem(Map& G)//菜单逻辑
{int n;while (1){int v0 = 0, s = 0;int op = 0;Menu();printf("请输入您要进行的操作:");scanf_s("%d", &n);switch (n){case 1:{system("cls");MapList();printf("返回主菜单");system("pause");}break;case 2:{system("cls");BuildList();SearchVex(&G);printf("返回主菜单");system("pause");}break;case 3:{system("cls");BuildList();while (v0 < 1 || v0>20){printf("请输入您的起始地:");scanf_s("%d", &v0);if (v0 < 1 || v0>20){printf("输入有误!请重新输入。\n");}}while (s < 1 || s>20){printf("请输入您的目的地:");scanf_s("%d", &s);if (s < 1 || s>20){printf("输入有误!请重新输入。\n");}}while (op < 1 || op>3){printf("请选择您的导航方式(1--车行,2--骑行,3--步行):");scanf_s("%d", &op);if (op < 1 || op>3){printf("输入有误!请重新输入。\n");}}system("cls");MapList();Dijkstra(&G, v0);Showpath(&G, v0, s, op);printf("返回主菜单");system("pause");}break;case 4:{system("cls");MapList();DFStravel(&G);system("pause");}break;case 5:{system("cls");Searchroad(&G);system("pause");}break;case 6:{system("pause");Quit();exit(-1);}break;default:{printf("输入错误!请重新输入。\n");printf("返回主菜单");system("pause");}break;}}
}

四.实现过程

欢迎界面
 

地图

查询景点及景点一览图

查询路线

五.课程设计小结

在本学期的学习中,学校开设了数据结构这门专业课,在开始学习的过程中,我感到了一些吃力,但在不断学习的过程中,我逐渐学习并认识到了数据结构在计算机系列课程中的广泛应用,于是,我下定决心将数据结构这门课学好,可惜事与愿违,最终因为种种原因,还是没能坚持下来,在自学完二叉树后,没有时间进行后续知识的学习,在分配课程设计题目要时,个人是希望分到前面几章的内容,但天不遂人愿,给我的课设题目是关于图最短路径问题,只好再进行图的学习,在学习最短路径算法时,也只看了迪杰斯特拉算法,而没有看弗洛伊德算法,等以后有时间一定看看,而这也是本人第一次写博客,在进行书写的过程中,可能有不完善之处,如果有大佬能指出,感激不尽。

校园导航系统(导航方式:步行,骑行,车行)相关推荐

  1. Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划

    2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...

  2. java校园导航_基于Android平台的校园导航系统

    摘要:随着移动网络通讯技术的迅速发展和基于安卓技术的手持终端设备的日益普及,Android手机在学生群体中普遍使用,各类高校内部一般都具有良好的校园网络环境.虽然现在出现了各式各样的地图导航软件,但在 ...

  3. java校园导航_Java实现的具有GUI的校园导航系统

    0.写在前面 2020-5-18 更新 这个东西已经是两年前的了,现在问我具体细节我也不是很清楚了,而且现在review两年前的代码感觉写的好烂...请大家有问题下面留言,不要加我的企鹅了,正在准备考 ...

  4. 校园导航系统java具有gui,[数据结构大作业]HBU Guide 河北大学校园导航

    [数据结构大作业]HBU Guide 河北大学校园导航 校园导航问题 实验报告介绍: 博客园 https://www.cnblogs.com/hx97/p/11967398.html CSDN htt ...

  5. 3D地图+智能导航,用微信小程序轻松实现校园内导航

    大学都读完还没有走过学校的每一个角落已经是老生常谈了,但新生入学一般更绝望.一般的新生入学,学校需要发动大量的志愿者对新生进行引导,从报道处再到宿舍楼.教学楼.食堂.各办公楼都为新生一一进行讲解,但因 ...

  6. 数据结构课设+校园导航系统

      前言 1. 设计目的 2.设计内容与要求 2.1设计内容 2.2课题要求 3.设计思路 3.1关键问题描述 3.2程序处理流程图 ​4.实现过程 4.1功能实现 4.2 测试运行​ 5.代码实现 ...

  7. 车行易携手睿象云:告警管理体系全升级

    据权威数据显示,目前国内汽车后服务市场的规模已达万亿级别.而在车主日常用车的多种生活场景中,与车辆违章相关的细分业务使用频度仅次于导航.停车.洗车等三项车后服务,这也是极具发展潜力的一个细分市场.「车 ...

  8. 数据结构课程设计——校园导航系统

    设计思想: 利用迪杰斯特拉求单源最短路算法,设计出郑州升达经贸管理学院的校园导航,求出学校一个景点到另一个景点的最短距离及路线. 系统功能: 将校园设计为平面图,将学校各代表景点构成一个抽象的无向带权 ...

  9. 校园导航系统怎么选择,看看以下几点标准是否达到

    怀抱大学梦想的新生为何第一天就陷入迷茫?高校学子为何上课前不停穿梭教学楼间?这到底是社会的沦丧还是人性的扭曲?欢迎收看今天的--停!完全是因为学校太大找不到路好嘛!但这也确实是真实存在的校园日常. 针 ...

最新文章

  1. 独家 | Python 3.10发布——你应该知道的五大新特性
  2. c. Litmxs找女友
  3. mui框架提供的相关api
  4. MATLAB应用实战系列(四十五)-matlab任意图形轮廓坐标提取【含源代码】
  5. 【详细了解】Nginx 除了负载均衡,还能做什么?
  6. 四.jmeter代码学习, SampleResult【持续更新】
  7. 怎么获取codeforces的数据_手把手教你学会新媒体运营——如何通过数据分析来优化新媒体运营...
  8. input file的默认value清空与赋值方法
  9. CodeForces 1396E Distance Matching(构造+树的重心+dfs+set)
  10. sleep期间读取所有_ceph部分数据所有副本先后故障的抢救
  11. JAVA程序(阶乘10以内)
  12. 百练4982 踩方格
  13. Unable to execute dex: GC overhead limit exceeded
  14. Django有办法打开HTTP长轮询连接吗?
  15. 云原生火爆技术人朋友圈,你可别云里雾里了!
  16. Web.xml配置详解之context-param (加载spring的xml,然后初始化bean看的)
  17. 100 计算机网络基础知识
  18. 【网络攻防技术】实验七—— XSS攻击实验(Elgg)
  19. 时间序列数据的平稳性检验
  20. 摄影测量学知识点总结(万字长文警告)

热门文章

  1. 电脑睡眠模式快捷方式
  2. html5 canvas circle,HTML5 canvas 创意:飞翔的凤凰
  3. 小正太Facebook追赶腾讯蜀黍的脚步还有多远?
  4. 【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中游戏(d)
  5. Windows下实现COM口通信c++源代码(验证可行)
  6. 【JAVA】Win10实现Java文件的开机自启动(附详细步骤)
  7. 苏姿丰博士专访:突破CPU与GPU极限,AMD正火力全开
  8. 数据库SQL调优的几种方式(转)
  9. Vue笔记_03_使用Vue脚手架
  10. python: isspace函数