第七周项目一——图形用户界面(GUI)应用程序开发初体验

这两天一直在练用VC++6.0做一些小的项目,第一次看着别人给出的步骤,才写出来。然后我就一直自己反复的训练一个项目,我就不信练不会,终于,我已经能很熟练的做一些小的项目。以下是我练过之后总结的,记录自己的努力与辛苦!

这是实现求三角形面积的C++代码:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
  double a,b,c,p,s,per;
  p=(a+b+c)/2;
  if((a+b)>c&&(a+c)>b&&(b+c)>a&&a>0&&b>0&&c>0)
  {
      per=a+b+c;
      s=sqrt(p*(p-a)*(p-b)*(p-c));
      cout<<per<<"  "<<s<<endl;
  }
  else
      cout<<"不能构成三角形!";
return 0;


第一步:

①进入VC++6.0界面后点击左上角File下的New,然后建立一个MFC APPWizard(exe),在project name中输入文件名(自命名),如图所示:

 

 

②点击ok后,进入新的选择界面(多个),只需选中Dialog based,可以直接点Finish了(为了保险还是next几次检查一下的好)如图:

 

 一直点击Next,然后出现了以下的窗口,点击Next:

 

 

点击Finish即可,进入下一个窗口,在点击OK即可:

第二步 安排窗口界面中的控件

进入设计界面后,将Controls条拖到旁边灰色区域,然后就可以拖控件了。

需要添加的控件有静态文本控件 (Aa)(填写变量和所求的量的名称)和编辑框控件(abl)(填写变量的值),还有交互式控件(矩形一样的按钮,添加之后名为button)。添加时只需要点击对应控件后在设计界面按住鼠标左键拖动就行了。

①首先添加5个静态文本控件按如图所示排列位置(可以修改文本控件的大小,最好不要太大),并修改文本内容分别为a,b,c,周长,面积;(可以直接点击对应的文本框后按键修改,也可以右键点击文本框,选择properties后修改caption。)

②然后添加五个编辑框控件,放置在每个文本框控件后面.

③添加交互式控件。修改控件名(这个只能右键选择properties后修改)

如图所示:

 

 ④确认输入a、b、c的编辑框的ID分别为IDC_EDIT1、IDC_EDIT2和IDC_EDIT3,用于输出周长和面积的两个编辑框的ID分别为IDC_EDIT4、和IDC_EDIT5。"

 

⑤测试对话框:在layout(布局)菜单中,选择tset(测试)命令,可以看到将来运行时的外观,也可以直接按Ctrl+T显示:

第三步 将编辑框控件与变量绑定

为了让程序从窗口的编辑框中提取出输入的值,要设置变量,并与控件绑定。

  在设计窗口中点右键,选择ClassWizard(建立类向导)

点击MemberVariables标签,设置各个控件对应的变量,如图所示:

 

双击IDC_EDIT1,为其添加对应的变量,变量名为m_a,变量类型为double,按下图输入。

同法,把其他的控件设置变量,如图所示:

第四步为按钮设置将来点击后要执行的程序

切换到Message Maps标签页

为按钮添加BN_CLICKED消息映射:点击Messages:框中的BN_CLICKED,再单击右侧的“Add Function…”按钮,在新出现的弹出式窗口中点OK。

之后可以看到加入了Member Functions

 

双击新增加的成员函数,现在需要输入程序了

输入的程序这样的,程序设计的方法还是老一套,不过是增加了控件与变量传值的要求,变量用的是与控件绑定的变量:

不要忘记加头文件!!

输入三边长,求出周长与面积!

 

