好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

嵌入式系统之基于某QT地简单计算器.docx

10页
  • 卖家[上传人]:碎****木
  • 文档编号:229363070
  • 上传时间:2021-12-25
  • 文档格式:DOCX
  • 文档大小:224.45KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实用文档嵌入式系统课程设计报告题目:基于 QT 的简单计算器专业:计算机科学与技术班级:姓名: 学号:指导老师:日期:2012-12-26第一章 前言1.1 设计背景计算器(calculator;counter)一般是指“电子计算器”,计算器是能进行数学运算的手持机器,拥有集成电路芯片,其结构简单,比现代电脑结构简单得多,可以说是第一代的电子计算机(电脑)计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,虽然功能较单一,但因其操作模式的方便快捷和价格的低廉,携带方便等特点,已经被广泛应用于工程、学习、商业贸易等日常生活中,极大的方便了人们对于数字的整合运算,成为人们生活和办公中的必备品之一,深得使用者的青睐1.2 设计目的本程序是基于 linux 下的嵌入式开发,所用软件为 QT Creator,程序虽然简单,但是通过本程序的设计,可以进一步了解嵌入式系统开发工具以及熟悉linux 环境下的常用命令,为以后进入嵌入式领域打下一定的基础通过该计算器程序软件的设计,培养独立思考、综合运用所学有关相应知识的能力,更好地巩固《C++程序语言设计》和《高级程序设计》课程学习的内容, 掌握工程软件设计的基本方法,强化上机动手编程能力,体验理论与实践相结合的过程。

      第二章 功能需求分析2.1 功能描述本次设计的计算器在功能上大致与 Windows 系统自带的计算器程序相似, 对于所设计的科学计算器,其功能大致为可以进行加(+)、减(-)、乘(*)、除(/)、简单算术计算由于接触 QT 时间还不太久,所以目前只能简单地实现这些功能, 相信随着以后逐步的了解,本程序将实现更多的功能第三章 开发工具简介3.1 QT 简介由于本次设计的小程序是用 QT Creator 所设计的,所以我觉得有必要先介绍下 QT 开发工具的背景Qt 是一个 1991 年由奇趣科技开发的跨平台 C++图形界面应用程序开发框架它既可以开发 GUI 程式,也可用于开发非 GUI 程式,比如控制台工具和服务器Qt 是面向对象语言,易于扩展,并且允许组件编程QT 所具有的优势是:优良的跨平台特性, Qt 支持下列操作系统 : Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390, QNX 等等。

      面向对象:Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单丰富的 API:Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的collections, serialization, file, I/O device, directory management, date/time 类甚至还包括正则表达式的处理 功能支持 2D/3D 图形渲染,支持 OpenGL 大量的开发文档第四章 详细设计过程4.1 开发环境的搭建本次所 用系统 环境为 Ubuntu 10.04 LTS ,内核 为 Linux ubuntu 2.6.35-22-generic,QT 版本为 QT 4.7.4(32 bit)Ubuntu 搭建 QT 环境大致过程为:1. 安装 g++,ubuntu 默认是不带 g++的,如果不安装的话,后面是无法进行桌面版的 qt 应用程序进行编译的,在终端中执行以下命令:sudo apt-get install g++2. Qt 桌面版的安装3. 安装 arm-linux-gcc (配置环境变量 gedit /.bashrc 添加路径export PATH=$PATH:/opt/FriendlyARM/toolschain/4.7.4/bin ) 使配置文件立即生效:source /.bashrc 或者注销 logout 最好重启(arm-linux-gcc -v 查看版本信息) 4.安装编译库文件 arm-qte-4.7.0-20101105.tar5. 配置 Qt 编译 ARM 的环境(解压编译时间较长,具体过程不再赘述)4.2 程序实现对于界面的设计,采用的网格布局作为主布局,然后使用其 addWidget 函数添加部件,最后实现了基本的简易计算机的界面。

      程序最终界面如下:首先创建一个工程项目,名字为jsq,接着编写各个功能部件函数,这里仍使用信函和槽连接机制,我们没有使用信号和槽编辑器,而是直接在 .cpp 文件中添编写其代码来实现,首先在 .h 文件中对各个按键进行声明 , 再到.cpp 文件中编写相应的代码实现其功能 例如窗体控制程序MainWidget.cpp,按钮程序 myButton.cpp,计算功能则在 OutputString.cpp 程序代码中实现软件工作界面如下:对于计算器,在界面上,点击相应的按钮,信号会随着点击传递到相应的槽函数中,并实现函数的功能,经过处理得到相应的结果并能够将结果输出下面依次介绍按钮及所连接的槽函数相应的连接信号语句:Button *clearAllButton = createButton(tr("Clear"), SLOT(Clear ()));//用 createButton 函数定义除法按钮并且与除法槽函数建立Button *divisionButton = createButton(tr("\367"), SLOT(multiplicativeOperatorClicked()));//定义乘法按钮Button *timesButton = createButton(tr("\327"), SLOT(multiplicativeOperatorClicked()));//定义减法按钮Button *minusButton = createButton(tr("-"), SLOT(additiveOperatorClicked()));//定义加法按钮Button *plusButton = createButton(tr("+"), SLOT(additiveOperatorClicked()));//定义等号按钮Button *equalButton = createButton(tr("="), SLOT(equalClicked()));//实现代码 如下createButton 函数为自己定义的函数//定义 createButton 函数 需要字符串参数 和 一个 字符指针//在此函数内连接信号与槽Button *Calculator::createButton(const QString &text, const char*member){Button *button = new Button(text); connect(button, SIGNAL(clicked()), this, member); return button;}这样每次为每个部件分配内存空间的时候就已经建立了相应的槽函数。

      4.3 计算功能的实现本程序计算功能主要在 OutputString.cpp 中实现的,主要代码如下:QString& myOutputString::getMyString(void){QString static ZeroStr("0");if(myString.isEmpty()) return ZeroStr;static QString topStr; QString myStr;topStr = myString.pop();if(isOperator(topStr) &&(myString.count()==3)){QString secondNumStr = myString.pop(); QString opeStr = myString.pop(); QString firstNumStr = myString.pop();double firstNum = firstNumStr.toDouble(); double secondNum = secondNumStr.toDouble(); double equal = 0;if(opeStr == "*")equal = firstNum * secondNum; else if(opeStr == "/")equal = firstNum / secondNum;else if(opeStr == "+")equal = firstNum + secondNum; else if(opeStr == "-")equal = firstNum - secondNum;QVariant var1(equal); myStr = var1.toString(); myString.push(myStr);}if(topStr != "=") myString.push(topStr);topStr = myString.top();return topStr;}void myOutputString::deleteAll(void){myString.clear();}int myOutputString::isNumStr(QString& Str){bool ok = 0;Str.toInt(&ok, 10);if(ok == 1)return 1;return 0;}第五章 程序测试输入一个操作数:5输入操作符:+输入另一个操作数:7点击“=”号按钮,会出现结果:最后点击“Clear”按钮,可以清除之前的数据:测试程序基本无误,目前只能完成简单的四则运算。

      第六章 课程总结这次的简易计算机的编写,能实现基本的加减乘除算法,也能实现小数的加减乘除,通过此次的 QT 学习以及上学期的 C++学习,深刻的了解到设计程序并不是一件简单的事情并且通过网上了解到 QT 的强大功能,虽然现在本人的技术及知识还很贫乏,但是相信通过现在及日后的学习一定可以达到自己想要达到的水平就这次的课程设计报告来说,从最初的相当陌生到现在的可以理解使用但还有一些问题没有彻底理解此次课程设计并没有完全构成当初想的那 样,但认为还是基本满足了老师的要求对于以后学习嵌入式也打下了一定的基础,最后也谢谢何高明老师上课时耐心的讲解参考文献[1] 邹思轶.嵌入式 Linux 设计与应用[M].北京:清华大学出版社,2002:318-325.[2] 张石.ARM 嵌入式系统教程[M].北京:机械工业出版社,2012:191-261.[3] 闫锋欣,曾泉人.C++ GUI QT4 编程(第二版)[M].北京:电子工业出版社,2010:108-232.[4] 闫放莺.基于嵌入式 Linux 软件平台技术的研究[D].西安:西北大。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.