编程实验报告---科学计算器设计与实现

合集下载

java计算器设计实验报告

java计算器设计实验报告

java计算器设计实验报告《Java计算器设计实验报告》摘要:本实验报告基于Java语言,设计了一个简单的计算器。

通过使用面向对象的编程方法,实现了基本的加、减、乘、除运算,并且实现了用户界面的交互操作。

本实验报告详细介绍了计算器的设计思路、实现过程和代码结构,并对实验结果进行了分析和总结。

1. 引言计算器是人们日常生活中常用的工具之一,它能够帮助人们进行简单的数学运算。

随着计算器的普及和发展,计算器的功能也越来越丰富,例如科学计算器、金融计算器等。

本实验旨在通过使用Java语言,设计一个简单的计算器,以加深对面向对象编程的理解和应用。

2. 设计思路在设计计算器时,首先需要确定计算器的功能需求,包括加法、减法、乘法、除法等基本运算。

其次,需要考虑用户界面的设计,使用户能够方便地输入数字和选择运算符。

最后,需要考虑计算器的实现方式,包括数据结构的选择、算法的设计等。

3. 实现过程在本实验中,我们使用Java语言和Swing库来实现计算器的设计。

首先,我们创建一个Calculator类来处理计算器的逻辑操作,包括加法、减法、乘法、除法等运算。

然后,我们创建一个CalculatorUI类来处理用户界面的设计,包括数字按钮、运算符按钮和显示屏的设计。

最后,我们将Calculator类和CalculatorUI类进行整合,实现一个完整的计算器。

4. 代码结构以下是计算器的主要代码结构:Calculator类:- add(double a, double b):加法运算- subtract(double a, double b):减法运算- multiply(double a, double b):乘法运算- divide(double a, double b):除法运算CalculatorUI类:- createNumberButton(int number):创建数字按钮- createOperatorButton(String operator):创建运算符按钮- createDisplayScreen():创建显示屏Main类:- main(String[] args):主函数,启动计算器界面5. 实验结果分析通过实验,我们成功地实现了一个简单的计算器,用户能够输入数字并进行加、减、乘、除等运算。

计算器设计实验报告

计算器设计实验报告

计算器设计实验报告《计算器设计实验报告》摘要:本实验旨在设计一个简单的计算器,并测试其功能和准确性。

实验过程中,我们使用了基本的电子元件和逻辑门电路来实现计算器的各种功能。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

引言:计算器是现代生活中不可或缺的工具,它能够帮助人们进行各种数学运算,提高工作和学习效率。

在本实验中,我们将设计一个简单的计算器,并测试其功能和准确性。

通过这个实验,我们可以更深入地了解计算器的原理和设计,为今后的电子电路设计和实验打下基础。

材料和方法:1. 电子元件:逻辑门、电阻、电容、LED等2. 电路板和连接线3. 电源和示波器4. 计算器设计图纸和电路原理图实验步骤:1. 根据设计图纸和电路原理图,连接各种电子元件,组装成一个计算器电路。

2. 使用电源给电路供电,并使用示波器测试电路的输出波形和稳定性。

3. 进行加减乘除等运算测试,记录计算器的准确性和稳定性。

4. 对计算器进行长时间稳定性测试,观察其在长时间使用中的表现。

实验结果:经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

电路的输出波形清晰,没有明显的波动和噪声。

在长时间稳定性测试中,计算器表现良好,没有出现明显的故障和失效现象。

讨论:通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

在今后的学习和工作中,我们可以根据这些知识和技能,设计和制作更复杂和功能更强大的计算器和其他电子设备。

结论:本实验设计了一个简单的计算器,并测试了其功能和准确性。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过这个实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

科学计算器安卓实训报告

科学计算器安卓实训报告

一、实训背景随着科技的发展,移动设备已经成为我们日常生活中不可或缺的一部分。

为了提高学习效率,许多学生选择使用科学计算器进行数学、物理、化学等科目的学习。

然而,市场上的科学计算器功能单一,无法满足不同用户的需求。

为了解决这个问题,本实训项目旨在开发一款功能强大、操作简便的科学计算器安卓应用程序。

二、实训目标1. 掌握Android开发环境搭建与配置;2. 熟悉Android应用程序开发流程;3. 学习科学计算器功能模块的设计与实现;4. 提高编程能力和团队协作能力。

三、实训内容1. 环境搭建与配置(1)安装Android Studio:下载并安装Android Studio,配置Android SDK和NDK。

(2)创建新项目:打开Android Studio,创建一个名为“Scientific Calculator”的新项目,选择“Empty Activity”模板。

2. 功能模块设计(1)主界面设计:设计一个简洁明了的主界面,包含数字键、运算符键、功能键等。

(2)计算器核心功能实现:实现加、减、乘、除等基本运算,以及科学计算器特有的三角函数、指数、对数等运算。

(3)单位转换:实现长度、质量、面积、体积、温度、速度等常用单位的转换。

(4)概率计算:实现概率分布、期望、方差等概率计算功能。

(5)历史记录:记录用户最近的计算结果,方便用户查阅。

3. 界面交互设计(1)按键震动反馈:当用户按下按键时,计算器产生震动反馈,提高用户体验。

(2)输入提示:当用户输入错误时,计算器提供输入提示,帮助用户纠正错误。

4. 优化与调试(1)优化代码:对代码进行优化,提高程序运行效率。

(2)调试程序:使用调试工具,查找并修复程序中的错误。

四、实训成果1. 完成科学计算器安卓应用程序的开发,具备基本运算、单位转换、概率计算等功能。

2. 实现了主界面、计算核心、功能模块、界面交互等方面的设计。

3. 提高了编程能力和团队协作能力。

java计算器设计实验报告

java计算器设计实验报告

java计算器设计实验报告Java计算器设计实验报告引言:计算器是人们日常生活中常见的工具之一,它能够进行基本的数学运算,方便人们进行快速计算。

本实验旨在通过使用Java编程语言设计一个简单的计算器,探索计算器的基本原理和实现方法。

一、实验目的本实验的主要目的是通过设计和实现一个基本的计算器,加深对Java编程语言的理解和应用。

通过这个实验,我们可以学习到如何设计一个简单的界面,实现基本的计算功能,并对用户输入进行处理和错误处理。

二、实验步骤1. 界面设计首先,我们需要设计一个简单的计算器界面。

可以使用Swing或JavaFX等工具包来实现界面设计。

界面应该包括数字按钮、运算符按钮以及一个显示屏幕等组件。

2. 事件处理接下来,我们需要为每个按钮添加事件处理程序。

当用户点击按钮时,程序应该能够根据按钮的类型执行相应的操作。

例如,当用户点击数字按钮时,程序应该能够将数字显示在屏幕上;当用户点击运算符按钮时,程序应该能够执行相应的运算。

3. 运算逻辑在实现运算逻辑时,我们需要考虑用户的输入和错误处理。

例如,当用户输入非法字符或进行非法操作时,程序应该能够给出相应的提示或错误信息。

同时,我们还需要考虑运算的优先级和顺序,确保计算结果的准确性。

4. 测试和调试完成代码编写后,我们需要进行测试和调试。

通过输入一系列数字和运算符,检查计算器是否能够正确计算并显示结果。

如果发现错误或异常,需要对代码进行调试,找出并解决问题。

三、实验结果经过测试和调试,我们成功实现了一个简单的计算器。

用户可以通过界面上的按钮输入数字和运算符,并在屏幕上显示计算结果。

计算器能够处理用户的输入并进行相应的运算,同时还能够对错误输入进行处理和提示。

四、实验总结通过本实验,我们深入了解了Java编程语言的应用和实践。

通过设计和实现一个简单的计算器,我们掌握了界面设计、事件处理和运算逻辑的基本原理和方法。

同时,我们也学会了如何进行测试和调试,提高了代码的可靠性和稳定性。

c计算器实验报告

c计算器实验报告

