小型科学计算器的设计与实现1.docx
《小型科学计算器的设计与实现1.docx》由会员分享,可在线阅读,更多相关《小型科学计算器的设计与实现1.docx(28页珍藏版)》请在冰豆网上搜索。
![小型科学计算器的设计与实现1.docx](https://file1.bdocx.com/fileroot1/2023-2/24/b1d06422-5992-4e24-938c-83ed65301f5a/b1d06422-5992-4e24-938c-83ed65301f5a1.gif)
小型科学计算器的设计与实现1
小型科学计算器的设计与实现
院系
计算机学院
专业
计算机科学与技术
班级
学号
姓名
指导教师
负责教师
沈阳航空航天大学
2012年6月
摘要
随着计算机的飞速发展,人类已经进入信息化时代。
信息技术发展日新月异,计算机已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。
计算器作为一种快速通用的计算器方便了用户的使用。
计算器包含简单的四则运算、复杂的数学表达式运算、进制之间的相互转换等功能,具有可视化的界面,操作起来简单,易于为用户所接受,计算器在我们的日常生活、学习、工作中使用相当广泛,计算器程序设计由此应运产生。
关键词:
表达式函数计算器
Abstract
Becauseofthecalculatorwhichisflyingquickly,themankindhavealreadyenteredintoinformation-basedages.Thedevelopmentoftheinformationtechniqueischangingwitheachpassingday.thecalculatorhasalreadyenteredeachrealmofthepeople’slife,whichisveryimportantinthemoderntimes.thelargeandcomplicatedcalculationwhichisnotcompetentforperson'sbrain,whichispossibletomakemanymistakes.Thecalculatorconductandactionsakindoffastandinthegeneraluse.calculatorisnotonlyconvenientfortheusageofthecustomer,butalsoisaveryusefultool.Thecalculatorincludesfoursimpleoperations,whicharethecomplicatedmathematicsexpression,typeoperationsandareabletoconvertmutually,themultimediaisabletobroadcast,andtheetc.thecalculatorshavetheinterfacesthatareabletoreturn,operatinginbrief,beingeasytoforthecustomeraccept,calculatortheusageisextensiveveryinourdailylife,study,work,thecalculatorprogramdesignshouldbeacreationfromhere.
Keyword:
theexpression,thetypefunction,thecalculator
1绪论
1.1项目背景
所谓计算器(calculator)一般是指“电子计算器。
计算器能进行数学运算的手持机器,拥有集成电路芯片,但结构简单,比现代电脑结构简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价,可广泛运用于商业交易中,是必备的办公用品之一。
本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行简单的科学计算开方、平方、正弦、余弦、的计算,最多可以输入256字符,操作简便,主要采用的技术为Qt+vs2008,不仅能锻炼自己的编程能力,还可以根据自己的需要来编写适合自己的计算器。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
在科技论文写作过程中,可能参考或引用大量的文献和资料(许多是以电子文档的形式存在),如果以文件的形式存储,管理起来十分复杂,给日常工作带来极大的不便,甚至造成电子文档的破坏和丢失,安全性更是难以保证。
本系统拟采用Qt自带的QSqlite数据库管理系统对算式进行正删改查。
对帮助功能也有保存添加等功能。
具有无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、保密性好、寿命长、成本低等。
这些优点能够极大地提高科技论文管理效率,也是企业、学校的科学化、正规化管理,与世界接轨的重要条件。
1.2项目内容和要求
1.2.1题目介绍
设计一个功能齐备的小型科学计算器,具有算式编辑计算和普通计算窗口。
具体要求如下:
算式编辑窗口:
可以对算式进行编辑、存储、粘贴、修改、计算。
算式长度可达256个字符。
算式内可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。
三角函数可设置度或弧度。
设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。
普通计算窗口:
支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中间数据的存储或提取插入。
1.2.2题目要求
(1)实现二进制、八进制、十进制、十六进制之间的转换;
(2)实现对算式的编辑、存储、粘贴、修改、计算;
(3)算式长度可达256个字符;
(4)实现普通计算和科学计算;
(5)实现大中小括号和各类不同函数及位运算;
(6)支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换;
(7)实现对各个按键的帮助功能;
(8)显示当前日期时间功能;
采用高级程序设计语言,编码规范清晰,关键算法或处理须加注释说明。
1.2.3能力要求
毕业设计对能力的要求主要包括:
(1)收集并运用资料能力。
(2)外语阅读及翻译能力。
(3)独立分析与思维能力。
(4)书面与口头表达能力。
侧重项包括:
(1)实验操作及数据采集能力。
(2)综合分析与设计能力。
(3)使用计算机能力。
1.3项目特点及意义
随着我国经济的飞速发展,科技水平的不断进步,计算器的功能也越来越方便,从最早的算盘到现在的计算器这是一个飞速的发展。
使得我们计算东西越来越方便,速度越来越快,提高不少效率,也提高不少准确度。
使得我们的科技得到发展。
主要有以下几个特点:
(1)计算速度快,节省时间、人力
(2)普通窗口可以进行各进制的加减乘除运算。
(3)科学计算窗口可以进行小括号、中括号、大括号,正弦、余弦,角度,弧度,包括普通窗口的运算。
(4)可对算式进行存储,添加,删除等功能。
(5)有帮助功能,可以通过查询查询个按键的功能,可以对按键功能添加、删除。
(6)提供良好的人机交互界面,操作简单快捷。
(7)因其方便快捷的操作模式,已经被广泛应用于工程、学习、商业等日常生活中,极大的方便了人们对于数字的整合运算。
随着社会的进步和科技的发展,电子计算器作为一种方便、准确、小巧的运算工具早走入寻常百姓家,同时也成为学生的“宠儿”。
不论是多么冗长的算式,多么复杂的运算,只要轻轻点击几下按键,结果就马上显示在显示屏上,结果既准又快。
在《数学课程标准》中也指出:
“现代教育技术的发展对数学教育的价值、目标、内容以及学与教产生了重大的影响,数学课程的设计与实施应重视运用现代教育技术,特别要充分考虑计算器、计算机对数学学习内容和方式的影响,在力开发并向学生提供更为丰富的学习资源,把现代教育技术作为学生学习数学和解决问题强有力工具,致力于改变学生的学习方式,使学生乐意并有更多的投入到现实的、探索性的数学活动中去。
而在我们日常生活办公中遇到的一些基本的数字运算,以往简单的口算笔算,然而现在不同了,人们对计算机、手机的依赖越来越高,遇到计算问题不再愿意去用脑去思考,而是交由手机或是电脑来完成。
为了给自己设计一个能够胜任自己学习工作的计算器,所以决定自己通过用所学的知识来编写一个简单的计算器。
为了完成这项工作,我在书上及网络搜索了许多,通过分析比较,觉得不是很好,如很多用的是VB、VC等技术来编写,不仅代码繁多、容易出错、扩展难,而且用起来不是很方便,我采用Qt来编写,方便自己使用,也可以方便别人,同时能使自己的技术水平得到锻炼提高。
2方案论证
2.1功能需求与分析
在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。
在程序设计中,可以用两种方法解决问题:
一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。
而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。
我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。
虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。
所以,我们想到可不可以用自己的所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。
要实现计算功能,可以用VC++和Qt的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
在课程设计中,程序设计设计语言采用VisualC++2008+Qtdesigner,在程序设计中,采用了结构化与面向对象两种解决问题的方法。
各子模块主要功能及要求如下:
2.1.1普通窗口计算模块
这一模块要求进行加减乘除运算。
支持二、八、十六、十等不同进制数据的直接输入、计算和数制间的相互转换,当输入回车键或等号键时直接给出当前算式的运算结果
,算式计算和编辑可同时交叉进行,设置中间变量,方便运算过程中中间数据的存储或提取插入。
2.1.2算是编辑窗口模块
(1)可以对算式进行编辑、存储、粘贴、修改、计算。
(2)算式长度可达256个字符。
(3)算式内可同时出现二、八、十六、十等不同进制,并可实现大中小括号和各类不同函数及位运算。
(4)三角函数可设置度或弧度。
(5)设计实现文件处理窗口,可实现算式的添加、删除、存储和提取。
2.1.3帮助功能模块
(1)通过帮助键可以查找各键的功能。
(2)可以对帮助里的功能添加删除。
2.1.4时间功能模块
可以显示当前时间。
2.1.5算式编辑模块
可以对输入的算式保存,可以添加算式,可以删除算式。
2.2安全性分析
本软件可供多用户使用,这里首先谈备份数据,对一些用户自有的数据是非常重要的,一旦用户的自有数据遭到破坏,将造成不可弥补的损失,如果没有备份的话,则后果是不堪设想。
建议各级用户都要及时妥善备份自有的数据,如:
历年资料、重要方案、管理文献、重要数据等,而且要备份到本机之外的存储介质上(如光盘、移动硬盘)。
而在这里我们使用Qt自带的QSqlite数据库,进行存储算式,对算式进行添加、保存、删除功能,并且在帮助功能上也使用此数据库,把各个按键的功能村如此数据库中。
还可以添加和删除,非常方便。
并且此程序界面使用Qtdesigner进行布局,这样对各个控件进行布局,排版结构时不容易出错,快速便捷。
提高软件的安全性。
2.3可行性分析
计算器是日常生活中非常便捷有效的工具,它具有普通计算和科学计算,能实现加减乘除等普通功能,还可以实现算是运算,并且可以进行进制装换,不再局限于十进制,他大大的提高了我们的效率,节省了我们的时间,可促进科技的发展,他还可以用来存储算式,可以让我们下次使用方便,我对它用Qt编写,Qtdesigner设计的界面美观,还可以用拖拽功能进行设计控件的位置、大小、属性、结构等功能,这样我们在编写代码时就不用浪费时间对控件进行声明等代码了。
这降低了程序员的难度,提高了程序员的效率,并且上手快,以我实习的经验来看差多10天就可以学会一部分了,对于第一次接触这个软件的人来说是一个不错的选择,具有一定的可行性。
我们日常生活中经常碰到计算的问题,而一个计算器软件便变得非常有用,该计算器软件所用的空间资源较少,对其他软件影响较小。
它的设计方法按照软件工程的方法进行,使用Qt具有良好美观的界面,必要的信息存储和和较好的健壮性,使用人员能够快捷简单的进行操作,既可以快捷的获得计算结果,个人们带来方便,对人们的生活有一定的帮助。
2.4系统设计工具
(1)Visualstudio2008技术简介
VisualStudio是微软公司推出的开发环境。
是目前最流行的Windows平台应用开发环境。
目前已经开发到9.0版本,也就是VisualStudio2008。
VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
VisualBasic、VisualC++都被扩展为支持托管代码机制的开发环境,且VisualBasic.NET更是从VisualBasic脱胎换骨,彻底支持面向对象的编程机制。
而VisualJ++也变为VisualJ#。
后者仅语法同Java相同,但是面向的不是Java虚拟机,而是.NETFramework。
使用VisualStudioSDK创建可以扩展VisualStudioIDE的工具
本程序以Qtdesigner和vs2008相连接,由Qtdesigner设计计算器界面,添加控件,并修改属性,再在vs2008中编写代码,并连接Qt自带的数据库QSqlite。
(2)QSqlite数据库技术
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
SQLite第一个Alpha版本诞生于2000年5月.至今已经有10个年头,SQLite也迎来了一个版本SQLite3已经发布。
SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库。
(3)Qtdesigner技术介绍
简单的来说QTDesigner是一个GUI的工具.这个工具可以帮助我们来加快写QT程式的速度.利用QTDesigner可以用一种所见既所得的方式,来产生QT程式的
GUI介面的程式码.通过增加一些功能,就可以完成一个程式了.利用QTDesigner
可以非常快速的学会QT,而我们这里说利用QTDesigner来学习QT而不是利用
QTDesigner来写QT,这里的区别就在于,QTDesigner所产生的程式码有些繁琐.
跑起来也比较的慢些.我们这里只是利用QTDesigner来帮助我们学习.而不是直接
去跑QTDesigner生成的程式码.在这里吧Qtdesigner与vs2008连接在一起,安装qt-win-opensource-4.7.3-vs2008.exe,在安装vs的qt插件qt-vs-addin-1.1.9.exe,在配置环境变量:
QT=yourQt-root-folder;在PATH中添加:
“;%QT%\bin”。
然后就可以用Qtdesigner中的控件进行制作程序界面,并且可以直接修改属性,这样可以在代码量上节省不少时间。
2.5技术经济分析
技术经济分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。
在技术上,主要是采用VisualStudio2008,它在VisualStudio2008的基础上新增了数据库访问、各种计算等方面的功能。
它可以进行复杂的数据库操作,进行算是的增删改查等功能。
VisualStudio2008中主要是编写代码,用Qt编写,有些类似C++,但大多数都是Qt封装好的函数。
在VisualStudio2008中我安装了Qt软件,配置环境变量,并安装Qt插件。
从而用Qtdesigner进行制作界面,他做出的效果既美观有快捷方便。
这里一台电脑也就4000元左右,而那些软件基本上上网就能下来,有的需要正版可能还的花500左右,所以总的来说4500左右就可以完成软件。
2.6Qt介绍
QT是一个跨平台的C++GUI应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前Linux上最为流行的KDE桌面环境就是建立在QT库的基础之上。
QT支持下列平台:
MS/WINDOWS-95、98、NT和2000;UNIX/X11-Linux、SunSolaris、HP-UX、DigitalUnix、IBMAIX、SGIIRIX;EMBEDDED-支持framebuffer的Linux平台。
伴随着KDE的快速发展和普及,QT很可能成为Linux窗口平台上进行软件开发时的GUI首选。
信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。
信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。
信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。
在我们所熟知的很多GUI工具包中,窗口小部件(widget)都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。
但是,在QT中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。
信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生coredumps。
在这里我设计的主窗口为:
QWidget
而在帮助窗口为:
QDialog。
所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和槽。
当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。
这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。
槽用于接收信号,但它们是普通的对象成员函数。
一个槽并不知道是否有任何信号与自己相连接。
而且,对象并不了解具体的通信机制。
你可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。
总之,信号与槽构造了一个强大的部件编程机制。
3软件设计
3.1数据库设计
数据库在一个管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据库的完整性和一致性。
同时,合理的数据库结构也将有利于程序的实现。
3.1.1算式管理模块
在仔细分析调研基础上,得到本程序所要处理的数据结构。
根据系统需求可以列出以下数据项和数据结构:
算式信息:
算式id(id)、算式(formulanumber)
在这里可以吧lineEdit控件上显示的算式添加到数据库,也可以吧tableView控件里的算式显示出来,并可以删除以存储的算式。
在充分考虑用户需求的基础上,按照规范化设计理论,进行了细致的分析和优化。
本系统设计过程中主要遵循以下几点:
(1)用户的便利性
(2)系统功能的完备性
(3)数据分布的合理性,如要尽量避免冗余数据全局数据的一致性:
如算式名字段必须保持一致。
可以画出对应的E-R图:
算式信息E-R图如图3.1所示
图3.1算式信息阶段关系E-R图
3.12帮助模块
根据系统需求可以列出以下数据项和数据结构:
按键信息:
按键编号(id)、按键名(helpname)、按键功能(explain)
这里我通过tableView把所有的数据从数据库中显示出来,并且可以通过条件查询查询按键名来让tableView显示相应的数据。
并且可以实现添加删除功能。
可以画出对应的E-R图:
算式信息E-R图如图3.2所示
11
图3.2按键信息阶段关系E-R图
3.13数据库概念结构设计
根据上面的数据项和数据结构,可以设计能够满足该系统要求的各种实体以及它们之间的关系为下面的逻辑结构设计打下基础。
这些包括算是信息和帮助信息。
其中算是信息为计算器存储一些算式,而这些算式又可以被使用者调出来计算,而且可以删除算式,还可以被自己认为常用的算是存起来,以备下次再用,这些统称算是的增删改查。
由于对于使用者来说,第一次使用该计算器并不是就会用,所以加了这个帮助功能。
而这个帮助功能可以通过条件查询来查询相应的功能,我们还可以对按键添加按键帮助,也可以删除不用的按键帮助。
这些操作是通过脚用QSqlite数据库得来的,该数据库小巧,方便具有数据库应有的功能。
可以节省资源空间,提高效率。
本系统设计规划出的实体的关系图如下:
提取算式
保存算式
图3.3算式信息阶段关系图
显示所有按键
条件查询
删除按键
添加按键功能
图3.4按键信息阶段关系图
3.2系统结构设计
3.2.1算式表
本表用来存储已用户常用的算式。
其中可以对算式进行保存、删除、修改,方便用户及使用到常用的式子。
提高用户效率。
3.5算式表
字段名称
数据类型
长度
备注
编号
Int
4
算是编号(Id)
算是名
QString
16
算式(formulanumber)
3.2.2帮助功能表
本表用来存储帮助功能中案件的信息,可以查看所有的按键功能,也可以看单个按键信息,还可以对案件信息进行增加和删除。
3.6帮主功能表
字段名称
数据类型
长度
备注
编号
自动编号
长整型
为主码、唯一(id)
按键名
Vchar
1
按键名(helpname)
功能
Vchar
1
按键功能(explain)
3.3系统功能模块图
(1)算式模块:
对算式的提取、保存、删除功能。
图