欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    程序课程设计--城市管理.doc

    • 资源ID:856226       资源大小:647.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    程序课程设计--城市管理.doc

    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)/(通过城市坐标删除

    13、)CityNode *p, *s;p = new CityNode;s = new CityNode;s = head;p = head-next;while (p != NULL)if (p-x = x & p-y = y)s-next = p-next;delete p;number-;cout 该城市已删除 next;s = s-next;return false;void CityManage:SaveAgain()ofstream fout(City.txt, ios:out);CityNode *p;p = new CityNode;p = head-next;while (p !

    14、= NULL)SaveFile(p-cityname, p-x, p-y);p = p-next;float CityManage:Distance(string cityname1, string cityname2)/(两城市间的距离)CityNode *p, *s;float c1x, c1y, c2x, c2y, dis;p = new CityNode;s = new CityNode;p = head-next;s = head-next;while (p != NULL)if (p-cityname = cityname1)c1x = p-x;c1y = p-y;break;p

    15、= p-next;if (p-cityname != cityname1)cout 未找到您所输入的第一个城市 cityname = cityname2)c2x = s-x;c2y = s-y;break;s = s-next;if (s-cityname != cityname2)cout 未找到您所输入的第二个城市 endl;return 1;dis = sqrt(c1x - c2x)*(c1x - c2x) + (c1y - c2y)*(c1y - c2y);cout cityname x , y 到;cout cityname x , y 的距离为: dis next;while (p

    16、 != NULL)if (sqrt(pow(p-x - x, 2) + pow(p-y - y, 2) = num)cout cityname x , y next;if (n = 0)cout next;int a = 0, b = 0, c = 0;for (a = 0; a100; a+)for (b = 0; b100; b+)Weightab = 100;for (a = 0; anext;for (b = a + 1; bx - s-x), 2) + pow(abs(p-y - s-y), 2);s = s-next;p = p-next;p = head-next;for (c

    17、= 0; ccityname;p = p-next;return true;void Travel()/(求最短路径)int i, j, k, l;int S100;/用于存储已访问过的城市 /用于存储两个城市之间的距离int sum = 0;/用于记算已访问过的城市的最小路径长度int Dtemp;/保证Dtemp比任意两个城市之间的距离都大(其实在算法描述中更准确的应为无穷大)int flag;/最为访问的标志,若被访问过则为1,从未被访问过则为0 /*初始化*/i = 1; /i是至今已访问过的城市S0 = 0;do k = 1; Dtemp = 100;do l = 0; flag =

    18、 0;do if (Sl = k) /判断该城市是否已被访问过,若被访问过,flag = 1;/则flag为1break;/跳出循环,不参与距离的比较elsel+; while (l i);if (flag = 0 & WeightkSi - 1 Dtemp) /*DkSi - 1表示当前未被访问的城市k与上一个已访问过的城市i-1之间的距离*/j = k;/j用于存储已访问过的城市kDtemp = WeightkSi - 1;/Dtemp用于暂时存储当前最小路径的值k+; while (k 100);Si = j;/将已访问过的城市j存入到Si中i+;sum += Dtemp;/求出各城市之

    19、间的最短距离,注意:在结束循环时,该旅行商尚未回到原出发的城市 while (i 100);sum += Weight0j;/D0j为旅行商所在的最后一个城市与原出发的城市之间的距离cout endl;cout 路线如下: endl;cout * endl;cout ;for (j = 0; j number; j+) /输出经过的城市的路径cout citysSj ;cout citys0;cout endl;cout * endl endl;void CityManage:Operation()cout ttt* endl;cout ttt* 作者:魏于博 学号:2017212064 *

    20、endl;cout ttt*城市管理* endl;cout ttt* * endl;cout ttt*tt 1,添加城市tttt* endl;cout ttt*tt 2,查找城市tttt* endl;cout ttt*tt 3,删除城市tttt* endl;cout ttt*tt 4,两个城市间的距离ttt* endl;cout ttt*tt 5,查找距离某地为n的城市tt* endl;cout ttt*tt 6,最短距离遍历城市ttt* endl;cout ttt* * endl;cout ttt* endl;int n;char num;cout num;string cityname,

    21、cityname1, cityname2;int x, y;switch (num)case 1: cout 请输入城市名称: cityname;cout 请输入坐标 endl;cout x;cout y;Insert_CityNode(cityname, x, y);system(pause);system(cls);break;case 2:cout * endl;cout 1,通过城市查找坐标 endl;cout 2,通过坐标查找城市 endl;cout * endl;char Num1;cout Num1;switch (Num1)case 1: cout cityname;Searc

    22、h_CityNode(cityname);system(pause);system(cls);break;case 2: cout 请输入坐标 endl;cout x;cout y;Search_CityNode(x, y);system(pause);system(cls);break;default:cout Error endl;system(pause);system(cls);break;break;case 3:cout * endl;cout 1,通过城市名称删除 endl;cout 2,通过城市坐标删除 endl;cout * endl;char Num2;cout Num2;

    23、switch (Num2)case 1: cout cityname;Delete_CityNode(cityname);SaveAgain();system(pause);system(cls);break;case 2: cout 请输入要删除城市的坐标:;cout endl;cout x;cout y;Delete_CityNode(x, y);SaveAgain();system(pause);system(cls);break;default:cout Error endl;system(pause);system(cls);break;break;case 4: cout 请输入两

    24、个城市: endl;cout cityname1;cout cityname2;Distance(cityname1, cityname2);system(pause);system(cls);break;case 5: cout n;cout 请输入要查找点的坐标: endl;cout x;cout y;Distance_In_Range(n, x, y);system(pause);system(cls);break;case 6:Travel_Edge();Travel();system(pause);system(cls);break;case 7:Test();system(paus

    25、e);system(cls);break;default:cout Error cityname x y)Insert_CityNode_2(cityname, x, y);ifile.close();void CityManage:SaveFile(string cityname, int x, int y)ofstream outfile(City.txt, ios:out | ios:app);if (!outfile)cout opre City.dat error! endl;exit(1);string a100;int b100;int c100;for (int n = 0; n100; n+)an = cityname;bn = x;cn = y;int i = 0;i = i + 1;outfile ai ;outfile bi ;outfile ci;outfile next;for (int h = 0; h15; h+)cout cityname;p = p-next;return true;void main()CityManage City;string start;City.ReadFile();while (1)City.Operation();


    注意事项

    本文(程序课程设计--城市管理.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922