You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

194 lines
5.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# UrbanHighwayNavigationSystem
# 项目名称 城市公路导航系统
杨腾泽,刘鑫成,李培毅,孙英皓
**摘要**:本项目针对什么问题,实现了哪些功能。为了有效地存储和处理何种数据,采用了何种数据结构。为了解决什么问题,采用了什么算法,算法效率如何。针对其他特定需求做了哪些工作。项目的整体效果如何,有何亮点和创新。
任务分工及完成情况。
工作量占比。
# 1. 系统分析
## 1.1 问题描述
设计一个城市公路导航系统,能够计算出省内及周边任意两个城市之间的导航路径及最短距离。选择一个合适的省份,省内及周边城市数量在 100 个左右(最少不低于 80 个)。查阅相关资料获取邻近城市之间的公路里程数据,建立导航地图。任意指定两个城市作为起点和终点,系统能够计算出两个城市之间的最短距离和导航路径。
1基于真实的公路地图数据建立导航地图模型编制成格式简单的数据文件包括城市名称以及邻近城市之间的公路里程数。
2系统能够读取导航地图数据文件建立地图模型也能够将模型输出成地图数据文件以便验证模型的正确性。
3通过人机交互的方式输入起点和终点城市名称系统给出最短路径和导航路径上途径的城市名称。
4能够读取不同的导航地图进行功能测试。
要求系统运行正常、功能完整;数据结构使用得当,算法有较高的效率;代码规范、可读性高,结构清晰;具备一定的健壮性、可靠性和可维护性。
## 1.2 可行性分析
地图可以用图结构建立模型,每个城市作为图中的一个顶点,城市之间的公路对应图中的边。给定起点和终点的条件下,可以利用最短路径算法求得导航路径。
真实的公路地图数据需要经过预先处理,编辑并保存成便于程序读取和处理的格式。在数据量比较大的情况下,要根据数据的特点采用合适的数据结构。
除了基于真实数据的测试,还可以采用小规模的模拟数据进行测试,以便验证算法的正确性。
明确解决问题的关键,核心数据结构,核心算法等。
确定解决问题的总体思路和方案。
## 1.3 需求分析
### 1输入和输出
确定系统的主要输入和输出,如可以设定的参数,数据文件等,明确其主要作用。
### 2数据字典
描述系统中需要处理的所有数据包含的具体信息。例如:
学生 = 学号 + 姓名 + 成绩
### 3数据文件
系统中需要读取xx数据文件以获取xx数据或者需要导出xx数据。举例说明xx数据文件的具体格式。
### 4参数设定
系统开始运行时,需要设置的参数。可以用户手册的形式给出设定参数的过程,如系统提示信息和用户输入等。
### 5XX功能
其他具体功能。
首先简要说明该功能的主要作用,可以用户手册的形式给出系统提示信息、用户输入和系统输出等。
### 6XX功能
其他功能逐项列出。
# 2. 系统设计
## 2.1 概要设计
系统划分为几个模块,可以画模块图。
逐个说明每个模块的功能(输入、输出、做什么,这里不写怎么做)。
## 2.2 数据结构设计
首先,分析对比几种可选的数据结构设计方案。如图可以采用邻接矩阵,也可以采用邻接表,表示集合可以用普通的查找表,还可以用不相交集。给出每一种设计方案的特点(优势、不足等)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
### 1xxx结构
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。多个数据结构,逐一列出。
### 2xxx结构
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。
###
## 2.3 算法设计
首先,分析对比几种可选的算法设计方案。如是否排序,广度优先或深度优先搜索等。给出每一种设计方案的特点(优势、不足)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
### 1XXX算法
给出核心算法的设计,包括伪代码或流程图。多个核心算法,逐一列出。只列举解决问题的核心算法,重点讲清楚是如何解决问题的。
### 2XXX算法
给出核心算法的设计,包括伪代码或流程图。
# 3. 系统实现
说明所使用的语言、开发工具等。
介绍项目的文件结构,以及主要函数的功能。
## 3.1 核心数据结构的实现
描述数据结构的实现方法。
可以配合程序代码加以说明。如:
```cpp
struct LNode {
E data; // 数据元素
LNode *next; // 指向下一个结点的指针
};
```
对该数据结构的特点进行分析。
## 3.2 核心算法的实现
描述算法的实现方法。
可以配合程序代码加以说明。如:
```cpp
// 冒泡排序
void bubble_sort(T a[], int n)
{
......
}
```
对该算法的时间和空间复杂度进行分析。
# 4. 系统测试
描述测试的思路和方法。比如,先用小数据量进行测试,再用真实数据进行测试。
测试应考虑到输入数据的特殊情况。
给出若干测试用例,包括输入、预期结果、运行结果或是否通过测试。运行结果和预期结果一致,为通过测试。
# 5. 总结
概况项目和完成情况。
遇到的问题和解决方法。
个人小结:
杨腾泽:
刘鑫成:
李培毅:
孙英皓:
# 参考文献
[1] 严蔚敏, 吴伟民. 数据结构C语言版. 北京: 清华大学出版社, 2007.
[山东省国道里程表](http://www.onegreen.net/maps/HTML/50213.html)