小型科学计算器的设计与实现1

上传人:痛*** 文档编号:123215209 上传时间:2022-07-22 格式:DOC 页数:43 大小:651KB
返回 下载 相关 举报
小型科学计算器的设计与实现1_第1页
第1页 / 共43页
小型科学计算器的设计与实现1_第2页
第2页 / 共43页
小型科学计算器的设计与实现1_第3页
第3页 / 共43页
点击查看更多>>
资源描述
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date小型科学计算器的设计与实现1毕业设计说明书(论文)题目小型科学计算器的设计与实现院 系计算机学院专 业计算机科学与技术班 级学 号姓 名指导教师负责教师沈阳航空航天大学2012年6月-摘 要随着计算机的飞速发展,人类已经进入信息化时代。信息技术发展日新月异,计算机已经进入人们生活的各个领域,在现代生活中不可或缺,大型复杂的计算是人脑所不能胜任的,而且较易出错。计算器作为一种快速通用的计算器方便了用户的使用。计算器包含简单的四则运算、复杂的数学表达式运算、进制之间的相互转换等功能,具有可视化的界面,操作起来简单,易于为用户所接受,计算器在我们的日常生活、学习、工作中使用相当广泛,计算器程序设计由此应运产生。关键词:表达式 函数 计算器Abstract Because of the calculator which is flying quickly, the mankind have already entered into information-based ages. The development of the information technique is 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 conduct and actions a kind of fast and in the general use. calculator is not only convenient for the usage of the customer,but also is a very useful tool.The calculator includes four simple operations,which are the complicated mathematics expression , type operations and are able to convert mutually,the multimedia is able to broadcast ,and the etc. the calculators have the interfaces that are able to return, operating in brief, being easy to for the customer accept, calculator the usage is extensive very in our daily life,study,work, the calculator program design should be a creation from here.Keyword:the expression, the type function, the calculator目 录1 绪论11.1 项目背景11.2 项目内容和要求11.2.1 题目介绍11.2.2 题目要求21.2.3 能力要求21.3 项目特点及意义32 方案论证52.1 功能需求与分析52.1.1 普通窗口计算模块52.1.2 算是编辑窗口模块62.1.3 帮助功能模块62.1.4 时间功能模块62.1.5 算式编辑模块62.2 安全性分析62.3 可行性分析72.4 系统设计工具72.5 技术经济分析92.6 Qt介绍93 软件设计113.1 数据库设计113.1.1 算式管理模块113.12帮助模块123.13数据库概念结构设计133.2 系统结构设计153.2.1 算式表153.2.2 帮助功能表153.3 系统功能模块图164 系统实现174.1 系统功能分析174.1.1 普通计算功能174.1.2 科学计算功能184.1.3 时间功能194.1.4 算式提取功能204.1.5 清空功能214.1.6 删除功能224.1.7 帮助功能224.1.8 帮助添加功能245 系统调试27结 论29参考文献301 绪论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的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。在课程设计中,程序设计设计语言采用Visual C+2008+Qt designer,在程序设计中,采用了结构化与面向对象两种解决问题的方法。各子模块主要功能及要求如下: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数据库,进行存储算式,对算式进行添加、保存、删除功能,并且在帮助功能上也使用此数据库,把各个按键的功能村如此数据库中。还可以添加和删除,非常方便。 并且此程序界面使用Qt designer进行布局,这样对各个控件进行布局,排版结构时不容易出错,快速便捷。提高软件的安全性。2.3 可行性分析计算器是日常生活中非常便捷有效的工具,它具有普通计算和科学计算,能实现加减乘除等普通功能,还可以实现算是运算,并且可以进行进制装换,不再局限于十进制,他大大的提高了我们的效率,节省了我们的时间,可促进科技的发展,他还可以用来存储算式,可以让我们下次使用方便,我对它用Qt编写,Qt designer设计的界面美观,还可以用拖拽功能进行设计控件的位置、大小、属性、结构等功能,这样我们在编写代码时就不用浪费时间对控件进行声明等代码了。这降低了程序员的难度,提高了程序员的效率,并且上手快,以我实习的经验来看差多10天就可以学会一部分了,对于第一次接触这个软件的人来说是一个不错的选择,具有一定的可行性。我们日常生活中经常碰到计算的问题,而一个计算器软件便变得非常有用,该计算器软件所用的空间资源较少,对其他软件影响较小。它的设计方法按照软件工程的方法进行,使用Qt具有良好美观的界面,必要的信息存储和和较好的健壮性,使用人员能够快捷简单的进行操作,既可以快捷的获得计算结果,个人们带来方便,对人们的生活有一定的帮助。2.4 系统设计工具(1) Visual studio 2008技术简介Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用开发环境。目前已经开发到 9.0 版本,也就是 Visual Studio 2008。 Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。 Visual Basic、Visual C+ 都被扩展为支持托管代码机制的开发环境,且 Visual Basic .NET更是从 Visual Basic 脱胎换骨,彻底支持面向对象的编程机制。而 Visual J+ 也变为 Visual J#。后者仅语法同 Java 相同,但是面向的不是 Java 虚拟机,而是 .NET Framework。 使用Visual Studio SDK创建可以扩展Visual Studio IDE的工具本程序以Qt designer和vs2008相连接,由Qt designer设计计算器界面,添加控件,并修改属性,再在vs2008中编写代码,并连接Qt自带的数据库QSqlite。(2) QSqlite数据库技术SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库。(3) Qtdesigner技术介绍简单的来说QT Designer是一个GUI的工具.这个工具可以帮助我们来加快写QT 程式的速度.利用QT Designer可以用一种所见既所得的方式,来产生QT程式的GUI介面的程式码.通过增加一些功能,就可以完成一个程式了.利用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-folder;在 PATH中添加: “;%QT%bin”。然后就可以用Qt designer中的控件进行制作程序界面,并且可以直接修改属性,这样可以在代码量上节省不少时间。2.5 技术经济分析技术经济分析是研究技术领域的经济问题和经济规律的科学,是研究一定技术条件下如何提高经济效果的科学,是技术与经济的交叉。在技术上,主要是采用Visual Studio 2008,它在Visual Studio 2008的基础上新增了数据库访问、各种计算等方面的功能。它可以进行复杂的数据库操作,进行算是的增删改查等功能。Visual Studio 2008中主要是编写代码,用Qt编写,有些类似C+,但大多数都是Qt封装好的函数。在Visual Studio 2008中我安装了Qt软件,配置环境变量,并安装Qt插件。从而用Qtdesigner进行制作界面,他做出的效果既美观有快捷方便。这里一台电脑也就4000元左右,而那些软件基本上上网就能下来,有的需要正版可能还的花500左右,所以总的来说4500左右就可以完成软件。2.6 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;EMBEDDED- 支持 framebuffer 的 Linux 平台。伴随着 KDE 的快速发展和普及,QT 很可能成为 Linux 窗口平台上进行软件开发时的 GUI 首选。信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C+ 语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C+ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。在我们所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。 信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生 core dumps。在这里我设计的主窗口为: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所示算是信息算式算式id图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算式表字段名称数据类型长度备注编号Int4算是编号(Id)算是名QString16算式(formulanumber)3.2.2 帮助功能表本表用来存储帮助功能中案件的信息,可以查看所有的按键功能,也可以看单个按键信息,还可以对案件信息进行增加和删除。3.6帮主功能表字段名称数据类型长度备注编号自动编号长整型为主码、唯一(id)按键名Vchar1按键名(helpname)功能Vchar1按键功能(explain)3.3 系统功能模块图(1) 算式模块:对算式的提取、保存、删除功能。算式删除算式提取算式保存算式图3.7算式模块图(2) 帮助模块:本模块主要是用来实现各个按键的功能介绍,查找单个按键功能,添加按键功能,删除按键功能。按键显示全部查询按键添加按键删除按键图3.8按键信息模块图4 系统实现4.1 系统功能分析从功能上来讲,本软件的功能就是实现各种计算,包括普通计算和科学计算,普通计算包括加减乘除计算和算式计算,科学计算包括普通计算和正弦、余弦、二进制的或与非运算,并且可以使用小括号、中括号、大括号等功能。该软件还有算式的提取、保存、删除功能,对于该软件可以显示当前时间,方便用户,还有帮助功能,可以显示各个案件的信息,还可以自己动手修改,对其进行添加和删除,可以实行下面的功能。4.1.1 普通计算功能(1) 界面设计界面设计我是使用Qt designer进行设计,首先创建一个CounterWidget.Ui,这个界面为QWidget。然后在左侧的Widget Box找相应的控件添加到CounterWidget里。首先提出一个lineEdit控件作为算式显示窗口和结果显示窗口,在提取出26个QpushButton为0到F按键和加减乘除按键、等于按键、帮助按键。然后再把各个pushButton名字改成相应的符号,并且改对应pushbutton的属性,保存后取vs2008编译CounterWidget.Ui,运行程序就可以显示相应界面。(2) 算法设计现在.h文件中对各个按键在私有槽中进行声明, 例如:void on_zeroButton_clicked();,就对0键进行声明,然后就可以在.cpp进行编写程序。声明first,second两个整形表示第一个输入和第二个输入,然后用Qt封装好的append()函数进行编写代码,使其按键符号点击后可以在lineEdit上显示,在这里用的是信号和槽的机制。等于好中的算法主要用栈进行编写,在下面科学计算中再详细介绍。4.1.2 科学计算功能本界面的主要功能是在普通计算上添加一些科学计算,如平方、开放、取倒数、正弦、余弦、大括号、中括号、小括号等功能。(1) 界面设计:在普通窗口的基础上添加一些QPushButton按钮,修改其属性,变成相应的功能,再从左面把QRadioButton控件加到界面中,使其分别为普通计算和科学计算。这个控件的功能为只能有一个被点中,然后再拖拽四个QRadioButton控件到界面,使其分别表示二进制、八进制、十进制、十六进制,修改期属性。再到vs2008中编译次ui界面,点击运行时可显示相应的界面,达到想要的效果。(2) 程序的具体实现:首先各个按钮控件都得在,h文件中声明,再到,cpp文件中写相应的代码。在二进制、八进制、十进制、十六进制的函数中把相应用不到的按键用函数写成不显示,要用的显示,然后读取显示窗口的内容,把其转换成相应进制的数字,并把此时窗口的状态记录成此时的进制,方便其他的运算。在其他科学运算符的按键的函数编写代码,读取窗口数据,把其转换成double型,然后进行相应的运算,再把结果显示到窗口。具体功能如下图:图3.9普通窗口和科学计算窗口图4.1.3 时间功能(1) 界面设计: 在窗口的右侧添加一个lineEdit控件,修改其属性,把它作为显示时间用。再到vs2008中编译ui界面。(2) 具体功能实现:这个功能我要在软件刚打开就显示,所以我在构造函数进行编写此功能。在其中声明一个时间的函数,然后在根据startTimer(1000)使其每一秒刷新一次,在编写时间函数,使其显示时间为电脑上的时间,日期为点到日期,时间为时间,再按照年月日时分秒的顺序显示出来。4.1.4 算式提取功能本模块是本系统的算式提取、删除、保存功能。(1) 界面介绍: 这里我要用三个QpushButton控件,他们分别表示提取算式、保存算式、删除算式,在修改其属性,在拖拽一个tableView控件,它用来把算式存储的结果显示出来,而且还可以在其上点击选择的算式。(2) 程序的具体实现:保存算式:首先提取窗口上的算式,然后查询算式表(message),查找最后一个id的值,然后id加一,再把次id和窗口提取的算式存入数据库算式表(message)中,然后查询整个message表把表中的内容显示出来。提取算式:先用currentIndex().row()把鼠标点中的行选中,提出行数,把它作为id。然后声明tableView的model,这个是Qt专门为tableview封装好的model,它的作用为把数据显示到tableView,我再从数据库中查找相应的id,把他的算式通过model存储到一个QString型的变量中,然后就可以把它显示到窗口。删除算式:先用currentIndex().row()把鼠标点中的行选中。提出行数,声明model,再用model中封装好的函数删除这一行,在加上警告函数,判断是否删除,就可以了。(3)数据库设计首先创建一个database.h文件,在这个文件中编写创建message表,用sql语句编写,这个表包含两个元素,分别为id和formulanumber,id我设定为自增长,formulanumber为算式,这里我使用的是QSqlite数据库,它小巧,占内存空间小,更快捷,在main主函数连接数据库就可以了。具体功能如下图:图3.10算式的提取功能图4.1.5 清空功能此功能为清空显示窗口,这里用Qt封装好的函数clear(),直接把lineEdit给清空,这样就达到效果。4.1.6 删除功能此功能为删除窗口最后一个字符,具体编写为:提取窗口的内容,把它存到一个QString型变量中,然后用Qt封装好的函数,把这个变量从左开始把最后一个字符去掉,使其长度减少一,在存放到这个变量中,再把这个变量重新输入到窗口中,这样就达到删除的功能了。4.1.7 帮助功能本模块是本系统的帮助功能,它负责介绍各个按键的功能,他还可以添加按键功能,也可以删除按键功能,还可以查询所有的按键功能,也可以通过条件查询查询单个按键功能。(1) 界面介绍: 因为这是有一个界面,所以我有创建一个界面helpDialog.ui,它是QDialog比QWidget第一个级别。这里我用新号和槽来实现点击帮助出现这个界面。在QDialog里放一个大的tableView用来显示帮助按钮的名字和按钮信息, 再加一个QLable表示按键名,再加一个QLineEdit来输入按键名,还有一个pushButton来表示查询,这样就可以查询用户要查询的单独信息,方便用户快速查找。再加上四个pushbutton按钮,用来表示添加、删除、返回和退出。添加为用户添加需要的俺家帮助信息,删除使用户删除用户不需要的帮助信息,这样方便用户查询,节省空间。返回为查询全表,显示所有的案件信息,这样用户即可以查询单个信息,也可以查询所有的信息。退出为退出这个界面,使用的是信号和槽的机制。(2) 数据库设计在以创建的database.h文件中在编写创建helpmessage表,用sql语句编写,这个表包含三个元素,分别为id和helpname,explain,id我设定为自增长,helpname为按键名字,explain为按键信息注释, 可以根据按键名在数据库查找相应的信息。这里我使用的是QSqlite数据库,它小巧,占内存空间小,更快捷,在main主函数连接数据库就可以了。(3) 程序具体实现:首先在vs2008中编译helpDialog.ui界面,然后对各个按钮进行声明,然后在帮助按钮的槽函数中编写代码,首先声明QDialog,在声明一个model对应这个界面的tableView,用setupUi函数就可以把下一个界面显示出来,这样我点击帮助按钮就可以显示帮助界面。根据新声明的model调用数据库,把表helpmessgae显示出来。再返回按钮的槽函数中编写代码,使其点击此按钮显示所有的表信息,用刚声明的model把表中的所有信息显示出来。在删除按钮的槽函数中编写代码,点击所选中的行,把行数定位id,然后删除相应的信息。对于推出按钮直接在帮助按钮的槽函数中用信号和槽的机制把推出的信号(clicked()和槽函数连接起来,实现点击退出就关闭此界面。再添加按钮,我又加了一部分制作,在下一模块介绍。效果如下图:图3.11帮助功能图4.1.8 帮助添加功能本模块是急需帮助功能的添加功能,他能把要添加的信息的按钮名和按钮信息加入helpmessage表里。(1) 界面介绍:在点击添加后我要在弹出一个界面,这个界面能够输入按键名和按键信息,所以要在建立一个界面,此界面还未QDialog,我取名为AddDialog.ui。在此界面中我要用到两个QLable控件和两个QLineEdit控件,在这里还有两个pushbutton,其中QLable用来表示按键名和按键信息,而QLineEdit控件则是用来输入按键名和按键信息。两个pushbutton分别表示确定和退出,再到vs2008中贬义词界面,就可以把各个案件的位置、结构、大小等信息设定好了,然后就可以编写代码。(2) 数据库设计在以创建的database.h文件中在编写创建helpmessage表,用sql语句编写,这个表包含三个元素,分别为id和helpname,explain,id我设定为自增长,helpname为按键名字,explain为按键信息注释, 可以根据按键名在数据库查找相应的信息。我把按键名和按键信息输入进去就可以把信息输入到表里,保存起来,再把全表显示出来就可以显示添加的状态了。这里我使用的是QSqlite数据库,它小巧,占内存空间小,更快捷,在main主函数连接数据库就可以了。(3) 程序具体实现:在添加按钮的槽函数中编写代码,把AddDialog.ui界面用setupUi函数显示出来这样就可以点击按钮出来添加界面。在这里还是根据信号和槽的机制把退出功能实现,也是在添加按钮的槽函数中编写代码。最后为最重要的确定按钮,在确定的槽函数编写代码,设两个变量把按键名和按键信息存入其中,然后查询helpmessage表最后一个id值,把id加一,作为下一个案件信息的id,把次id和按键信息、按键名存到表里就可以显示出相应的效果效果如下图:图3.12帮助添加功能图5 系统调试在制作毕业设计时,遇到了很多问题,下面为我遇到的调试时的一些问题(1) 中断问题在运行时,没有错误,编译时也没有错误,但是在使用时,运行一般就不能运行,对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。发生中断时,CPU暂停执行当前的程序,而转去处理中断。这个由硬件对中断请求作出反应的过程,称为中断响应。后来经过单步跟踪,发现为进制状态没有赋值,所以在操作时必须先点击几进制。(2) 警告问题在编写警告时,在代码中写汉字,但在编译时出现的警告为乱码,后来发现头文件的加#include ,并写相应的函数,并且在汉字前加QObject:tr。就可以解决问题了。(3) Sin和cos运行错误在编写正弦和余弦的槽函数时,我把窗口数据直接转换为整形,然后直接sin或cos它,但运算出的结果不对,时对时不对,后来查找资料发现不是这样写的,应该为n=cos(n/180*PI);其中n为窗口提取的数据。(4) 数据库操作错误数据库使用的是QSqlite数据库,这个数据库是Qt自带的数据库,对于此数据库使用不够熟练,所以容易出一些错误,其中我在算式的提取、保存、删除中建了一个message表,在帮助功能时还要建立一个表,我是每个表都声明了一个QSqlQuery变量,用它来对数据库进行建表和插入内容,完事后运行没有错误,但在点击帮助功能后tableView控件什么也不显示,通过单步跟踪,发现model部分没有错误,但是什么也显示不出来,后来经过查找资料和自己多次尝试,发现自己想多了,我只需要声明一个QSqlQuery变量,接着一件好的表下面写代码,就可以建多个表。(5) 信号和槽的问题在帮助添加功能的槽函数中未写代码,写确定和退出的信号和槽的连接,这语法为connect(按钮,信号,界面,接收信号槽);在这里因为确定按钮和退出按钮在同一个界面,所以我认为,他们应该槽的界面一致,所以我最开始用此界面声明的pDialog,可是确定按钮不好使添加不了,后来我就把它们都改为this,this为主界面,发现确定好使了,可推出不好使,反而把主界面关闭,通过都此实验,我把确定按钮和退出按钮分别改为this,和pDialog,再次运行,成功。(6) model模块问题model为专门为了tableView控件显示数据而封装好的,我在,h文件中私有成员中声明了它,然后在别的地方编写代码运行第一次成功,关闭工程,再打开运行失败或中断,经过上网查找资料,发现model还得在.cpp中再次声明,所以我在构造函数中再次声明了model,就没有错误了。结 论通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。看着劳动成果,很欣慰! 刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于程序方面的,可是这点小进展远远不够,这只是一个小小的开始。下一步是上网查,找到了些与我题目相似的,那时我很高兴,可是那还不是我要的,于是又上网查到了些有关的函数等等,终于在我的努力下,完成了这个程序。这次的计算机的编写,能实现基本的加减乘除算法,也能实现小数的加减乘除,但是并不能实现带有括号的加减乘除。 通过此次的QT学习以及上学期的C+学习,深刻的了解到设计程序并不是一件简单的事情。而且这些学习只是让我了解到编程中的皮毛中的皮毛。并且通过网上了解到QT的强大功能;更使我对编程有了极大的兴趣;虽然现在本人的技术及知识还很贫乏,但是相信通过现在及日后的学习一定可以达到自己想要达到的水平; 就这次的课程设计报告来说,从最初的相当陌生到现在的可以理解使用。但还有一些问题没有彻底理解。此次课程设计并没有完全构成当初想的那样,但认为还是满足了老师的要求。 除此深刻的认识到要想成为一名合格的软件工程师需要很长的路要走,并且很是艰难。但我相信只要自己的兴趣所在就一定可以达到!参考文献1 谭浩强.C程序设计题解与上机指导(第三版) (M).北京:清华大学出版社,2005.2 严蔚敏 数据结构 北京:清华大学出版社,20053 刘艺,罗兵,周安栋. Visual Basic程序设计大学教程M. 北京:机械工业出版社,20054 王昊. Visual Basic程序设计专家门诊M. 北京:清华大学出版社,20055 王少锋.面向对象技术UML教程M. 北京:清华大学出版社,20046 何鹏飞. Visual Basic程序设计教程M. 北京. 清华大学出版社,20037 软件工程导论 张海藩 北京:清华大学出版社,20048 Visual Basic数据库开发及工程实例 姚巍 编著 人民邮电出版社 2003年4月第一版9 甄炜. C+语言和面向对象程序设计教程(M).北京:机械工业出版社,2005.10 Visual Basic程序设计教程 刘瑞新 汪远征 编著 机械工业出版社2001年1月第一版 11 VB课程设计与系统开发案例 伍俊良 主编 清华大学出社2002年8月第一版12 Visual Basic程序设计实践教程 刘瑞新 等 编著 机械工业出版社2003年5月第一版 13 Visual Basic 企业办公系统开发实例导航 刘萌 周学明 等 人民邮电出版社 2003年6月第一版14 彭波.Visual Basic 程序设计M.第三版.北京: 清华大学出版社,2006.515 谭浩强.C程序设计(第三版)(M).北京:清华大学出版社,2005 致谢
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!