1、小型科学计算器的设计与实现沈阳航空航天大学毕业设计(论文)摘 要随着计算机的飞速发展,人类已经进入信息化时代。信息技术发展日新月异,计算机已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。而以前的计算器只能进行十进制的四则运算,不能满足我们的需求。本文针对小型科学计算器进行研究,增加了很多功能,给用户带来了很多方便,并且提高了用户的运算效率。本文从项目背景、需求分析、软件设计、系统实现、系统调试等方面详细说明了小型科学计算器的开发设计过程。软件采用vs2008编写代码,Qt designer设计界面来开发。计算器包含简单的四则运算、复杂的数学表达
2、式运算、正弦和余弦运算、进制之间的相互转换、按键帮助等功能。计算器具有界面可视化,方便用户操作等特点,并且该计算器的算式提取与存储功能使得算式计算更加快捷方便,为用户进行大量复杂科学计算提供了有效保证。关键词:科学计算器;进制转换;算式提取; Qt designeAbstract Because of the calculator which is flying quickly, the mankind have already entered into information-based ages. The development of the information technique i
3、s changing with each passing day. the calculator has already entered each realm of the peoples life,which is very important in the modern times. the large and complicated calculation which is not competent for persons brain, which is possible to make many mistakes . The calculator only decimal four
4、operations,The calculator can not meet our needs. This paper studied the small scientific calculator,Increased a lot of functions,To give users a lot of convenience, and improves the users operation efficiency. This article through the project background, requirement analysis, software design, syste
5、m realization, system debugging to design calculator. This article through the VS2008 code, Qt designer interface design to develop. The calculator includes a simple four operations, complex mathematical expression operation, sine and cosine computation, hexadecimal conversion between, key help func
6、tions, with a visual interface, easy to operate.This paper introduces the functions of the calculator and the effect of operation, the calculator with a visual interface, convenient operation, the calculator can be carried out calculation formula, the calculator convenient than before. Also commonly
7、 used formula extraction and storage, convenient for users to use. With the help of functional, user can quickly learn to operate.Keyword: Hexadecimal, Demand analysis, extraction, expression目 录1 绪论11.1 项目背景11.2 项目内容和要求21.2.1 题目介绍21.2.2 题目要求21.3 项目特点及意义32 需求分析42.1 功能需求42.2 功能分析42.3 安全性分析52.4 可行性分析62
8、.5 系统设计工具62.5.1 Visual studio 2008技术简介62.5.2 QSqlite数据库技术73 软件设计103.1 数据库设计103.1.1 实体属性图103.1.2关系模型设计113.1.3数据库结构设计113.2系统功能模拟设计123.2.1普通计算功能123.2.2科学计算功能123.2.3时间功能133.2.4算式提取功能133.2.5清空功能143.2.6删除功能143.2.7帮助功能144 系统实现164.1普通计算功能164.2科学计算功能164.3时间功能174.4算式提取功能184.5帮助功能194.6帮助添加功能205 系统调试21结论23参考文献2
9、4致谢251沈阳航空工业学院毕业设计(论文)1 绪论1.1 项目背景随着计算机的飞速发展,人类已经进入信息化时代。信息技术发展日新月异,计算机已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。以前的计算器只能进行简单的加减乘除四则运算,而且只能进行单步运算,如果遇到较长的算式时就得让用户一步一步输入,浪费很多时间,还会可能遗漏数据内容,让用户得多次输入算式验证,如果一次错误就得验证多遍,浪费时间效率低下。随着科技的发展,人们所学习的内容越来越多,接触到的进制有二进制、八进制、十六进制等,传统计算器只能十进制运算已经不能满足人们的需求,给人们带来了
10、不便。本文设计的计算器比传统计算器多了许多功能,可以进行算式运算,而不同只能两个数运算,可以多个数一起运算,并且增加了大括号、中括号、小括号功能,这样就可以分清优先运算,提高运算效率,并且保证输入算式的正确,就可以减少因输错数据而带来的不便。本文设计的计算器不再局限于十进制运算,可以进行二进制、八进制、十进制、十六进制的运算,扩大了用户的运算领域。并且考虑到用户有时常用一些算式,而且这些算式内容比较长,输入麻烦,于是本文设计了算式的增删改查功能,用户就可以把常用的算式输入窗口并保存起来,在下次用到时在调用出来进行运算,而存储中不用的算式也可以删除。提高了用户的效率,方便了用户的操作,这是传统计
11、算器所不具备的。本文还设计简单的科学计算开方、平方、正弦、余弦、角度、弧度的计算,最多可以输入256字符,操作简便,为方便用户,还增加了普通计算窗口和科学计算窗口,普通计算窗口可以进行传统计算,并增加了各种进制的计算。科学计算窗口可以进行算式计算等功能。本文设计中为方便用户快速掌握计算器的操作,增加了帮助功能,并且再次功能中可以对所有按键进行查询,也可以对单个按键进行查询,并根据用户的喜好对帮助里的内容进行修改,知道的按键功能删除,不常用的按键功能添加进去,这样提到用户的查找效率,使用户更好更快的掌握计算器的操作。本文设计中主要采用的技术为Qt designer+vs2008,Qt desig
12、ner为设计可视化界面,通过此软件的设计可以快速设计出自己需要的界面,一般通过一周时间的自学就可以熟练的掌握此软件的运用。然后再到vs2008中编写各个按键的槽函数与算法。这里就得自学Qt,上网查找资料,看书查找例子。1.2 项目内容和要求1.2.1 题目介绍设计一个功能齐备的小型科学计算器,具有算式编辑计算和普通计算窗口。具体要求如下:算式编辑窗口:可以对算式进行编辑、存储、粘贴、修改、计算。算式长度可达256个字符。算式内可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。三角函数可设置度或弧度。设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。普通计算
13、窗口:支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中间数据的存储或提取插入。1.2.2 题目要求(1) 实现二进制、八进制、十进制、十六进制之间的转换;(2) 实现对算式的编辑、存储、粘贴、修改、计算;(3) 算式长度可达256个字符;(4) 实现普通计算和科学计算;(5) 实现大中小括号和各类不同函数及位运算;(6) 支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换;(7) 实现对各个按键的帮助功能;(8) 显示当前日期时间功能;采用高级程
14、序设计语言,编码规范清晰,关键算法或处理须加注释说明。1.3 项目特点及意义本文对计算器进行设计,比传统计算其增加了许多功能,使用更方便,主要有以下几个特点:(1) 计算速度快,节省时间、人力(2) 普通窗口可以进行各进制的加减乘除运算。(3) 科学计算窗口可以进行小括号、中括号、大括号,正弦、余弦,角度,弧度,包括普通窗口的运算。(4) 可对算式进行存储,添加,删除等功能。 (5) 有帮助功能,可以通过查询查询个按键的功能,可以对按键功能添加、删除。 (6) 提供良好的人机交互界面,操作简单快捷。小型科学计算器比传统计算器多了很多功能,可以进行普通窗口计算,也可以进行科学窗口计算。普通窗口计
15、算时可以进行各种进制的四则运算,还可以把数字通过进制转换,得到需要的数据。科学窗口计算时可以把整个算式输入进行计算,这样避免因输入的数据过多而得多次验证,只需确保输入的算式正确就可以得到正确的结果。可以把常用的算式保存起来,这样下次再用时用户可以直接提取算式,避免了因再次输入算式而浪费时间,提到了效率。科学计算式还可以进行,正弦、余弦、角度、弧度、开方、平方、或与非等运算,并且增加了括号符号,使得算式具有优先级。提高运算效率。并增加了帮助功能,使得用户及时查询帮助功能,快速学会使用操作。2 需求分析2.1 功能需求在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理
16、的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C+程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单
17、计算器来完成日常生活的需求。计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用C+和Qt的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。本文的程序设计设计工作环境为Visual C+2008+Qt designer,在程序设计中,采用了结构化与面向对象两种解决问题的方法。2.2 功能分析1).普通窗口计算设计这一模块要求进行加减乘除运算。支持二、八、十六、十等不同进制数据的直接输入、计算和数制间
18、的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中间数据的存储或提取插入。2).科学算式窗口计算设计(1) 可以对算式进行编辑、存储、粘贴、修改、计算。(2) 算式长度可达256个字符。(3) 算式内可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。(4) 三角函数可设置度或弧度。(5) 设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。3).帮助功能实现设计(1) 通过帮助键可以查找各键的功能。(2) 可以对帮助里的功能添加删除。4).时间功能设计可以显示当前时间,并且随着电脑时间的
19、改变而改变。5).算式编辑(1)可以对输入的算式保存。(2)可以添加算式。(3)可以删除算式。2.3 安全性分析本软件可供多用户使用,这里首先谈备份数据,对一些用户自有的数据是非常重要的,一旦用户的自有数据遭到破坏,将造成不可弥补的损失,如果没有备份的话,则后果是不堪设想。建议各级用户都要及时妥善备份自有的数据,如:历年资料、重要方案、管理文献、重要数据等,而且要备份到本机之外的存储介质上(如光盘、移动硬盘)。而在这里我们使用Qt自带的QSqlite数据库,进行存储算式,对算式进行添加、保存、删除功能,并且在帮助功能上也使用此数据库,把各个按键的功能村如此数据库中。还可以添加和删除,非常方便。
20、 并且此程序界面使用Qt designer进行布局,这样对各个控件进行布局,排版结构时不容易出错,快速便捷。提高软件的安全性。2.4 可行性分析计算器是日常生活中非常便捷有效的工具,它具有普通计算和科学计算,能实现加减乘除等普通功能,还可以实现算是运算,并且可以进行进制装换,不再局限于十进制,他大大的提高了我们的效率,节省了时间,可促进科技的发展,还可以用来存储算式,可以方便下次使用,采用Qt编写,Qt designer设计的界面美观,还可以用拖拽功能进行设计控件的位置、大小、属性、结构等功能,这样在编写代码时就不用浪费时间对控件进行声明等代码了。这降低了程序员的难度,提高了程序员的效率,并且
21、上手快,以我实习的经验来看差多10天就可以学会一部分了,对于第一次接触这个软件的人来说是一个不错的选择,具有一定的可行性。技术经济分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。在技术上,主要是采用Visual Studio 2008,它在Visual Studio 2008的基础上新增了数据库访问、各种计算等方面的功能。它可以进行复杂的数据库操作,进行算是的增、删、改、查等功能。Visual Studio 2008中主要是编写代码,用Qt编写,有些类似C+,但大多数都是Qt封装好的函数。在Visual Studio 2008中安装
22、Qt软件,配置环境变量,并安装Qt插件。从而用Qt designer进行制作界面,做出的效果既美观又快捷方便。经济上,一台电脑4000元左右,软件基本上都是免费的开源的,所以开发小型科学计算器的成本较低,而计算器软件是人们生活学习离不开的工具,按照软件工程的方法进行设计,使用Qt具有良好美观的界面,必要的信息存储和和较好的健壮性,使用人员能够快捷简单的进行操作,可以快捷的获得计算结果,给人们带来方便,对人们的生活有很大的帮助。2.5 系统设计工具2.5.1 Visual studio 2008技术简介Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用
23、开发环境。目前已经开发到 9.0 版本,也就是 Visual Studio 2008。 Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。 Visual Basic、Visual C+ 都被扩展为支持托管代码机制的开发环境, 使用Visual Studio SDK创建可以扩展Visual Studio IDE的工具Microsoft Visual Studio 2008是面向Windows Vista、Office 2007、Web 2.0的下一代开发工具,代号“Orcas
24、”,是对Visual Studio 2005一次及时、全面的升级。VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用Visual Studio 2008可以高效开发Windows应用程序。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了AJAX 1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。 Vs2008还可以安装各种插件,如Delta3d可以制作动画和游戏,
25、如本软件的 Qt designer可以进行界面制作。可以结合编写程序本程序以Qt designer和vs2008相连接,由Qt designer设计计算器界面,添加控件,并修改属性,再在vs2008中编写代码,并连接Qt自带的数据库QSqlite。2.5.2 QSqlite数据库技术SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#
26、、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库。(1) Qt designer技术介绍简单的来说QT Designer是一个GUI的工具。这个工具可以帮助我们来加快写QT 程序的速度.利用QT Designer可以用一种所见既所得的方式,来产生QT程序的GUI介面的程式码.通过增加一些功能,就可以完
27、成一个程序了.利用QT Designer可以非常快速的学会QT,而我们这里说利用QT Designer来学习QT而不是利用QT Designer来写QT,这里的区别就在于QT Designer所产生的程序代码有些繁琐,运行起来也比较的慢些,我们这里只是利用QT Designer来帮助我们学习,而不是直接去运行QT Designer生成的程序,在这里把Qt designer与vs2008连接在一起,安装qt-win-opensource-4.7.3-vs2008.exe,在安装vs的qt插件qt-vs-addin-1.1.9.exe,在配置环境变量:QT = your Qt-root-folde
28、r;在 PATH中添加: “;%QT%bin”。然后就可以用Qt designer中的控件进行制作程序界面,并且可以直接修改属性,这样可以在代码量上节省不少时间。(2) Qt技术介绍QT 是一个跨平台的 C+ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。QT 支持下列平台:MS/WINDOWS-95、98、NT 和 2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、SGI IRIX;EM
29、BEDDED- 支持 framebuffer 的 Linux 平台。伴随着 KDE 的快速发展和普及,QT 很可能成为 Linux 窗口平台上进行软件开发时的 GUI 首选。信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C+ 语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C+ 预处理程序,它为高层次的事件处理自
30、动生成所需要的附加代码。在我们所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。 信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生 core dumps。在这里我设计的主窗口为:QWidget,而在帮助窗口为:QDialog。所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射 (emit) 出去
31、,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。你可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。3 软件设计3.1 数据库设计数据库在一个管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果
32、产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据库的完整性和一致性。同时,合理的数据库结构也将有利于程序的实现。3.1.1 实体属性图E-R图是实体之间联系的一个简单表述,下面详细介绍各实体的属性:算式信息算式名字算式编号图3.1算式实体属性图算式实体属性如图3.1,包括算式id,算式名字。按键信息按键功能按键名按键编号图3.2按键信息实体属性图按键信息实体属性如图3.2,包括按键编号,按键名,按键功能。3.1.2关系模型设计本系统中主要的关系模型设计如下:算式信息(编号,算式名);按键信息(编号,按键名,按键功能);3.1.3数据库结构设计每个数据文件均有一张定义表。其数据库各
33、表的表头信息更为详细的反映数据间的关系。本系统数据库的内容包括算式表、帮主功能表。表的具体设计如下所示:(1)算式表用来存储算是编号和算式名,表名:message。本表用来存储已用户常用的算式,其中可以对算式进行保存、删除、修改,方便用户及使用到常用的式子,提高用户效率。算式表如表3.1所示。3.1算式表字段名称数据类型长度备注编号Int4算是编号(Id)算是名QString16算式(formulanumber)(2)按键信息表用来存储按键编号,按键名,按键功能,表名:helpmessage。本表用来实现帮助功能,存储帮助功能中按键的信息,可以查看所有的按键功能,也可以看单个按键信息,还可以对
34、案件信息进行增加和删除。按键表如表3.2所示。3.2按键表字段名称数据类型长度备注编号自动编号长整型为主码、唯一(id)按键名Vchar1按键名(helpname)功能Vchar1按键功能(explain)3.2系统功能模拟设计3.2.1普通计算功能(1) 界面设计界面设计我是使用Qt designer进行设计,首先创建一个CounterWidget.Ui,这个界面为QWidget。然后在左侧的Widget Box找相应的控件添加到CounterWidget里。首先提出一个lineEdit控件作为算式显示窗口和结果显示窗口,在提取出26个QpushButton为0到F按键和加减乘除按键、等于按
35、键、帮助按键。然后再把各个pushButton名字改成相应的符号,并且改对应pushbutton的属性,保存后取vs2008编译CounterWidget.Ui,运行程序就可以显示相应界面。(2) 算法设计现在.h文件中对各个按键在私有槽中进行声明,例如:void on_zeroButton_clicked();,就对0键进行声明,然后就可以在.cpp进行编写程序。声明first,second两个整形表示第一个输入和第二个输入,然后用Qt封装好的append()函数进行编写代码,使其按键符号点击后可以在lineEdit上显示,在这里用的是信号和槽的机制。等于好中的算法主要用栈进行编写,在下面科
36、学计算中再详细介绍。3.2.2科学计算功能本界面的主要功能是在普通计算上添加一些科学计算,如平方、开放、取倒数、正弦、余弦、大括号、中括号、小括号等功能。(1) 界面设计:在普通窗口的基础上添加一些QPushButton按钮,修改其属性,变成相应的功能,再从左面把QRadioButton控件加到界面中,使其分别为普通计算和科学计算。这个控件的功能为只能有一个被点中,然后再拖拽四个QRadioButton控件到界面,使其分别表示二进制、八进制、十进制、十六进制,修改期属性。再到vs2008中编译次ui界面,点击运行时可显示相应的界面,达到想要的效果。(2) 程序的具体实现:首先各个按钮控件都得在
37、,h文件中声明,再到,cpp文件中写相应的代码。在二进制、八进制、十进制、十六进制的函数中把相应用不到的按键用函数写成不显示,要用的显示,然后读取显示窗口的内容,把其转换成相应进制的数字,并把此时窗口的状态记录成此时的进制,方便其他的运算。在其他科学运算符的按键的函数编写代码,读取窗口数据,把其转换成double型,然后进行相应的运算,再把结果显示到窗口。3.2.3时间功能(1) 界面设计: 在窗口的右侧添加一个lineEdit控件,修改其属性,把它作为显示时间用。再到vs2008中编译ui界面。(2) 具体功能实现:这个功能我要在软件刚打开就显示,所以我在构造函数进行编写此功能。在其中声明一
38、个时间的函数,然后在根据startTimer(1000)使其每一秒刷新一次,在编写时间函数,使其显示时间为电脑上的时间,日期为点到日期,时间为时间,再按照年月日时分秒的顺序显示出来。3.2.4算式提取功能本模块是本系统的算式提取、删除、保存功能。(1) 界面介绍: 这里我要用三个QpushButton控件,他们分别表示提取算式、保存算式、删除算式,在修改其属性,在拖拽一个tableView控件,它用来把算式存储的结果显示出来,而且还可以在其上点击选择的算式。(2) 程序的具体实现:保存算式:首先提取窗口上的算式,然后查询算式表(message),查找最后一个id的值,然后id加一,再把次id和
39、窗口提取的算式存入数据库算式表(message)中,然后查询整个message表把表中的内容显示出来。提取算式:先用currentIndex().row()把鼠标点中的行选中,提出行数,把它作为id。然后声明tableView的model,这个是Qt专门为tableview封装好的model,它的作用为把数据显示到tableView,我再从数据库中查找相应的id,把他的算式通过model存储到一个QString型的变量中,然后就可以把它显示到窗口。删除算式:先用currentIndex().row()把鼠标点中的行选中。提出行数,声明model,再用model中封装好的函数删除这一行,在加上警
40、告函数,判断是否删除,就可以了。(3)数据库设计首先创建一个database.h文件,在这个文件中编写创建message表,用sql语句编写,这个表包含两个元素,分别为id和formulanumber,id我设定为自增长,formulanumber为算式,这里我使用的是QSqlite数据库,它小巧,占内存空间小,更快捷,在main主函数连接数据库就可以了。3.2.5清空功能此功能为清空显示窗口,这里用Qt封装好的函数clear(),直接把lineEdit给清空,这样就达到效果。3.2.6删除功能此功能为删除窗口最后一个字符,具体编写为:提取窗口的内容,把它存到一个QString型变量中,然后用
41、Qt封装好的函数,把这个变量从左开始把最后一个字符去掉,使其长度减少一,在存放到这个变量中,再把这个变量重新输入到窗口中,这样就达到删除的功能了。3.2.7帮助功能本模块是本系统的帮助功能,它负责介绍各个按键的功能,他还可以添加按键功能,也可以删除按键功能,还可以查询所有的按键功能,也可以通过条件查询查询单个按键功能。(1) 界面介绍: 因为这是有一个界面,所以我有创建一个界面helpDialog.ui,它是QDialog比QWidget第一个级别。这里我用新号和槽来实现点击帮助出现这个界面。在QDialog里放一个大的tableView用来显示帮助按钮的名字和按钮信息, 再加一个QLable
42、表示按键名,再加一个QLineEdit来输入按键名,还有一个pushButton来表示查询,这样就可以查询用户要查询的单独信息,方便用户快速查找。再加上四个pushbutton按钮,用来表示添加、删除、返回和退出。添加为用户添加需要的俺家帮助信息,删除使用户删除用户不需要的帮助信息,这样方便用户查询,节省空间。返回为查询全表,显示所有的案件信息,这样用户即可以查询单个信息,也可以查询所有的信息。退出为退出这个界面,使用的是信号和槽的机制。(2) 数据库设计在以创建的database.h文件中在编写创建helpmessage表,用sql语句编写,这个表包含三个元素,分别为id和helpname,
43、explain,id我设定为自增长,helpname为按键名字,explain为按键信息注释, 可以根据按键名在数据库查找相应的信息。这里我使用的是QSqlite数据库,它小巧,占内存空间小,更快捷,在main主函数连接数据库就可以了。(3) 程序具体实现:首先在vs2008中编译helpDialog.ui界面,然后对各个按钮进行声明,然后在帮助按钮的槽函数中编写代码,首先声明QDialog,在声明一个model对应这个界面的tableView,用setupUi函数就可以把下一个界面显示出来,这样我点击帮助按钮就可以显示帮助界面。根据新声明的model调用数据库,把表helpmessgae显示
44、出来。在返回按钮的槽函数中编写代码,使其点击此按钮显示所有的表信息,用刚声明的model把表中的所有信息显示出来。在删除按钮的槽函数中编写代码,点击所选中的行,把行数定位id,然后删除相应的信息。对于推出按钮直接在帮助按钮的槽函数中用信号和槽的机制把推出的信号(clicked()和槽函数连接起来,实现点击退出就关闭此界面。而添加按钮功能,设计时又增加了一部分制作,在下一模块介绍。4 系统实现从功能上来讲,本软件的功能就是实现各种计算,包括普通计算和科学计算,普通计算包括加减乘除计算和算式计算,科学计算包括普通计算和正弦、余弦、二进制的或与非运算,并且可以使用小括号、中括号、大括号等功能。该软件
45、还有算式的提取、保存、删除功能,对于该软件可以显示当前时间,方便用户,还有帮助功能,可以显示各个案件的信息,还可以自己动手修改,对其进行添加和删除,可以实行下面的功能。4.1普通计算功能该功能实现各种进制的四则运算,并实现各进制之间的转换。如图4.1所示。图4.1普通窗口计算功能界面图4.2科学计算功能本界面的主要功能是在普通计算上添加一些科学计算,如平方、开放、取倒数、正弦、余弦、大括号、中括号、小括号等功能。具体功能如图4.2所示。图4.2科学计算窗口界面图4.3时间功能实现时间的显示,功能如图4.3所示。图4.3时间功能界面图4.4算式提取功能本模块是本系统的算式提取、删除、保存功能。具
46、体功能如图4.4所示。图4.4算式的提取功能图4.5帮助功能本模块是本系统的帮助功能,负责介绍各个按键的功能,可以添加按键功能,也可以删除按键功能,还可以查询所有的按键功能,并可通过条件查询查询单个按键功能。如图4.5所示。图4.5 帮助功能图4.6帮助添加功能本模块是急需帮助功能的添加功能,把要添加的信息的按钮名和按钮信息加入helpmessage表里。如图4.6所示。图4.6 帮助添加功能图5 系统调试在系统调试过程中,遇到了许多问题,具体如下:(1) 中断问题在运行时,没有错误,编译时也没有错误,但是在使用时,运行一般就不能运行,对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套
47、中断机构实施的。发生中断时,CPU暂停执行当前的程序,而转去处理中断。这个由硬件对中断请求作出反应的过程,称为中断响应。后来经过单步跟踪,发现为进制状态没有赋值,所以在操作时必须先点击几进制。(2) 警告问题在编写警告时,在代码中写汉字,但在编译时出现的警告为乱码,后来发现头文件的加#include ,并写相应的函数,并且在汉字前加QObject:tr。就可以解决问题,实现警告效果。(3) Sin和cos运行错误在编写正弦和余弦的槽函数时,我把窗口数据直接转换为整形,然后直接sin或cos输入的数据,但运算出的结果不是总是正确的,后来查找资料发现不是这样写的,应该为n=cos(n/180*PI);其中n为窗口提取的数据。(4) 数据库操作错误数据库使用的是QSqlite数据库,这个数据库是Qt自带的数据库,对于此数据库使用不够熟练,所以容易出一些错误,其中我在算式的提取、保存、删除中建了一个message表,在帮助功能时还要建立一个表,每个表都声明了一个QSql