心得体会:已经能很熟练的做出类似于这样的项目了,好开心,继续加油吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux基础、基本操作命令讲起,为Linux初学者能快速入门提供了保证。接着系统地讲解了嵌入式Linux的环境搭建,以及嵌入式Linux的I/O与文件系统的开发、进程控制开发、进程间通信开发、网络应用开发、基于中断的开发、设备驱动程序的开发以及嵌入式图形界面开发等,并且还安排了丰富的实验内容与课后实践,使读者能够边学边用,更快更好地掌握所学知识。   《嵌入式Linux应用程序开发标准教程(第2版)》可作为高等院校电子类、电气类、控制类等专业高年级本科生、研究生学习嵌入式Linux的教材,也可供希望转入嵌入式领域的科研和工程技术人员参考使用,还可作为嵌入式培训班的教材和参考书。 第1章 Linux快速入门 1.1 嵌入式Linux基础 1.1.1 Linux发展概述 1.1.2 Linux作为嵌入式操作系统的优势 1.1.3 Linux发行版本 1.1.4 如何学习Linux 1.2 Linux安装 1.2.1 基础概念 1.2.2 硬件需求 1.2.3 安装准备 1.3 Linux文件及文件系统 1.3.1 文件类型及文件属性 1.3.2 文件系统类型介绍 1.3.3 Linux目录结构 1.4 实验内容——安装Linux操作系统 1.5 本章小结 1.6 思考与练习 第2章 Linux基础命令 2.1 Linux常用命令 2.1.1 用户系统相关命令 2.1.2 文件相关命令 2.1.3 压缩打包相关命令 2.1.4 文件比较合并相关命令 2.1.5 网络相关命令 2.2 Linux启动过程详解 2.2.1 概述 2.2.2 内核引导阶段 2.2.3 init阶段 2.3 Linux系统服务 2.3.1 独立运行的服务 2.3.2 xinetd设定的服务 2.3.3 系统服务的其他相关命令 2.4 实验内容 2.4.1 在Linux下解压常见软件 2.4.2 定制Linux系统服务 2.5 本章小结 2.6 思考与练习 第3章 Linux下C编程基础 3.1 Linux下C语言编程概述 3.1.1 C语言简单回顾 3.1.2 Linux下C语言编程环境概述 3.2 常用编辑器 3.2.1 进入vi 3.2.2 初探emacs 3.3 gcc编译器 3.3.1 gcc编译流程解析 3.3.2 gcc编译选项分析 3.4 gdb调试器 3.4.1 gdb使用流程 3.4.2 gdb基本命令 3.5 make工程管理器 3.5.1 makefile基本结构 3.5.2 makefile变量 3.5.3 makefile规则 3.5.4 make管理器的使用 3.6 使用autotools 3.6.1 autotools使用流程 3.6.2 使用autotools所生成的makefile 3.7 实验内容 3.7.1 vi使用练习 3.7.2 用gdb调试程序的bug 3.7.3 编写包含多文件的makefile 3.7.4 使用autotools生成包含多文件的makefile 3.8 本章小结 3.9 思考与练习 第4章 嵌入式系统基础 4.1 嵌入式系统概述 4.1.1 嵌入式系统简介 4.1.2 嵌入式系统发展历史 4.1.3 嵌入式系统的特点 4.1.4 嵌入式系统的体系结构 4.1.5 几种主流嵌入式操作系统分析 4.2 ARM处理器硬件开发平台 4.2.1 ARM处理器简介 4.2.2 ARM体系结构简介 4.2.3 ARM9体系结构 4.2.4 S3C2410处理器详解 4.3 嵌入式软件开发流程 4.3.1 嵌入式系统开发概述 4.3.2 嵌入式软件开发概述 4.4 实验内容——使用JTAG烧写NandFlash 4.5 本章小结 4.6 思考与练习 第5章 嵌入式Linux开发环境的搭建 5.1 嵌入式开发环境的搭建 5.1.1 嵌入式交叉编译环境的搭建 5.1.2 超级终端和minicom配置及使用 5.1.3 下载映像到开发板 5.1.4 编译嵌入式Linux内核 5.1.5 Linux内核源码目录结构 5.1.6 制作文件系统 5.2 U-Boot移植 5.2.1 Bootloader介绍 5.2.2 U-Boot概述 5.2.3 U-Boot源码导读 5.2.4 U-Boot移植主要步骤 5.3 实验内容——创建Linux内核和文件系统 5.4 本章小结 5.5 思考与练习 第6章 文件I/O编程 6.1 Linux系统调用及用户编程接口(API) 6.1.1 系统调用 6.1.2 用户编程接口(API) 6.1.3 系统命令 6.2 Linux中文件及文件描述符概述 6.3 底层文件I/O操作 6.3.1 基本文件操作 6.3.2 文件锁 6.3.3 多路复用 6.4 嵌入式Linux串口应用编程 6.4.1 串口概述 6.4.2 串口设置详解 6.4.3 串口使用详解 6.5 标准I/O编程 6.5.1 基本操作 6.5.2 其他操作 6.6 实验内容 6.6.1 文件读写及上锁 6.6.2 多路复用式串口操作 6.7 本章小结 6.8 思考与练习 第7章 进程控制开发 7.1 Linux进程概述 7.1.1 进程的基本概念 7.1.2 Linux下的进程结构 7.1.3 Linux下进程的模式和类型 7.1.4 Linux下的进程管理 7.2 Linux进程控制编程 7.3 Linux守护进程 7.3.1 守护进程概述 7.3.2 编写守护进程 7.3.3 守护进程的出错处理 7.4 实验内容 7.4.1 编写多进程程序 7.4.2 编写守护进程 7.5 本章小结 7.6 思考与练习 第8章 进程间通信 8.1 Linux下进程间通信概述 8.2 管道 8.2.1 管道概述 8.2.2 管道系统调用 8.2.3 标准流管道 8.2.4 FIFO 8.3 信号 8.3.1 信号概述 8.3.2 信号发送与捕捉 8.3.3 信号的处理 8.4 信号量 8.4.1 信号量概述 8.4.2 信号量的应用 8.5 共享内存 8.5.1 共享内存概述 8.5.2 共享内存的应用 8.6 消息队列 8.6.1 消息队列概述 8.6.2 消息队列的应用 8.7 实验内容 8.7.1 管道通信实验 8.7.2 共享内存实验 8.8 本章小结 8.9 思考与练习 第9章 多线程编程 9.1 Linux线程概述 9.1.1 线程概述 9.1.2 线程机制的分类和特性 9.2 Linux线程编程 9.2.1 线程基本编程 9.2.2 线程之间的同步与互斥 9.2.3 线程属性 9.3 实验内容——“生产者消费者”实验 9.4 本章小结 9.5 思考与练习 第10章 嵌入式Linux网络编程 10.1 TCP/IP概述 10.1.1 OSI参考模型及TCP/IP参考模型 10.1.2 TCP/IP协议族 10.1.3 TCP和UDP 10.2 网络基础编程 10.2.1 socket概述 10.2.2 地址及顺序处理 10.2.3 socket基础编程 10.3 网络高级编程 10.4 实验内容——NTP协议实现 10.5 本章小结 10.6 思考与练习 第11章 嵌入式Linux设备驱动开发 11.1 设备驱动概述 11.1.1 设备驱动简介及驱动模块 11.1.2 设备分类 11.1.3 设备号 11.1.4 驱动层次结构 11.1.5 设备驱动程序与外界的接口 11.1.6 设备驱动程序的特点 11.2 字符设备驱动编程 11.3 GPIO驱动程序实例 11.3.1 GPIO工作原理 11.3.2 GPIO驱动程序 11.4 块设备驱动编程 11.5 中断编程 11.6 按键驱动程序实例 11.6.1 按键工作原理 11.6.2 按键驱动程序 11.6.3 按键驱动的测试程序 11.7 实验内容——test驱动 11.8 本章小结 11.9 思考与练习 第12章 Qt图形编程基础 12.1 嵌入式GUI简介 12.1.1 Qt/Embedded 12.1.2 MiniGUI 12.1.3 Microwindows、TinyX等 12.2 Qt/Embedded开发入门 12.2.1 Qt/Embedded介绍 12.2.2 Qt/Embedded信号和插槽机制 12.2.3 搭建Qt/Embedded开发环境 12.2.4 Qt/Embedded窗口部件 12.2.5 Qt/Embedded图形界面编程 12.2.6 Qt/Embedded对话框设计 12.3 实验内容——使用Qt编写“Hello,World”程序 12.4 本章小结
目录 第1章 Linux快速入门 1 1.1 嵌入式Linux基础 1 1.1.1 Linux发展概述 1 1.1.2 Linux作为嵌入式操作系统的优势 2 1.1.3 Linux发行版本 3 1.1.4 如何学习Linux 4 1.2 Linux安装 5 1.2.1 基础概念 5 1.2.2 硬件需求 7 1.2.3 安装准备 7 1.2.4 安装过程 8 1.3 Linux文件及文件系统 11 1.3.1 文件类型及文件属性 11 1.3.2 文件系统类型介绍 13 1.3.3 Linux目录结构 14 1.4 实验内容——安装Linux操作系统 17 本章小结 17 思考与练习 18 第2章 Linux基础命令 19 2.1 Linux常用操作命令 19 2.1.1 用户系统相关命令 20 2.1.2 文件目录相关命令 27 2.1.3 压缩打包相关命令 38 2.1.4 比较合并文件相关命令 40 2.1.5 网络相关命令 45 2.2 Linux启动过程详解 50 2.2.1 概述 51 2.2.2 内核引导阶段 51 2.2.3 init阶段 52 2.3 Linux系统服务 54 2.3.1 独立运行的服务 55 2.3.2 xinetd设定的服务 56 2.3.3 设定服务命令常用方法 56 2.4 实验内容 57 2.4.1 在Linux下解压常见软件 57 2.4.2 定制Linux系统服务 58 本章小结 60 思考与练习 60 第3章 Linux下的C编程基础 61 3.1 Linux下C语言编程概述 61 3.1.1 C语言简单回顾 61 3.1.2 Linux下C语言编程环境概述 62 3.2 进入Vi 63 3.2.1 Vi的模式 63 3.2.2 Vi的基本流程 63 3.2.3 Vi的各模式功能键 65 3.3 初探Emacs 66 3.3.1 Emacs的基本操作 67 3.3.2 Emacs的编译概述 70 3.4 Gcc编译器 71 3.4.1 Gcc编译流程解析 71 3.4.2 Gcc编译选项分析 74 3.5 Gdb调试器 77 3.5.1 Gdb使用流程 78 3.5.2 Gdb基本命令 81 3.6 Make工程管理器 86 3.6.1 Makefile基本结构 86 3.6.2 Makefile变量 87 3.6.3 Makefile规则 90 3.6.4 Make管理器的使用 91 3.7 使用autotools 92 3.7.1 autotools使用流程 92 3.7.2 使用autotools所生成的Makefile 96 3.8 实验内容 98 3.8.1 Vi使用练习 98 3.8.2 用Gdb调试有问题的程序 99 3.8.3 编写包含多文件的Makefile 101 3.8.4 使用autotools生成包含多文件的Makefile 103 本章小结 105 思考与练习 105 第4章 嵌入式系统基础 106 4.1 嵌入式系统概述 106 4.1.1 嵌入式系统简介 106 4.1.2 嵌入式系统发展历史 107 4.1.3 嵌入式系统的特点 108 4.1.4 嵌入式系统的体系结构 108 4.1.5 几种主流嵌入式操作系统分析 109 4.2 ARM处理器硬件开发平台 111 4.2.1 ARM处理器简介 111 4.2.2 ARM体系结构简介 113 4.2.3 ARM9体系结构 113 4.2.4 S3C2410处理器详解 116 4.3 嵌入式软件开发流程 121 4.3.1 嵌入式系统开发概述 121 4.3.2 嵌入式软件开发概述 122 4.4 实验内容——使用JTAG烧写NAND Flash 128 本章小结 131 思考与练习 132 第5章 嵌入式Linux开发环境的搭建 133 5.1 嵌入式开发环境的搭建 133 5.1.1 嵌入式交叉编译环境的搭建 133 5.1.2 超级终端和Minicom配置及使用 135 5.1.3 下载映像到开发板 142 5.1.4 编译嵌入式Linux内核 145 5.1.5 Linux内核目录结构 149 5.1.6 制作文件系统 149 5.2 U-Boot移植 153 5.2.1 Bootloader介绍 153 5.2.2 U-Boot概述 155 5.2.3 U-Boot源码导读 156 5.2.4 U-Boot移植主要步骤 163 5.2.5 U-Boot常见命令 164 5.3 实验内容——移植Linux内核 164 本章小结 165 思考与练习 165 第6章 文件I/O编程 166 6.1 Linux系统调用及用户编程接口(API) 166 6.1.1 系统调用 166 6.1.2 用户编程接口(API) 167 6.1.3 系统命令 167 6.2 Linux中文件及文件描述符概述 168 6.3 不带缓存的文件I/O操作 168 6.3.1 open和close 168 6.3.2 read、write和lseek 170 6.3.3 fcntl 173 6.3.4 select 178 6.4 嵌入式Linux串口应用开发 183 6.4.1 串口概述 183 6.4.2 串口设置详解 184 6.4.3 串口使用详解 191 6.5 标准I/O开发 194 6.5.1 打开和关闭文件 194 6.5.2 文件读写 197 6.5.3 输入输出 198 6.6 实验内容 201 6.6.1 文件读写及上锁 201 6.6.2 多路复用式串口读写 204 本章小结 207 思考与练习 207 第7章 进程控制开发 208 7.1 Linux下进程概述 208 7.1.1 进程相关基本概念 208 7.1.2 Linux下的进程结构 210 7.1.3 Linux下进程的模式和类型 210 7.1.4 Linux下的进程管理 211 7.2 Linux进程控制编程 212 7.3 Linux守护进程 224 7.3.1 守护进程概述 224 7.3.2 编写守护进程 224 7.3.3 守护进程的出错处理 229 7.4 实验内容 232 7.4.1 编写多进程程序 232 7.4.2 编写守护进程 235 本章小结 238 思考与练习 239 第8章 进程间通信 240 8.1 Linux下进程间通信概述 240 8.2 管道通信 241 8.2.1 管道概述 241 8.2.2 管道创建与关闭 242 8.2.3 管道读写 244 8.2.4 标准流管道 246 8.2.5 FIFO 249 8.3 信号通信 253 8.3.1 信号概述 253 8.3.2 信号发送与捕捉 255 8.3.3 信号的处理 258 8.4 共享内存 264 8.4.1 共享内存概述 264 8.4.2 共享内存实现 265 8.5 消息队列 267 8.5.1 消息队列概述 267 8.5.2 消息队列实现 268 8.6 实验内容 272 8.6.1 管道通信实验 272 8.6.2 共享内存实验 275 本章小结 277 思考与练习 278 第9章 多线程编程 279 9.1 Linux下线程概述 279 9.1.1 线程概述 279 9.1.2 线程分类 280 9.1.3 Linux线程技术的发展 280 9.2 Linux线程实现 281 9.2.1 线程基本操作 281 9.2.2 线程访问控制 288 9.3 实验内容——“生产者消费者”实验 298 本章小结 302 思考与练习 303 第10章 嵌入式Linux网络编程 304 10.1 TCP/IP协议概述 304 10.1.1 OSI参考模型及TCP/IP参考模型 304 10.1.2 TCP/IP协议族 305 10.1.3 TCP和UDP 306 10.2 网络基础编程 308 10.2.1 socket概述 308 10.2.2 地址及顺序处理 309 10.2.3 socket基础编程 314 10.3 网络高级编程 322 10.4 ping源码分析 326 10.4.1 ping简介 326 10.4.2 ping源码分析 327 10.5 实验内容——NTP协议实现 345 本章小结 352 思考与练习 352 第11章 嵌入式Linux设备驱动开发 353 11.1 设备驱动概述 353 11.1.1 设备驱动简介及驱动模块 353 11.1.2 设备文件分类 354 11.1.3 设备号 355 11.1.4 驱动层次结构 355 11.1.5 设备驱动程序与外界的接口 355 11.1.6 设备驱动程序的特点 356 11.2 字符设备驱动编写 356 11.3 LCD驱动编写实例 363 11.3.1 LCD工作原理 363 11.3.2 LCD驱动实例 365 11.4 块设备驱动编写 374 11.4.1 块设备驱动程序描述符 374 11.4.2 块设备驱动编写流程 375 11.5 中断编程 381 11.6 键盘驱动实现 382 11.6.1 键盘工作原理 382 11.6.2 键盘驱动综述 383 11.6.3 键盘驱动流程 384 11.7 实验内容——skull驱动 394 本章小结 398 思考与练习 399 第12章 Qt图形编程 400 12.1 嵌入式GUI简介 400 12.1.1 Qt/Embedded 401 12.1.2 MiniGUI 401 12.1.3 Microwindows、Tiny X等 402 12.2 Qt/Embedded开发入门 402 12.2.1 Qt/Embedded介绍 402 12.2.2 Qt/Embedded信号和插槽机制 405 12.2.3 搭建Qt/Embedded开发环境 409 12.2.4 Qt/Embedded窗口部件 410 12.2.5 Qt/Embedded图形界面编程 414 12.2.6 Qt/Embedded对话框设计 416 12.3 实验内容——使用Qt编写“Hello,World”程序 420 本章小结 428
好的,你的问题是如何使用Python语言开发一个软件,包括类和异常处理,图形用户界面GUI以及操作数据库。 首先,Python是一种高级编程语言,非常适合用于快速开发原型和应用程序。Python广泛应用于Web开发、数据科学、人工智能和机器学习等领域。 在Python中,类是一种重要的编程结构,它允许你组织代码和数据,以便更好地管理和复用。你可以使用类来定义对象,然后通过调用它们的方法来执行操作。下面是一个简单的Python类的例子: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is", self.name, "and I am", self.age, "years old.") ``` 这个类定义了一个名为Person的对象,它有一个构造函数__init__来初始化对象的属性,还有一个名为say_hello的方法来打印人的姓名和年龄。 异常处理是Python中非常重要的一个概念,它可以让你的程序在出现错误时不会崩溃,而是能够优雅地处理错误。在Python中,你可以使用try/except语句来捕获和处理异常。下面是一个简单的例子: ```python try: x = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.") ``` 这个代码块试图将1除以0,这将引发一个ZeroDivisionError异常。在except块中,我们捕获这个异常并打印一条错误消息。 图形用户界面GUI是一种交互式的用户界面,它允许用户使用鼠标、键盘和其他输入设备与程序进行交互。在Python中,你可以使用各种GUI库来创建GUI应用程序,例如Tkinter、PyQt和wxPython等。下面是一个使用Tkinter创建简单GUI的例子: ```python import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.hi_there = tk.Button(self) self.hi_there["text"] = "Hello World\n(click me)" self.hi_there["command"] = self.say_hi self.hi_there.pack(side="top") def say_hi(self): print("Hello world!") root = tk.Tk() app = Application(master=root) app.mainloop() ``` 这个代码块使用Tkinter库创建了一个简单的GUI应用程序,包括一个窗口和一个按钮。当用户点击按钮时,程序将输出“Hello world!”到控制台。 最后,操作数据库是Python中非常常见的任务之一。Python提供了各种库来连接和操作数据库,包括SQLite、MySQL和PostgreSQL等。下面是一个使用SQLite数据库的简单例子: ```python import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() # 创建表 c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''') # 插入数据 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)") # 提交更改 conn.commit() # 查询数据 for row in c.execute('SELECT * FROM stocks ORDER BY price'): print(row) conn.close() ``` 这个代码块使用SQLite库创建了一个名为example.db的数据库,并创建了一个名为stocks的表。然后,它插入了一条记录,提交更改并查询数据,最后关闭连接。 希望这些例子能够对你有所帮助,如果你有任何问题,请随时问我!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值