c计算器实验报告C计算器实验报告引言:计算器是我们日常生活中常见的工具之一。

无论是在学习、工作还是生活中,我们都会频繁地使用计算器来进行各种数学运算。

而随着科技的不断发展,计算器也在不断地演化和改进。

本实验旨在通过对C计算器的研究和实验,深入了解计算器的原理和功能,并对其进行性能测试和评估。

一、背景介绍计算器是一种用于进行数学运算的设备或工具。

它可以进行基本的四则运算,如加减乘除,以及更复杂的科学运算,如三角函数、指数和对数等。

计算器的发展历史可以追溯到早期的机械计算器,如阿贝尔计算器和帕斯卡计算器。

而现代计算器则采用电子技术,通过电子元件和芯片来实现计算功能。

二、C计算器的原理和功能C计算器是一种基于C语言开发的计算器软件。

它通过编写程序来实现各种数学运算和功能。

C语言是一种通用的高级编程语言,具有强大的计算能力和灵活的语法结构。

C计算器利用C语言的特性,可以实现复杂的数学运算和逻辑判断。

C计算器具有以下主要功能:1.基本运算:C计算器可以进行加减乘除等基本的四则运算。

用户只需输入相应的表达式,C计算器会自动计算并给出结果。

2.科学运算:C计算器支持各种科学运算,如三角函数、指数和对数等。

用户可以通过特定的函数调用来实现这些功能。

3.变量和常量:C计算器可以定义和使用变量和常量。

用户可以将某个数值赋给一个变量,并在后续的计算中使用这个变量。

4.条件判断:C计算器支持条件判断语句,用户可以根据不同的条件执行不同的操作。

这使得C计算器具有一定的逻辑判断能力。

5.循环结构:C计算器可以实现循环结构,用户可以通过循环语句重复执行某个操作,从而简化计算过程。

三、C计算器的性能测试和评估为了评估C计算器的性能,我们进行了一系列的测试。

首先,我们测试了C计算器进行基本运算的速度。

通过输入大量的基本运算表达式,我们测量了C计算器的响应时间和计算速度。

结果显示,C计算器的运算速度非常快,几乎可以瞬间完成复杂的运算。

计算器设计实验报告

计算器设计实验报告

计算器设计实验报告计算器设计实验报告第一部分:引言计算器是一种广泛应用于日常生活和工作中的电子设备。

它能够进行基本的数学运算,如加减乘除,以及更复杂的科学计算,如对数、三角函数等。

本实验旨在设计一个简单的计算器,以了解计算器的工作原理,并通过实践来提高我们的电子设计和编程能力。

第二部分:设计思路在设计计算器之前,我们首先需要确定所需的功能和要使用的技术。

基于我们的目标是设计一个简单的计算器,我们决定使用数字显示屏、按键和微控制器来实现。

数字显示屏是用于显示计算结果和用户输入的设备,我们选择了七段数码管作为显示器。

按键则用于接收用户输入的数字和操作符。

微控制器是计算器的核心部件,它负责接收按键输入,进行计算,并将结果显示在数码管上。

第三部分:实验步骤1. 硬件设计我们首先设计了数字显示屏的电路。

通过连接七段数码管和相应的电阻,我们能够控制数码管的亮灭,从而显示不同的数字和符号。

接下来,我们设计了按键的电路。

每个按键都与微控制器的引脚相连,当按键被按下时,引脚会接收到一个电平信号,微控制器通过检测引脚状态来确定用户的输入。

2. 软件编程在硬件设计完成后,我们开始编写微控制器的程序。

程序的主要任务是接收按键输入,并根据用户的操作进行相应的计算。

首先,我们设置了一个变量来存储用户的输入,然后通过检测按键状态来更新这个变量。

当用户按下数字键时,程序将数字添加到变量中;当用户按下操作符键时,程序将根据当前的操作符和变量进行相应的计算。

最后,程序将计算结果显示在数码管上。

我们使用了一个函数来将计算结果转换为七段数码管的控制信号,并通过相应的引脚将信号发送到数码管。

第四部分:实验结果经过一段时间的设计和调试,我们成功地完成了计算器的制作。

它能够准确地接收用户的输入,并进行相应的计算。

计算结果也能够正确地显示在数码管上。

我们进行了一系列测试来验证计算器的功能和性能。

测试包括基本的加减乘除运算,以及一些复杂的科学计算,如对数和三角函数。

C语言计算器设计实验报告

C语言计算器设计实验报告

C语言计算器设计实验报告班级:11661 姓名:学号:38号一、实验目的:利用C语言编写一个简单的计算器,并能正确运行+,-,*,/四则运算。

二、实验内容:1、编写前分析;(1)、根据实验目的,要求键盘录入表达式,并运行后输出结果;由于键盘录入的表达式含数字和运算符,所以要选择用字符串数据类型输入。

(2)、由于输入的是字符串,而只有数值类型的数据才能参与运算,所以得把字符(串)类型的数据转换为数值类型的数据。

(3)、四则运算时,括号优先级高于乘除,乘除优先级高于加减,程序必须能正确判断其优先级才能得出正确的结果。

(4)、为了保证运行结果的精确度需正确选择所用变量的数据类型。

2、利用所学知识进一步分析以上内容;(1)、利用gets函数输入表达式,例如:gets(calc);(2)、C语言中将字符类型数据转化成数值类型数据方法很多,该程序利用函数库stdlib.h中的atof函数来实现这一目的。

同时注意主函数前加上预处理指令:#include<stdlib.h>。

(3)、为了能正确判断优先级,该程序利用函数间的多层嵌套,循环调用来实现;从优先级最高的括号开始判断,若有括号,再判断括号内部,若无括号判断是否为乘除,最后判断加减;括号内内容法方类似。

具体判断方法在后面将以实例详细介绍。

(4)、为了保证输出数据的精确度,该程序中函数f1()-f4()返回值均用double 类型;用g格式符输出最终结果让输出结果简明而又能保证其精确度。

3、开始编程:首先编写必要的预处理指令,声明必要的函数,定义必要的变量。

#include<stdio.h> (输入,输出函数需要该指令);#include<stdlib.h> (atof函数需要该指令);全局声明:Double f1(); (用于存放最终输出结果);Char calc[n]; (用于存放输入的表达式);Int n; (用于标注clac中的各个元素);编写主函数:int main(void){printf("请输入表达式:\n");gets(calc);(输入表达式)printf("原式=%g\n",f1());(程序将调用f1(),并输出f1()的结果)return(0);}由于四则运算先算出优先级最高的结果,并对同一优先级采用从左到右的顺序计算,所以最终的运算是对表达式进行加减运算。

Java程序设计实验报告_2

Java程序设计实验报告_2

Java程序设计实验报告姓名:学号:班级:课题名称(附程序名):JAVA计算器(Calculator.java)一、实验目的通过JAVA图形接口的应用,编写出一图形界面的科学计算器;熟悉JAVA程序开发的一般步骤,掌握事件驱动,并能掌握一定的Java 编程能力,在实践中能感受Java的奥秘!同时检验自己的学习成果。

二、实验任务具有加减乘除的计算器,可以延伸到开方等其他的一些计算。

三、开发工具与平台Microsoft Visual Studio 2005四、设计思路:1)界面设计2)逻辑设计首先明确该实验设计的要求实现的基本功能,其次设计布局,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可以不同,尽量将相同属性的按钮放在一个区域,方便操作。

3)软件调试与测试经过调试之后,能实现基本的四则运算,并能实现开方和消除错误的数。

4)软件设计优化该软件的界面应该更加流畅,同时我相信随着自己只是的日益丰富,开发软件的速度更快,效率更高,功能更加全面!5)实验总结不足:没有实现Mc,MR,MS,M+以及菜单栏几个功能,有待进一步完善。

这样才能够完成自己的第一个应用软件设计!优点:通过本次实验设计,大体了解了Java图形接口的应用,并在过程中增强了对程序的调试能力。

