1、城市链表课程设计报告项目名称:项目组长:项目成员:班级名称:专业名称:完成时间:一、案例描述(一级标题标题四号黑体,段前断后0.5行) - 1 -1、总体描述(二级标题小四号宋体加粗) - 1 -2、模块描述 - 1 -二、设计思路 - 2 -三、程序设计 - 3 -1、数据结构描述 - 3 -2、主函数及其流程图 - 3 -3、源程序 - 3 -四、调试与分析 - 9 -1开始运行程序 - 9 -2 创建城市链表 - 10 -3 根据城市名查询城市 - 11 -4 根据离中心坐标距离查询城市 - 11 -5 插入新城市信息 - 12 -6 删除城市信息 - 12 -7 更新城市信息 - 13
2、 -五、设计总结 - 13-1、完成情况 - 13-2、心得体会 - 13 -一、案例描述1、总体描述城市链表系统是将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名、城市的位置坐标。要求能够城市名和位置坐标进行有关的查找、插入、删除和更新等操作。2、模块描述1)菜单设计:本程序菜单设计如下,用户可以根据菜单提示进行操作(1)、创建城市链表;(2)、根据城市名查询城市;(3)、根据离中心坐标距离查询城市名;(4)、插入城市信息;(5)、删除城市信息;(6)、更新城市信息;(7)、退出程序。2)添加模块:(1)主程序模块: Void main () 初始化 Switch()
3、 接受命令; 处理命令; System(“pause”);/从程序里调用“pause”命令Return 0;(2)、函数调用模块:void Init(cityList *LHead);/初始化函数void Insert(cityList *LHead); /插入函数void Delete(cityList *LHead);/ 删除函数void Create(cityList *LHead);/创建函数void FindCity(cityList* LHead);/ 根据城市名查询城市void FindCityDistance(cityList* LHead);/ 根据距离查询城市名void U
4、pdateCity(cityList* LHead);/更新函数二、设计思路本程序要求模块化管理,分成菜单函数、输入函数、输出函数、查询函数等,控制各个部分从而将程序简单化出来分析。本程序的主要功能是:创建一个城市链表,能够输入城市信息,能够根据城市名查询其位置坐标,根据离中心坐标距离查询城市名。城市链表系统功能模块图三、程序设计1、数据结构描述 本程序定义了一个结构体:城市结构体struct CITYLIST char cityName30; float x; float y; struct CITYLIST *Next;typedef struct CITYLIST cityList;/定
5、义的变量名 2、主函数及其流程图void Init(cityList *LHead); 初始化void Insert(cityList *LHead); 插入void Delete(cityList *LHead); 删除void Create(cityList *LHead); 创建void FindCity(cityList* LHead); 查找void FindCityDistance(cityList* LHead);根据中心距离查找城市void UpdateCity(cityList* LHead); 更新3、源程序#include#include#include#include#
6、include struct CITYLIST char cityName30; float x; float y; struct CITYLIST *Next;typedef struct CITYLIST cityList;void Init(cityList *LHead);void Insert(cityList *LHead);void Delete(cityList *LHead);void Create(cityList *LHead);void FindCity(cityList* LHead);void FindCityDistance(cityList* LHead);vo
7、id UpdateCity(cityList* LHead); FILE *fp;int main() cityList* LHead; cityList* Store; char choice3 = 1,2,3; LHead = (cityList*)malloc(sizeof(cityList); Init(LHead); Store = LHead; while(strcmp(choice,7) printf(tttn); time_t t = time(0); char tmp64; strftime( tmp, sizeof(tmp), ttt %Y/%m/%d %X %A ,loc
8、altime(&t) );/获取当地时间和日期 puts( tmp ); printf(tttn); printf(tttn); printf(ttt n); printf(ttt 欢迎使用城市链表系统 n); printf(ttt n); printf(tttn); printf(tttn); printf(ttt 1.创建城市链表 n); printf(ttt 2.根据城市名查询城市 n); printf(ttt 3.根据离中心坐标距离查询城市 n); printf(ttt 4.插入新城市信息 n); printf(ttt 5.删除城市信息 n); printf(ttt 6.更新城市信息
9、n); printf(ttt 7.退出 n); printf(tttn); printf(请输入选项:); scanf(%s,&choice); switch(choice0) case 1: Create(Store); break; case 2: FindCity(Store); break; case 3: FindCityDistance(Store); break; case 4: Insert(Store); break; case 5: Delete(Store); break; case 6: UpdateCity(Store); break; case 7: break;
10、default: printf(输入错误,请重新输入:); break; return 0;void Init(cityList *LHead)/初始化 LHead-Next = NULL;void Create(cityList *LHead)/创建 char sign20; char a20=N; char b20=n; printf(输入n/N退出,输入其余值继续:); scanf(%s,sign);/输入一个值 while(1) if(strcmp(sign,a)=0)/sign和a比较 break; if(strcmp(sign,b)=0) /sign和b比较 break; Inse
11、rt(LHead);/调用插入代码 printf(输入n/N退出,输入其余值继续:); scanf(%s,sign); system(cls); puts(); void FindCity(cityList* LHead)/查找 char cityName30; printf(请输入您要搜索的城市名:); scanf(%s,cityName); while(LHead-Next != NULL & strcmp(LHead-Next-cityName,cityName) LHead = LHead-Next; if(LHead-Next = NULL) printf(您要搜索的城市不存在!n)
12、; system(pause); system(cls); return; printf(城市坐标为:(%.1f,%.1f)n,LHead-Next-x,LHead-Next-y); system(pause); system(cls);void FindCityDistance(cityList* LHead)/根据中心距离查城市 char m; float x; float y; float distance; printf(请输入中心坐标x,y:); scanf(%f%c%f,&x,&m,&y); printf(请输入距离:); scanf(%f,&distance); LHead =
13、LHead-Next; while(LHead != NULL) if(x-LHead-x)*(x-LHead-x) + (y-LHead-y)*(y-LHead-y) cityName); printf(城市坐标为:(%.1f,%.1f)n,LHead-x,LHead-y); LHead = LHead-Next; system(pause); system(cls); void Insert(cityList *LHead)/插入城市链表 cityList* newNode; char m; newNode = (cityList*)malloc(sizeof(cityList); if(
14、newNode = NULL)/验证空间申请是否成功 printf(内存分配失败!n); return;/若分配内存不成功,则返回继续分配 printf(请输入城市名:); scanf(%s,newNode-cityName); printf(请输入城市坐标x,y:); scanf(%f%c%f,&newNode-x,&m,&newNode-y);/将城市信息填入新节点中 while(LHead-Next != NULL) LHead = LHead-Next;/如果非空,HLead指针的位置向后移 newNode-Next = LHead-Next; LHead-Next = newNode
15、;/将新节点插入链表 printf(插入成功!n); system(pause); system(cls); void Delete(cityList *LHead)/删除城市链表 char delCity30; printf(请输入要删除的城市名:); scanf(%s,delCity); if(LHead-Next = NULL) printf(您要搜索的城市不存在!n); system(pause); system(cls); return; while(strcmp(LHead-Next-cityName,delCity) LHead = LHead-Next;/不相等则指针LHead
16、下移,继续查找 LHead -Next = LHead-Next-Next;/相等则删除此节点 printf(删除成功!n); system(pause); system(cls);void UpdateCity(cityList* LHead)/更新 char cityName30; printf(请输入您要更新的城市名:); scanf(%s,cityName); if(LHead-Next = NULL) printf(您要搜索的城市不存在!n); system(pause); system(cls); return; while(strcmp(LHead-Next-cityName,c
17、ityName)/从LHead指向得头结点的下一个结点开判断结点中的城市名与输入城市名是否相等。 LHead = LHead-Next;/当不相等则指针LHead下移,继续查找 printf(请输入城市新名:); scanf(%s,LHead-Next-cityName); printf(请输入城市新坐标:); scanf(%f%f,&LHead-Next-x,&LHead-Next-y); printf(更新成功!); system(pause); system(cls);四、调试与分析1开始运行程序将源程序编译、链接后生成可执行文件,运行该文件会看到如图所示的提示信息城市链表系统界面运行程
18、序,根据提示进行操作2 创建城市链表创建城市链表3 根据城市名查询城市根据城市名查询城市4 根据离中心坐标距离查询城市根据离中心坐标距离查询城市5 插入新城市信息 插入新城市信息6 删除城市信息删除城市信息7更新城市信息更新城市信息五、设计总结1、完成情况何寿炯:视频制作陈邦胜:程序代码李森淼:实验报告王 赛:程序代码2、心得体会何寿炯数据结构的第一个项目就让我感觉的无形的压力,因为自己的能力不够,所以在编写程序的方面我存在这很大的漏洞,在这些日子的学习中自己感觉到自己是那么的心有余而力不足了,尽管在编写程序的过程中我们组遇到了很大的困难,但是在最终的时候我们还是完成了我们的程序,尽管这个程序
19、不是很完善,也不是很优秀,但是因为我们的能力也不是那么的强,所以能够完成作业对于我来说也是非常的开心了,这次让自己接受了教训,希望可以在接下来的程序实验中更好的完成老师所布置的作业。陈邦胜通过这次作业,我也不得不承认我对书本上的知识掌握的并不扎实,而且,也很容易在细节上出现错误。而且这是一个小组一起完成的项目,不是自己一个能独立完成的,我们需要相互见的配合。我们最后是程序地实现和视频的拍摄都需要我们一起合作,共同对程序加以改进。在整个过程中,我们对数据结构这门课地应用有了一定地了解,知道对线性表插入、删除等操作的实现,加深对课本地理解。另一方面就是小组成员的合作。怎样协调大家共同做好一件事的问
20、题。只有参与此过程才会体会团队合作所带来的快乐。李森淼在这次的实验中,我发现许多的不足之处,有很多知识感觉很模糊,也许是写的少的原因吧,但是我相信在以后的学习中,我会更加努力,通过不断的实验,我相信这些问题都不是问题,争取把不足之处给弥补了。另外我觉得团队合作能力也是不可或缺的。最后感谢老师对我的指导。王赛通过这次实验 我明白自己的知识薄弱,需要不断的学习进步。首先是对程序的分析。虽然题目的要求很简单,但我们需要更深入地思考程序的结构和数据的运用。了解实验所需要的基本程序,并用所学知识实现它一方面,对数据结构这门课地应用有了一定地了解,知道对线性表插入、删除等操作的实现,加深对课本地理解。另一方面就是小组成员的合作。怎样协调大家共同做好一件事的问题。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1