版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计主题2.4.3城市链表查询系统一、设计要求1 .问题的说明把几个城市的信息保存在开头节点的链表中。 节点中的城市信息包括城市名称和城市位置坐标。 要求能利用城市名和位置坐标,进行检索、插入、删除、更新等操作。2 .需求分析(1)可以编制城市链表,输入城市信息,也就是城市名和城市位置坐标(2)可以从城市名称中查询其位置坐标(3)根据离中心坐标的距离查询城市名称(4),可以插入城市信息(5)可以删除城市信息(六)能够更新城市信息(7),执行完成,结束程序。二、概要设计1 .主界面设计为了实现系列基本操作演示系统各功能的管理,本系统设计了包含多个菜单项目的主页,用户使用方便。 本系统的主菜单执行
2、画面如图1所示。图1城市链表操作系统的主菜单。2 .存储结构设计typedef struct city列表举止char CityName10;浮动x,y;结构列表*下一步;CityList、*LHead; /节点类型、指针类型3 .系统功能设计(1)编制城市链表。 有void Create ()函数的实现。 调用主函数main ()和插入函数Insert ()完成创建。(2)检索操作。 实现了void FindCity ()函数和void FindCityDistance ()函数。 在创建链表的基础上,正向和反向搜索城市信息。(3)插入操作。 有void Insert ()函数的实现。 根据
3、用户的输入,系统自动在现有的链表中插入新信息。(4)删除操作。 实现了void Delete ()函数。 通过用户的输入,系统自动判断该信息是否存在,如果存在,就输出提示删除操作的消息,如果不存在,就催促所输入的信息不存在。(5)更新操作。 实现了void UpdateCity ()函数。 通过用户的输入,系统自动判断该信息是否存在,如果存在,则给出置换信息,如果不存在,则提示该信息不存在并返回。(6)结束操作。 若用户选择7,则结束本系统,实现主函数中的选择函数switch。三、模块设计1 .模块设计本程序包含8个函数模块,其调用关系如图2所示。子功能模块主模块图2模块调用关系图2 .系统子
4、程序和功能设计(1)定义typedefstructcitylistcitylist/结构类型(2) void Init(CityList *LHead) /初始化函数动作(3)插入3) void Insert(CityList *LHead) /函数(4)删除4) void Delete(CityList *LHead) /函数(5)创建5) void Create(CityList *LHead) /函数(6) void find city (city list * l head )/城市检索操作(7) voidfindcitydistance (city list * l head )/根
5、据中心坐标和距离的检索操作(8) void更新city (city list * l/更新函数)3 .函数的主要调用关系图main ()42765183图3系统函数调用关系图四、详细设计1 .数据类型定义(1)源程序的文件名列表:#include#include#include /字符串处理函数的头文件#include /动态存储分配实现单元#include(2)结构类型结构typedef struct city列表举止char CityName10;浮动x,y;结构列表*下一步;CityList、*LHead; /节点类型,指针类型2 .系统主要子程序的详细设计(1)./*插入操作void
6、Insert(CityList *LHead )举止CityList* newNode; /定义指针结构为cityList型char m;new node=(city list * ) malloc (sizeof (city list ) ); /生成新节点验证if(newNode=NULL) /空间申请是否成功举止printf (内存分配失败n );返回; /存储器分配失败时,继续分配。以下printf (“请输入城市名称返回:”)扫描( % s ,newNode-CityName ); /指针数据区域printf (请输入城市坐标x,y返回: );扫描( % f % c % f ,新节点
7、- x,m,新节点- y ); /向新节点写入城市信息PS (l head-next!=NULL )举止LHead=LHead-Next; /如果不为空,则HLead指针的位置向后移动以下printf (新城市的信息已成功插入 n );newNode-Next=LHead-Next;LHead-Next=newNode; /在链表中插入新节点以下(2)./*删除操作void Delete(CityList *LHead )举止char delCity10;请输入printf (请输入要删除的城市名称,返回: )扫描( % s ,delCity );if(LHead-Next=NULL )举止p
8、rintf (删除的城市不存在。 请先创建城市 n);返回;以下while (strcmp (l head-next-city name,delCity ) )从LHead向开头节点的下一个节点,判断节点中的城市名和输入城市名是否相等。举止LHead=LHead-Next; /如果不相等,指针LHead向下移动,继续搜索以下l头下一个=l头下一个; /如果相等,则删除此节点printf (已成功删除此城市信息 n );以下(3). /*更新操作void更新城市(city list * l head )举止char CityName10;请输入printf (请输入要更新的城市名称,返回: )扫
9、描( % s ,CityName );if(LHead-Next=NULL )举止printf (不存在要更新的城市。 请先创建城市 n);返回;以下while (strcmp (l head-next-cityname,city name ) )从LHead向开头节点的下一个节点,判断节点中的城市名和输入城市名是否相等。举止LHead=LHead-Next; /如果不相等,指针LHead向下移动,继续搜索以下printf (请输入城市的新信息。n ); /输入城市的新信息请输入printf (城市的新名称,返回: 。 扫描( % s ,l头下一个名称);printf (请输入城市的新坐标返回
10、: 。 扫描( % f ,l头部- NEX t-x );扫描( % f ,l头下一个);printf (城市信息已成功更新 n );以下(4). /*正向检索操作void FindCity(CityList* LHead )举止char CityName30;int j=0;请输入printf (请输入要搜索的城市名称并返回到: )扫描( % s ,CityName );(l头头下一个!=nullstrcmp (l head-next-cityname,city name ) )举止LHead=LHead-Next;以下if(LHead-Next=NULL )举止printf (不存在要搜索的
11、城市。 请先创建城市 n);返回;以下printf (找到这个城市。 坐标为:%.2f,%.2fn,l头上一个,l头下一个);以下(5). /*反向操作voidfindcitydistance (city list * l head )指定的坐标和距离返回城市名称char m;浮动x;浮动y;浮动距离;printf (中心坐标x,y :);扫描( % f % c % f ,x,m,y );printf (距离: );扫描( % f ,距离);if(LHead-Next=NULL )举止printf (不存在要搜索的城市。 请先创建城市 n);返回;以下LHead=LHead-Next;PS (
12、l head!=NULL )举止if (x-l头部- x ) * (x-l头部- x ) * (y-l头部- y )=距离*距离举止printf (找到这个城市。 名字是:%sn ,LHead-CityName );printf (找到这个城市。 坐标为:%.2f,%.2fn,l头x,l头y;以下LHead=LHead-Next;以下以下五、测试分析系统运行主接口如图1所示。各子系统的测试执行结果如下。1 .制定城市链表在主菜单中,输入1,按enter键,然后按照提示创建城市信息。 执行结果如图4所示。图4城市链表的建立2 .查询操作返回主菜单,输入2,按enter键,然后根据提示输入搜索到的
13、城市信息。 执行结果如图5所示。图5城市查询执行界面3 .根据位置坐标和距离查询城市在主菜单中,输入3,按enter键,然后按提示输入要搜索的城市信息。 执行结果如图6所示。图6基于位置坐标和距离进行查询4 .插入操作在主菜单中,输入4,按enter键,然后按照提示插入城市信息。 执行结果如图7所示。图7插入城市信息4 .删除操作在主菜单中,输入5,按enter键,然后按照提示删除城市信息。 执行结果如图8所示。图8删除城市信息5 .更新操作在主菜单中,输入6,然后按enter键,根据提示修改城市信息。 执行结果如图9所示。图9城市信息的更新6 .退出。在主菜单中,输入7,然后按enter键退
14、出此程序。六、用户手册(1)本程序的可执行文件为“城市链表操作系统. exe”。(2)进入本系统后,显示系统的主菜单画面。 用户可以在此画面上按提示符输入命令。七、调整报告(1)错误分析在调试过程中,while (strcmp (l head-next-cityname,city name ) )出现错误,并显示“cannotconvertparameter1fromchartosconstchar *”错误。 以前不能在strcmp函数中使用char类型,但使用了char CityName10(2)制作城市链接表时,输入城市信息很麻烦,输入城市信息后,还想输入其他城市信息时继续输入任意键,否则输入END就结束了,输入过程要注意不要混乱。(3)花了一周时间拿到这个程序的结果,虽然成功了,但是有很多错误,反复调整、修正,头晕,程序员真的很难做。八、程序清单#include#include#include /字符串处理函数的头文件#include /动态存储分配实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国智能门锁生物识别传感器安全防护与用户体验平衡研究
- 2026中国智能公交系统市场技术标准与发展
- 2026全球金融稳定委员会金融科技伦理规范与监管政策研究
- 2026中国叶黄素酯行业安全生产规范与应急管理体系建设
- 2026人工智能客服技术应用领域市场研究与发展
- 2026中国污水处理技术创新与环保产业政策导向研究报告
- 2026中国涡流泵行业人工智能技术融合应用前景报告
- 2026中国现代农业产业园运营模式创新研究报告
- 2026森林资源行业市场分析研究现状趋势发展研究报告
- 血小板储存系统:血液安全升级与智能温控驱动的血站及医院高可靠设备市场
- 《职业发展与就业指导》课件-第二章 认识自我之性格探索
- 大连海事大学3300航海英语题库词结归纳
- 高标准农田建设竣工测量技术报告
- 技术管理培训课件(全部内容)
- 《卡锁式连接预应力混凝土组合方桩图集》
- 外研版八年级英语上册各单元作文范文
- 开封市第二届职业技能大赛网络系统管理项目技术文件(国赛项目)
- DL∕T 1735-2017 大坝安全监测仪器电缆基本技术条件
- 危险化学品使用说明书
- 全国民用建筑工程设计技术措施-规划-建筑-景观
- 《项目管理学》课件
评论
0/150
提交评论