对JAVA有了更深一步的理解,学会如何解决问题,如何坚持对程序的调试,同时也增强了自己学习Java的信心。

五、附录源程序如下:import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JPanel;import javax.swing.JTextField;public class Calculator extends JFrame implements ActionListener { boolean init = true;boolean isMath = false;boolean clear = true;boolean clickable = true;double qian;String fuhao;int all = 0;JTextField text = new JTextField(25);JButton bM = new JButton();JButton bMC = new JButton("MC");JButton bMR = new JButton("MR");JButton bMS = new JButton("MS");JButton bMADD = new JButton("M+");JButton b0 = new JButton("0");JButton b1 = new JButton("1");JButton b2 = new JButton("2");JButton b3 = new JButton("3");JButton b4 = new JButton("4");JButton b5 = new JButton("5");JButton b6 = new JButton("6");JButton b7 = new JButton("7");JButton b8 = new JButton("8");JButton b9 = new JButton("9");JButton bNOP = new JButton("+/-");JButton bDot = new JButton(".");JButton bDiv = new JButton("/");JButton bMul = new JButton("*");JButton bSub = new JButton("-");JButton bAdd = new JButton("+");JButton bSprt = new JButton("sprt");JButton bMod = new JButton("%");JButton bDao = new JButton("1/x");JButton bEqual = new JButton("=");JButton bBackspace = new JButton("Backspace"); JButton bCE = new JButton("CE");JButton bC = new JButton("C");public Calculator() {this.setTitle("计算器");JMenuBar mainMenu = new JMenuBar();setJMenuBar(mainMenu);JMenu editMenu = new JMenu("编辑");JMenu viewMenu = new JMenu("查看");JMenu helpMenu = new JMenu("帮助");mainMenu.add(editMenu);mainMenu.add(viewMenu);mainMenu.add(helpMenu);JPanel jpDisplay = new JPanel();JPanel jpInput = new JPanel();JPanel jpLeft = new JPanel();JPanel jpRight = new JPanel();text.setText("0.");text.setHorizontalAlignment(JTextField.RIGHT); jpDisplay.add(text);bM.addActionListener(this);bMC.addActionListener(this);bMS.addActionListener(this);bMR.addActionListener(this);bMADD.addActionListener(this);jpLeft.setLayout(new GridLayout(5, 1)); jpLeft.add(bM);jpLeft.add(bMC);jpLeft.add(bMR);jpLeft.add(bMS);jpLeft.add(bMADD);JPanel jpInnerN = new JPanel();JPanel jpInnerS = new JPanel();bBackspace.addActionListener(this);bCE.addActionListener(this);bC.addActionListener(this);jpInnerN.setLayout(new GridLayout(1, 3)); jpInnerN.add(bBackspace);jpInnerN.add(bCE);jpInnerN.add(bC);b0.addActionListener(this);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);bNOP.addActionListener(this);bDot.addActionListener(this);bDiv.addActionListener(this);bMul.addActionListener(this);bSub.addActionListener(this);bAdd.addActionListener(this);bSprt.addActionListener(this);bMod.addActionListener(this);bDao.addActionListener(this);bEqual.addActionListener(this);jpInnerS.setLayout(new GridLayout(4, 5));jpInnerS.add(b7);jpInnerS.add(b8);jpInnerS.add(b9);jpInnerS.add(bDiv);jpInnerS.add(bSprt);jpInnerS.add(b4);jpInnerS.add(b5);jpInnerS.add(b6);jpInnerS.add(bMul);jpInnerS.add(bMod);jpInnerS.add(b1);jpInnerS.add(b2);jpInnerS.add(b3);jpInnerS.add(bSub);jpInnerS.add(bDao);jpInnerS.add(b0);jpInnerS.add(bNOP);jpInnerS.add(bDot);jpInnerS.add(bAdd);jpInnerS.add(bEqual);jpRight.setLayout(new BorderLayout());jpRight.add(jpInnerN, BorderLayout.NORTH);jpRight.add(jpInnerS, BorderLayout.CENTER);jpInput.setLayout(new BorderLayout());jpInput.add(jpLeft, BorderLayout.WEST);jpInput.add(jpRight, BorderLayout.CENTER);Container pane = this.getContentPane();pane.setSize(333, 208);this.setLocation(300, 200);this.setLayout(new BorderLayout());pane.add(jpDisplay, BorderLayout.CENTER);pane.add(jpInput, BorderLayout.SOUTH);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.pack();this.setVisible(true);}public void actionPerformed(ActionEvent e) {if (init)this.text.setText("0.");init = false;Object source = e.getSource();if (source == bBackspace) {String s = text.getText();text.setText("");for (int i = 0; i < s.length() - 1; i++) { char a = s.charAt(i);text.setText(text.getText() + a);}System.out.println("backspace");}if (source == bCE) {text.setText("0.");clear = true;init = true;System.out.println("CE");}if (source == bC) {text.setText("0.");clear = true;init = true;System.out.println("C");}if (source == bM) {System.out.println("M");}if (source == bMC) {System.out.println("MC,功能末实现");}if (source == bMR) {System.out.println("MR,功能末实现");}if (source == bMS) {System.out.println("MS,功能末实现");}if (source == bMADD) {System.out.println("M+,功能末实现");}if (source == b0) {System.out.println("0");if (clear == false)// 判断是否点击了符号位text.setText("");text.setText(text.getText() + "0");}if (source == b1) {if (clear == false)text.setText("");text.setText(text.getText() + "1");clear = true;// 第二次不在清空(前二句)}if (source == b2) {System.out.println("2");if (clear == false)text.setText("");text.setText(text.getText() + "2");clear = true;}if (source == b3) {System.out.println("3");if (clear == false)text.setText("");text.setText(text.getText() + "3");clear = true;}if (source == b4) {System.out.println("4");if (clear == false)text.setText("");text.setText(text.getText() + "4");clear = true;}if (source == b5) {System.out.println("5");if (clear == false)text.setText("");text.setText(text.getText() + "5");clear = true;}if (source == b6) {System.out.println("6");if (clear == false)text.setText("");text.setText(text.getText() + "6");clear = true;}if (source == b7) {System.out.println("7");if (clear == false)text.setText("");text.setText(text.getText() + "7");clear = true;}if (source == b8) {System.out.println("8");if (clear == false)text.setText("");text.setText(text.getText() + "8");clear = true;}if (source == b9) {System.out.println("9");if (clear == false)text.setText("");text.setText(text.getText() + "9");clear = true;}try{if (source == bNOP) {System.out.println("+/-");boolean isNumber = true;String s = text.getText();for (int i = 0; i < s.length(); i++)if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9'|| s.charAt(i) == '.' || s.charAt(i) == '-')) {isNumber = false;break;}if (isNumber == true) {// 如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-') {text.setText("");for (int i = 1; i < s.length(); i++) {char a = s.charAt(i);text.setText(text.getText() + a);}}// 如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetext.setText('-' + s);}}if (source == bDot) {System.out.println(".");clickable = true;for (int i = 0; i < text.getText().length(); i++)if ('.' == text.getText().charAt(i)) {clickable = false;break;} // 第一层判断是否里面含有小数点;if (clickable == true)// 第二层判断text.setText(text.getText() + ".");}if (source == bDiv) {System.out.println("/");qian = Double.parseDouble(text.getText());fuhao = "/";clear = false;}if (source == bMul) {System.out.println("*");qian = Double.parseDouble(text.getText());fuhao = "*";clear = false;}if (source == bSub) {System.out.println("-");qian = Double.parseDouble(text.getText());fuhao = "-";clear = false;}if (source == bAdd) {System.out.println("+");qian = Double.parseDouble(text.getText());fuhao = "+";clear = false;}if (source == bSprt) {System.out.println("sprt");String s = text.getText();if (s.charAt(0) == '-') {text.setText("负数不能开根号");} elsetext.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(text.getText()))));clear = false;}if (source == bMod) {System.out.println("%,功能末实现");}if (source == bDao) {System.out.println("1/x");if (text.getText().charAt(0) == '0'&& text.getText().length() == 1) {text.setText("除数不能为零");} else {boolean isDec = true;int i, j, k;String s= Double.toString(1 / Double.parseDouble(text.getText()));for (i = 0; i < s.length(); i++)if (s.charAt(i) == '.')break;for (j = i + 1; j < s.length(); j++)if (s.charAt(j) != '0') {isDec = false;break;}if (isDec == true) {String stemp = "";for (k = 0; k < i; k++)stemp += s.charAt(k);text.setText(stemp);} elsetext.setText(s);}clear = false;}if (source == bEqual) {System.out.println("=");Double ss=Double.parseDouble(text.getText());text.setText("");if (fuhao == "+")text.setText(qian + ss + "");if (fuhao == "-")text.setText(qian - ss + "");if (fuhao == "*")text.setText(qian * ss + "");if (fuhao == "/")text.setText(qian / ss + "");clear = false;// 要清空前一次的数据;}}catch (Exception ee) {System.out.println("请正确输入");text.setText("运算出错,给您带来不便,sorry");clear = false;}}public static void main(String[] args) {new Calculator();}}11。

计算器_实验报告

计算器_实验报告

一、实验目的1. 熟悉计算器的基本原理和设计方法。

2. 掌握计算器程序的设计与实现。

3. 提高编程能力和软件工程实践能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 计算器界面设计2. 计算器功能实现3. 计算器测试与优化四、实验步骤1. 计算器界面设计(1)创建一个Java项目,命名为“Calculator”。

(2)在项目中创建一个名为“CalculatorFrame”的类,继承自JFrame。

(3)在“CalculatorFrame”类中,创建一个JPanel作为计算器的面板,命名为“calculatorPanel”。

(4)在calculatorPanel中,添加一个JTextField作为显示输入和计算结果的文本框,命名为“resultField”。

(5)添加一个JButton数组,作为计算器的按钮,包括数字按钮、运算符按钮和功能按钮。

(6)为每个按钮设置事件监听器,实现按钮点击事件。

2. 计算器功能实现(1)在“CalculatorFrame”类中,定义一个私有成员变量,用于存储当前输入的字符串。

(2)为每个按钮的事件监听器添加逻辑,实现以下功能:- 数字按钮:将按钮对应的数字字符串添加到当前输入字符串中。

- 运算符按钮:将当前输入字符串、运算符和下一个输入字符串组合成一个表达式,并计算结果。

- 功能按钮:实现计算器的其他功能,如清除、求倒数、开平方等。

(3)计算结果存储在resultField中。

3. 计算器测试与优化(1)对计算器进行测试,确保所有功能正常运行。

(2)优化计算器的性能,提高计算速度。

(3)美化计算器界面,提高用户体验。

五、实验结果与分析1. 实验结果成功设计并实现了一个具有基本功能的计算器,界面简洁、操作方便。

2. 实验分析(1)通过学习计算器的基本原理和设计方法,掌握了计算器程序的设计与实现。

科学计算器实验报告

科学计算器实验报告

实验三科学计算器附加代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;namespace计算器{publicpartialclass FrmMain : Form{bool error = false;public FrmMain(){InitializeComponent();}privatevoid FrmMain_KeyPress(object sender, KeyPressEventArgs e) {switch (e.KeyChar){case'0':button0.PerformClick();break;case'1':button1.PerformClick();break;case'2':button2.PerformClick();break;case'3':button3.PerformClick();break;case'4':button4.PerformClick();break;case'5':button5.PerformClick();break;case'6':button6.PerformClick();break;case'7':button7.PerformClick();break;case'8':button8.PerformClick();break;case'9':button9.PerformClick();break;case'+':buttonPlus.PerformClick(); break;case'-':buttonMinus.PerformClick(); break;case'*':buttonMultiply.PerformClick(); break;case'/':buttonDivide.PerformClick(); break;case'.':buttonDot.PerformClick(); break;case'(':buttonLeft.PerformClick(); break;case')':buttonRight.PerformClick(); break;case'\b':buttonDelete.PerformClick(); break;case'\n':buttonEqual.PerformClick(); break;}}privatevoid button_Click(object sender, EventArgs e) {switch (((Button)sender).Text){case"←":if(textBoxExpression.Text.Length > 0)textBoxExpression.Text = textBoxExpression.Text.Substring(0, textBoxExpression.Text.Length - 1);break;case"CE":error = false;textBoxExpression.Text = "";break;case"C":textBoxExpression.Text = "";break;case"=":DoFormula();break;default:textBoxExpression.Text += ((Button)sender).Text;break;}}protectedvoid DoFormula(){if (error == true){MessageBox.Show("请先点击CE按钮清除上一次运算的错误!", "运算错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return;}Formula fm = new Formula(textBoxExpression.Text);try{fm.Calculate();}catch (Exception ex){textBoxExpression.Text = "ERROR";error = true;MessageBox.Show(ex.Message, "运算错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return;}textBoxExpression.Text = fm.result.ToString();}}class Formula{protectedstring expression = "";protecteddouble _result = 0;protectedbool calculated = false;Stack<double> numbers = new Stack<double>();Stack<char> operators = new Stack<char>();///<summary>///通过字符串初始化一个算式///</summary>///<param name="initialString"></param>public Formula(string initialString){expression = initialString;}///<summary>///运算表达式并生成结果///</summary>publicvoid Calculate(){//清空堆栈numbers.Clear();operators.Clear();//扫描表达式,并解决乘除法int index = 0;double tmpNum = 0;bool isNum = false;for (index = 0; index < expression.Length; index++){if (isNum == false){//检测是否内嵌表达式if (expression[index] == '('){//扫描内嵌表达式的结尾int i = index;for (; i < expression.Length; i++){if (expression[i] == ')')break;}//新建子表达式并计算Formula innerFormula = new Formula(expression.Substring(index+1, i - index - 1));//除去两个括号innerFormula.Calculate();double innerResult = innerFormula.result;//替换原表达式中的字符串string ToReplace = expression.Substring(index, i - index + 1);expression = expression.Replace(ToReplace,innerResult.ToString());index--;continue;}//扫描数字tmpNum = ReadTheFirstNum(expression.Substring(index));index += tmpNum.ToString().Length-1;//索引后移至数字后一位numbers.Push(tmpNum);isNum = true;continue;}if (IsOperator(expression[index]) == true){//检测表达式是否正确if (IsOperator(expression[index - 1]) == true){thrownew InvalidExpressionException("无效的表达式:表达式中有连续两个运算符");}//检测第一位是否是运算符if (index == 0){thrownew InvalidExpressionException("无效的表达式:表达式开头不是数字");}//检测是否是乘除法if (expression[index] == '*' || expression[index] == '/'){//检测是否内嵌表达式if (expression[index+1] == '('){//扫描内嵌表达式的结尾int i = index+1;for (; i < expression.Length; i++){if (expression[i] == ')')break;}//新建子表达式并计算Formula innerFormula = new Formula(expression.Substring(index + 2, i - index - 2));//除去两个括号innerFormula.Calculate();double innerResult = innerFormula.result;//替换原表达式中的字符串string ToReplace = expression.Substring(index + 1, i - index);expression = expression.Replace(ToReplace,innerResult.ToString());}//取出下一个操作数double nextNum = ReadTheFirstNum(expression.Substring(index + 1));//取出栈顶操作数tmpNum = numbers.Pop();//执行运算if (expression[index] == '*')tmpNum *= nextNum;else{if (nextNum == 0)thrownew InvalidExpressionException("无效的表达式:表达式中存在除零运算");tmpNum /= nextNum;}//压回操作数堆栈numbers.Push(tmpNum);//索引后移index += nextNum.ToString().Length;isNum = true;//由于乘除法结束后会压入一个操作数,实际上等同于扫描了一个数字continue;}else{//检测到加减法//压入操作符operators.Push(expression[index]);}isNum = false;continue;}else{//检测到非法字符thrownew InvalidExpressionException();}}Stack<double> tmpn = new Stack<double>();Stack<char> tmpo = new Stack<char>();//转化为队列进行正序计算while (numbers.Count != 0){tmpn.Push(numbers.Pop()); }while (operators.Count != 0){tmpo.Push(operators.Pop()); }while (tmpn.Count != 0 && tmpo.Count != 0) {char operate;double num1;double num2;try{operate = tmpo.Pop(); num1 = tmpn.Pop();num2 = tmpn.Pop();}catch (Exception){thrownew InvalidExpressionException();}if (operate == '+'){num1 = num1 + num2;tmpn.Push(num1);}else{num1 = num1 - num2;tmpn.Push(num1);}}//检测是否还有未处理完的操作数或者运算符if (tmpn.Count != 1 || tmpo.Count != 0){thrownew InvalidExpressionException();}//存储表达式运算结果_result = tmpn.Pop();//声明计算完成calculated = true;}///<summary>///表达式的运算结果///</summary>publicdouble result{get{if (calculated == false)thrownew ExpressionNotCalculatedException();return _result;}}///<summary>///扫描第一个数字并返回///</summary>///<param name="s">待扫描字符串</param>///<returns></returns>protecteddouble ReadTheFirstNum(string s){if (s.Length == 0)thrownew InvalidExpressionException();if (IsNum(s[0]) == false)thrownew InvalidExpressionException();double result = 0;int i = 0;for (; i < s.Length; i++){if(IsNum(s[i]) == false)break;}result = double.Parse(s.Substring(0, i)); return result;}///<summary>///扫描一个子算式///</summary>///<param name="s"></param>///<returns></returns>protectedstring ReadAFormula(string s){if (s.Length == 0)thrownew InvalidExpressionException();if (IsNum(s[0]) == false)thrownew InvalidExpressionException();int i = 0;bool found = false;for (; i < s.Length; i++){if (s[i] == ')'){found = true;break;}}if (found == false)thrownew InvalidExpressionException("发现未封闭的表达式!"); return s.Substring(0, i + 1);}///<summary>///判断给定的字符是否是数字///</summary>///<param name="c">需判断的字符</param>///<returns></returns>protectedbool IsNum(char c){if (c >= '0'&& c <= '9' || c == '.')returntrue;elsereturnfalse;}///<summary>///判断给定的字符是否是操作符///</summary>///<param name="c">需判断的字符</param>///<returns></returns>protectedbool IsOperator(char c){switch (c){case'+':returntrue;case'-':returntrue;case'*':returntrue;case'/':default:returnfalse;}}}///<summary>///算数表达式未计算///</summary>[Serializable]publicclass ExpressionNotCalculatedException : ApplicationException{public ExpressionNotCalculatedException(): base("尝试在算数表达式未计算前就获取表达式结果"){}public ExpressionNotCalculatedException(string Message): base(Message){}public ExpressionNotCalculatedException(string Message, Exception inner) : base(Message, inner){}}///<summary>///无效的表达式///</summary>[Serializable]publicclass InvalidExpressionException : ApplicationException{public InvalidExpressionException(): base("无效的表达式"){}public InvalidExpressionException(string Message): base(Message){public InvalidExpressionException(string Message, Exception inner) : base(Message, inner){}}}程序运行结果图:。

(完整word版)VC++简单科学计算器设计

(完整word版)VC++简单科学计算器设计

简单科学计算器设计VC++课程设计报告简单科学计算器设计一、设计任务1.选题意义此题选择意义在于引导学生学会设计简单的科学计算器,进一步掌握Visual C++应用程序。

统计学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++,并在此环境下设计并实现一个简单计算器系统。

该计算器应能实现如下功能:1)、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方等简单计算2)、科学计算函数,包括正弦、余弦、正切、余切、开方、对数、指数等函数运算3)、具备历史计算的记忆功能。

2.设计目标使计算器含有以下功能:(1)、基本运算功能:可以进行加、减、乘、除等基本运算。

(2)、数制转换功能:可以一次完成二进制转十进制、十进制转二进制、八进制转二进制等运算。

(3)、三角函数运算功能:可以一次完成三角函数之间的计算,求正弦函数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot)等函数的值。

(4)、对数、指数运算功能:可以一次求的对数函数(log、ln)、指数函数(exp)等函数的运算。

(5)、删除功能:可以在输入错误时删除已输入的数值。

(6)、归零功能:可以在计算完成后清空编辑框中的已有数值。

二、程序设计与实现1.程序结构本计算器首先是通过在计算器的界面上按下相应的按钮,来进行基本的加,减,乘,除等基本运算,计算器还能够进行平方运算,求平方根运算,乘方运算,三角函数运算(包括正弦函数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot)),对数函数(ln、log),指数函数(exp),幂函数(x~)和进制转换(包括二进制转十进制、十进制转二进制和八进制转二进制)等运算。

