毕业论文一种基于Qt的科学计算器系统.docx
《毕业论文一种基于Qt的科学计算器系统.docx》由会员分享,可在线阅读,更多相关《毕业论文一种基于Qt的科学计算器系统.docx(19页珍藏版)》请在冰豆网上搜索。
毕业论文一种基于Qt的科学计算器系统
毕业论文一种基于Qt的科学计算器系统
毕业设计报告论文
题目:
一种基于Qt的科学计算器系统
所属系专业科学与技术学号姓名指导教师7>2013.2---2013.5设计地点
毕业设计报告(论文)
诚信承诺
本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。
如论文涉及任何知识产权纠纷,本人将承担一切责任。
学生签名:
日 期:
一种基于Qt的科学计算器系统
摘要
关键词:
科学计算器;进制转换;算式提取;Qt
Englishtitle
Abstract
Mankindhasenteredtheinformationage.Therapiddevelopmentofinformationtechnology,thecalculatorhasenteredallspheresoflifeofthepeople,anintegralpartofmodernlife,alargecomplexcalculationsthehumanbrainisincapableof,anderror-prone.ForQtscientificcalculator,addingalotoffeatures,alotofconveniencetotheuser,andimprovetheoperationalefficiencyoftheuser.
Fromtheprojectbackground,requirementsanalysis,softwaredesignandotheraspectsofadetaileddescriptionofthedevelopmentofthedesignprocessoftheQtscientificcalculator.ThesoftwareusestheLinuxwritecode,Qtinterfacedesigntodevelop.Thecalculatorcontainsasimplecalculationfunctions.
Thecalculatorinterfacevisualization,user-friendlyoperation,andthecalculatorformulaextractionandstoragefeaturesmaketheformulaquickerandmoreconvenientfortheusertocarryoutalargenumberofcomplexscientificcalculationsprovideaneffectiveguarantee.
Keyword:
Scientificcalculators;binaryconversion;formulaextract;Qt
目录摘要I
AbstractII
第一章绪论1
1.1项目背景1
1.2项目内容和要求1
题目介绍1
题目要求1
1.3项目特点及意义1
第二章需求分析3
2.1功能需求一3
2.2功能分析3
2.3安全性分析4
2.4可行性分析4
2.5系统设计工具4
fedora技术简介4
QSqlite数据库技术4
第三章软件设计6
3.1数据库设计6
实体属性图6
关系模型设计6
数据库结构设计7
第四章简单的计算器8
4.1项目目的8
4.2项目内容8
4.3项目步骤8
第五章计算器程序的实现11
第六章源代码的分析说明14
第七章编译运行20
第八章计算器程序的移植21
致谢23
参考文献24
1.1项目背景
随着计算机的飞速发展,人类已经进入信息化时代。
信息技术发展日新月异,计算已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。
以前的计算器只能进行简单的加减乘除四则运算,而且只能进行单步运算,如果遇到较长的算式时就得让用户一步一步输入,浪费很多时间,还会可能遗漏数据内容,让用户得多次输入算式验证,如果一次错误就得验证多遍,浪费时间效率低下。
随着科技的发展,人们所学习的内容越来越多,需求越来越广泛。
本文设计的计算器扩大了用户的运算领域。
并且考虑到用户有时常用一些算式,提高了用户的效率,方便了用户的操作,本文设计中主要采用的技术为Qt,Qt为设计可视化界面,通过软件的设计可以快速设计出自己需要的界面,然后再到编写各个按键的槽函数与算法。
上网查找资料,看书查找例子。
1.2项目内容和要求
题目介绍
设计一个功能齐备的科学计算器,具有算式编辑计算和普通计算窗口。
具体要求如下:
可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。
三角函数可设置度或弧度。
设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。
普通计算窗口:
支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中间数据的存储或提取插入。
编辑、存储、粘贴、修改、计算算式长度可达256个字符实现大中小括号和各类不同函数及位运算支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换显示当前日期时间
本文对计算器进行设计,比传统计算其增加了许多功能,使用更方便,主要有以下几个特点:
(1)计算速度快,节省时间、人力
(2)普通窗口可以进行各进制的加减乘除运算。
(3)科学计算窗口可以进行小括号、中括号、大括号,正弦、余弦,角度,弧度,包括普通窗口的运算。
(4)可对算式进行存储,添加,删除等功能。
。
第二章需求分析
2.1功能需求一
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
在程序设计中,可以用两种方法解决问题:
一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。
而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。
我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。
虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。
所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。
要实现计算功能,可以用C++和Qt的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
本文的程序设计设计工作环境为Linux+QTCreator,在程序设计中,采用了结构化与面向对象两种解决问题的方法。
2.2功能分析
1).普通窗口计算设计
这一模块要求进行加减乘除运算。
支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中数据的存储或提取插入。
可以对算式进行编辑、存储、粘贴、修改、计算。
算式长度可达256个字符算式内可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。
三角函数可设置度或弧度。
设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。
使用Qt自带的QSqlite数据库,进行存储算式,对算式进行添加、保存、删除功能,并且在帮助功能上也使用此数据库,把各个按键的功能村如此数据库中。
还可以添加和删除,非常方便。
并且此程序界面使用Qtdesigner进行布局,这样对各个控件进行布局,排版结构时不容易出错,快速便捷。
提高软件的安全性。
2.4可行性分析
计算器是日常生活中非常便捷有效的工具,它具有普通计算和科学计算,能实现加减乘除等普通功能,还可以实现算是运算,并且可以进行进制装换,不再局限于十进制,他大大的提高了我们的效率,节省了时间,可促进科技的发展,还可以用来存储算式,可以方便下次使用,采用Qt编写,Qtdesigner设计的界面美观,还可以用拖拽功能进行设计控件的位置、大小、属性、结构等功能,这样在编写代码时就不用浪费时间对控件进行声明等代码了。
这降低了程序员的难度,提高了程序员的效率,并且上手快,具有一定的可行性。
技术经济分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。
在技术上,主要是采用linux,可以进行复杂的数据库操作,进行算是的增、删、改、查等功能。
用Qt编写,有些类似C++,但大多数都是Qt封装好的函数。
在linux中安装Qt软件,配置环境变量,并安装Qt插件。
从而用Qt进行制作界面,做出的效果既美观又快捷方便。
使用Qt具有良好美观的界面,必要的信息存储和和较好的健壮性,使用人员能够快捷简单的进行操作,可以快捷的获得计算结果,给人们带来方便,对人们的生活有很大的帮助。
2.5系统设计工具
fedora技术简介
Fedora(第七版以前为FedoraCore)是一款基于Linux的操作系统,也是一组维持计算机正常运行的软件集合。
Fedora由FedoraProject社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由和开源的操作系统。
Fedora项目以社区的方式工作,引领创新并传播自由代码和内容,是世界各地爱好、使用和构建自由软件的社区朋友的代名词。
Fedora基于RedHatLinux,在RedHatLinux终止发行后,红帽公司计划以Fedora来取代RedHatLinux在个人领域的应用,而另外发行的RedHatEnterpriseLinux(RedHat企业版Linux,RHEL)则取代RedHatLinux在商业应用的领域。
Fedora的功能对于用户而言,它是一套功能完备、更新快速的免费操作系统,而对赞助者RedHat公司而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到RedHatEnterpriseLinux中。
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的简单的来说QTDesigner是一个GUI的工具这个工具可以帮助我们来加快写QT程的速度.利用QTDesigner可以用一种所见既所得的方式来产生QT程的GUI介面的程式码.通过增加一些功能就可以完成一个程了.利用QTDesigner可以非常快速的学会QT而我们这里说利用QTDesigner来学习QT而不是利用QTDesigner来写QT这里的区别就在于QTDesigner所产生的程码有些繁琐起来也比较的慢些我们这里只是利用QTDesigner来帮助我们学习而不是直接去QTDesigner生成的程qt-win-opensource--vs2008.exe,在安装vs的qt插件qt-vs-addin-.exe,在配置环境变量:
QTyourQt-root-folder;在PATH中添加:
“;%QT%\bin”。
然后就可以用Qtdesigner中的控件进行制作程序界面,并且可以直接修改属性,这样可以在代码量上节省不少时间。
(2)Qt技术介绍
QT是一个跨平台的C++GUI应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上。
支持Linux平台。
伴随着KDE的快速发展和普及,QT很可能成为Linux窗口平台上进行软件开发时的GUI首选。
信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。
信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。
信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。
在我们所熟知的很多GUI工具包中,窗口小部件widget都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。
但是,在QT中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。
信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生coredumps。
在这里我设计的主窗口为:
QWidget,而在帮助窗口为:
QDialog。
第三章软件设计
3.1数据库设计
数据库在一个管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据库的完整性和一致性。
同时,合理的数据库结构也将有利于程序的实现。
实体属性图
E-R图是实体之间联系的一个简单表述,下面详细介绍各实体的属性:
图3.1算式实体属性图
算式实体属性如图3.1,包括算式id,算式名字。
图3.2按键信息实体属性图
按键信息实体属性如图3.2,包括按键编号,按键名,按键功能。
关系模型设计
本系统中主要的关系模型设计如下:
算式信息(编号,算式名);
按键信息(编号,按键名,按键功能);
数据库结构设计
每个数据文件均有一张定义表。
其数据库各表的表头信息更为详细的反映数据间的关系。
本系统数据库的内容包括算式表、帮主功能表。
表的具体设计如下所示:
1算式表用来存储算是编号和算式名,表名:
message。
本表用来存储已用户常用的算式,其中可以对算式进行保存、删除、修改,方便用户及使用到常用的式子,提高用户效率。
算式表如表3.1所示。
表3.1算式表Int4算是编号(Id)算是名QString16算式(formulanumber)
2按键信息表用来存储按键编号,按键名,按键功能,表名:
helpmessage。
本表用来实现帮助功能,存储帮助功能中按键的信息,可以查看所有的按键功能,也可以看单个按键信息,还可以对案件信息进行增加和删除。
按键表如表3.2所示。
表3.2按键表
字段名称数据类型长度备注编号自动编号长整型为主码、唯一(id)按键名Vchar1按键名(helpname)功能Vchar1按键功能(explain)
第四章简单的计算器
4.1项目目的
QtCreator的简单操作。
(2)了解Qt程序编写框架。
(3)了解信号和槽机制,熟练掌握信号与槽在应用程序中的使用。
4.2项目内容
(1)查看API手册,学习简单的Qt类的使用,如QLineEdit、QPushButton等。
(2)用QtCreator创建工程,用Qt编写计算器程序。
(3)对计算器程序进行移植。
4.3项目步骤
创建工程
1)打开QtCreator,如图F-1所示。
图F-1
2)选择File-NewFileorProject,然后在弹出的对话框中选择OtherProject-EmptyQtproject(如图F-2所示),然后进入下一步。
图2
3)定义新工程的工程名并选择保存路径(如图F-3所示),然后进入下一步。
图3
4)选择Qt版本,这里选择使,取消对QtinPATH的选择(如图4所示),然后进入下一步,完成新工程的创建(如图F-5所示)。
图F-4
图F-5
第五章计算器程序的实现
主要工作:
一是实现计算器的图形界面;二是实现按键事件和该事件对应的功能绑定,即信号和对应处理槽函数的绑定。
图形界面的实现
通过分析可知,需要16个按键和一个显示框,同时考虑到整体的排布,还需要水平布局器和垂直布局器。
通过组织这些类我们可以实现一个简单的带有数字0~9,可以进行简单四则运算且具有清屏功能的计算器。
对于这些类的具体操作会在后面的代码中详细说明。
5.1信号和对应槽函数的绑定
分析计算器的按键我们可以把按键事件分为以下三类,一是简单的数字按键,
主要进行数字的录入,这类按键包括按键0~9;二是运算操作键,用于输入数学运算符号,进行数学运算和结果的显示,这类按键包括“+”,“-”,“*”,“/”,“”;三是清屏操作键,用于显示框显示信息的清除。
5.2进入刚才创建的空工程,双击左侧的Calculator.pro,在主编辑框中目前显示Calculator.pro的内容为空,如图F-6所示。
这是因为目前什么文件都没有添加的缘故。
图6
5.3添加文件calculator.h
在工程Calculator上面点击右键,然后点击AddNew,选择添加C++HeaderFile(如图F-7所示),进入下一步后输入文件名calculator.h(如图F-8所示),然后完成文件的添加。
图7
图F-8
5.4添加文件calcul
与添加文件calculator.h的过程类似,只是在选择文件类型时选择为C++SourceFile。
完成后可以查看Calculator.pro文件的内容,整个工程的文件结构如图F-9所示。
图F-9
第六章源代码的分析说明
6.1对calculator.h源代码的简要说明
#ifndefCALCULATOR_H
#defineCALCULATOR_H//对calculator.h头文件的声明
#include//包含主窗体类
#include//包含按键类
#include//包含垂直布局器类
#include//包含水平布局器类
#include//包含显示框类
classCalculator:
publicQWidget//计算器继承自主窗体类
Q_OBJECT//必须加上这句,如果要调用信号,槽函数的操作的话
public:
Calculator;//计算器类的构造函数
~Calculator;//计算器类的析构函数
publicslots:
//定义各个按键按下后对应操作处理的槽函数
voidzeroButtonPress;
voidoneButtonPress;
voidtwoButtonPress;
voidthreeButtonPress;
voidfourButtonPress;
voidfiveButtonPress;
voidsixButtonPress;
voidsevenButtonPress;
voideightButtonPress;
voidnineButtonPress;
voidaddButtonPress;
voidsubButtonPress;
voidmulButtonPress;
voiddivButtonPress;
voidclearButtonPress;
voidequButtonPress;
private:
QLineEdit*operateEdit;//声明显示框
QPushButton*zeroButton;//声明数字按键1
QPushButton*oneButton;
QPushButton*twoButton;
QPushButton*threeButton;
QPushButton*fourButton;
QPushButton*fiveButton;
QPushButton*sixButton;
QPushButton*sevenButton;
QPushButton*eightButton;
QPushButton*nineButton;
QPushButton*clearButton;//声明运算符按键
QPushButton*addButton;
QPushButton*subButton;
QPushButton*divButton;
QPushButton*mulButton;
QPushButton*equButton;
QHBoxLayout*firstLayout;//声明水平布局器,该布局器主要对16个按键进行布局
QHBoxLayout*secondLayout;
QHBoxLayout*thirdLayout;
QHBoxLayout*fourthLayout;
QVBoxLayout*mainLayout;//声明垂直布局器,该布局器主要对主窗体上面的空间进行排布
QStringinput1;//计算器第一个运算操作数
QStringinput2;//计算器第二个运算操作数
charoperate;//运算符
;
#endif//CALCULATOR_H
对calculator.cpp源代码的简要说明
首先是构造函数的实现:
Calculator:
:
Calculator
operateEditnewQLineEditthis;//初始化显示框
operateEdit-setReadOnlytrue;//设置显示框为只读
operateEdit-setTexttr"0";//初始化显示框显示数据为0
zeroButtonnewQPushButton;//初始化按键
zeroButton-setTexttr"0";//设置按键上显示的标签,以下对按键相关的操作类似
oneButtonnewQPushButton;
oneButton-setTexttr"1";
twoButtonnewQPushButton;
twoButton-setTexttr"2";
threeButtonnewQPushButton;
threeButton-setTexttr"3";
fourButtonnewQPushButton;
fourButton-setTexttr"4";
fiveButtonnewQPushButton;
fiveButton-setTexttr"5";
sixButtonnewQPushButton;
sixButton-setTexttr"6";
sevenButtonnewQPushButton;
sevenButton-setTexttr"7";
eightButtonnewQPushButton;
eightButt