简单计算器—实训报告_第1页
简单计算器—实训报告_第2页
简单计算器—实训报告_第3页
简单计算器—实训报告_第4页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、Linux 应用与编程实习报告学院名称专业班级学生姓名学号指导教师山东科技大学一、实习题目:二、实习时间:三、实习任务:B2- 简单计算器19 周 20 周实习地点:J13- 128实现一个简单计算器,计算器包括加、减、乘、除四种运算。用户通过鼠标进行数据输入,输入的数据以及计算结果显示在文本框中四、小组分工说明:独立完成五、实习成绩六、指导教师对实习的评语:指导教师(签章):2015年月日目录1.概述 -42.相关技术 -42.1 QT 中信号和槽 -42.2字符串输出数据组 -错误!未定义书签。3.需求分析 -54.总体设计与详细设计 -54.1系统模块划分 -54.2主要功能模块 -55

2、.编码实现 -66测试情况说明 -147.实训中遇到的主要问题及解决方法- 158.实训收获与体会 -161. 概述1.1实训项目简介本次实训项目是应用Linux 系统中的QT编译器编写一个界面简洁,操作简单的简易计算器。该简易计算器运用的技术主要是Linux 系统中 QT编译器的一些函数以及指针等。1.2基本功能( 1)通过鼠标点击接收数字键入以及运算符。( 2)能够进行简单的加减乘除四则运算。( 3)一键清空功能。1.3附加功能( 1)键入数字超过 6 位,输出窗口输出“ error”提示。( 2)能够进行连续加法和减法混合运算,能够进行连续乘法和除法混合运算。( 3)键入的被除数为0 时

3、,输出窗口输出“被除数不能为0 哦”提示。( 4)连续键入两个运算符时,输出窗口输出“只能输入一个运算符哦”提示。( 5)进行加减法与乘除法混合运算时,输出窗口输出“error”提示。2. 相关技术2.1QT 中信号和槽信号槽机制与Windows 下消息机制类似,消息机制是基于回调函数,Qt 中用信号与槽来代替函数指针,使程序更安全简洁。当对象改变其状态时,信号就由该对象发射(emit)出去,而且对象只负责发送信号,它不知道另一端是谁在接收这个信号。这样就做到了真正的信息封装,能确保对象被当作一个真正的软件组件来使用。槽用于接收信号,而且槽只是普通的对象成员函数。一个槽并不知道是否有任何信号与

4、自己相连接。而且对象并不了解具体的通信机制。2.2 字符串输出数据组为实现计算整式的显示,并且避免键入下一个数之前frist和second清除不净,在calculor.h中定义字符串, 把显示窗口中的数据捕捉到字符串中,并随第二个数一起显示,从而实现计算整式的显示。str=ui->textEdit->toPlainText()+QString:number(int(key);ui->textEdit->setText(str);3. 需求分析(用面向对象方法给出系统的主要需求模型 ,略写)3.1 功能需求分析基本功能:鼠标键入数字及运算符,进行简单的加减乘除四则运算。拓

5、展功能:进行连续加减或乘除运算,当出现输入被除数为 0,输入位数过多,连续输入多个运算符等错误时,输出窗口提示相应错误。3.2 数据需求分析连续输入时的总式实时显示,结果的显示,错误类型的显示。3.3 行为需求分析鼠标键入数字及运算符。3.4 其他需求界面简单,操作简单。4. 总体设计与详细设计4.1系统模块划分简易计算器系统模块模块名称功能简介数字按键模块运算符按键模块数据转换模块数据计算模块将键入的数字传到数据转换模块中进行判断是否连续运算,从数据计算模块中读取结果并显示键入多位数字的转化判断运算符并进行计算输入位数限制模块限制输入位数并进行错误提示4.2 主要功能模块4.1.1系统主要类

6、图calculorcalculor.cppcalculor.hmain.cppcalculor.ui4.1.2 简易计算器程序执行流程图开始键入数字数字小于6是位否键入运算符是否否键入 =输出 error输出结果键入 AC是否结束5. 编码实现calculor.cpp#include "calculor.h"#include "ui_calculor.h"calculor:calculor(QWidget *parent) :QWidget(parent),ui(new Ui:calculor)ui->setupUi(this);ui->te

7、xtEdit->setAlignment(Qt:AlignRight);ui->textEdit->setReadOnly(true);my_state=FRIST;my_sign=NO;frist=0;second=0;result=0;error=0;changdu=0;calculor:calculor()delete ui;/ 按键处理函数void calculor:on_pushButton_1_clicked()trans(1);error=0;changdu+;if(changdu>6)ui->textEdit->setText("e

8、rror");void calculor:on_pushButton_2_clicked()trans(2);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error");void calculor:on_pushButton_3_clicked()trans(3);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error");void calculor:on_pushButton_4_cl

9、icked()trans(4);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error");void calculor:on_pushButton_5_clicked()trans(5);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error");void calculor:on_pushButton_6_clicked()trans(6);error=0;changdu+;if(changdu&

10、gt;6)ui->textEdit->setText("error");void calculor:on_pushButton_7_clicked()trans(7);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error");void calculor:on_pushButton_8_clicked()trans(8);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error