以下是本计算器的运算流程图:2. 设计步骤:(1) 创建一个基于对话框的应用程序。

(2) 利用资源编辑器编辑对话框资源,及设计计算器界面并修改对话框各按钮的ID 属性和Caption 属性。

Java计算器实验报告(包括普通型和科学型)

Java计算器实验报告(包括普通型和科学型)

一、计算器实验报告一、实验名称及其要求:A)名称: java计算器的设计B)要求:1.实验目的:图形界面设计。

熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。

2.题意:请设计并实现Windows系统中“计算器”的窗口及功能。

3.实验要求:(1)设计图形界面添加菜单:窗口上添加各种组件及菜单,并处理组件及菜单的事件监听程序。

(2)运算:实现多种运算,保证运算正确性。

二、实验步骤先新建两个类,一个类是普通型计算器的Count1,另一个类是科学性计算器的Count2一)、普通型计算器1、先利用Java各种图形组件完成计算的整体界面,在界面中添加按钮以及菜单项,如图①先定义各按钮以及菜单、菜单项JPanel p2= new JPanel();JTextField jt2 = new JTextFiled();JMenuBar jmb = new JMenuBar () ;JMenu check = new JMenu ("查看(V)") ;JMenu edit = new JMenu ("编辑(E)") ;JMenu help = new JMenu ("帮助(H)") ;JMenuItem help_about = new JMenuItem("关于") ;JMenuItem help_help = new JMenuItem("操作说明") ;JMenuItem exit = new JMenuItem("退出") ;JRadioButton rb2 = new JRadioButton("标准型",true) ;JRadioButton rb1 = new JRadioButton("科学型") ;ButtonGroup bg = new ButtonGroup() ;按钮的定义形式如下:JButton b = new JButton(”i”),i表示各按钮上的字符将各按钮添加到面板p2中至于添加按钮进面板的由于比较简单,这里就不做说明了。

