⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 城市信息查询.cpp

📁 商品货架管理
💻 CPP
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
typedef struct city                            /*定义结点的类型*/
{
	char name[20];                             /*存放城市的名称*/
    float x;                                   /*城市的X坐标*/
	float y;                                   /*城市的Y坐标*/
	struct city *next;
}city,*LinkList;
city *newcity()                                /*定义city型的函数,返回city型的指针。这个函数是用来新建链表的*/
{
    int a;                                     /*a是用来选择执行路径的,a=1新建一个结点,a=0则退出输入,a为其他就不合法*/
	city *l,*r,*t; 
	r=l=(city *)malloc(sizeof(city));
    while(1)
	{
        cout<<"确认录入请输入1"<<endl;
	    cout<<"取消录入请输入0"<<endl;
		cin>>a;
		if(a==1)
		{
            cout<<"请输入城市名称和坐标"<<endl;
            t=(city *)malloc(sizeof(city));
        	cin>>(t->name)>>(t->x)>>(t->y);
        	r->next=t;
        	r=t;
		}
		else if(a==0)
		{
            r->next=NULL;break;
		}
		else
		{
			cout<<"输入不合法"<<endl;break;
		}
	}
    r->next=NULL;
	return l;
} 
city *getcity(city *l,char *name)                        /*这个函数是通过城市名来找坐标的*/
{ 
	city *s=l;
	while((s!=NULL)&&(strcmp(s->name,name)!=0))          /*s不为空或strcmp函数不为0,s指针向后移一个*/
		s=s->next;
    if(s!=NULL)                                          /*s不为空则输出s所指的结点,即城市信息*/
	    cout<<(s->name)<<"  "<<(s->x)<<"  " <<(s->y)<<endl;
	else cout<<"未找到或输入不正确"<<endl;
	return l;
	
}
void search(city *l,float x,float y, float b)            /*这个函数是用来搜寻附近城市的*/
{	       
	float v;                                             /*v是用来判断距离的*/                    
    city *n=l->next;    
    while(n!=NULL)
    {
		 v=(n->x-x)*(n->x-x)+(n->y-y)*(n->y-y);          /*用直角三角形定理来判断*/
	     if(v<(b*b))
		 {
	     cout<<(n->name)<<"   "  <<(n->x) <<","<< (n->y)<<endl;
	     n=n->next;
		 }
		 else
			 cout<<"未找到"<<endl;break;
    }
}
void main()
{             
	int a,c;                                            /*a是进人程序时录入的一个参数,c是switch函数用到的*/
	float x,y,b;                                        /*x,y是是搜寻的参考坐标系,b是搜寻的距离大小*/
	char name[20];
	city *l,*s;
	cout<<"            进入城市输入查询系统请按1"<<endl;
	cin>>a;	
	while(a!=0)
	{    
		cout<<"          城市输入查询系统"<<endl;
	    cout<<"          1.录入城市名和坐标  "<<endl;
     	cout<<"          2.根据城市名称搜索  "<<endl;
        cout<<"          3.搜索距离内的城市  "<<endl;
        cout<<"          0.退出"<<endl;
		cout<<"\t"<<endl;
		cout<<"请选择:";
		cin>>c;
		switch(c)
		{
            case 1:
	            l=newcity();break;                       /*进入录入函数*/
            case 2:
				cout<<"输入要寻找的城市名称"<<endl;      
	            cin>>name;
	            l=getcity(l,name);                       /*根据城市名称搜索*/
                break;
            case 3:				
                cout<<"请输入本地城市的坐标"<<endl;
	            cin>>x>>y;
	            cout<<"请输入需要的距离半径"<<endl;
	            cin>>b;
	            search(l,x,y,b);                         /*搜索距离内的城市*/                 
				break;
           case 0:a=0;break;               
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -