基于qt的科学计算器的设计与实现_第1页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于qt的科学计算器的设计与实现摘要随着科技的飞速发展,人类已经进入信息化的大时代。信息技术发展更是日新月异,计算器已经进入而且融入人们生活的各个领域,在现代生活中无处不在,大型复杂的计算是人脑和手工所不能胜任的,而且容易出错且准确度不高。科学计算器作为一种快速便捷的计算工具方便了人类的使用。科学计算器包含简单的四则加减乘除运算、复杂的数学运算、二八十十六进制之间的相互转换等功能,具有美观的界面,操作方便简单,能够被用户所接受,科学计算器在我们的日常生活、学习、工作中使用相当广泛,而且种类繁多,所以科学计算器的程序设计因此应运产生。本文从课题背景、计算器的概况、计算器的相关技术、项目内容和要求、概要设计、设计流程、系统实现、系统调试等方面详细说明了小型科学计算器的开发设计过程。软件采用QtCreator设计界面结合C++面向对象编程语言来开发。科学计算器包含简单的四则运算、复杂的数学表达式运算、与或运算、进制之间的相互转换、简易画图板等功能。该科学计算器具有界面可视化,用户操作简单实用方便等优点,为用户进行复杂科学的计算提供了高效率的计算保证。关键词:科学计算器;进制转换;QtCreator;C++;运算AbstractWiththerapiddevelopmentofscienceandtechnology,

mankindhas

enteredtheinformation

era.

Thedevelopmentofinformation

technologyis

changerapidly,thecomputershaveentered

and

integratedintovariousfields

amongpeople'slives,

evenareubiquitousinmodernlife.Thehuman’sbrain

andhand

havealreadycouldnotcompletedthecalculationoflargescalecomplex,

butalsopronetoerror

andaccuracyisnothigh.

Scientificcalculator

asakindof

quickandconvenient

calculationtool

isconvenientforhuman’s

using.

Scientificcalculator

contains

between

foursimple

add,subtract,multiplyanddivide

operations,

acomplexmathematicaloperation,two、eight、tenandsixteen’shexadecimal

conversion

functions,

witha

beautifulinterface,

simpleandconvenientoperation,and

can

beacceptedbyusers.Scientificcalculator

isquite

widely

inourdailylife,

study,

work,

andvarietyofclassifications,

sotheprogram’s

design

aboutscientificcalculator

is

produced.Fromthis

background,

calculator,

calculator

of

relatedtechnology,

projectcontent

andrequirements,

theoutlinedesign,

processdesign,

systemimplementation,

systemdebugging

aredescribedindetail

thedevelopmentanddesignprocessofthe

small.scientific

calculator.

TheprogramuseQt

Creatortooltodesigntheinterface

withthe

C++objectoriented

programminglanguage.Scientificcalculator

contains

foursimpleoperation,

complexmathematicalexpressionoperation,

and

operation,

or

betweenhexadecimal

conversion,

asimple

drawingboard

andotherfunctions.The

scientificcalculator

hasthe

advantagesof

visualinterface,

useroperation

issimpleandpractical

andconvenient,

andensuresthe

efficient

calculationfortheuserto

calculate

thecomplicatedscience.Keyword:Scientificcalculator;hexadecimal;Qt