科学计算器WX小程序的设计与实现

科学计算器WX小程序的设计与实现

科学计算器WX小程序的设计与实现摘要在数学极度发达的今天,运算成为了每天不可缺少的东西。

当人们需要运算大量数据的时候,计算器就成了最大的帮手,尤其是科学计算器可以计算各种函数,与或非等复杂运算。

可以说计算器大大方便了人们的生活。

当下是互联网的时代,计算器作为人们的帮手也应该站在互联网的舞台。

本文主要探讨如何用WX小程序制作一款科学计算器。

通过调查市面上的科学计算器及相关软件得出了一款科学计算器应该具有什么样的功能,从而得出了这款小程序的需求分析和设计方案。

然后,通过可行性分析得出了这款小程序是可以实现的。

最后通过需求分析、设计方案及部分参考文献提出了实现方法及测试方案,从而证明了这款小程序是可行的。

关键词:WX小程序;科学计算器;运算AbstractIn today's highly developed mathematics, computing becomes a daily necessity. When people need to calculate a lot of data, the calculator becomes the biggest helper, especially the scientific calculator can calculate various functions, with or not equal to complex operation. It can be said that calculators greatly facilitate people's life. In the age of the Internet, calculators, as helpers, should also stand on the Internet.This paper mainly discusses how to make a scientific calculator with WeChat program. By investigating the scientific calculators and related software on the market, we have found out what function a scientific calculator should have, so as to obtain the demand analysis and design scheme of this small program. Then, through the feasibility analysis, this small program can be realized. Finally, the realization method and test scheme are put forward through demand analysis, design scheme and some references, which proves that this small program is feasible.Key words:WeChat small program,Scientific calculator, Arithmetic目录摘要 (I)Abstract (I)目录 .............................................................................................................................................. I I 1诸论. (4)1.1选题背景 (4)1.2小程序概况 (9)1.3开发者工具介绍 (9)1.3.1 WX小程序 (9)1.3.2 WX小程序是B/S还是C/S? (11)2科学计算器小程序需求分析 (12)2.1 小程序目标 (12)2.2 开发环境 (12)2.3 WX小程序的方案设计 (12)2.4 用户需求调查 (14)3科学计算器小程序可行性分析 (15)3.1 经济方面的可行性分析 (15)3.2 技术方面的可行性分析 (15)3.3 社会环境的可行性分析 (16)3.3.1 市场分析 (16)3.3.2 政策分析 (17)4科学计算器小程序主要功能详细设计 (17)4.1 小程序登录的实现 (17)4.2 小程序计算版块的实现 (19)4.2.1 简单四则运算功能的实现 (19)4.2.2 函数运算功能的实现 (20)4.2.3 逻辑与位运算功能的实现 (21)4.2.4 进制之间转换功能的实现 (23)4.2.5 其他功能的实现 (24)5科学计算器小程序运行调试 (28)5.1 运行 (28)5.2 测试 (28)5.2.1 测试的目的 (28)5.2.2 测试的准则 (29)5.2.3 测试的方法 (29)参考文献............................................................................................................错误!未定义书签。

