c语言菜单经典实例

2023-05-16

#include <conio.h>
#include<dos.h>
#include <graphics.h>
#include<stdio.h>
#include<stdlib.h>
/*定义一些常数*/
#define NO 0
#define YES 1
#define NONE -1
#define MAX_MENU 7/*根据情况改变可以在菜单显示的最大项*/
/*全局参数*/
int X,Y;
int Selection;
int button,x,y;
void *p;
size_t area;
/*菜单结构*/
struct MENU
{
      /*左上角*/
      int x; 
      int y;
      /*右下角*/
      int x1;
      int y1;
      unsigned char Active[MAX_MENU];/* 菜单项是否激活的标志*/
      char *head;/* 菜单的名字(可选项)*/
};
int MouseOn(struct MENU *t);
void Process();
void Xorbar(int sx,int sy,int ex,int ey,int c);
void Show();
void Hide();
void Status();
/* 通过下面的参数用户可以改变按钮的位置。*/
struct MENU File={200,110,250,130};
struct MENU Edit={295,110,345,130};
struct MENU Help={390,110,440,130};
struct MENU Close={600,10,620,30};
struct MENU Neeraj={380,300,460,315};
void main()
{
 int gd = DETECT,gm;
 
 /*初始化图形界面*/
 initgraph(&gd, &gm,"");
 Selection=NONE;
 /*是否激活菜单项,YES表示激活;NO表示取消激活*/
 for(gd=0;gd<MAX_MENU;gd++)
 {
 File.Active[gd]=YES;
 Edit.Active[gd]=YES;
 Help.Active[gd]=YES;
 Close.Active[gd]=YES;
 }
 /*菜单项的名字,用户可以修改以显示其他的名称*/
 File.head="[ File Menu ]";
 Edit.head="[ Edit Menu ]";
 Help.head="[ Help Menu ]";
 Close.head="[ Exit ]";
 /*为界面分配内存*/
 area=p_w_picpathsize(0,0,150,150);
 p=malloc(area);
 
 /*没有足够的内存*/
 if(p==NULL)
 {
 closegraph();
 restorecrtmode();
 printf("Not Enough Memory !\n try to reduce the area used.\n");
 exit(1);
 }
 setfillstyle(1,7);
 bar(0,0,640,480);
 X=2;Y=2;
 /*绘制这个界面*/
 Process();
 End();
 /*关闭图形显示方式*/
 closegraph();
 printf("GUI-MENUS By Neeraj Sharma  -   [email]n21@indiatimes.com[/email]\n");
 getch();
}
void Process()
{
 /*文件菜单项的子菜单项*/
 char *fm[]={"New","Open","Save","Save as","Exit"};
 /*编辑菜单项的子菜单项*/
 char *em[]={"Undo","Cut","Copy","Paste","Delete","Select All"};
 /*帮助菜单项的子菜单项*/
 char *hm[]={"Help Topics","About Menus"};
 
 /* 如果用户在这里改变的了菜单项的值,那么也同样需要改变在函数
    中的PullMenuDown(char *,int)值*/
 char KEY;
 /* 绘制各个菜单 */
 Win(140,100,500,140);
 /* 绘制文件菜单项 */
 DrawBtn(&File,"File");
 /* 绘制编辑菜单项 */
 DrawBtn(&Edit,"Edit");
 /* 绘制帮助菜单项*/
 DrawBtn(&Help,"Help");
 settextstyle(0,0,0);
 outtextxy(Close.x+7,Close.y+7,"x");
 Comments();
 Show();
 /* 正如下面所示用户可以激活和取消激活一个菜单项
    下面的'save as'被取消激活*/
 File.Active[3]=NO;/* Save as*/
 Edit.Active[0]=NO;/* 取消激活*/
 while(1)
 {
  if(kbhit())
  {
   KEY=getch();
   /*如果用户按下"ESC"或者"-"推出程序*/
   if(KEY==27|| KEY==45) break;
  }
  Status();
  /*如果按下鼠标左键*/
  if(button==1)
  {
    /*用户点击Close*/
    if(MouseOn(&Close)) break;
    /*用户点击File*/
    if(MouseOn(&File))
    {
     PullMenuDown(fm,5,&File);/* 菜单项为5*/
     if(Selection==NONE) Msg("No Selection !");
     else Msg(fm[Selection]);
     if(Selection==4) break;
    }
    /*用户点击Edit*/
    if(MouseOn(&Edit))
    {
     PullMenuDown(em,6,&Edit);/* 菜单项为6*/
     if(Selection==NONE) Msg("No Selection !");
     else Msg(em[Selection]);
    }
    /*用户点击Help*/
    if(MouseOn(&Help))
    {
     PullMenuDown(hm,2,&Help);/* 菜单项为2*/
     if(Selection==NONE) Msg("No Selection !");
     else Msg(hm[Selection]);
     if(Selection==1) Msg("* Programming By NEERAJ SHARMA *");
    }
  }
  else
  {
   /*鼠标在那个菜单项上,就高亮显示之*/
   
   /*高亮显示文件菜单项*/
   if(MouseOn(&File)) Hlight(&File);
   /*高亮显示编辑菜单项*/
   if(MouseOn(&Edit)) Hlight(&Edit);
   /*高亮显示帮助菜单项*/
   if(MouseOn(&Help)) Hlight(&Help);
   /*高亮显示关闭菜单项*/
   if(MouseOn(&Close)) Hlight(&Close);
   if(MouseOn(&Neeraj))
   {
    Msg("Hello, everyone");
    while(MouseOn(&Neeraj))
    {
     Status();
     if(button!=0) break;
     if(kbhit()) break;
     }
     Msg("");
   }
  }
 }
 Msg(":: Bye Bye ::");
}
/* 绘制菜单项 */
DrawBtn(struct MENU *tm,char *txt)
{
 /*设置绘制的颜色*/
 setcolor(0);
 /*设置文本格式*/
 settextstyle(2,0,4);
 /*输出txt文本*/
 outtextxy(tm->x+15,tm->y+4,txt);
}
/*高亮显示函数*/
Hlight(struct MENU *t)
{
/* 高亮 */
 winp(t,0);
/* 显示菜单项名称  */
 Msg(t->head);
 /*在没有输入的情况下,一直高亮*/
 while(MouseOn(t))
 {
 Status();
 if(button!=0) break;
 if(kbhit()) break;
 }
 /*消除高亮*/
 setcolor(7);
 Hide();
 rectangle(t->x,t->y,t->x1,t->y1);
 Msg("");
 /*重绘*/
 Show();
}
int MouseOn(struct MENU *t)
{
 int flag;
 flag=0;
 if(x>=t->x && x<=t->x1 && y>=t->y && y<=t->y1) flag=1;
 return flag;
}
void Xorbar(int sx,int sy,int ex,int ey,int c)
{
 int i;
 setwritemode(1);
 setcolor(c);
 Hide();
 for(i=sy;i<=ey;i++)
 line(sx,i,ex,i);
 Show();
 setwritemode(0);
}
Push(struct MENU *tm)
{
 winp(tm,1);
 while(button==1)
 {
  Status();
  if(kbhit()) break;
 }
}
Up(struct MENU *tm)
{
 setcolor(7);
 Hide();
 rectangle(tm->x,tm->y,tm->x1,tm->y1);
 Show();
 while(button==1)
 {
  Status();
  if(kbhit()) break;
 }
}
/*弹出下拉菜单*/
PullMenuDown(char *H[],int n,struct MENU *tm)
{
 int i;
 i=n*20;
 /* 保存背景*/
 Push(tm);
 /* 隐藏鼠标光标*/
 Hide();
 /* 把菜单项位图读入内存,以供收回弹出项时重新绘制*/
 getp_w_picpath(tm->x+1,tm->y1+2,tm->x+100,tm->y1+i+5,p);
 /* 重新设置这块区域*/
 Win(tm->x+1,tm->y1+2,tm->x+100,tm->y1+i+5);
 setcolor(0);
 settextstyle(2,0,4);
 /*弹出下拉菜单项*/
 for(i=0;i<n;i++)
 {
  if(!tm->Active[i])
  {
   setcolor(15);
   outtextxy(tm->x+15,tm->y1+9+i*20,H[i]);
   setcolor(0);
   outtextxy(tm->x+14,tm->y1+8+i*20,H[i]);
  }
  else    outtextxy(tm->x+14,tm->y1+8+i*20,H[i]);
 }
 /*显示鼠标光标*/
 Show();
 while(button==1)  Status();
 HandleMenu(n,tm);
}
PullMenuUp(int n,struct MENU *tm)
{
 int i;
 /*隐藏鼠标光标*/
 Hide();
 /* 把读入内容的原菜单项位图重新绘制出来*/
 putp_w_picpath(tm->x+1,tm->y1+2,p,COPY_PUT);
 /*显示鼠标光标*/
 Show();
 Up(tm);
}
/* 处理菜单项命令函数 */
HandleMenu(int n,struct MENU *tm)
{
 int i;
 char Key;
 setcolor(0);
 Selection=NONE;
 i=0;
 while(1)
 {
  Status();
  if(button==1) break;
  for(i=0;i<n;i++)
  {
   Status();
   if(MouseOn1(tm->x+4,tm->y1+6+i*20,tm->x+97,tm->y1+22+i*20))
   {
       Xorbar(tm->x+3,tm->y1+6+i*20,tm->x+97,tm->y1+22+i*20,14);
       while(MouseOn1(tm->x+4,tm->y1+6+i*20,tm->x+97,tm->y1+22+i*20))
       {
    Status();
    if(button==1)
    {
     if(tm->Active[i]==YES)
     {
      Selection=i;break;
     }
     else
     Selection=NONE;
    }
    if(kbhit()) break;
       }
       Xorbar(tm->x+3,tm->y1+6+i*20,tm->x+97,tm->y1+22+i*20,14);
   }
  }
 }
 PullMenuUp(n,tm);
}
MouseOn1(int cx,int cy,int cx1,int cy1)
{
 int flag;
 flag=0;
 if(x>=cx && x<=cx1 && y>=cy && y<=cy1) flag=1;
 return flag;
}
/* Mouse & win routines */
union REGS i,o;
struct SREGS ss;
/* 显示鼠标光标函数 */
void Show()
{
  i.x.ax=1;
  int86(0x33,&i,&o);
}
/* 隐藏鼠标光标函数*/
void Hide()
{
  i.x.ax=2;
  int86(0x33,&i,&o);
}
/* 获得鼠标状态函数 */
void Status()
{
  i.x.ax=3;
  int86(0x33,&i,&o);
  button=o.x.bx;
  x=o.x.cx;
  y=o.x.dx;
}
/*绘制菜单项的背景和边框*/
winp(struct MENU *t,int state)
{
   Hide();
   /*非高亮模式*/
   if(state==1)
   {
    /*两条暗边框线*/
 setcolor(0);
 line(t->x,t->y,t->x,t->y1);
 line(t->x,t->y,t->x1,t->y);
 /*两条亮边框线*/
 setcolor(15);
 line(t->x1,t->y,t->x1,t->y1);
 line(t->x,t->y1,t->x1,t->y1);
  }
  /*高亮模式*/
  else
  {
 /*两条亮边框线*/
 setcolor(15);
 line(t->x,t->y,t->x,t->y1);
 line(t->x,t->y,t->x1,t->y);
 /*两条暗边框线*/
 setcolor(0);
 line(t->x1,t->y,t->x1,t->y1);
 line(t->x,t->y1,t->x1,t->y1);
  }
  Show();
}
/*绘制一个矩形区域*/
Win(int sx,int sy,int ex,int ey)
{
   Hide();
   /*设置填充的颜色*/
   setfillstyle(1,7);
   /*绘制一个区域*/
   bar(sx,sy,ex,ey);
   /*两条亮边框线*/
   setcolor(15);
   line(sx,sy,sx,ey);
   line(sx,sy,ex,sy);
   /*两条暗边框线*/
   setcolor(0);
   line(ex,sy,ex,ey);
   line(sx,ey,ex,ey);
   Show();
}
Msg(char *m)
{
 int l;
 setcolor(14);
 rectangle(18,438,622,477);
 setfillstyle(1,0);
 bar(20,440,620,475);
 if(MouseOn(&Neeraj))
 {
  settextstyle(2,0,7);
  setcolor(11);
  l=textwidth(m)/2;
  outtextxy(320-l,440,m);
 }
 else
 {
  settextstyle(2,0,8);
  setcolor(15);
  l=textwidth(m)/2;
  outtextxy(320-l,440,m);
  outtextxy(321-l,441,m);
 }
}
Comments()
{
   setfillstyle(1,0);
   bar(140,5,500,40);
   setcolor(14);
   rectangle(140,5,500,40);
   settextstyle(2,0,8);
   setcolor(15);
   outtextxy(260,10,"GUI-MENUS");
   setfillstyle(1,8);
   bar(140,150,502,402);
   setcolor(14);
   rectangle(138,148,502,402);
   Msg("Welcome !");
   settextstyle(2,0,5);
   setcolor(10);
   outtextxy(158,180,"Hello Friends !");
   settextstyle(2,0,4);
   outtextxy(260,200,"Here i am with my menu program.");
   outtextxy(158,220,"As you can see it's like windows menu,you can");
   outtextxy(158,240,"add more menus to it. It's just a concept for");
   outtextxy(158,260,"building more menus. I hope you will like my effort,");
   outtextxy(158,280,"email me at :      [email]n21@indiatimes.com[/email]");
   setcolor(14);
   outtextxy(370,300,"- Neeraj Sharma");
   line(380,304+textheight("A"),380+textwidth("Neeraj Sharma"),304+textheight("A"));
}
End()
{
  int i,j;
  setcolor(0);
  Hide();
  for(j=0;j<40;j++)
  {
 for(i=0;i<481;i+=20)
    line(0,0+i+j,640,j+0+i);
 delay(100);
 if(kbhit()) if(getch()==27) break;
  }
  settextstyle(2,0,5);
  setcolor(15);
  outtextxy(220,180,"Thanks for being with us !");
  Show();
  delay(3000);
}

