程序课程设计--城市管理.doc
《程序课程设计--城市管理.doc》由会员分享,可在线阅读,更多相关《程序课程设计--城市管理.doc(20页珍藏版)》请在沃文网上搜索。
1、(1) 需求和规格说明问题描述:问题描述:用无序表实现一个城市数据库。每条数据库记录包括城市名(任意长的字符串)和城市的坐标(用整数x和y表示)。实现数据的插入、删除、查询功能,并实现指定距离内的所有城市。设计算法实现指定一定数目的具体城市,寻找遍历这些城市并回到出发点的最佳路径,观察随着城市数目的增加,算法执行效率的变化。编程任务:1)用列表对城市进行记录和管理,实现城市的增加、删除和查询功能,并实现文件保存和读取2)计算城市之间距离,统计输出距离某城市一定范围内的所有城市。3)实现一定规模城市的遍历最佳路径选择。4)分析随着城市数目增加时,算法执行效果的改变,深刻理解旅行商问题。(2) 设
2、计首先建立一个CityNode, 包含城市的名称,横纵坐标和指针。再建立一CityManage类属性和方法定义类名成员类别类型成员名描述CityNode属性Stringcityname城市名称intx城市的横坐标inty城市的纵坐标CityNode*next其连接作用类名成员类别类型成员名描述CityManage属性Stringcityname城市名称intx城市横坐标inty城市纵坐标CityNode*next指针,起连接作用Class中的方法bool Insert_CityNode(string cityname, int x, int y); (添加城市)bool Insert_City
3、Node_2(string cityname, int x, int y);(添加城市-文件读入)bool Search_CityNode(string cityname);(通过城市名字查找)bool Search_CityNode(int x, int y);(用过城市坐标查找)bool Delete_CityNode(string cityname);(用过城市名字删除)bool Delete_CityNode(int x, int y);(通过城市坐标删除)float Distance(string cityname1, string cityname2);(两城市间的距离)void
4、SaveFile(string cityname, int x, int y);(保存文件)void ReadFile();(读取文件)void Operation();(switc语句,便于操作)void IsExist(int x, int y, string cityname, int &temp);(判断是否已经存在)bool Distance_In_Range(int num, int x, int y);(一定范围内的城市)bool Travel_Edge();(将城市和坐标分别存在数组中,便于求最短路径)void Travel_Path();(贪心算法 求最短路径)(3) 用户手
5、册(4) 调试及测试1. 添加城市若城市已存在,则提示存在,不能添加2. 查找城市通过名称查找 通过坐标查找3. 删除城市通过名称删除通过坐标删除4.查看两城市间的距离5.查找距离定点一定距离的城市6.查找最优路径测试数据(环形数据能更好的检测)中国 9 1 合肥 9 6 广州 5 6 深圳 5 1 安徽 1 6 北京 1 1(5) 附录程序代码#include#include#include#includeusing namespace std;int number = 0;/城市数目int Weight100100;/边距string citys100;/城市名称struct CityNo
6、destring cityname;int x, y;CityNode * next;struct minedgeint vex;int low;minedge Edge100;void Travel_Path(int v0);class CityManagepublic:CityManage();/CityManage();bool Insert_CityNode(string cityname, int x, int y);bool Insert_CityNode_2(string cityname, int x, int y);bool Search_CityNode(string ci
7、tyname);bool Search_CityNode(int x, int y);bool Delete_CityNode(string cityname);bool Delete_CityNode(int x, int y);float Distance(string cityname1, string cityname2);void SaveFile(string cityname, int x, int y);void ReadFile();void Operation();void SaveAgain();void IsExist(int x, int y, string city
8、name, int &temp);bool Distance_In_Range(int num, int x, int y);bool Travel_Edge();bool Test();private:CityNode * head;CityManage:CityManage()head = new CityNode;head-next = NULL;bool CityManage:Insert_CityNode(string cityname, int x, int y)/(添加城市)CityNode*p = new CityNode;p-cityname = cityname;p-x =
9、 x;p-y = y;int temp1 = 0;IsExist(x, y, cityname, temp1);if (temp1 = 0)SaveFile(cityname, x, y);cout 添加成功 next = NULL)head-next = p;p-next = NULL;number = 1;return true;p-next = head-next;head-next = p;number+;return true;bool CityManage:Insert_CityNode_2(string cityname, int x, int y)/(添加城市-文件读入)Cit
10、yNode*p = new CityNode;p-cityname = cityname;p-x = x;p-y = y;if (head-next = NULL)head-next = p;p-next = NULL;number = 1;return true;p-next = head-next;head-next = p;number+;return true;bool CityManage:Search_CityNode(string cityname)/(通过城市名字查找)CityNode*p;p = new CityNode;p = head-next;while (p != N
11、ULL)if (p-cityname = cityname)cout * endl;cout cityname x , y endl;cout * next;cout 未发现此城市 next;while (p != NULL)if (p-x = x & p-y = y)cout endl;cout * endl;cout cityname x , y endl;cout * endl;cout next;cout 所在坐标下没有城市 next;while (k != NULL)if (k-x = x & k-y = y | k-cityname = cityname)cout 该城市已存在 n
12、ext;bool CityManage:Delete_CityNode(string cityname)/(用过城市名字删除)CityNode *p, *s;p = new CityNode;s = new CityNode;s = head;p = head-next;while (p != NULL)if (p-cityname = cityname)s-next = p-next;delete p;cout 该城市已删除 next;s = s-next;return false;bool CityManage:Delete_CityNode(int x, int y)/(通过城市坐标删除
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 课程设计 城市管理