vb计算器 实验报告

vb计算器 实验报告

vb计算器实验报告VB计算器实验报告引言:计算器是人们日常生活中常用的工具之一,无论是进行简单的数学运算还是复杂的科学计算,计算器都能提供帮助。

本实验旨在使用VB(Visual Basic)编程语言设计和实现一个功能完善的计算器,通过该实验,我们可以深入了解计算器的原理和实现方法,并掌握VB编程的基本技巧。

一、实验目的本实验的主要目的是设计和实现一个VB计算器,具体包括以下几个方面:1. 学习VB编程语言的基本语法和数据类型;2. 掌握VB窗体的设计和布局;3. 实现基本的计算功能,包括加减乘除、取余、开方等;4. 实现科学计算功能,包括三角函数、指数函数、对数函数等;5. 实现计算器的界面美化和用户友好性。

二、实验原理1. VB编程语言VB是一种事件驱动的编程语言,它提供了丰富的控件和库函数,方便开发者进行图形界面的设计和实现。

在本实验中,我们将使用VB编程语言来实现计算器的功能。

2. VB窗体设计VB窗体是计算器的主界面,通过在窗体上添加各种控件,如按钮、文本框等,来实现计算器的各种功能。

通过设置控件的属性和事件,可以实现用户与计算器的交互。

3. 计算器的基本功能实现计算器的基本功能包括加减乘除、取余、开方等,这些功能可以通过VB编程语言中提供的数学函数和运算符来实现。

通过捕捉用户输入的数据和操作符,计算器可以进行相应的计算并将结果显示在屏幕上。

4. 科学计算功能的实现科学计算功能是计算器的扩展功能,包括三角函数、指数函数、对数函数等。

这些函数可以通过VB编程语言中提供的数学库函数来实现,通过捕捉用户的选择和输入,计算器可以根据用户的需求进行相应的科学计算。

5. 界面美化和用户友好性为了提高计算器的用户体验,我们需要对计算器的界面进行美化和优化。

通过设置控件的样式、颜色和布局,可以使计算器界面更加美观和易用。

三、实验步骤1. 创建VB工程,并添加一个窗体;2. 在窗体上添加各种控件,如按钮、文本框等,用于实现计算器的各种功能;3. 设置控件的属性和事件,实现计算器的基本功能,包括加减乘除、取余、开方等;4. 添加科学计算功能,如三角函数、指数函数、对数函数等,实现科学计算器的功能;5. 美化计算器界面,通过设置控件的样式、颜色和布局,提高用户体验;6. 进行测试和调试,确保计算器的功能正常。

c 计算器实验报告

c 计算器实验报告

c 计算器实验报告c 计算器实验报告一、引言计算器是一种广泛应用于各个领域的工具,它能够进行各种数学运算,简化了人们的计算工作。

在本次实验中,我们将使用C语言编写一个简单的计算器程序,通过实践来加深对C语言的理解,并且掌握计算器的基本原理和实现方法。

二、实验目的1. 掌握C语言的基本语法和编程技巧;2. 理解计算器的基本原理和实现方法;3. 实现基本的四则运算功能;4. 实现一些常用的数学函数。

三、实验步骤1. 设计计算器界面在这一步骤中,我们需要设计一个简洁明了的计算器界面,包括数字键、运算符键和等号键等。

我们可以使用C语言的图形库或者控制台窗口来实现界面的设计。

2. 实现基本的四则运算功能在这一步骤中,我们需要编写C语言代码,实现计算器的基本四则运算功能。

我们可以使用C语言提供的算术运算符来进行加减乘除的计算,并且通过用户输入来获取操作数和运算符。

3. 实现常用的数学函数在这一步骤中,我们可以使用C语言提供的数学库函数来实现一些常用的数学函数,比如求平方根、求幂等。

通过调用这些函数,我们可以使计算器具备更多的功能。

4. 进行测试和调试在这一步骤中,我们需要对编写的计算器程序进行测试和调试,确保其能够正常运行,并且能够正确地进行各种运算和计算。

四、实验结果经过测试和调试,我们的计算器程序能够正常运行,并且能够正确地进行各种运算和计算。

它具备基本的四则运算功能,并且支持一些常用的数学函数。

我们可以通过输入数字和运算符来进行计算,并且可以得到正确的结果。

五、实验总结通过这次实验,我们深入理解了C语言的基本语法和编程技巧,并且掌握了计算器的基本原理和实现方法。

我们通过编写代码实现了一个简单的计算器程序,并且通过测试和调试确保其能够正常运行。

这次实验不仅加深了我们对C语言的理解,还提高了我们的编程能力和问题解决能力。

六、实验感想通过这次实验,我对C语言的学习有了更深入的了解。

在编写计算器程序的过程中,我不仅学会了如何使用C语言的基本语法和编程技巧,还提高了自己的逻辑思维能力和问题解决能力。

大一计算机实验报告

大一计算机实验报告

大一计算机实验报告实验名称,基于Python的简单计算器设计与实现。

实验目的,通过本次实验,掌握Python语言的基本语法和逻辑结构,了解简单的用户交互与数据处理,培养编程思维和解决问题的能力。

实验内容,设计一个简单的计算器程序,能够实现基本的加减乘除运算,具有用户友好的交互界面。

实验过程与结果:首先,我们需要明确计算器的基本功能和界面设计。

在Python中,我们可以使用tkinter库来实现图形用户界面。

通过tkinter库,我们可以轻松地创建按钮、标签和输入框,实现用户与程序的交互。

其次,我们需要考虑计算器的逻辑实现。

我们可以使用Python的基本数学运算符来实现加减乘除功能,同时需要考虑用户输入的合法性和错误处理。

接下来,我们开始编写代码。

首先,我们创建一个窗口,并在窗口中添加按钮和输入框,设计好用户界面。

然后,我们编写计算器的逻辑实现部分,包括用户输入的获取和处理,运算结果的显示等。

