Qt课题之科学计算器.doc_第1页
Qt课题之科学计算器.doc_第2页
Qt课题之科学计算器.doc_第3页
Qt课题之科学计算器.doc_第4页
Qt课题之科学计算器.doc_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、.专业整理 .QT 课程作业设计题目:科学计算器. 学习帮手 .专业整理 .小组成员 :陈启敬 201113010409刘阳 201113010405何亚洲 201113010407王勇 201113010404黄昭宇 201113010421. 学习帮手 .专业整理 .一、功能设计要求 :特别声明 :本程序系 QT5 编译制作科学计算器两种计算器模式:一个普通模式 ,一个科学模式 。参照 windows7的“计算器 ”程序说明:在查看菜单下有两个菜单项 :“标准型 ”、科“学型 ”。当用户选择标准型的时候 ,只有一个显示区 ,显示用户当前键入的数据或计算结果 ;当用户选择科学型的时候 ,有两

2、个显示区 ,其中最上面有个显示用户当前键入的数据 或计算的结果 ,也就是标准型的显示区,它的下面 (MC 按钮的左边 )有一个显示区用来显示当前用户临时保存在 Memory 中的数据 。在编辑菜单下有 “复制 ”和“粘贴 ”两个菜单项 ,其功能与 windows 的计算器一样 。帮助菜单下有 “关于计算器 ”菜单项 ,点击该菜单项时 弹出一个对话框 ,显示版权信息(包含开发者名字 、学号)。功能介绍 :对于计算器我们都很熟悉 ,在平常的生活中也经常用到。本次设计的科学计算器不但可以计算普通的加减乘除运算 ,还可以对于三角函数 ,乘方,对数等一些运算 。二、详细的设计介绍1界面设计界面设计我们是

3、使用 Qt creator 进行设计的 ,首先创建 QMainWindow(parent).ui ,这个界面为 QWidget 。然后在左侧的 Widget Box 找相应的控件添加到 QMainWindow(parent) 里。然后添加相应的按钮 ,lineEdit 控件作为算式显示窗口和结果显示窗口 , pushButton 作为相应数字和功能按钮等 ,并将它们的名称属性修改 。. 学习帮手 .专业整理 .相应的属性修改 :动作编辑器的设置 :. 学习帮手 .专业整理 .信号槽设置 :设计出的界面如下:标准型:科学型:. 学习帮手 .专业整理 .实现版权信息 :界面的相关代码 :#ifnd

4、efMAINWINDOW_H#defineMAINWINDOW_H#includenamespace Uiclass MainWindow ;. 学习帮手 .专业整理 .class MainWindow: public QMainWindowQ_OBJECTpublic :explicit MainWindow (QWidget*parent= 0); MainWindow ();private slots:/ 存储槽口void on_btnMjian_clicked();void on_btnMjia_clicked();void on_btnMS_clicked();void on_btn

5、MR_clicked();void on_btnMC_clicked();void about();void copy();. 学习帮手 .专业整理 .void paste();/ 标准型和科学型槽口void on_action_S_triggered();void on_action_T_triggered();/0-9 槽函数的定义void on_btn1_clicked();void on_btn2_clicked();void on_btn3_clicked();void on_btn4_clicked();void on_btn5_clicked();void on_btn6_cli

6、cked();void on_btn7_clicked();void on_btn8_clicked();void on_btn9_clicked();void on_btn0_clicked();void on_btnPoint_clicked(); / 点void additiveOperatorClicked(QString);/ 加法器. 学习帮手 .专业整理 .voidmultiplicativeOperatorClicked(QString);/ 乘法器/void kuohaoOperatorClicked(QString);/括号运算voidon_btnBackspace_cli

7、cked(); / 退格voidon_btnClear_clicked(); / 初始化voidon_btnPlus_clicked(); / 符号的改变voidon_btnCE_clicked(); / 清屏voidon_btnSqrt_clicked(); / 开方voidon_btnPercent_clicked(); / 百分号voidon_btn_1_x_clicked(); / 1/xvoidon_btnEql_clicked(); / 等于void clickbtn1(QString); / 数字void clickbtn2(QString); / 一元操作运算void on_b

