带界面的实用计算器设计毕业论文
2020-04-10 14:44:24
摘 要
实用计算器在日常生活、教育、工程等领域有着广泛的应用。随着社会的进步,人们对于计算器的功能和实用性提出了更高的要求,不仅仅局限于普通的算式计算,而是提出了函数图像绘制,求解方程组,数据统计和处理等更高的要求。本文就是为了部分解决这个问题,在实现已经广泛使用的普通计算器的基础上引入了绘图功能。通过查找相关的文献资料,结合用户的需求进行计算器的具体功能分析,运用自顶向下和模块化的设计思想对程序的整体框架进行设计,最后利用Python语言设计和实现了带有界面的实用计算器,并对其进行打包处理从而使程序可以跨平台移植和执行。从而更好的满足了人们对多功能计算的需求。
关键词:Python;计算器;Tkinter
Abstract
Practical calculators are widely used in daily life, education, engineering and other fields. With the progress of the society, people have put forward higher requirements for the function and practicability of calculators, not only in the ordinary calculation, but also for the higher requirements of the function image rendering, the solution of the equations, the data statistics and the processing. In order to solve this problem partially, this paper introduces the drawing function on the basis of the realization of the widely used ordinary calculator. By looking up the relevant documents, analyzing the specific function of the calculator with the needs of the user, using the top-down and modularized design idea to design the whole frame of the program, the practical calculator with the interface is designed and realized by the Python language, and the program is packed and processed to make the program. It can be transplanted and executed across the platform. Thus better meet the demand for multi-functional computing.
Key Words:Python;Calculator;Tkinter
目 录
第1章 绪论 1
1.1 背景及意义 1
1.2 国内外研究现状 1
1.3 课题研究概述 1
第2章 技术基础 3
2.1 Python语言 3
2.1.1 Python语言简介 3
2.1.2 设计哲学和定位 4
2.1.3 语法 4
2.1.4 标准库 6
2.2 相关Python库 7
2.2.1 tkinter库 7
2.2.2 math库 7
2.2.3 matplotlib库 8
2.3 相关工具 8
2.3.1 pip-Python包管理工具 8
2.3.2 pyinstaller-Python脚本打包工具 8
第3章 功能分析 9
3.1 整体功能分析 9
3.2 各部分功能分析 10
第4章 程序设计 11
4.1 用户界面 11
4.2 逻辑功能 11
第5章 具体实现 13
5.1 开发环境搭建 13
5.2 用户界面实现 14
5.3 逻辑功能实现 16
5.4 软件打包 19
第6章 测试与验证 20
6.1 用户界面显示测试 20
6.2 逻辑功能测试 22
6.3 测试结果总结 24
总结 25
参考文献 26
致谢 27
第1章 绪论
背景及意义
一般计算器是指可以进行一定数学运算的电子机器,由集成芯片,键盘,显示器以及电源等组成[1]。 计算器广泛的应用于家庭生活,学校教育,商业交易等各个领域,是我们生活中必不可少的工具之一。随着个人PC和手持终端的普及,APP形式的计算器得到了广泛的普及。 这些软件形式的计算器能够很方便的在各种设备上使用,而且功能众多,易于升级和扩展。
本课题基于python设计一款带有界面的实用计算器。该实用计算器设计为软件形式,具有软件形式计算器的所有优点:使用成本低,便于传播和使用等。该计算器具有一个易于用户使用的图形界面,能够很好的满足普通用户的可视化操作需求;该计算器具有三种模式:标准模式,科学模式和绘图模式。其中标准模式能过完成基本的四则运算,满足大多数普通的计算场景;科学模式在标准模式上添加了三角函数、幂次运算等功能,可以满足学校教育、工程和生活中需要高级计算的场景;绘图模式可以将用户输入的函数绘制成图形,进一步满足工程和学校教育等需要数形结合的应用场景。
计算器可以说是日常生活中广泛使用,必不可少的工具之一。在编程语言的选择上,相较于其他的编程语言,python具有丰富的函数功能库。不管是用户图形界面的绘制,还是数学运算所需要的库,使用python统统都可以满足[2]。因此使用python编写程序极大的降低了开发的难度。而功能上较普通的计算器引入了绘图模式,大大提高了计算器的实用性。所以本课题设计的计算器既降低了开发端的难度,又进一步提高了实用性,覆盖和满足了实际中更多的需求。
国内外研究现状
经过多年的发展,已经发展出多种形式和功能的计算器。实物计算器包括基本的算术型计算器,科学型计算器,还有可编程的图形计算器[3]。对于软件形式的计算器,则有非常丰富的功能。有具有科学计算功能的计算器,也有能够进行个税、房贷、各种单位相互转换的专用计算器。对于具有更为复杂的解方程组,求解微分方程,计算积分,绘图等计算功能的计算器则大多以在线形式存在[4][5],或者需要诸如MATLAB等专业的软件来实现。
课题研究概述
本课题研究带有界面的实用计算器。对于现在已经成熟和广泛应用的基本计算器功能和科学计算器功能,本课题给出了其在Python语言下的具体实现,从而具备了和普通科学计算器相同的计算功能。在此基础上,利用Python语言强大的第三方数学处理和绘图库(numpy和matplotlib),本课题设计的带界面的实用计算器实现了函数绘制功能。通过用户输入想要绘制图像的函数,利用matploylib绘图库将用户所输入的函数绘制成图像并且显示在GUI(用户图形界面)上。该功能进一步增强了该计算器的实用性。
本章主要介绍了课题的背景及其意义,国内外的相关研究现状,最后对课题研究的内容进行简要概述。第二章主要列出了本课题需要使用的技术基础,包括Python语言,使用到的Python第三方库,以及一些其他在软件实现工程中使用到的工具。第三章则对整个带界面的实用计算器进行了完整而具体的功能分析。第四章从整体上设计和实现了整个计算器的结构和功能。第五章则在第四章的基础上详解论述了各功能的实现细节。第六章对已经完成的应用程序进行了测试与验证,并对出现的问题进行修改和优化。最后一掌对整个课题进行了总结和分析
第2章 技术基础
2.1 Python语言
2.1.1 Python语言简介
Python语言是一种越来越受人们欢迎和喜爱的通用型高级脚本语言,Guido van Rossum于1991年发行了Python语言的初版[6]。Python可以说是在LISP的基础上吸收其他众多语言的优点从而创造出来的一门编程语言。作为一种强大的脚本语言,Python的非常重视其代码的可读性和语法的简洁性,特别是Python独有的使用空格和Tab缩进而不是使用其他关键词或结束符来划分代码块,这正是Python设计哲学的最好体现。不论是实现简单功能的一个脚本,还是实现复杂功能的一个系统级软件,Python语言都让开发者相比于C#或java等语言使用更少的语言和更明晰的结构来表达和实现他们的想法
和其他著名的动态编程语言相似, Python语言也提供强大的动态类型支持和垃圾回收机制,可以对内存的使用进行自动的管理。而且兼容众多编程范式,包括OOP、命令行、函数式已经面向过程编程, 这些都依赖于它巨大而广泛的标准库[7]。Python 还是一个跨平台的编程语言,它几乎可以在所有的操作系统中运行。Python软件基金会通过管理一个由分散在世界各地的程序员组成的社区来维护、更新和发布Python的正式版本。
Python是完全面向对象的语言。 函数、元组、数字、字符串都是对象。由于Python是完全面向对象的,所以它支持像继承、重用、多态、重载、泛型等所有面型对象的编程技术[8]。在函数式编程支持方面,与那些传统和纯粹的函数式编程语言相比,Python语言只提供了有限的技术和实现支持。Python中有两个标准库提供了与Standard ML和Haskell相似的函数式程序设计工具。
尽管Python通常被人们划分为脚本语言,但是事实上许多越来越多的大公司和大型的软件开发计划都在广泛的使用Python语言。不同于那些仅仅作为执行简单任务和计划的脚本语言,Python更准确地应该称为一种高级动态的解释型编程语言,Python语言能够完成的任务远远的超出了脚本语言的范围。
Python在设计之初就秉承了高可扩展性,所以仅有一些必要的功能会集成到Python语言的核心部分,然后将其他丰富的功能作为模块插入到Python语言中[9]。Python语言提供了丰富的接口和工具,从而让程序设计师可以非常方便的使用其他他们自己熟悉的语言编写功能实现,然后打包成Python库,这样就可以在Python中直接调用;相对应的,Python语言也可以嵌入到其他语言所编写的程序或系统中,或者链接不同的程序和编程语言。因此,许多程序设计师经常使用Python将不同语言编写和生成的代码连接和粘合在一起,进行集成和封装。在许多大型的项目中,可以使用C或者C 来编写对性能要求非常高的部分,然后使用Python或者其他语言来调用对应的模块,这样的实现是非常常见的。
2.1.2 设计哲学和定位
Python的设计哲学是“优雅”、“明确”、“简单”。 Python开发者的哲学是:一件事情只用一种方法,最好只使用一种方法来解决[10] ,正因为如此它和那些可以彰显个人风格的编程语言很不一样。在使用Python语言解决问题的时候,Python程序设计师面对多种解决方法时一般都会选择简洁明确的实现方法,而不会选择那些花哨的语法。
有一些广泛流传的Python格言可以很好的说明Python语言的设计哲学。比如:简单胜过复杂;平坦优于嵌套;错误永远不会悄然逝去,除非明确沉默;面对歧义,拒绝猜测的诱惑,应该有一个,最好是只有一个显而易见的方法[11]。这些Python格言以简要生动的语言准确的从不同方面讲述了Python语言的设计哲学。
Python语言虽然被人们称为脚本语言,但是Python语言能做的事情远远不止这些,它可以应用于众多领域。Python在网络方面的应用主要是用来编写和实现网络爬虫和Web开发,有大量优秀的Web框架和爬虫系统被广泛的应用。随着大数据和云计算的大爆发,Python语言成为了人工智能,大数据,云计算,科学计算中的主力语言[12]。在其他的应用领域,Python语言也有广泛的应用。
2.1.3 语法
基于Python的设计哲学,Python吸收了众多语言的优点,尽可能的使用了其他语言的符号和关键字,这样不仅可以使得Python语言更加易于学习和阅读,而且更加的整洁美观。而Python语言的动态性决定了它不需要像其他的静态百年城语言那样在使用变量之前进行声明,它可以直接使用而无需声明变量。
缩进。在Python中缩进被当作了语法的一部分。Python开发人员故意阻止违反缩进规则的程序被解释,从而迫使程序员开发过程中保持良好的编程习惯,并使每个人都可以轻松地找到并阅读它们。 Python语言使用缩进来表示语句块的起始和终止,而不是大括号或某个关键字。 缩进的增加和减少的成对使用起到了语句块的开始和结束的作用。
标识符。以单下划线开始:所有以下划线开始的对象都不会被导入(包含:模块、成员、包);单下划线结尾:避免与Python中关键字的命名冲突。双下划线开始:表示是模块中的私有成员,这些成员外部无法进行直接访问;双下划线结尾:包含在用户控制之外的命名空间中的“魔术”对象或属性,建议不要将这种命名应用于自己的变量或函数[14]。
表达式。Python的表达式写法与C/C 语言类似,只是在具体的语法细节上有些细微的差别。Python使用is关键字来比较两个变量是否为相同的对象。Python使用in, not in关键字判断一个对象是否属于另外一个关键字。Python支持字典、集合、列表的推导式(dict comprehension, set comprehension, list comprehension),同样还支持迭代表达式(generator comprehension)。
Python常见的语句和控制流见下表2.1
表2.1 Python常见语句和控制流
语句 | 解释说明 |
if语句 | 测试条件,条件成立时执行语句块。常与else, elif配合使用。 |
for语句 | 用来遍历迭代器(如列表、字典、集合等),处理迭代器中的所有元素 |
while语句 | 只要测试条件为真,就循环执行while语句下的语句块 |
try语句 | 和except, else ,finally关键字配合处理程序抛出的异常 |
class语句 | 用于定义类 |
def语句 | 用于定义函数和类型的方法。 |
pass语句 | 空语句,即不执行任何操作。 |
assert语句 | 程序调试阶段用来测试执行条件 |
with语句 | 用于资源访问时保证一定会执行清理操作,以释放资源 |
yield语句 | 用于迭代器函数内返回一个元素,现在变成了一个运算符 |
raise语句 | 抛出一个异常。 |
import语句 | 导入一个模块或包。例如:from M import *, import M as Name |
Python中严格区分列表(list)类型和元组(tuple)类型。列表的写法为[a,b,c],元组的写法为(a,b,c)。他们的区别主要表现在可以改变list中的元素,但是不能改变tuple中的元素。tuple的括号在某些特殊的情境下是可以省略。Tuple对赋值语句的特殊处理规则使得它可以对多个变量进行同时赋值。
在Python语言中,单引号和双引号都是表示字符串,这和大多数语言,不管式低级语言还是高级语言的语法都不相同。一般情况下,可以按自己的意愿和喜好选择使用哪种引号,但是最好使用与字符串中引号不同的引号,从而起到区分作用。在Python语言中仍然使用反斜杠来解释特殊字符,即转义字符。如果不想对反斜杠后面的字符进行转义,可以在表达式的前面添加来保证整个表达式使用原意而不进行转义。这种用法在编写正则表达式和路径的时候非常有用。
Python支持对列表执行切割操作(list slices),该操作可以灵活的截取列表中的任意一段。支持切割操作的类型有字符串,字节数组,列表,元组等。它的使用语法是...[left:right]或者...[left:right:stride]。
函数。Python语言的函数除了不支持重载之外,支持所有其他面向对象编程语言的函数使用形式。在定义函数的时候,可以在函数的后面增加文档字符串(docstring),用来解释函数的功能,参数的意义、类型、取值范围,返回值等有关函数的信息,这样的信息可以使用help()函数来读取,这样做可以极大的提高了代码的可读性。对于匿名函数,Python使用lambda表达式来实现,而且匿名函数体只能为表达式。
面向对象开发方法是指构造并使用成员和方法,将其绑定到对象上。调用对象方法的语法是object.method(args),它等价于调用Class.method(object, args)。在定义一个对象的方法的时候,必须要显式的指出该方法的首个参数,通常情况下使用self这个参数来访问对象内部的成员。此处的self参数和其他面向对象语言的this变量类似,不同的是Python可以使用其他任何符合Python规定的名字作为它的第一个参数。在这里使用self只是一个习惯的用法,任何合法的名称都是可以的,这和其他面向对象的编程语言中this参数式不同的。如前所述,Python还支持一些以下划线开始和结束的特殊方法名,用来实现运算符的重载和其他特殊功能。
数据类型与动态类型。由于Python是一个高级的解释型语言,所以Python采用的是动态类型系统。在编译时,Python不检查对象是否具有被调用的方法或属性,但在运行时会做出检查。所以对一个对象进行操作的时候可能会抛出一个异常。但是,尽管Python使用动态类型系统,但它仍然是强类型的。也就是说Python从内部机制上保障了不允许没有明确定义的操作的。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示:
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。