Creator;C++;convenient目录摘要 iAbstract ii1绪论 11.1课题背景 11.2综述科学计算器的概况 11.2.1科学计算器在生活中的应用 11.2.2科学计算器的发展前景 31.3综述科学计算器的相关技术 32系统开发技术和工具 52.1系统介绍 52.2系统开发语言介绍 52.3系统开发工具介绍 62.4能力要求 82.5项目特点及意义 83需求分析 93.1功能需求与分析 93.2安全性分析 93.3可行性分析 93.4技术经济分析 103.5用例图 103.5.1UML介绍 103.5.2科学计算器用例图 113.5.3画图板用例图 124总体设计 144.1总体设计目标 144.2功能模块设计 144.2.1科学计算功能模块 144.2.2画图板功能模块 175详细设计 185.1设计目的 185.2设计说明 185.2.1UI界面风格 185.2.2科学计算器模块 195.2.3画图板模块 206系统实现 216.1系统功能介绍 216.2科学计算器 216.2.1科学计算器进制选择功能 226.2.2科学计算器进制转换功能 246.2.3科学计算器清空回退功能 276.2.4科学计算器计算功能 276.2.5科学计算器其它功能 356.3画图板 366.3.1画图板界面设计 366.3.2画图板功能实现 377系统测试 397.1软件测试概述 397.1.1测试目标 397.1.2测试方法 397.2对本系统的测试 407.2.1配置问题 407.2.2信号和槽的问题 41结束语 42致谢 43参考文献 44英语原文 45中文翻译 491绪论1.1课题背景计算器(calculator)一般是指“电子计算器”。计算器能进行数学运算的手持机器,拥有集成电路芯片,但结构简单,比现代电脑结构简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价,可广泛运用于商业交易中,是必备的办公用品之一。本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行简单的科学计算开方、平方的计算,最多可以输入256字符,操作简便,主要采用的技术为QtCreator,不仅能锻炼自己的编程能力,还可以根据自己的需要来编写适合自己的计算器。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。在科技论文写作过程中,可能参考或引用大量的文献和资料(许多是以电子文档的形式存在),如果以文件的形式存储,管理起来十分复杂,给日常工作带来极大的不便,甚至造成电子文档的破坏和丢失,安全性更是难以保证。对帮助功能也有保存添加等功能。具有无法比拟的优点.例如:检索迅速、查找方便、可靠性高、保密性好、寿命长、成本低等。这些优点能够极大地提高科技论文管理效率,也是企业、学校的科学化、正规化管理,与世界接轨的重要条件。1.2综述科学计算器的概况1.2.1科学计算器在生活中的应用现代信息技术逐渐发展并被普及和应用,让大家的思维方式、工作方和学习方式有了很大的变化。《课程标准》指出数学课程需大力加强现代信息技术的运用,发挥现代信息技术对数学教学改革的积极作用,使现代信息技术能够成为学生学习的有效工具,成为获取信息资源和习资源的广阔平台。计算器是一种小型的手持或桌面的\o"计算工具"设备,用于完成\o"数学"数学\o"计算"计算。一般的数学计算器与\o"计算机"计算机是不一样,数学计算器通常仅能完成\o"算术"算术运算和少量\o"逻辑"逻辑操作并显示其结果,但一般不能修改其\o"程序"程序。除了某些尺寸可比掌上型计算器的\o"PDA"PDA之外,计算器的可携性通常高于计算机。19世纪\o"CharlesBabbage"巴贝奇将计算工具的概念更往前推,试图创建第一个可编程式计算器,但他建造的机器太重了,因而无法操作(如图1-1所示)。图1-11914年的机械计算器20世纪\o"1970年代"70年代开始,微处理器技术被吸纳进计算器制程,最初的微处理器是\o"Intel"Intel于1971年为\o"日本"日本名为\o"Busicom(页面不存在)"Busicom(ビジコン)的计算器公司生产的,1972年\o"惠普"惠普推出第一款掌上科学计算器\o"HP-35"HP-35(如图1-2所示)。图1-2卡西欧fx-140计算器\o"夏普"夏普在此领域是计算器制造商中的佼佼者,他们最先在计算器中采用了液晶显示屏,还是最早把太阳能电池安装到计算器的企业之一。从20世纪\o"1960年代"60年代到\o"1970年代"70年代的十多年里,夏普公司把生产计算器所需的原件降到了3个(以前需要3000多个)——硅片、显示屏和太阳能电池,这大大降低了计算器的生产成本。计算器的出现是人类科技发展时代的一个重要的里程碑。人们使用计算器是时代发展的趋势,计算器的出现和使用可以很方便的计算复杂的四则运算等,极大的提高了计算的速度,快捷,方便,适当的使用计算器可以促进并提高学习和工作的效率,弥补了人们在脑力运算和手工运算速度慢不准确的缺陷。现在的生活工作和学习中,计算器的使用无处不在。计算器的教育用途方面,有些\o"学生"学生常在写数学作业时使用计算器。但因担心学生的\o"算术"基本算术能力因而受到戕害,因此许多教育人士抗拒让学生过早使用它。而某些课程限制使用计算器运算算术,直到学到更高级的计算技巧;其他人则不同意以纸笔或心算算术的重要性,他们更注重教授评估与解决问题的技巧。然而,还是有一些其他顾虑:例如学生可能以错误的方式使用计算器,并因对计算器的信赖而盲目相信答案。教师为了破解学生的盲信,常会指导学生以人工验算并确认其答案的正确性。当然,学生也有可能只运用计算器取得答案,而不了解运算的真实意义,例如输入(-10)×(-10),获得100,却不了解背后“负负得正”的规则。在此情况下,计算器成为学生的依赖而非辅助工具,使学生在考试时对任何简单的运算都以计算器求解,并降低应答的速度。1.2.2科学计算器的发展前景科学计算器的出现是科学技术发展的重要里程碑,它最早还不是以科学计算器的身份出现在公众的视野中,最早是被法国科学家引用算盘的原理,进而发明了第一台机械式计算器,但是只能做加减运算,操作繁琐,后来随着时代的发展,科技也在不断地进步,德国科学家将机械式计算器改进实现了乘除的运算,此后,一直到了20世纪50年代末才出现了电子计算器。电子计算器的出现极大的丰富和改进了机械式计算器,出现了很多功能,并且操作简单,使用方便。如今,科学计算器的使用在人们的生活工作学习中无处不在,随着人们对计算器的需要,它也有了更近一步的发展,计算功能增多,就我所知,美国的高校使用的科学计算器可以计算微积分等运算,更是在脑力上使人们得到了解放。技术在发展,人们的需求也在不在的变化和增多,科学计算器的也会随着有更大的发展和变化,发展的道路一直在延续。1.3综述科学计算器的相关技术计算机的程序可计算极为复杂的数学程序,这是一般计算器所无法相比的,不过现在也有一些功能较强大的计算器具有编程功能。计算器的复杂度随着使用目的而有所不同。最简单的计算器模块应该包含下列部件:电源,例如\o"电池"电池或\o"太阳能板"太阳能板显示幕,通常以\o"LED"LED光源或\o"LCD"LCD制成,可显示一定数量的数字(通常为八、十、十二、十六位,以十二位最常见)电子回路十个数字键,从0到9\o"小数"小数点等于符号,用于显示运算解四个运算函数(加减乘除)取消键,用于清空目前显示的数字电源开关其他基本\o"函数"函数,例如求\o"平方根"平方根或\o"百分比"百分比键(%)更高级的模块也许会有一个单数值记忆按键(M+,M-),可在需要时叫回20世纪\o"1980年代"80年代早期,基本计算器开始置入其他小型设备,例如\o"手机"手机、\o"调用器"调用器或\o"腕表"腕表。科学计算器或工程型计算器支持\o"三角函数"三角函数、\o"微积分"微积分、\o"统计"统计与\o"函数列表"其他函数。而最先进的现代计算器甚至可显示\o"图形计算器"图型,并且包含\o"计算机代数系统"计算机代数系统。这种计算器可以编写程序,且内含了代数方程式求解程序、经济模型甚至游戏程序。这类计算器可显示填满显示屏的单一数值。并可将数字以\o"科学记数法"科学记数法表现至9.999999999*1099。如果用户试图输入一过大的数值或运算产生过大数值的算式(例如输入100!,即100\o"阶乘"阶乘),则计算器仅显示“错误”(error)一词。因为存储器如此有限的计算器无法存储如此巨大的输入(>=10^160)。“错误”也用以表示数学上未定义的函数或操作,例如除以零或对负数取平方根(除了某些高级的科学计算器拥有可处理复数的特殊函数,大部分科学计算器不允许\o"复数"复数的存在)。某些少数计算器可分别这两种错误的不同,虽然用户依然难以了解error1与error2的差别何在。仅有少数公司研发与制造现代职业工程师与经济学家用的计算器:最有名的是\o"Casio"Casio、\o"夏普"夏普、\o"HP"HP与\o"德州仪器"德州仪器。这些计算器都是\o"嵌入式系统"嵌入式系统的范型。此款简单的科学计算器能实现加、减、乘、除、平方、幂次方、倒数、取整、取模以及位运算,再次基础上又增加了二进制、八进制、十进制和十六进制之间的转换与运算,并且设计有简易的画图板,画图板内有文件的打开与保存,椭圆、矩形、画笔、画刷、橡皮擦和清屏画图工具,还有与其对应的属性设置等。这些功能的实现,用C++面向对象编程语言并在QTCreator开发平台上设计编写而成。该计算器大大的降低了数字计算的难度且提高了计算的准确度和精确度。界面清晰,让人一目了然。该计算器使用简单和操作方便,对人们在生活和学习有巨大的帮助作用,也方便了飞专业人士在日常生活中的计算操作,也对在职人员的工作有点帮助作用。在计算器模块的设计中,从操作角度出发,充分考虑使用者,是该计算器成为使用者的掌上助手,解决生活学习中常见的计算问题。2系统开发技术和工具2.1系统介绍设计一个功能齐备的小型科学计算器,具有算式编辑计算和普通计算窗口。具体要求如下:

科学计算窗口:能实现加、减、乘、除、平方、幂次方、倒数、取整、取模运算,在次基础上又增加了二进制、八进制、十进制和十六进制之间的转换与运算,并可实现各类不同函数及位运算。设计实现显示窗口、运算的回退、清零等功能。支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当点击等号键时直接给出当前算式的运算结果。

画图板窗口:支持文件的打开和保存,有简单的矩形、椭圆、画笔、橡皮擦、清除和笔刷工具,可选取并设置画图工具的颜色、宽度和风格等基本属性。极大的表现了画图板的基本功能。2.2系统开发语言介绍开发语言:C++C++语言是一种使用非常广泛的计算机编程语言。C++是一种基于静态数据类型检查的、支持多重编程范式的程序设计语言。C++语言支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。C++语言的设计目标,就是要让C++既具有适合于系统程序设计的C语言所具有的可适应性和高效性,又能在其程序组织结构方面具有像Simula那样的语言设施(Simula所支持的这种程序组织结构通常被称为面向对象程序设计风格)。在设计的时候,还做了很大的努力,使得引借自Simula的高层次的程序设计技术能够应用于系统程序设计之中。这即是说,C++所提供的抽象机制能够被应用于那些对效率和可适应性具有极高要求的程序设计任务之中。采用C++面向对象语言,利用抽象和封装等机制,借助类、对象、继承、传递等技术进行构造的软件开发方法,它的出发点和目标就是使人们在想一个问题的过程和方法时与分析、设计和实现系统的过程和方法尽最大可能的一致,即描述问题的认知空间以及解决问题的方法空间要在结构上尽可能的一致,这样面向对象方法自然地模拟了人类认知世界的方式,所以这是一个很好的思维认知的方法,也是特别好的一种软件开发方法。1998的C++\o"Standardization(页面不存在)"标准分为两个部分:\o"核心语言"核心语言和\o"C++标准程序库"C++标准程序库;后者包含了大部分\o"标准模板库"标准模板库和C标准程序库的稍加修改版本。存在许多不属于标准部分的C++程序库,且使用外部链接,程序库甚至可以用\o"C"C撰写。\o"C++标准程序库"C++标准程序库充分吸收了C标准程序库,并佐以少许的修改,使其与C++良好的运作。另一个大型的程序库部分,是以\o"标准模板库"标准模板库(STL)为基础,STL于1994年2月正式成为ANSI/ISOC++。它提供了实用的工具,如\o"容器"容器(如:\o"Array"矢量和\o"链表"链表),\o"迭代器"迭代器(广义\o"指针"指针)提供容器以类似数组的访问方式,以及\o"算法"算法进行搜索和排序的运算。此外还提供了(multi)map(\o"关系数组(页面不存在)"关系数组)和(multi)set,它们都使用兼容的界面。因此,以下成为可能,使用模板撰写泛型算法,它可以和任何容器或在任何以迭代器定义的串行上运作。如同C,使用#include\o"Directive(programming)(页面不存在)"指令包含\o"标准表头(页面不存在)"标准表头,即可访问\o"程序库"程序库里的功能。C++提供69个标准表头,其中19个不再赞成使用。使用标准库(例如:使用std::vector或std::string来取代C风格的数组)有助于导向更安全和更灵活的软件。\o"STL"STL在纳入C++标准以前,是来自\o"Hewlett-Packard"HP和后来的\o"SiliconGraphics"SGI的第三方程式库,标准中并未称之为“STL”,它只是标准库中的一部分,但仍有许多人使用这个名称,以别于其它的标准库(输入/输出流、国际化、诊断、C程序库子集,等等)。和C语言相比,C++引入了更多的特性,包括:陈述性声明,类似函数的强制转型,new/delete操作符,布林类型,参考类型,默认参数,函数重载,命名空间,类型(包括所有和类型相关的特性,如继承、成员函数、虚函数、抽象类型和构造函数),操作符重载,模板,::操作符,异常处理和运行时期识别。和普遍认为的相反,C++不是第一个正式引入const关键字的语言。80年代早期,BjarneStroustrup和DennisRetchie讨论之后提供了在C语言中readonly/writeonly的实现机制,并在带类型的C中取得了一定经验。关键字const正式引入C语言是在ANSIC89。这早于第一个C++国际标准近十年,但此时const已被C++实现普遍采用。C++在某些案例中(见下“与C不兼容之处”),进行比C还要多的类型检查。以“//”起始作为注解起源自C的前身\o"BCPL"BCPL,而后被重新引入到C++。C++的一些特性,C不久之后也采用了,包括在for循环的括号中声明,C++风格的注解(使用//符号,和inline,虽然C99定义的inline关键字与C++的定义不兼容。不过,\o"C(programminglanguage)"C99也引入了不存在于C++的特性,如:可变参数\o"宏"宏,和以数组作为参数的较佳处理;某些C++编译器可能实现若干特性,以作为扩展,但其余部分并不符合现存的C++特性)一个常见的混淆其实只是一个微妙的术语问题:由于它的演化来自C,在C++中的术语对象和C语言一样是意味着存储器区域,而不是类的实例,在其它绝大多数的\o"面向对象"面向对象语言也是如此。举例来说,在C和C++中,语句inti;定义一个int类型的对象,这就是变量的值i将在赋值时,所存入的存储器区域。C++主要有三个编译阶段:预处理、转译成目标代码和链接(最后的两个阶段一般才视为真正的“编译”)。在第一阶段,预处理,会将预处理器指令替换成源代码,然后送到下一个编译阶段。预处理指令的运作方式是根据用户定义的规则,简单的把记号字符串行置换成其它的记号字符串行。它们进行\o"宏置换(页面不存在)"宏置换、含入其它的文件(由底层至高级的特性,例如包含模块/包/单元/组件)、条件式编译和条件式含入。2.3系统开发工具介绍系统开发集成环境:QTCreatorQtCreator是跨平台的QtIDE,QtCreator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此IDE能够跨平台运行,支持的系统包括Linux(32位及64位)、MacOSX以及Windows。根据官方描述,QtCreator的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务。QtCreator