8、tnAdd_clicked(); / 加void on_btnSubtract_clicked(); / 减void on_btnMultiply_clicked();/ 乘void on_btnDivide_clicked(); / 除void on_btnPi_clicked(); / 按键 Pi. 学习帮手 .专业整理 .void on_btnLn_clicked(); / 按键 Lnvoid on_btnSinh_clicked(); / 按键 sinhvoid on_btnSin_clicked(); / 按键 Sinvoid on_btnX_2_clicked(); / 按键 X2

9、void on_btnN_class_clicked(); / 按键 N!void on_btnCosh_clicked(); / 按键 Coshvoid on_btnCos_clicked(); / 按键 Cosvoid on_btnX_y_clicked(); / 按键 xyvoid on_btnX_y_clicked();/ 按键 x yvoid on_btnTanh_clicked(); / 按键 tanhvoid on_btnTan_clicked(); / 按键 tanvoid on_btnX_3_clicked(); / 按键 x3void on_btnX_3_clicked()

10、;/ 按键 3 xvoid on_btnExp_clicked(); / 按键 evoid on_btnMod_clicked(); / 按键 modvoid on_btnLog_clicked(); / 按键 logvoid on_btn10_x_clicked(); / 按键 10xvoid on_btnLkuo_clicked(); / 按键 (void on_btnRkuo_clicked(); / 按键 ). 学习帮手 .专业整理 .private :Ui:MainWindow*ui;QString B;/ 标记等号状态QString C;/ 标记一元操作状态QString D;/

11、标记 add 运算符状态QString E;/ 标记 mul 运算符状态QString F;/ 标记 x_y,x_yQString K;/ 标记括号状态QString M ;/QString G;/标记 x_yvoid abortOperation(); / 错误判断doublesumInMemory ;/ 记忆存储doublesumSoFar;/ 加doublefactorSoFar ;/ 乘doubleSoFar;/ 幂doublekuohao ;/ 括号QString pendingAdditiveOperator;QString pendingMultiplicativeOperato

12、r;. 学习帮手 .专业整理 .QString pendingOperator1;QString kuoOperator ;/ 括号操作bool calculate( doublerightOperand,const QString &pendingOperator);#endif/ MAINWINDOW_H2 计算功能的设计2.1关于计算机的初始化和相关版本的代码:#includemainwindow.h#includeui_mainwindow.h#includeQMessageBox#include/#define exp=2.71828/#define pi=3.14159MainWi

13、ndow :MainWindow (QWidget*parent): QMainWindow(parent),ui(new Ui:MainWindow )ui -setupUi( this );. 学习帮手 .专业整理 .ui -groupBox-hide();/ 科学计算框默认隐藏layout()-setSizeConstraint(QLayout:SetFixedSize);sumInMemory= 0.0;/ 变量初始化sumSoFar = 0.0;factorSoFar = 0.0;SoFar= 0.0;B= 0 ;C= 0 ;K= 0 ;ui -lineEdit-setText(0

14、);ui -lineEdit-setReadOnly(true );/ 将文本编辑框设置为不可更改ui -lineEdit-setAlignment(Qt:AlignRight);/ 设置成右对齐ui -lineEdit_2-setReadOnly(true );/ 将文本编辑框设置为不可更改QFont font = ui -lineEdit-font();/ 设置字体font.setPointSize(font.pointSize()+ 6);. 学习帮手 .专业整理 .ui -lineEdit-setFont(font);MainWindow : MainWindow ()delete u