最后,我们进行测试。

我们输入不同的数值和运算符,测试计算器的功能是否正常,同时也需要测试一些边界情况和异常输入,确保程序的稳定性和健壮性。

通过以上步骤,我们成功实现了一个简单的计算器程序。

用户可以通过界面输入数字和运算符,程序能够正确地进行运算,并将结果显示在界面上。

实验总结与心得:通过本次实验,我深刻地理解了Python语言的基本语法和逻辑结构,掌握了tkinter库的基本使用方法,提高了编程能力和解决问题的能力。

同时,我也意识到编程的重要性和乐趣,希望在以后的学习和工作中能够更加深入地探索编程的世界。

在实验中遇到的困难和问题,我通过查阅资料和向同学请教,最终都得到了解决。

我相信,在未来的学习和工作中,只要保持耐心和勇气,就能够克服各种困难,不断提升自己的能力。

总之,本次实验让我收获颇丰,对计算机编程有了更深入的了解,也对自己未来的学习和职业规划有了更清晰的认识。

我会继续努力学习,不断提升自己,成为一名优秀的计算机专业人才。

大学大学计算机实验报告实验报告

大学大学计算机实验报告实验报告

大学计算机实验报告实验一:计算器设计实验目的本实验的主要目的是让学生能够够了解计算器的基本原理和结构,学会利用各种键盘实现各类功能,并且能够熟练掌握计算器的基本操作和输入语法。

同时,在本实验过程中,学生还可以通过实践发现计算机中各种错误信息,加深对计算机错误处理的认识与理解。

实验内容本实验主要涉及以下内容:1.计算器的结构和原理。

2.利用各键盘实现计算器的各种功能。

3.计算器的基本操作和输入语法。

4.计算机错误的处理与研究。

实验步骤1.分析计算器的结构和原理,写出计算器的结构图和研究计算器基本原理。

2.编写程序,实现计算器的基本功能,包括加、减、乘、除、取模、求幂等。

3.研究计算器的基本操作,包括输入数字、符号、运算结果、清除结果、重置操作等。

4.记录计算过程、错误信息等,深化对计算机错误的认识与理解。

实验数据分析在本次实验过程中,我们实现了计算器的基本功能,并且也对计算器的基本操作有了更深入的了解。

在输入数字和符号时,我们需要按照一定的语法和操作,输入符号和数字的结构相对比较简单,重要的是输入语法,比如加号+,减号-,乘号*,除号/等等。

在进行计算器功能操作的过程中,我们还需要对计算过程进行记录,以便在出现错误时及时进行处理和分析,比如出现除数为零的情况,计算过程出现错误的信息等等。

实验总结通过本次实验,我们深入了解了计算器的基本结构和原理,掌握了计算器的基本操作和输入语法,加深了对计算机错误处理的认识与理解。

在今后的学习和实践中,我们将进一步完善和扩展计算器的功能,并且不断探索计算器在计算机应用中的广泛应用价值。

计算器设计实验报告

计算器设计实验报告

一、实验目的1. 熟悉数字电路的基本原理和设计方法。

2. 培养学生的动手能力和创新意识。

3. 设计并实现一个功能齐全的计算器。

二、实验原理计算器是一种常见的电子设备,其核心部件为运算单元。

本实验通过设计并实现一个计算器,使学生掌握以下原理:1. 按键扫描电路:用于读取按键信息。

2. 数据存储电路:用于存储输入的数值和运算符。

3. 运算电路:根据输入的运算符进行相应的运算。

4. 显示电路:用于显示运算结果。

三、实验仪器与材料1. 数字电路实验箱2. 计算器原理图3. 连接导线4. 按键5. LED显示器6. 电阻、电容等元件四、实验步骤1. 按键扫描电路设计(1)设计按键扫描电路原理图,包括按键、电阻、二极管等元件。

(2)根据原理图,搭建实验电路,并进行调试。

2. 数据存储电路设计(1)设计数据存储电路原理图,包括寄存器、计数器等元件。

(2)根据原理图,搭建实验电路,并进行调试。

3. 运算电路设计(1)设计运算电路原理图,包括加法器、减法器、乘法器、除法器等元件。

(2)根据原理图,搭建实验电路,并进行调试。

4. 显示电路设计(1)设计显示电路原理图,包括LED显示器、译码器等元件。

(2)根据原理图,搭建实验电路,并进行调试。

5. 整体电路设计(1)根据以上四个部分的设计,设计整体电路原理图。

(2)根据原理图,搭建实验电路,并进行调试。

五、实验结果与分析1. 按键扫描电路按键扫描电路能够正确读取按键信息,实现按键功能。

2. 数据存储电路数据存储电路能够存储输入的数值和运算符,为后续运算提供数据支持。

3. 运算电路运算电路能够根据输入的运算符进行相应的运算,实现加、减、乘、除等基本运算。

4. 显示电路显示电路能够将运算结果正确显示在LED显示器上。

5. 整体电路整体电路能够实现计算器的功能,满足实验要求。

六、实验总结1. 通过本次实验,掌握了数字电路的基本原理和设计方法。

2. 提高了动手能力和创新意识,培养了团队协作精神。

计算器程序编程实习报告范本

计算器程序编程实习报告范本

程序实习报告、需求分析: 编写简易计算器程序,主要实现四则运算,运算符号包括“一” “+”“/” “*”(” “)”按照“先乘除后加减,先算括号内后算括号外,从左到右”的原则的原则进行计算。

考虑到程序的编写困难度,暂时不予考虑多位数的四则运算,也不考虑平方、阶乘、三角函数的运算。

只进行一位数的四则运算,所需要的内存空间不会很大,也就放弃空间不足自动添加空间的情况。

输入:输入一个只含一位数的四则运算式,以#结束,运算符只包括“一”,“ +” “*” “/” “(” “)”输出:直接输出结果“结果是:”测试数据:例如9 —(3—2)*3 —1#二、概要设计:三、详细设计:1、主函数 首先定义两个栈,分别取名是 OPTR,OPND 其中OPTF 存放字符,OPN 存放数字。

获取栈 丿元素戋顶1输出结 果------- --------- 出栈执行将字符压入 operate,压脱括号栈 OPTR栈开始从键盘上获取键入字符 cC!=# 或Gettop!='#"栈顶元素比C 的优先级将字符压 入 OPTR结束将optr中压入#作为栈底元素,然后从键盘上获取表达式的字符如果是数字,将该字符转化为数字,压入到栈opnd中。

如果是字符,和optr的栈顶元素比较优先级1, 、栈顶元素优先级<键入的元素,该调用push()函数,将字符压入到optr栈中2、如果栈顶元素的优先级等于键入元素,则得知此符号为括号,调用pop()函数,将该字符栈中的栈顶元素退出,即为脱括号。

3、如果栈顶元素的优先级高于键入元素,调用pop()函数,分别将取两次数字栈的栈顶元素,pop(op nd,b),pop(op nd,a),, 同时将optr中的栈顶元素去取出,pop(optr,theta), 调用operate()函数, 进行计算。

将operate ( a,theta,b)压入到op nd栈中,继续进行循环。

直到#结束。

电脑编程实验报告

电脑编程实验报告

实验名称:基于Python的简单计算器设计实验日期:2021年10月15日实验地点:计算机实验室一、实验目的1. 掌握Python编程语言的基本语法和常用数据类型。

2. 熟悉Python编程中的控制流和函数定义。

3. 提高编程实践能力,培养问题解决能力。

二、实验内容本次实验旨在设计一个简单的计算器程序,实现以下功能:1. 输入两个数字和一个运算符(加、减、乘、除)。

2. 根据输入的运算符,进行相应的计算。

3. 输出计算结果。

三、实验步骤1. 创建一个新的Python文件,命名为calculator.py。

2. 在calculator.py文件中,定义一个名为calculate的函数,用于实现计算功能。