转载于:https://blog.51cto.com/luoluo/41749

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言菜单经典实例 的相关文章

  • SLAM中双目三角化

    双目三角化 形式1 xff1a 在等式左边同时乘 x 1 x 1 x 1 和
  • 用手机对电脑进行远程关机

    PS 本人一月份写的文章 xff0c 贴在这里 昨天真是奔波的一天 xff0c 中午烤肉逛街下午寿司看电影 xff08 陪老婆 xff09 今天中午又是麻辣诱惑 额 xff0c 不争气的肠胃果然导致我拉肚子了 不过 xff0c 话说昨天下午
  • 程序员到底是一个什么职业?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 程序员首先是雇员 然后是工程师 xff1b 比起创造力 xff0c 工程能力对这个职位更为重要 为什么有人在技术造神 大家应该已经感受到 xff0c 技术圈这两年已经和娱乐
  • android 清理内存杀死service,关于Service常驻内存不被清理的解决方法.

    众所周知 Service是跑后台的 但是有些Rom厂商把一键清理做的真是太好用了 以至于一键清理变成了一种习惯 Service已经变的不再是Service了 那为什么像诸如360 微信 QQ 却可以傍山傍水 哦 用错词了 大家懂的 言归正传
  • 自主做一个类似于微博的项目(计划篇)

    项目名称 xff1a archou微博 项目架构 xff1a B S架构 项目开发语言 xff1a java jquery html hql 开发框架 xff1a spring mvc hibernate 开发平台 xff1a window
  • [工作记录] 点云线特征提取

    概述 目前的点云线特征提取方法可以分为 xff1a 1 基于面片patch的线特征提取 xff0c 主要可以提取交线 xff0c 边缘线 这类方法首先都是要提取面 xff0c 然后对每个面对象提取 又可以分为 xff1a 基于图像的提取 x
  • Javascript闭包:从理论到实现,[[Scopes]]的每一根毛都看得清清楚楚

    昨天我写到 所有Javascript函数都是闭包 xff0c 有些同学表示还是接受不能 我好好的一个函数 xff0c 怎么就成闭包了 xff1f 那么 xff0c 让我们来探究一下 xff0c Chrome xff08 V8 xff09 到
  • mysql5.7安装审计插件libaudit_plugin.so

    1 下载插件 https bintray com mcafee mysql audit plugin release 1 1 7 805 files 2 解压插件复制到mysql lib库插件目录下 xff1a unzip audit pl
  • 通过jdbc连接hive报java.sql.SQLException: Method not supported问题

    今天尝试通过jdbc连接hive xff0c JDBC直接连接是正常成功的 xff0c 实例 xff1a import java sql Connection import java sql DriverManager import jav
  • DHCP介绍及H3C配置DHCP

    1 DHCP引入 1 简介 DHCP xff08 动态主机设置协议 xff09 是一个局域网的网络协议 xff0c 使用UDP协议工作 xff0c 主要作用是集中的管理 分配IP地址 xff0c 使网络环境中的主机动态的获得IP地址 Gat
  • centos7-内核版本降级

    环境介绍 线上环境运行centos 内核版本规定为 xff1a CentOS Linux release 7 3 1611 Core 查看内核版本参考命令 xff1a root 64 localhost cat etc redhat rel
  • SLAM中多目三角化

    多目三角化 1 闭式求解1 1 DLT 最小二乘方法求解1 2 最小化3D距离 2 构建优化方法求解3 构建高斯深度滤波器 LSD SLAM4 构建Beta分布滤波器 SVO5 EKF SLAM参考资料 在能实现双目计算特征点的深度基础上
  • 微软操作系统 Windows Server 2012 R2 官方原版镜像

    微软操作系统 Windows Server 2012 R2 官方原版镜像 Windows Server 2012 R2 是由微软公司 xff08 Microsoft xff09 设计开发的新一代的服务器专属操作系统 xff0c 其核心版本号
  • 最近很忙,也很累,忙里偷闲,尝试了下apache solr的安装

    最近很忙 xff0c 也很累 xff0c 忙里偷闲 xff0c 尝试了下apache solr的安装 第一次接触java的 xff0c 就和初次安装NET一样 部署开发环境折腾来折腾去 几经波折总算成功了 分享下个人安装的过程 xff1a
  • "类工厂模式"改写SqlHelper

    看到标题您一定很疑惑 xff0c 23种经典设计模式什么时候多了一个 34 类工厂模式 34 稍等 xff0c 请听我慢慢道来 实践是检验真理的唯一途径 最近用了 34 类工厂模式 34 改写了我公司的SqlHelper类 xff0c 改写
  • C++中基于Crt的内存泄漏检测

    尽管这个概念已经让人说滥了 xff0c 还是想简单记录一下 xff0c 以备以后查询 ifdef DEBUG define DEBUG CLIENTBLOCK new CLIENT BLOCK FILE LINE else define D
  • revit卸载/完美解决安装失败/如何彻底卸载清除干净revit各种残留注册表和文件的方法...

    在卸载revit重装revit时发现安装失败 xff0c 提示是已安装revit或安装失败 这是因为上一次卸载revit没有清理干净 xff0c 系统会误认为已经安装revit了 有的同学是新装的系统也会出现revit安装失败的情况 xff
  • 内核必须懂(三): 重编Ubuntu18.04LTS内核4.15.0

    目录 前言编译前准备编译安装重启之后最后 前言 之前在写系统调用的时候也说过 但是当时理解有限 写的不好 这次再重新编译内核 分享经验 编译前准备 首先补包 sudo apt get install build essential kern