15、i;void MainWindow :about() / 关于计算器 (A)QMessageBox:about( this , tr(关于计算器 (A),tr( 版本号: v1.0.0.0 开发者:陈启敬 201113010409刘阳 201113010405何亚洲 201113010407王勇 201113010404黄昭宇 201113010421);. 学习帮手 .专业整理 .2.2. 数字按键 、等号等按钮代码 :void MainWindow :on_btnEql_clicked() / 按键 = 号if (!ui -lineEdit_2-text().contains(= )dou

16、bleoperand= ui-lineEdit-text().toDouble();QString A= ui -lineEdit-text();if (!pendingOperator1.isEmpty()calculate(operand, pendingOperator1);operand = SoFar;SoFar = 0.0;pendingOperator1.clear();if (!pendingMultiplicativeOperator.isEmpty()if (!calculate(operand,pendingMultiplicativeOperator)abortOper

17、ation();return ;. 学习帮手 .专业整理 .operand = factorSoFar ;factorSoFar = 0.0;pendingMultiplicativeOperator.clear();if (!pendingAdditiveOperator.isEmpty()if (!calculate(operand,pendingAdditiveOperator)abortOperation();return ;pendingAdditiveOperator.clear();elsesumSoFar = operand;ui -lineEdit-setText(QStri

18、ng:number(sumSoFar);. 学习帮手 .专业整理 .if(K != 1 )if(C != 1 )ui -lineEdit_2-setText(ui -lineEdit_2-text()+A+ = +QString:number(sumSoFar);else ui -lineEdit_2-setText(ui -lineEdit_2-text()+ = +QString:number( sumSoFar );else ui -lineEdit_2-setText(ui -lineEdit_2-text()+ = +QString:number( sumSoFar );sumSoF

19、ar = 0.0;B= 1 ;C= 0 ;/0-9槽函数. 学习帮手 .专业整理 .void MainWindow :on_btn0_clicked() /0 号键的槽函数clickbtn1( 0 );void MainWindow :on_btn1_clicked() /1 号键的槽函数clickbtn1( 1 );void MainWindow :on_btn2_clicked() /2 号键的槽函数clickbtn1( 2 );void MainWindow :on_btn3_clicked() /3 号键的槽函数clickbtn1( 3 );void MainWindow :on_bt

20、n4_clicked() /4 号键的槽函数clickbtn1( 4 );. 学习帮手 .专业整理 .void MainWindow :on_btn5_clicked() /5 号键的槽函数clickbtn1( 5 );void MainWindow :on_btn6_clicked() /6 号键的槽函数clickbtn1( 6 );void MainWindow :on_btn7_clicked() /7 号键的槽函数clickbtn1( 7 );void MainWindow :on_btn8_clicked() /8 号键的槽函数clickbtn1( 8 );void MainWind

21、ow :on_btn9_clicked() /9 号键的槽函数. 学习帮手 .专业整理 .clickbtn1( 9 );void MainWindow :on_btnPoint_clicked() /Point键的槽函数if (!ui -lineEdit-text().contains(.)ui -lineEdit-setText(ui -lineEdit-text()+ tr( .);void MainWindow :on_btnBackspace_clicked() /backspace槽函数的定义QString operand= ui -lineEdit-text();operand.c

22、hop( 1);if (operand.isEmpty()operand = 0 ;ui -lineEdit-setText(operand);. 学习帮手 .专业整理 .void MainWindow :on_btnCE_clicked() / 按键 CE=清楚屏幕ui -lineEdit-setText(0 );2.3. 计算槽的相关代码 :bool MainWindow :calculate( doublerightOperand,const QString&pendingOperator)/ 计算槽,栈if(pendingOperator=tr(+ )sumSoFar+=rightOp

23、erand;else if(pendingOperator=tr(- )sumSoFar -=rightOperand;else if(pendingOperator=tr(* )factorSoFar *=rightOperand;. 学习帮手 .专业整理 .else if(pendingOperator=tr(/ )if (rightOperand=0.0)return false;factorSoFar /= rightOperand;else if(pendingOperator=tr(x_y)SoFar=pow( SoFar,rightOperand);else if(pending

24、Operator=tr(x_y)if(rightOperandlineEdit-text()= 0 )ui -lineEdit-setText(btn);else if(!pendingOperator1.isEmpty()if(F!= 0 )ui -lineEdit-setText(btn);F = 0;else ui -lineEdit-setText(ui -lineEdit-text()+btn);else if(!pendingMultiplicativeOperator.isEmpty()if(D!= 0 ). 学习帮手 .专业整理 .ui -lineEdit-setText(bt

25、n);D = 0;else ui -lineEdit-setText(ui -lineEdit-text()+btn);else if(!pendingAdditiveOperator.isEmpty()if(E!= 0 )ui -lineEdit-setText(btn);E = 0;else ui -lineEdit-setText(ui -lineEdit-text()+btn);elseif(B!= 1 )ui -lineEdit-setText(ui -lineEdit-text()+btn);else. 学习帮手 .专业整理 .ui -lineEdit-setText(btn);B

26、=0 ;2.4. 一元操作运算的相关代码:void MainWindow :clickbtn2(QStringbtn) / 一元操作运算doubleoperand= ui -lineEdit-text().toDouble();doubleresult = 0.0;if(btn=tr( Sqrt )if(operand 0.0)abortOperation();return ;result=sqrt(operand);. 学习帮手 .专业整理 .else if(btn=tr( x_3)if(operand 0.0)abortOperation();return ;result=pow(oper

27、and,1.0/ 3.0);else if(btn=tr( pi )result= 3.14159 ;else if(btn=tr( exp )result= 2.71828 ;else if(btn=tr( x_2). 学习帮手 .专业整理 .result=pow(operand,2.0);else if(btn=tr( 10_x)result=pow( 10.0, operand);else if(btn=tr( x_3)result=pow(operand,3.0);else if(btn=tr( %)result=operand/100.0;else if(btn=tr( 1/x )i

28、f(operand= 0.0). 学习帮手 .专业整理 .abortOperation();return ;result= 1.0/operand;else if(btn=tr( ln )if(operand 0.0)abortOperation();return ;result=log(operand);QString str = QString:number(result,f ,4);result=str.toDouble();else if(btn=tr( log10 )if(operand 0.0)for (i= 2;i=operand;i+)j*=i;result=j;else if

29、(operandlineEdit-setText(QString:number(result);void MainWindow :abortOperation() /abortOperation的定义on_btnClear_clicked();ui -lineEdit-setText(tr(Error );2.5. 计算器运算实现代码 :void MainWindow :additiveOperatorClicked(QStringclickedOperator) / 加法器doubleoperand= ui-lineEdit-text().toDouble();doubleA = ui -l

30、ineEdit-text().toDouble();if (!pendingOperator1.isEmpty()calculate(operand, pendingOperator1);operand = SoFar;ui -lineEdit-setText(QString:number(SoFar);. 学习帮手 .专业整理 .SoFar = 0.0;/pendingOperator1.clear();if (!pendingMultiplicativeOperator.isEmpty()if (!calculate(operand,pendingMultiplicativeOperato

31、r)abortOperation();return ;ui -lineEdit-setText(QString:number(factorSoFar );operand = factorSoFar ;factorSoFar = 0.0;/pendingMultiplicativeOperator.clear();if (!pendingAdditiveOperator.isEmpty()ui -lineEdit_2-setText(ui -lineEdit_2-text()+QString:number(A)+clickedOperator);. 学习帮手 .专业整理 .if (!calcul

32、ate(operand,pendingAdditiveOperator)abortOperation();return ;ui -lineEdit-setText(QString:number(sumSoFar );elsesumSoFar = operand;if(!pendingOperator1.isEmpty()ui -lineEdit_2-setText(ui -lineEdit_2-text()+QString:number(A)+clickedOperator);else if(!pendingMultiplicativeOperator.isEmpty()ui -lineEdi

33、t_2-setText(ui -lineEdit_2-text()+QString:number(A)+clickedOperator);. 学习帮手 .专业整理 .elseif (K!= 0 )ui -lineEdit_2-setText(ui -lineEdit_2-text()+QString:number(operand)+clickedOperator);else ui -lineEdit_2-setText(QString:number(operand)+clickedOperator);pendingMultiplicativeOperator.clear();pendingOperator1.clear();E= 1;pendingAdditiveOperator= clickedOperator;. 学习帮手 .专业整理 .void MainWindow :multiplic

温馨提示

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

评论

0/150

提交评论