主要是为了帮助新

Qt

用户更快速入门并运行项目,还可提高有经验的

Qt

开发人员的工作效率。使用强大的C++代码编辑器可快速编写代码。语法标识和代码完成功能输入时进行静态代码检验以及提示样式上下文相关的帮助代码折叠括号匹配和括号选择模式高级编辑功能采用C++语言设计,编码规范清晰,关键算法或处理须加注释说明。QtCreator

是一款跨平台的集成开发环境,特别针对Qt开发者,是\o"Qt"Qt

SDK组成的一部分,可运行于Windows,Linux/X11及MacOSX等桌面操作系统,允许开发者为多桌面环境及移动设备平台创建应用程序。它包括一个可视化调试工具和集成的GUI版面和外形设计师。这个编辑器的功能包括\o"语法高亮度显示"语法高亮度显示和\o"自动完成"自动完成。QtCreator在Linux上,使用

\o"GCC"GCC

的C++编译器。在Windows,默认安装它可以使用\o"MinGW"MinGW

\o"MicrosoftVisualC++"MSVC。从源代码编译时,也可以使用

\o"MicrosoftConsoleDebugger(页面不存在)"cdb。QTCreator是一个跨平台的C++GUI应用构架,它提供了丰富的窗口控件,具有面向对象、易于扩展、组件编程等特点,最为引人注目的是目前在Linux上最为流行的KDE的桌面环境,它就是建立在QT库的基础之上。QT支持多种平台,随着KDE的快速发展普及,QT很有可能成为Linux系统窗口平台上进行软件开发的GUI首选工具。信号和槽是QT的核心机制,要学会QT编程那么就必须对信号和槽机制有所了解。信号和槽机制是一种接口,应用在对象之间的通信,是QT的核心特性,同时也是QT区别于其它种类工具包的重要地方。信号和槽机制是QT自行定义的一种通信机制,它独立于标准的C/C++语言,所以必须要正确的处理好信号和槽机制,这里借助moc(MetaObjectCompiler)工具,该moc工具是一个C++的预处理工具,为事件处理自动生成所需要的附加处理代码。在我们所熟知的多种GUI工具包中,窗口小控件(widget)都有一个回调函数用来响应它们能触发的动作,这个回调函数通常是一个指针,它指向某个函数。但是,在QT中信号和槽机制取代了这些函数指针,使得人们在编写这些通信程序时更为简洁明了。信号和槽机制能使用任意数量、任意类型的参数。在这里我设计的主窗口命名为:mainwindow。所有从QObject或其子类(例如Qwidget)派生的类都可以包含信号和槽机制。当对象改变状态时,信号就由该对象发射出去,这就是对象所要做的事情,但它不知道另一端是谁在接收这个信号,这就是所谓的信息封装,它保证对象被当作一个真正的组件来使用。槽被用来接收信号,它们是对象成员函数,称为槽函数。但槽函数并不知道是否有信号和自己相连。而且,对象也不了解具体的通信机制。在编程时可以将多个信号与单个槽函数进行连接,也可以将单个信号与多个槽函数进行连接,甚至也可以将一个信号和另外一个信号相连,这时无论第一个信号在何时发射,那么都将立刻发射第二个信号。总之,信号与槽机制构成了一个很强大的控件编程机制。2.4能力要求毕业设计对能力的包括:查找文献和运用能力。外语阅读和翻译能力。独立分析和思维能力。独立分析和思维能力。书面和口头表达能力。综合分析和设计能力。使用计算机的能力。2.5项目特点及意义随着我国经济的快速发展,科学技术的不断进步,计算器的功能也越来越强大,从古代的算盘到现在的计算器这是一个飞速的发展。使得我们计算东西越来越便捷,速度越来越快,提高了效率,也提高了准确度。主要有以下几个特点:计算速度快,节省时间、人力。科学计算窗口可以进行各进制的加减乘除运算。可对算式进行回退、删除等功能。提供良好的人机交互界面,操作简单快捷。因其方便快捷的操作模式,已经被广泛应用于工程、学习、商业等日常生活中,极大的方便了人们对于数字的整合运算。随着社会的进步和科技的发展,电子计算器作为一种方便、准确、小巧的运算工具早走入寻常百姓家,同时也成为学生的“宠儿”。不论是多么冗长的算式,多么复杂的运算,只要轻轻点击几下按键,结果就马上显示在显示屏上,结果既准又快。在《数学课程标准》中也指出:“现代教育技术的发展对数学教育的价值、目标、内容以及学与教产生了重大的影响,数学课程的设计与实施应重视运用现代教育技术,特别要充分考虑计算器、计算机对数学学习内容和方式的影响,在力开发并向学生提供更为丰富的学习资源,把现代教育技术作为学生学习数学和解决问题强有力工具,致力于改变学生的学习方式,使学生乐意并有更多的投入到现实的、探索性的数学活动中去。而在我们日常生活办公中遇到的一些基本的数字运算,以往简单的口算笔算,然而现在不同了,人们对计算机、手机的依赖越来越高,遇到计算问题不再愿意去用脑去思考,而是交由手机或是电脑来完成。为了给自己设计一个能够胜任自己学习工作的计算器,所以决定自己通过用所学的知识来编写一个简单的计算器。对于该项目我采用QtCreator来编写,方便自己使用,也可以方便别人,同时能使自己的技术水平得到锻炼提高。3需求分析3.1功能需求与分析在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、幂运算等都离不开计算器。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用C++和Qt的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。在该项目设计中,程序设计设计语言采用C++和Qtdesigner工具,在程序设计中,采用了结构化与面向对象两种解决问题的方法。3.2安全性分析本软件可供多用户使用,这里首先谈备份数据,对一些用户自有的数据是非常重要的,一旦用户的自有数据遭到破坏,将造成不可弥补的损失,如果没有备份的话,则后果是不堪设想。建议各级用户都要及时妥善备份自有的数据,如:历年资料、重要方案、管理文献、重要数据等,而且要备份到本机之外的存储介质上(如光盘、移动硬盘)。并且此程序界面使用Qtdesigner进行布局,对各个空间进行布局和排版时不容易出错,快速便捷,提高软件的安全性。3.3可行性分析计算器是日常生活中非常便捷有效的小工具,它是一种小型的手持或桌面的\o"计算工具"设备,用于完成\o"数学"数学\o"计算"计算。一般的数学计算器与\o"计算机"计算机是不一样,数学计算器通常仅能完成\o"算术"算术运算和少量\o"逻辑"逻辑操作并显示其结果,但一般不能修改其\o"程序"程序。除了某些尺寸可比掌上型计算器的\o"PDA"PDA之外,计算器的可携性通常高于计算机。本款科学计算器具有普通计算和科学计算,能实现加减乘除等普通功能,还可以实现算是运算,并且可以进行进制装换,不再局限于十进制,它大大的提高了我们的效率,节省了我们的时间,可促进科技的发展,我对它的实现用Qt编写,Qtdesigner设计的界面美观,还可以用拖拽功能进行设计控件的位置、大小、属性、结构等功能,这样我们在编写代码时就不用浪费时间对控件进行声明等代码了。这降低了程序员的难度,提高了程序员的效率,并且上手快,对于第一次接触这个软件的人来说是一个不错的选择,具有一定的可行性。我们日常生活中经常碰到计算的问题,而一个计算器软件便变得非常有用,该计算器软件所用的空间资源较少,对其他软件影响较小。它的设计方法按照软件工程的方法进行,使用Qt具有良好美观的界面,必要的信息存储和和较好的健壮性,使用人员能够快捷简单的进行操作,既可以快捷的获得计算结果,个人们带来方便,对人们的生活有一定的帮助。3.4技术经济分析技术经济分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。在技术上,用Qt编写,结合C++,但大多数都是Qt封装好的函数。用Qtdesigner进行制作界面,做出的界面效果不仅美观而且快捷方便。这里设计软件所用的电脑是HPProBook6450b,开发工具QT从网上下载安装。3.5用例图3.5.1UML介绍统一建模语言(UML,\o"英语"英语:UnifiedModelingLanguage)是非专利的第三代\o"对象建模语言(页面不存在)"建模和\o"规约语言"规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在\o"软件架构"软件架构层次已经被验证有效。UML集成了\o"Booch(页面不存在)"Booch,\o"对象建模技术(页面不存在)"OMT和\o"面向对象软件工程(页面不存在)"面向对象软件工程的概念,将这些方法融合为单一的,通用的,并且可以广泛使用的建模语言。UML打算成为可以对并发和分布式系统的标准建模语言。UML并不是一个工业标准,但在\o"ObjectManagementGroup"ObjectManagementGroup的主持和资助下,UML正在逐渐成为工业标准。OMG之前曾经呼吁业界向其提供有关\o"面向对象"对象导向的理论及实现的方法,以便制作一个严谨的软件建模语言(SoftwareModelingLanguage)。有很多业界的领袖亦真诚地回应OMG,帮助她建立一个业界标准。许多人通过UML认识了用例,UML定义为\o"统一建模语言"展现用例的图形符号。UML并没有为描述用例定义书写格式的标准,因此许多人误认为这些图形符号就是用例本身;然而,图形符号只能给出最简单的一个或一组用例的概要。UML是用例图形符号最流行的标准。但是,还有一些其它的可选择的标准。用例(\o"英语"英语:usecase),或译使用案例、用况,是\o"软件工程"软件工程或\o"系统工程"系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。编写用例时要避免使用技术术语,而应该用最终用户或者领域专家的语言。用例一般是由软件开发者和最终用户共同创作的。在1986年,\o"IvarJacobson(页面不存在)"IvarJacobson,\o"统一建模语言"UML和\o"RationalUnifiedProcess"瑞理统一过程[2]的重要贡献者,提出了用例的概念。Jacobson的思想很有影响力,也很有发展力。之后在这个科目上又有很多贡献,在定义用例是什么和怎么有效的书写用例方面最重要,最有影响力也最全面的,是\o"AlistairCockburn(页面不存在)"AlistairCockburn,他写的书籍是《编写有效用例》。用例迅速成为获取功能需求最常用的手段。用例最初是和面向对象一同提出的。但是它不止局限于面向对象系统,因为用例实质上不是面向对象。用例图包含一组用例。每一用例用椭圆表示,放置在矩形框中;矩形框表示整个系统。矩形框外画如图所示的小人,表示参与者。参与者不一定是人,可以是其他软件、硬件等等。某一参与者与某一用例用线连起来,表示该参与者和该用例有交互。3.5.2科学计算器用例图该科学计算器用例图利用Visio制图工具,用户进入主界面,有二进制、八进制、十进制、十六进制、画图板五个选项,其中二进制包括与运算、或运算、同或运算、异或运算,以及加减乘除运算,八进制包括加减乘除运算,十进制包括取模运算、取整运算、倒数运算、幂运算、加减乘除运算,十六进制包括与运算、或运算、同或运算、异或运算,以及加减乘除运算。科学计算器的用例图如图3-1所示。图3-1科学计算器用例图3.5.3画图板用例图该画图板用例图利用Visio制图工具,用户进入主界面选择画图板后,有一序列的画图工具可以选,包括图片的打开保存、画图工具的选取、清除工具、属性设置,其中画图工具有画笔、画刷、椭圆和矩形,清除工具包括橡皮擦和清屏。画图板的用例图如图3-2所示。图3-2画图板用例图4总体设计4.1总体设计目标该科学计算器包含的功能有:加、减、乘、除、平方、幂次方、倒数、取整、取模,二进制、八进制、十进制和十六进制之间的转换以及位运算,包括与运算、或运算、异或运算、同或运算,并且可以对显示框有清零和回退的功能,同时在这些基本的运算基础上增加了画图板功能,画图板就是为了在运算疲倦的时候用来娱乐的一种小工具,可以在画图板上画一些简单的图形,选取颜色和风格等简单的功能。这款科学计算器功能强大,安全性高,界面简洁友好,符合广大用户的基本需求,尤其是争对计算机专业的学生,使用起来更为便捷。4.2功能模块设计4.2.1科学计算功能模块进行加减乘除和取整取模倒数运算。支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,点击等号键时直接给出当前算式的运算结果,实现各类不同函数及位运算。科学计算器模块图如图4-1所示。图4-1科学计算器模块图科学计算器二进制模块图如图4-2所示。图4-2二进制模块图满足加减乘数四则运算实现位运算与运算实现位运算或运算实现位运算同或运算实现位运算异或运算科学计算器八进制模块图如图4-3所示。图4-3八进制模块图实现基本的加减乘数四则运算科学计算器十进制模块图如图4-4所示。图4-4十进制模块图实现基本的加减乘除运算实现倒数运算实现幂运算,包括平方运算实现取整运算实现取模运算科学计算器十六进制模块图如图4-5所示。图4-5十六进制模块图实现基本的技术减乘除四则运算实现位运算与运算实现位运算或运算实现位运算同或运算实现位运算异或运算4.2.2画图板功能模块文件打开和保存的功能,画图工具椭圆、矩形、画笔、画刷、橡皮擦、清图的功能,画图工具属性的设置功能。画图板模块图如图4-6所示。图4-6画图板模块图图片的打开和保存画图工具的选取,比如椭圆、矩形画图工具的选取,比如画笔、画刷5详细设计5.1设计目的为了更好的满足广大计算机用户对于计算器的需求,故在原有加减乘除四则基本运算的基础上,增加了二进制、八进制、十进制、十六进制的转化,还添加了位运算,包括与运算、或运算、异或运算、同或运算。该款计算器的设计更加新颖别致,更加符合计算机专业用户的需求。5.2设计说明5.2.1UI界面风格主界面采用QtCreator工具设计,使用多种布局管理器布局,能够方便的对界面布局进行修改,根据设计者的审美风格进行布局设计。主界面包含一个lineEdit文本显示框,4个QRadioButton以及36个QPushButton按钮,结合中国式审美风格,这样使界面变得更加美观、整洁。科学计算器主界面如图5-1所示。图5-1科学计算器主界面5.2.2科学计算器模块二进制运行程序,在主界面选择二进制,二进制的功能按钮就会显示,非二进制的按钮就会变灰色。二进制功能:加减乘除四则运算与运算、或运算、同或运算、异或运算正负号选取文本框清零功能文本框回退功能八进制运行程序,在主界面选择八进制,八进制的功能按钮就会显示,非八进制的按钮就会变灰色。八进制功能:加减乘除四则运算正负号选取文本框清零功能文本框回退功能十进制运行程序,在主界面选择十进制,十进制的功能按钮就会显示,非十进制的按钮就会变灰色。十进制功能:加减乘除四则运算倒数运算幂运算取整运算取模运算正负号选取文本框清零功能文本框回退功能十六进制运行程序,在主界面选择十六进制,十六进制的功能按钮就会显示,非十六进制的按钮就会变灰色。十六进制功能:加减乘除四则运算与运算、或运算、同或运算、异或运算正负号选取文本框清零功能文本框回退功能科学计算器进制模块5.2.3画图板模块运行程序,在主界面选择画图板按钮,就会进入画图板的界面,并显示相应的画图板功能按钮。画图板功能:保存、打开文件画图工具图形(椭圆、矩形)选取画图工具画笔、画刷选取清除功能(橡皮擦、清屏)属性设置6系统实现6.1系统功能介绍从功能上来讲,本软件的功能就是实现各种计算,包括普通计算和科学计算,普通计算包括加减乘除计算和算式计算,科学计算包括普通计算和二进制的或与非运算。该软件还有画图功能,可以选取自己喜欢的画图工具并设置其属性。6.2科学计算器界面设计使用Qtdesigner进行设计,首先创建一个mainwindow.ui,这个界面为mainwindow。然后从左侧的WidgetBox里找相应的控件添加到mainwindow里。首先拖出一个lineEdit控件作为算式显示窗口和结果显示窗口,在提取出36个QpushButton为0到F按键和加减乘除按键、小数点按键、正负号按键、等于按键、清零按键、删除按键、回退按键、取整按键、取模按键、平方按键、幂次方按键、倒数按键、位运算按键以及画图板按键。然后再把每个QpushButton名字改成相应的符号,并且改对应Qpushbutton的属性,保存后行进编译,运行程序就可以显示相应界面。现在头文件中对各个按键在私有的槽中进行声明,例如:voidon_pushButton_9_clicked();,就对9键进行声明,然后就可以在源文件中进行编写程序。voidMainWindow::fun9(){if(falg==1){ui->lineEdit->setText("0");falg=0;}zh=0;QStringval,value;val=ui->lineEdit->text();if(val!="0")value=val+"9";elsevalue="9";ui->lineEdit->setText(value);}通过connect(ui->pushButton_9,SIGNAL(clicked()),this,SLOT(fun9()));连接到9,使其按键符号点击后可以在lineEdit上显示出来,在这里设计用的就是信号和槽的机制。6.2.1科学计算器进制选择功能本界面的主要功能是在普通计算上添加一些科学计算,如平方、幂运算、取倒数、等功能。界面设计:在窗体的基础上添加一个QLineEdit按钮,修改其属性,变成可显示输入数字的和结果的文本框,然后添加三十七个QPushButton按钮,修改其属性,变成相应的功能,再从左面把QRadioButton控件加到界面中,修改期属性,使其分别为二进制、八进制、十进制和十六进制,这个控件的功能只能有一个按键被点中。再构建和运行,可显示相应的界面,达到想要的效果。程序的具体实现:首先各个按钮控件都得在头文件中声明,再到源文件中写相应的代码。在二进制、八进制、十进制、十六进制的函数中把相应用不到的按键用函数写成不显示,要用的显示,然后读取显示窗口的内容,把其转换成相应进制的数字,并把此时窗口的状态记录成此时的进制,方便其他的运算。在其他科学运算符的按键的函数编写代码,读取窗口数据,然后进行相应的运算,再把结果显示到窗口。八进制实现功能如图6-1所示。图6-1八进制图八进制实现功能如图6-2所示。图6-2二进制图十进制实现功能如图6-3所示。图6-3十进制图十六进制实现功能如图6-4所示。图6-4十六进制图6.2.2科学计算器进制转换功能该科学计算器添加了进制转换功能,包括二进制向十进制转换,十进制向二进制转换,八进制向十进制转化,十六进制向十进制转化。以下逐一介绍程序是如何通过函数实现的。二进制向十进制装换,其函数实现如下:longMainWindow::mypow(intx,inty){inti;longre=1;for(i=0;i<y;i++){re*=x;}returnre;}//二进制向十进制转换longMainWindow::f2to10(QStringstr){longde

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论