3. 在calculate函数中,定义一个变量result用于存储计算结果。

4. 根据输入的运算符,使用if-elif-else结构判断并执行相应的计算。

5. 在主函数中,提示用户输入两个数字和一个运算符。

6. 调用calculate函数,传入用户输入的数字和运算符。

7. 打印计算结果。

8. 运行程序,测试功能。

四、实验代码```pythondef calculate(num1, num2, operator):result = 0if operator == '+':result = num1 + num2elif operator == '-':result = num1 - num2elif operator == '':result = num1 num2elif operator == '/':if num2 != 0:result = num1 / num2else:print("除数不能为0")return resultdef main():num1 = float(input("请输入第一个数字:"))num2 = float(input("请输入第二个数字:"))operator = input("请输入运算符(+、-、、/):") result = calculate(num1, num2, operator)print("计算结果为:", result)if __name__ == '__main__':main()```五、实验结果与分析1. 运行程序,按照提示输入数字和运算符,程序能够正确计算出结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《可视化程序编程环境》实验报告项目名称科学计算器设计与实现学院计算机学院专业班级计算机科学与技术08042010年1月9 日一、设计任务与要求使学生了解可视化程序设计语言的基础知识,掌握面向对象编程的分析设计方法,以及与面向对象技术相关的一些软件开发技术,掌握在 VisualC++6环境下进行可视化程序设计技术。

通过实践具体的项目,为他们进一步开展相关领域的学习和科研打下良好的基础。

二、需求分析1. 功能需求(功能划分、功能描述)1、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行3、以角度、弧度两种方式实现上述部分函数4、具备历史计算的记忆功能5、对不正确的表达式能指出其错误原因2. 运行需求(用户界面、人机接口、故障处理)根据计算器要实现的相应功能来布局,分为基本功能区,特殊函数区,进制转换区,度数转换区和输出显示区五大基本模块。

三、实验方案1、总体设计框图23.基本功能区的设计在这个模块中主要把0到F各个按键按下去后在输出显示区上显示出来列举一例:void Caysf55Dlg::OnBnClickedButton3(){if(zuizong=="0") m_str="";m_str+="1";UpdateData(0);if(zuizong=="0") zuizong="";zuizong+="1";// TODO: 在此添加控件通知处理程序代码}接下来从输出显示区获得字符串,通过运算符的相应按键处理:列举加法:void Caysf55Dlg::OnBnClickedButton19()/*加法运算*/{double zan;if(m_str=="") MessageBox(L"没有运算数");else if(y==1||M==1) MessageBox(L"只能输入数值");else if(m_str.GetAt (m_str.GetLength()-1)=='+'||m_str.GetAt(m_str.GetLength()-1)=='-'||m_str.GetAt(m_str.GetLength()-1)=='*'||m_str.GetAt (m_str.GetLength()-1)=='/')MessageBox(L"不能连续输入运算符!!");else {{m_str+="+";UpdateData(0);point=0;if(jinzhi.GetCurSel()==0) zan=S2toN(zuizong);else if(jinzhi.GetCurSel()==1) zan=S8toN(zuizong);else if(jinzhi.GetCurSel()==2) zan=StoN(zuizong);else if(jinzhi.GetCurSel()==3) zan=S16toN(zuizong);}if(Ds==0&&Ms==0){if(As==0&&Ss==0) {Ap1=zan;As=1;zuizong="";}else if(As==0&&Ss==1){Sp2=zan;Ss=2;jisuan();Ap1=result;As=1;zuizong="";}else if(As==1&&Ss==0){Ap2=zan;As=2;jisuan();Ap1=result;As=1;zuizong="";}}if(Ms==1) {if(As==0&&Ss==0){Mp2=zan;Ms=2;jisuan();Ap1=result;As=1;zuizong="";}else if(As==1){Mp2=zan;Ms=2;jisuan();Ap2=result;As=2;jisuan();Ap1=result;As=1;zuizong= "";}else if(Ss==1){Mp2=zan;Ms=2;jisuan();Sp2=result;Ss=2;jisuan();Ap1=result;As=1;zuizong="";}}if(Ds==1) {if(As==0&&Ss==0){Dp2=zan;Ds=2;jisuan();Ap1=result;As=1;zuizong="";}else if(As==1){Dp2=zan;Ds=2;jisuan();Ap2=result;As=2;jisuan();Ap1=result;As=1;zuizong="";}else if(Ss==1){Dp2=zan;Ds=2;jisuan();Sp2=result;Ss=2;jisuan();Ap1=result;As=1;zuizong="";}}}// TODO: 在此添加控件通知处理程序代码}4.特殊函数区的设计特殊函数区各个按键的功能实现主要是通过调用系统函数来实现的举一例如sin:void Caysf55Dlg::OnBnClickedButton27()/*sin*/{double p;if(jiaohu==2) MessageBox(L"请先选择角度或弧度!");else if(m_str==""&&jiaohu==1) MessageBox(L"请输入角度!!");else if(m_str==""&&jiaohu==0) MessageBox(L"请输入弧度!!");else { OnBnClickedButton34();if(jiaohu==1) {if(zhengfan.GetCheck()==1){p=asin(result);p=p*180/3.141592653;}else if(zhengfan.GetCheck()==0){p=sin(result*3.141592653/180);}}if(jiaohu==0) {if(zhengfan.GetCheck()==1) {p=asin(result);}else if(zhengfan.GetCheck()==0) {p=sin(result);}}m_str=NtoS(p);zuizong=NtoS(p);UpdateData(0);point=1;// TODO: 在此添加控件通知处理程序代码}}其他函数cos,tan,cot,arcsin,arccos,arctan,log,ln实现方法相类似。

Pi函数则通过对Pi置数3.141592653来实现。

4.进制转换区的设计:在进制转换这个模块中主要涉及二进制,八进制,十进制跟十六进制之间的转换,并相应隐藏基本功能区中相应按键。

举二进制为例:void Caysf55Dlg::OnCbnSelchangeCombo2(){long k;int a=jinzhi.GetCurSel();if(As!=0||Ss!=0||Ms!=0||Ds!=0) {m_str="";zuizong="";}if(a==0){if(m_str!=""){if(ya==1){k=S8toN(m_str);m_str=IntNtoS(k);m_str=OnDecToOther(2);}else if(ya==2){k=StoN(m_str);m_str=IntNtoS(k);m_str=OnDecToOther(2);}else if(ya==3){k=S16toN(m_str);m_str=IntNtoS(k);m_str=OnDecToOther(2);}}kz1.EnableWindow(true);kz2.EnableWindow(false);kz3.EnableWindow(false);kz4.EnableWindow(false);kz5.EnableWindow(false);kz6.EnableWindow(false);kz7.EnableWindow(false);kz8.EnableWindow(false);kz9.EnableWindow(false);kz0.EnableWindow(true);kzA.EnableWindow(false);kzB.EnableWindow(false);kzC.EnableWindow(false);kzD.EnableWindow(false);kzE.EnableWindow(false);kzF.EnableWindow(false);kzpi.EnableWindow(false);kzd.EnableWindow(false);kzdao.EnableWindow(false);kzsin.EnableWindow(false);kzcos.EnableWindow(false);kztan.EnableWindow(false);kzcot.EnableWindow(false);kzx2.EnableWindow(true);kzx3.EnableWindow(true);kzxy.EnableWindow(true);kzlog.EnableWindow(false);kzln.EnableWindow(false);ya=0;UpdateData(0);zuizong=m_str;}} long Caysf55Dlg::S2toN(CString str){//将二进制CString类型字符串转化为十进制数字String^ newStr = gcnew String(str);long d = Convert::ToInt32(newStr,2);return d;}其他进制按键设置及类型转换相类似。

5.度数转换区的设计:这个模块主要是为特殊函数区服务的,即是以度数来转换还是弧度来转换。

通过在特殊函数中判断选择了哪种度数来进行相应计算。

相关文档
最新文档