随机推荐

  • STL视频_01

    ZC xff1a 这里视频里面有一个调试小技巧 xff0c VS08 VS2010开始 xff0c 控制台程序会自动退出 xff08 不像VC6 xff09 xff0c 那么可以在 函数退出的最后一句语句上设置断点 xff0c 然后查看控制
  • 四轴自适应控制算法的一些尝试开源我的山猫飞控和梯度在线辨识自适应等算法—(转)...

    本文的最主要目的在于抛砖引玉 xff0c 阿莫论坛真的是非常好的一个论坛 xff0c 没有这个论坛 xff0c 没有那么多这个论坛上的前人无私的奉献和热烈的讨论 xff0c 我想我是怎么也无法入门四轴的控制的 只是论坛上已经很多年都没有看到
  • ubuntu VNC连接树莓派

    其实ubuntu vnc连接树莓派很简单 xff0c 首先给树莓派安装vnc服务 xff0c 然后打开vnc服务 xff0c 最后ubuntu用远程桌客户端测试连接就好了 不过要注意连接前一定要打开vnc服务 xff0c 树莓派连接要有控制
  • nuttx学习-0:模拟安装

    一 Nuttx 模拟运行环境的安装 xff1a 1 文件要求 xff0c 主要需要三个文件 xff1a nuttx 7 24 tar apps 7 24 tar nuttx tools tar 2 环境要求 xff1a sudo apt g
  • ORB-SLAM3 安装运行

    ORB SLAM3 安装运行 1 Pangolin 安装2 ORB SLAM3安装3 数据集测试3 1 EuRoC 双目 43 IMU测试3 2 TUM VI 双目鱼眼 43 IMU测试3 3 ROS接口3 3 1 启动EUROC 双目 4
  • ros:出现:error: ros/ros.h: No such file or directory

    出现这个问题是因为在cmakelist txt中没有声明对roscpp的依赖 在find package中添加roscpp 重新执行就ok了 转载于 https www cnblogs com fuhang p 9934092 html
  • IOS-如何优雅地拦截按钮事件(判断是否需要登录)

    关于这个标题 xff0c 起因是这样的 最近一次做项目需求时 xff0c 遇到这样一个需求 xff0c 就是本来我们App是必须注册或者第三方登录才可以使用 xff0c 现在希望不登录也可以浏览App里面的内容 xff0c 只是在需要的时候
  • postman安装使用教程---图文讲解

    一 安装postman 1 xff0c 安装包安装 官网下载地址 https www getpostman com 选择好对应的版本下载 下载完后直接安装 2 xff0c 插件包安装 可以在谷歌的应用商店里面找到 或者在网上下载 准备了一个
  • ArUco----一个微型现实增强库的介绍及视觉应用(一)

    ArUco 一个微型现实增强库的介绍及视觉应用 xff08 一 xff09 ArUco 一个微型现实增强库的介绍及视觉应用 xff08 一 xff09 一 ArUco简介 ArUco是一个开源的微型的现实增强库 xff0c 目前好像已经集成
  • matlab 图像基本矩阵,MATLAB基本的使用方法归纳(图像,矩阵及函数)

    读取图像 xff1a 用imread函数读取图像文件 xff0c 文件格式可以是TIFF JPEG GIF BMP PNG等 比如 gt gt f 61 imread 39 chestxray jpg 39 读进来的图像数据被保存在变量f中
  • VR直播云服务解决方案

    VR直播 通过VR xff08 虚拟现实 xff09 技术 xff0c 用户通过佩戴相关硬件设备 xff0c 通过平台提供的APP进行直播观看 主播需采用360 全景的拍摄设备 xff0c 捕捉多角度画面 xff0c 进行多画面传输后 xf
  • VirtualBox快照(Snapshot)功能使用及注意事项

    这几天在使用QT编写一个ARM的图形化应用程序 xff0c 需要在PC端使用linux下的QtCreator 搭建环境神马的还是挺麻烦的一个过程 依照我的风格 xff0c 这么麻烦的东西一定不要重复做第二遍 剧透下 xff0c 最后还是很悲
  • docker学习笔记11:Dockerfile 指令 CMD介绍

    我们知道 xff0c 通过docker run 创建并启动一个容器时 xff0c 命令的最后可以指定容器启动后在容器内立即要执行的指令 xff0c 如 xff1a docker run i t ubunu bin bash 表示容器启动时立
  • 麦克纳姆轮运动学分析

    麦克纳姆轮运动学分析 是最常见的安装方式 麦轮底盘的正逆运动学模型 以O 长方形的安装方式为例 xff0c 四个轮子的着地点形成一个矩形 正运动学模型 xff08 forward kinematic model xff09 将得到一系列公式
  • 传小米秘密自研操作系统mios 将应用于小米4(

    http tieba baidu com f kw 61 E5 8D 97 E4 BA AC E8 85 8B E8 87 AD E5 8C BB E9 99 A2 E3 80 90 E5 92 A8 E8 AF A2QQ EF BC 9A
  • OV2SLAM 安装运行

    OV2SLAM 安装运行 1 安装依赖项1 1 安装 OpenGV1 2 安装OV2SLAM 2 运行 OV2SLAM2 1 运行EUROC数据集2 2 运行KITTI数据集 参考资料 OV2SLAM 1 是2021年新开源出来的单目 43
  • IMU助力无人机自主精准着陆

    一盒用户急需的药品由无人机配送到小区中 xff0c 一键下单10分钟热气腾腾的外卖随着无人机送到家门口 这不是科幻作品中才有的景象 xff0c 而是已经实现的场景 但在实际应用中 xff0c 无人机配送还存在着预估位移不准确 着陆偏差过大等
  • Maven自动FTP远程部署

    参照官网文档 xff1a https maven apache org plugins maven deploy plugin examples deploy ftp html 1 在pom xml中加入 xff1a lt project
  • 面试感悟----一名3年工作经验的程序员应该具备的技能

    原文地址http www cnblogs com xrq730 p 5260294 html xff0c 转载请注明出处 xff0c 谢谢 xff01 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结 xff0c 因此有了这
  • c语言菜单经典实例

    include lt conio h gt include lt dos h gt include lt graphics h gt include lt stdio h gt include lt stdlib h gt 定义一些常数 d