11、");void calculor:on_pushButton_9_clicked()trans(9);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error");void calculor:on_pushButton_10_clicked()trans(0);error=0;changdu+;if(changdu>6)ui->textEdit->setText("error");/ 加法按键运算函数void calculor:on_pushButt

12、on_jia_clicked()if(changdu>7)ui->textEdit->setText("error");elseif(error!=0)?ui->textEdit->setText("? ? );else?蜿?閭 ?霎灘 ?竴荳 ?隶?邂礼 ?蜩 ?if(my_state=SECOND)if(my_sign=CHU|my_sign=CHENG)ui->textEdit->setText("error");elsecal();/ ui->textEdit->setText(QS

13、tring:number(result);str=ui->textEdit->toPlainText()+'+'ui->textEdit->setText(str);frist=result;second=0;my_sign=JIA;elsemy_sign=JIA;my_state=SECOND;str=ui->textEdit->toPlainText()+'+'ui->textEdit->setText(str);error+;/ 减法运算函数void calculor:on_pushButton_jian_c

14、licked()if(changdu>6)/键入数据位数限制条件ui->textEdit->setText("error");elseif(error!=0)/连续键入两个运算符报错ui->textEdit->setText(“不能连续输入两个运算符哦”);elseerror+;if(my_state=SECOND)/连续减法运算if(my_sign=CHU|my_sign=CHENG)ui->textEdit->setText("error"); / 混合运算报错 elsecal();/ui->textE

15、dit->setText(QString:number(result);str=ui->textEdit->toPlainText()+'-'ui->textEdit->setText(str);frist=result;second=0;my_sign=JIAN;elsemy_sign=JIAN;my_state=SECOND;str=ui->textEdit->toPlainText()+'-'ui->textEdit->setText(str);/ 乘法运算运算符函数void calculor:on_p

16、ushButton_cheng_clicked()if(changdu>6)ui->textEdit->setText("error");elseif(error!=0)ui->textEdit->setText(“不能连续键入两个运算符哦”);elseerror+;if(my_state=SECOND)if(my_sign=JIA|my_sign=JIAN)ui->textEdit->setText("error");elsecal();/ ui->textEdit->setText(QString

17、:number(result); str=ui->textEdit->toPlainText()+'*' ui->textEdit->setText(str);frist=result;second=0;my_sign=CHENG;elsemy_sign=CHENG;my_state=SECOND;str=ui->textEdit->toPlainText()+'*'ui->textEdit->setText(str);/ 除法运算符函数void calculor:on_pushButton_chu_clicked

18、()if(changdu>6)ui->textEdit->setText("error");elseif(error!=0)ui->textEdit->setText(“不能连续输入两个运算符哦!”);elseerror+;if(my_state=SECOND)if(my_sign=JIA|my_sign=JIAN)ui->textEdit->setText("error");elsecal();/ui->textEdit->setText(QString:number(result);str=ui-

19、>textEdit->toPlainText()+'/'ui->textEdit->setText(str);frist=result;second=0;my_sign=CHU;elsemy_sign=CHU;my_state=SECOND;str=ui->textEdit->toPlainText()+'/'ui->textEdit->setText(str);/ 等于号运算函数void calculor:on_pushButton_enter_clicked()if(my_sign=CHU)&&

20、(second=0)ui->textEdit->setText("” );elsecal();ui->textEdit->setText(QString:number(result);/ shu ju hui fu frist=0; second=0; my_state=FRIST; my_sign=NO;/ 清楚键位函数void calculor:on_pushButton_clean_clicked()ui->textEdit->clear();my_state=FRIST;my_sign=NO;frist=0;second=0;result=

21、0;error=0;changdu=0;/ 数据转换函数void calculor:trans(char key)if(my_state=FRIST)frist=frist*10+(int)key;ui->textEdit->setText(QString:number(frist);elsesecond=second*10+(int)key; /ui->textEdit->setText(QString:number(second);str=ui->textEdit->toPlainText()+QString:number(int(key); ui-&g

22、t;textEdit->setText(str);/ 数据运算函数void calculor:cal()changdu=0;error=0;if(my_sign=JIA)result=frist+second;else if(my_sign=JIAN)result=frist-second;else if(my_sign=CHENG)result=frist*second;else if(my_sign=CHU)result=frist/second;6测试情况说明。6.1 主要模块测试情况(白盒)模块 1、按键模块测试用例预期结果实际结果问题描述修改方案鼠标点击0 9显示窗口显示 0显示窗口显示0十个键位9 十个数9 十个数鼠标点击 AC 键窗口中原来的数窗口中原来的数字消失归零字消失归零鼠标点击运算符窗口显示运算符窗口显示运算符6.2主要功能测试情况(黑盒)功能 1、键入数据位数限制测试用例预期结果实际结果问题描述修改方案键入 6 位以上的键入第

温馨提示

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

评论

0/150

提交评论