模拟计算器程序-课程设计

合集下载

简单的计算器模拟程序的设计和实现

简单的计算器模拟程序的设计和实现

简单的计算器模拟程序的设计和实现1.问题描述对任意给定的正确四则运算表达式,程序计算其结果值并输出。

程序无需查错功能,假定所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为 +、-、*、/,表达式以字符 "=" 结束。

程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。

2.设计说明2.1简要的分析根据要求,要先输入包含有+,-,*,/的运算符的表达式,然后经过计算得到正确的答案。

从键盘中输入的是ASCII码,因此要将其转换为十进制的数据然后才能进行计算。

如果输入混合表达式,要将中缀式先变化成后缀式,然后再进行计算。

2.2概要分析2.2.1 定义的数据段用于定义一些中间变量,并将显示在试验界面上,以及提示信息。

data segmentstri db 50 dup(0)exp db 30 dup(0)track db 30 dup(0)instr db 100 dup(0)msg0 db 'please input your formular:',0dh,0ah,'$'msg1 db 0dh,0ah,'wrong input','$'msg2 db 0dh,0ah,') and ( does not match','$'msg3 db 0dh,0ah,'div zero error','$'msg4 db 0dh,0ah,'sorry,minus data appears','$'msg5 db 0dh,0ah,'any key to continue,esc to exit','$'data ends2.2.2 定义的堆栈段声明用于将中缀表达式转换为后缀表达式,以及进行后缀表达式求值过程用到的堆栈段。

计算器java课程设计--简单计算器

计算器java课程设计--简单计算器

计算器java课程设计一简单计算器学号: 姓名: 班级: 101210109好茨4巒戊《JAVA程序设计》课程设计报告简单计算器卫口Tfp10级计科一班吕海莲___________2012-12-25一、设计内容和要求1、简单计算器模拟程序的基本要求模拟Windows中附件里面的计算器软件,能实现整数的加、减、乘、除四则运算。

2、需要实现的主要功能该计算器模拟程序使用Java的awt包和Swing包的类库设计图形界面的计算器显示用户界面并且使用图形界面中的事件event委托机制来处理事件响应,以及用Java语言设计实现整数的加、减、乘、除四则运算。

(附加功能:淸零和异常处理机制)二、系统分析与概要设计1、面板JPanel txtpanel:用于放置文本框Panel btnpanel:用于放置按钮(0・9 和+,-,*/,=)2、显示部分(1)第一个面板:txtpanel位置以及排列方式BorderLayout.NORTHtxtpanel.add(txtinput):添加文本框到txtpanel 面板中(2)第二个面板:btnpanel排列方式:setLayout(gl)3、基本按钮btnpanel.add(b5);btnpanel.add(bl); btnpanel.add( multiply) btnpanel.add(b4) btnpanel.add(b6) btnpanel.add(divide)btnpaneLadd(bO) .add(bdes) btnpaneLadd(equal); btnpaneLadd(subtract)以上是在第二个面板btnpanelH中添加的0到9和+,-,*/,=的按钮。

4、附加功能(1)“清零”:用于清空文本框和下一次的运算(2)“异常处理”除数为零:当除数为零时,弹出“除数不能为零”窗体错误输入:当只单击运算符时,弹出“错误输入”窗体三、详细设计和编码1、总体功能图1、类的定义及关系Jsq类继承JFrame类创建主界面,在主界面上由文本框JTextField和JButton 组件构成,JTextField和JButton组件分别放置在两个不同的面板JPanel 上,同时利用按钮注册监听器,获取事件源。

模拟计算器课程设计报告

模拟计算器课程设计报告

合肥学院计算机科学与技术系课程设计报告2009~2010学年第二学期课程JAVA语言课程设计课程设计名称模拟计算器专业班级07网络工程(1)姓名舒业超指导教师许强张贯虹2010年9月一、需求分析程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入‘=’ 符号后,窗口显示出结果。

故需先定义一个类,继承Frame类,来实现一个窗口的显示,还需添加两个文本框,一个用于输入运算表达式,另一个显示运算结果,并以等‘=’号为表达式结束符,并触发运算的开始,所以还需设置一个键盘监听器,监听‘=’号的输入。

该计算器还要两个C(清除)、A(全清除)按钮,并予以监听,触发后进行相应操作。

如果用户输入的表达式不合法,需判别出来并给出相应的错误提示。

二. 设计1.设计思想:该程序有较好的用户操作界面,组件布局采用手动布局,并对相应组件设置监听器,触发后执行相应操作。

该程序主要的算法功能是如何利用栈实现运算符优先级的比较。

先是定义申请两个堆栈,一个作为运算数栈,另一个作为运算符栈,这两个堆栈是扫描表达式时的存储容器,在扫描过程中,扫描的单位是一个字符,扫描到的运算数入数栈,运算符入运算符栈,待比较优先级后,运算数出栈进行运算。

对于表达式的非法性判断,通过捕获异常来处理,捕获到异常后,弹出一个错误提示对话框,提示表达式的非法,并要求用户全清除后重新输入正确并完整的表达式。

2.功能设计定义一个myframe类来继承Frame类,实现窗口的显示,并在其中进行手动布局,即添加一个表达式输入文本框、一个结果显示文本框、C(清除)以及A(全清除)按钮。

在表达式文本框中输入完整表达式之后按下‘=’号后,通过键盘监听器的监听,开始进行运算。

运算过程如下:先在窗口类中将表达式提取出来,此时表达式为串字符串,需通过一个方法将其进行切割,切割成字符数组形式,然后将字符数组传递给一个Calculator类中的Calculator1方法(即运算引擎)进行表达式的计算,在这个方法执行结束时可返回运算的结果,接着将结果显示在结果文本框中即可。

微机原理模拟计算器设计课程设计

微机原理模拟计算器设计课程设计

微机原理模拟计算器设计课程设计(共27页)-本页仅作为预览文档封面,使用时请删除本页-课程名称微机原理及应用院部名称机电工程学院专业电气工程及其自动化班级吴映阳指导教师李国利金陵科技学院教务处制摘要学了微型计算机原理与应用课程之后,为了巩固和检测所学知识,我选择基于8088CPU的模拟计算器设计。

要完成设计首先需要构建简单的微型计算机应用系统,其次是确定组成各部件的芯片,然后画原理图并且用仿真软件仿真。

仿真正确后再连接硬件电路,电路连接完成后进行调试。

设计过程中我们用到了8088CPU、可编程计时器8253、可编程并行输入/输出芯片8255A、74LS138、2*8矩阵式键盘、六位七段LED数码管。

原理图设计完成之后用PROTUES仿真软件对原理图进行了仿真得到了预期的结果。

我们的模拟计算器能实现5位十进制数以内的及减法运算和2位十进制数以内的乘除法运算。

关键词:模拟计算器,8088CPU,PROTUES,8255A目录一、概述 (4)二、硬件电路 (4)、CPU控制模块 (4)、键盘输入模块 (6)、可编程并行通信接口芯片8255A (7)、可编程计数器/定时器 (8)、总原理图 (9)三、软件设计框图 (10)四、源程序 (11)五、调试过程 (26)六、课程设计体会 (26)七、参考文献 (27)模拟计算器设计一、概述设计思路:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现5位十进制数以内的及减法运算和2位十进制数以内的乘除法运算。

运算完成后将运算的结果储存并显示到LED显示器上。

二、硬件电路设计硬件电路键盘输入及LED数码管通过8255A接口与系统总线连接,键盘的16个按键组成8*2矩阵,其中8根矩阵线作为8255A的输出线与PB7~PB0连接,2根矩阵线作为8255A的输入线与PC7、PC6连接。

proteus仿真计算器课程设计

proteus仿真计算器课程设计

proteus仿真计算器课程设计一、课程目标知识目标:1. 学生能理解Proteus仿真软件的基本原理和操作流程;2. 学生能掌握利用Proteus进行简单计算器电路设计与仿真;3. 学生能了解并描述计算器电路中的基本电子元件及其功能;4. 学生掌握基本的数字电路知识,如逻辑门、触发器等。

技能目标:1. 学生能独立使用Proteus软件进行电路设计;2. 学生能通过Proteus软件进行电路仿真,并对结果进行分析;3. 学生能运用已学知识解决实际计算器电路设计中遇到的问题;4. 学生能通过团队协作,共同完成一个具有基本功能的计算器电路设计。

情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识和实践欲望;2. 学生在团队合作中学会沟通、协作,培养团队精神和责任感;3. 学生通过动手实践,体验成功的喜悦,增强自信心;4. 学生树立正确的价值观,认识到科技发展对国家和社会的重要性。

本课程针对高年级学生,结合电子技术课程内容,以Proteus仿真软件为载体,使学生掌握基本电子元件和数字电路知识。

课程注重实践操作和团队协作,旨在提高学生的实际动手能力和创新能力,为后续深入学习电子技术打下坚实基础。

通过本课程的学习,学生将能够独立完成一个简单计算器电路的设计与仿真,并在过程中培养良好的情感态度和价值观。

二、教学内容1. 计算器电路设计基础理论:- 简介计算器电路的组成和原理;- 学习基本电子元件:电阻、电容、二极管、三极管等;- 了解并掌握数字电路基础知识:逻辑门、触发器、计数器等。

2. Proteus仿真软件操作:- 学习Proteus软件的基本界面和功能;- 掌握Proteus软件的电路设计、仿真和调试方法;- 学习如何利用Proteus软件绘制电路图、设置元件参数等。

3. 计算器电路设计与仿真:- 根据计算器功能需求,设计电路原理图;- 利用Proteus软件进行电路仿真,观察并分析仿真结果;- 针对仿真过程中出现的问题,进行调试和优化。

计算器小程序课程设计

计算器小程序课程设计

计算器小程序课程设计一、教学目标本课程旨在让学生掌握计算器小程序的基本概念、原理和操作方法,培养学生运用计算器解决实际问题的能力。

具体目标如下:1.知识目标:(1)了解计算器小程序的分类及其应用领域。

(2)掌握计算器小程序的基本语法和操作步骤。

(3)熟悉常见的数学函数和图形函数,并能应用于实际问题。

2.技能目标:(1)能够独立安装和使用计算器小程序。

(2)能够运用计算器小程序解决数学、科学和工程等领域的问题。

(3)具备编写简单的计算器小程序的能力。

3.情感态度价值观目标:(1)培养学生对计算技术的兴趣,提高信息素养。

(2)培养学生独立思考、合作交流的学习习惯。

(3)培养学生勇于探索、创新的精神风貌。

二、教学内容本课程的教学内容主要包括以下几个部分:1.计算器小程序概述:介绍计算器小程序的概念、分类及其应用领域。

2.计算器小程序基本语法:讲解计算器小程序的基本语法,包括变量、数据类型、运算符等。

3.计算器小程序操作方法:介绍计算器小程序的操作步骤,如输入、输出、循环、条件判断等。

4.数学函数和图形函数:讲解计算器小程序中的数学函数和图形函数,并举例说明其应用。

5.实际问题求解:通过案例分析,让学生学会运用计算器小程序解决实际问题。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师通过讲解计算器小程序的基本概念、原理和操作方法,为学生提供系统的知识结构。

2.讨论法:学生分组讨论实际问题,交流解题思路,培养合作精神。

3.案例分析法:分析典型案例,让学生学会将理论知识应用于实际问题。

4.实验法:学生动手编写计算器小程序,验证理论知识,提高实践能力。

四、教学资源为实现教学目标,我们将采用以下教学资源:1.教材:《计算器小程序教程》。

2.参考书:为学生提供丰富的课外阅读资料,拓展知识面。

3.多媒体资料:制作课件、视频等,辅助课堂教学。

4.实验设备:为学生提供计算器编程环境,进行实践操作。

课程设计—模拟计算器设计..

课程设计—模拟计算器设计..

嵌入式课程设计课题:基于uCOS/uCGUI的模拟计算器实现报告:张昌世自动化091 109031027小组成员:刘锋自动化091 109031023陈奇英自动化091 109031001彭桂贤自动化091 109031002指导老师:陈才摘要:计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,但因其方便快捷的操作模式,已经被广泛应用于工程、学习、商业等日常生活中,极大的方便了人们对于数字的整合运算。

现今的计算器已经不仅仅停留在传统的硬件上,而是越来越软件化,它可以在手机里,在电脑上,在许许多的的电子产品上。

所以有必要在自己平时学习的开发板上做个带界面显示的计算器来证明下自己的能力。

引言:简单的计算器包括0~9的数字输入键,小数点输入键,+、-*、/、=运算键等,还可以加入其他运算:如三角运算(sin,cos,tan,cot等),一些当木运算(平方,开方,阶乘等)。

由于条件和能力有限,所以就做个能实现四则运算的简易计算器。

计算器的程序设计实际上富有一定的难度,虽然乍一想很简单,只要实现下加减乘除运算,然后显示出来就可以了,但实际上运算结果跟图像界面的数据交换,还有浮点数的处理等都很折腾人。

通过本次设计,体会到了学习的不易,还有自己能力上的不足!一、课题描述:在STM32开发板上实现简易的计算器。

计算器界面显示在TFT彩屏上,采用触摸屏上模拟按钮来实现数据及运算符的输入。

最后把运算的结果显示在彩屏。

最基本要求:有加减乘除运算,有带小数点的运算。

二、课题分析a)、硬件要求:处理器选择:STM32F103ZE,这款处理器具有512K的flash,64K的RAM,足够大的空间,可以让程序员的可以有更大的发挥空间,而不用为节省空间而上脑筋。

TFT彩屏:带触摸的TFT彩屏,3.2寸,分辨为240*320的真彩彩屏。

JLink仿真器:使用JLink v8仿真器,仿真器能够下载程序、在线仿真,便于程序编写与错误检查。

模拟计算器数字输入及显示课程设计

模拟计算器数字输入及显示课程设计

摘要本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。

显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。

按键部分:采用4*4键盘。

采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。

执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。

注:结果不能超出65535。

(具体操作见后面仿真图)目录1 概述1.1MCS-51单片机在自动化仪表中的作用 (3)1.2掌握单片机仿真软件Proteus的使用方法 (3)1.3设计方法 (3)1.4基本功能 (4)2 系统总体方案及硬件设计2.1计算器总体思想 (5)2.2硬件的选择与连接 (6)3 软件设计3.1显示程序设计 (7)3.2键盘识别程序设计 (8)3.3运算程序设计 (10)3.4风鸣器程序设计 (10)4 Proteus软件仿真 (12)5课程设计体会 (16)参考文献 (18)附1:源程序代码 (19)附2:计算器模拟系统电路图 (31)1 概述1.1MCS-51单片机在自动化仪表中的作用单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。

微机课设(模拟计算器运算)

微机课设(模拟计算器运算)

一、设计题目及要求:模拟计算器运算(加,减,乘)设计要求:1.通过小键盘做加、减、乘、括号运算。

数码管显示输入数据和计算结果数据。

2.按键规定:(1)数字用小键盘0~9输入。

(2)功能按键设定:“A”——“+”“D”——“-”“B”——“*”“F”——“括号”“E”——“=”“C”——输入过程中撤消当前运算,此时屏幕显示“0”。

3.其它要求:(1)输入计算数据时,数码管应跟随显示。

若超出显示范围则不响应超出部分。

(2)按“+”、“-”、“*”或“括号”对应按键时,数码管当前显示内容不变。

(3)按“=”时,显示器显示最终计算结果。

若结果超出显示范围时,则显示“F”。

(4)按“C”时,屏幕显示“0”。

(5)需要考虑运算的优先级问题。

(6)只考虑正整数运算,不考虑负数和实数运算。

二、设计思想:调用键盘扫描子程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,并将输入的数字通过调用显示子程序显示到LED显示器上。

利用汇编的程序核对输入键的数值,并把输入的表达式存储为中缀表达式,之后转化为后缀表达式,通过调用加,减,乘,括号,子程序实现后缀表达式的加、减、乘运算。

运算完成后将运算的结果储存并显示到LED显示器上。

简要流程中五大步骤的具体描述步骤(一):从小键盘输入合法中缀算术表达式,并将其存储到S1中此处用系统功能1号调用,每次从键盘输入一个字符,就将其存入到数组S1中,然后在判断此字符是否为等号,如果不是,则循环,继续输入字符,否则,程序往下执行。

步骤(二):调用子程序CHANGE将中缀式转化为后缀式此处最核心的就是中缀表达式转化为后缀表达式的算法。

具体思路为:用一个栈来存储与运算符号.先将字符’@’压入栈中,并假设其优先级为0.然后遍历S1中的字符,遇到数字直接存入S2中并且输完数字后向S2中输入一空格以备计算结果时用。

遇到运算符则先判断其与栈顶运算符的优先级谁大。

如果S1中运算符号优先级大,则此运算符号直接入栈;否则栈顶符号先出栈到S2,待栈顶符号优先级小于S1中符号时,S1中元素入栈。

java模拟科学计算器课程设计

java模拟科学计算器课程设计

软件学院课程设计报告书课程名称面向对象程序设计设计题目模拟科学计算器专业班级学号姓名指导教师2012 年6 月目录1设计时间 (3)2设计目的 (3)3设计任务 (3)4设计内容 (3)4.1需求分析 (3)4.1.1 问题描述 (3)4.1.2 基本要求 (3)4.2总体设计 (3)4.2.1 包的描述 (3)4.2.2 类的描述 (4)4.2.3 类之间的关系 (4)4.3详细设计 (5)4.3.1类图 (5)4.3.2 页面设计 (6)4.4测试与分析 (6)4.5程序与代码 (8)5总结与展望 (17)参考文献 (18)课程设计成绩评定 (18)4.3.2页面设计图4.3.2-1科学计算器页面4.4测试与分析(1)加运算(2)减运算图4.4-1加运算1+2结果图4.4-2减运算18-3结果(3)乘运算(4)除运算图4.4-3乘运算2×4结果图4.4-4除运算8÷5结果(5)退格(2)清零图4.4-5Backspace1.6退格结果图4.4-6C1.清零结果(7)正弦运算(8)余弦运算图4.4-7sin90结果图4.4-8cos90结果(9)指数运算(10)阶乘运算图4.4-9 2^3结果图4.4-10 8!结果4.5 程序代码import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.DecimalFormat;。

课程设计计算器模拟

课程设计计算器模拟

《模拟计算器程序》程序设计基础课程设计报告学院:信息科学与技术学院专业:电子信息工程班级:2014电信1班姓名:李辉学号: 2014508206指导教师:郭理1.课程设计题目与要求 ........................... 错误!未定义书签。

1.1设计题目 ....................................... 错误!未定义书签。

1.2设计要求 ....................................... 错误!未定义书签。

2.总体设计 ............................................... 错误!未定义书签。

2.1总体功能框架............................... 错误!未定义书签。

2.2数据结构概要设计....................... 错误!未定义书签。

3.详细设计 ............................................... 错误!未定义书签。

3.1数据结构详细设计....................... 错误!未定义书签。

3.2系统功能详细设计....................... 错误!未定义书签。

3.2.1关于函数原型声明 (4)3.2.2函数功能 (4)3.2.3函数的形参说明 (4)3.2.4算法流程图 (5)4.运行结果 (8)5.课程设计总结 (11)6.程序设计方法 (12)7.参考文献 131.课程设计题目与要求1.1设计目的设计一个程序来模拟一个简单的手持计算器。

程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。

1.2设计要求程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’符号后,窗口显示出结果。

测试数据程序输入不少于5种不同的表达式进行测试2.总体设计2.1总体功能框架根据要求将该计算器分为九个模块,八个计算模块,一个退出模块.2.2数据结构概要设计用printf语句分开实现各自功能,并且将每种功能的实现步骤也插入语句中.每一个小模块各自完成功能,通过主调函数void调用.3.详细设计3.1数据结构详细设计运用函数while,switch,case,3.2算法流程3. 2.1关于函数原型声明void menu();void add();void sub();void mul();void div();void remain();void add_n_to_m();void factor();3.2.2函数功能printf("+ 1.加法 +\n");printf("+ 2.减法 +\n");printf("+ 3.乘法 +\n");printf("+ 4.除法 +\n");printf("+ 5.求余 +\n"); printf("+ 6.退出 +\n"); 3.2.3函数的形参说明3.2.4算法流程图1.主函数主函数比较简洁,只提供输入,处理和输出部分的函数调用。

模拟计算器程序C++

模拟计算器程序C++

课程设计报告课程设计题目:模拟计算器程序学生姓名:专业:班级:指导教师:2011年11 月24 日东华理工大学课程设计评分表学生姓名:陈春英班级:10211303 学号:1021130304 课程设计题目:模拟计算器程序目录1.设计目标……………………………………………………………2.设计内容……………………………………………………………3.设计思想……………………………………………………………4.设计说明……………………………………………………………5.设计步骤……………………………………………………………6.主要成员函数关系图………………………………………………7.程序主要代码………………………………………………………8. 难点分析……………………………………………………………9. 总结…………………………………………………………………模拟计算器1.设计目标了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。

2.设计内容以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。

3. 设计思想基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。

生成简单的应用软件。

4.设计说明(1)包含的功能有:加、减、乘、除运算等功能。

(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。

(3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。

(4)计算功能基本上是用系统内部函数。

(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。

(6)“CE”按钮可以清除所有已输入的数据从头计算5. 设计步骤(1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。

计算器编程课程设计

计算器编程课程设计

计算器编程课程设计一、课程目标知识目标:1. 学生能理解计算器编程的基本概念,掌握编程语言的语法结构。

2. 学生能运用所学知识编写简单的计算器程序,实现加、减、乘、除等基本运算。

3. 学生了解计算器编程中的变量、循环和条件语句等概念,并能运用到实际编程中。

技能目标:1. 学生能运用计算器进行基本编程操作,提高解决问题的能力。

2. 学生能通过编写计算器程序,培养逻辑思维和编程能力。

3. 学生掌握调试和修改程序的方法,提高程序调试和优化能力。

情感态度价值观目标:1. 学生对计算器编程产生兴趣,增强学习信息技术课程的积极性。

2. 学生通过编程解决问题的过程,培养勇于尝试、克服困难的品质。

3. 学生在团队合作中学会沟通与协作,培养团队精神和共享成果的意识。

课程性质:本课程为信息技术课程,旨在培养学生的编程兴趣和技能,提高解决问题的能力。

学生特点:六年级学生对新鲜事物充满好奇,具备一定的逻辑思维能力,但编程经验尚浅。

教学要求:结合学生特点,课程设计应注重实践操作,让学生在动手实践中掌握编程知识,培养编程技能。

同时,注重培养学生的情感态度和价值观,激发学生的学习兴趣,提高团队合作能力。

通过分解课程目标,为后续教学设计和评估提供依据。

二、教学内容本课程教学内容主要包括以下几部分:1. 计算器编程基本概念:介绍编程语言的基本语法、结构,让学生了解编程的基本元素。

教学内容:- 编程语言的组成与结构- 常见编程符号及其作用2. 基本运算编程实现:学习如何编写计算器程序,实现加、减、乘、除等基本运算。

教学内容:- 数据类型与变量- 基本运算符及其用法- 简单的计算器程序编写3. 控制结构:学习条件语句和循环语句,实现程序中的逻辑控制。

教学内容:- 条件语句(if-else)- 循环语句(for、while)- 控制结构在实际编程中的应用4. 程序调试与优化:介绍程序调试方法,学会查找和修复程序错误,提高程序质量。

教学内容:- 常见程序错误类型- 调试方法与技巧- 程序优化策略5. 综合应用:结合所学知识,设计并编写一个具备基本功能的计算器程序。

数据结构课程设计 模拟计算器程序

数据结构课程设计 模拟计算器程序

数据结构课程设计题目名称:模拟计算器程序计算机科学与技术学院课程设计任务书一、设计任务设计一个模拟计算器的程序二、设计要求1、要求对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解2、程序基本功能要求实现完整,并有简单的验证。

3、设计报告要求格式规范,符合学校课程设计报告要求。

4、报告中流程图要求描述规范,算法设计清楚正确。

三、设计期限2018年3月5日到2018年3月30日前言利用本学期所学的《数据结构》课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,要求对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解,并且在程序运行过程中能够正常的退出程序。

这个程序实际上就是对一个表达式进行计算。

而一个算术表达式中包含各种运算符,每个运算符的等级可能会不同,这就成了本程序需要解决的一个主要的问题之一了。

另外计算器中需要有各种数学函数,比如:abs sqrt sin cos tan等,如何对这些函数进行处理,也是本程序能成功的一个关键。

还有一个问题就是如何处理操作符和操作数之间的关系也是一个要点。

例如:1+2*(3-2/1),经过怎么样的变换和处理能得出结果5。

数据的输入这里应该要用字符,然后通过字符和整形之间的关系进行转换即可,这样处理的话,就方便很多了。

在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。

在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。

本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。

该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。

JAVA课程设计-模拟科学计算器

JAVA课程设计-模拟科学计算器

JAVA课程设计-模拟科学计算器课程:模拟科学计算器学号:姓名: 班级: 教师: 时间:10.12.10,11.01.12计算机科学与技术系课程设计指导书姓名学号班级课程名称课程性质 JAVA 专业必修课设计时间 2010年12 月10日——2011年01月12日设计名称模拟科学计算器巩固所学理论知识,提高程序设计能力的重要实践设计目的环节。

综合应用Java基础知识和基本方法。

界面模拟Windows中的计算器程序。

实现基本数学运算、函数等功能,加、减、乘、除、阶乘、正弦、余弦和指数运算。

设计要求实现要点,添加相关组件并进行按钮事件处理。

要求提交Application和Applet两个版本的程序。

设计Application和Applet两个版本的程序,对Application运用继承JFrame设计,类的设计构造方法利用等。

而Applet则继承Applet,在浏览器上运行。

Application过程,1.菜单栏设计.2.文本域,即为计算器的屏幕显示区域3.初始化操作4.统一设置按钮的的使用方式5.计算器的基础操作,+ - × ?, 设计思路6.运算符号的事件监听与7.清除按钮的事件监听设计过程8.数字输入的事件监听9.小数点的事件监听10.main方法Applet过程,1.init()方法,完成初始化操作,2.事件统一监听,3.科学计算,4.建立Calucator.html;5.浏览器运行,12.10-12.13 复习Java程序开发的相关操作,了解“计算器相关知识”,12.14-12.17 熟悉题目并理解,及找寻相关资料,12.18-12.20 根据题目要求进行需求分析设计,计划与进度12.21-12.25 对Application进行总体程序设计,12.26-12.30 对Applet进行相关各功能的程序设计,12.31-01.05 对程序进行细节完善,01.06-01.10 进行调试运行并完成资料归档。

模拟计算器程序

模拟计算器程序

合肥学院计算机科学与技术系课程设计任务书20 ~20 学年第学期课程程序设计语言Ⅱ课程设计课程设计名称模拟计算器程序专业班级指导教师20 年月一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。

(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。

二、课程设计名称及内容课程设计名称:模拟计算器程序设计内容:设计一个程序来模拟一个简单的手持计算器。

程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。

三、任务和要求程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’ 符号后,窗口显示出结果。

选作内容如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。

测试数据程序输入不少于5种不同的表达式进行测试。

四、设计方案提示可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。

最新java课程设计-模拟科学计算器(DOC)

最新java课程设计-模拟科学计算器(DOC)

j a v a课程设计-模拟科学计算器(D O C)JAVA课程设计说明书题目:模拟科学计算器姓名:学号:班级:网络工程11-2山东科技大学2013年11月7日精品好资料-如有侵权请联系网站删除目录1 课设任务及要求 (4)1.1课设任务 (4)1.2设计要求 (4)2 需求分析 (2)2.1 设计背景 (2)2.2 需求获取 (3)2.3 程序功能图 (4)3 设计思路 (4)3.1 界面布局 (4)3.2 类的定义 (5)3.3变量的定义 (5)4 详细设计 (6)4.1整体概述 (6)4.2 误操作处理 (7)4.3流程图和结构图 (8)5 系统调试 (11)5.1 程序界面 (11)5.2 运行界面 (11)6 心得与体会 (15)7 参考文献 (16)8 附录 (16)精品好资料-如有侵权请联系网站删除1 课设任务及要求1.1课设任务:要求:界面模拟Windows中的计算器程序。

实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。

实现要点:添加相关组件并进行按钮事件处理。

要求提交Application和Applet两个版本的程序。

1.2设计要求①设计的java计算器应用程序可以完成加法、减法、乘法、除法和取余运算,和cos,sin,tan等三角函数功能以及阶乘和指数等运算,且有小数点、正负号、求倒数、退格和清零功能。

具体可参考windows附件下的计算器②课程设计使用Eclipse4.2等作为程序编译和运行测试的开发平台,采用JDK-7u25作为java开发环境,使用Microsoft Office Visio 2007作为绘图工具。

精品好资料-如有侵权请联系网站删除③认真按时完成课程设计报告,制作演讲PPT,积极报名上讲台向大家演示和讲解自己的程序。

提交打印版的报告以及电子版的原稿和Application和Applet两个版本的程序代码。

2 需求分析2.1 设计背景本程序是老师提供的几个课程设计题目中比较中等的题目。

模拟计算器程序-数据结构与算法课程设计报告

模拟计算器程序-数据结构与算法课程设计报告

合肥学院计算机科学与技术系课程设计报告2009~2010学年第二学期课程数据结构与算法课程设计名称模拟计算器程序学生姓名桂俊飞学号0804012021专业班级08计本(2)班指导教师王昆仑张贯虹2010年6月一:问题分析和任务定义本程序写的是模拟计算器。

要求设计一个模拟计算器的程序,要求对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。

这里可以做一个扩展,比如实现求某数的N次方,求模,一些常用的三角函数等。

这个程序实际上就是对一个表达式进行计算。

而一个算术表达式中包含各种运算符,每个运算符的等级可能会不同,这就成了本程序需要解决的一个主要的问题之一了。

另外计算器中需要有各种数学函数,比如:abs sqrt sin cos tan等,如何对这些函数进行处理,也是本程序能成功的一个关键。

还有一个问题就是如何处理操作符和操作数之间的关系也是一个要点。

例如:1+2*(3-2/1),经过怎么样的变换和处理能得出结果5。

数据的输入这里应该要用字符,然后通过字符和整形之间的关系进行转换即可,这样处理的话,就方便很多了。

二:概要设计和数据结构选择输入的时候将一个算术表达式用一个字符数组来接收,故需要对这个数组进行处理,让操作数和操作符分开,这里我想把开始的算术表达式转换成一个后缀表达式,这样在进行计算的时候就简单多了。

而在转换的过程中,对运算符的处理极为重要,这里运用堆栈,用堆栈的先进后出的特点,来处理运算符优先级的问题,让其成功转换成后缀表达式。

而在对后缀表达式进行处理的时候,又需要一个堆栈,这个堆栈存放操作数的。

并将运算结果存入该栈中。

两个堆栈的数据结构如下:struct{ char data[Maxlen];int top;}optr; //定义运算符栈struct{ double data[Maxlen];int top;}opnd; //定义操作数栈这里定义了类型,并且一起定义了两者类型的对象optr,opnd。

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

模拟计算器学生姓名:**** 指导老师:****摘要本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计算,并且表达式中可以包含Abs()和Sqrt()运算。

在课程设计中,系统开发平台为Windows ,程序设计设计语言采用C++,程序运行平台为Windows 或*nix。

本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入的中缀表达式转化为后缀表达式的方法,具有可靠的运行效率。

本程序做到了对输入的表达式(表达式可以包含浮点数并且Abs()和Sqrt()中可以嵌套子表达式)进行判定表达式是否合法并且求出表达式的值的功能。

经过一系列的调试运行,程序实现了设计目标,可以正确的处理用户输入的表达式,对海量级数据都能够通过计算机运算快速解决。

关键词C++程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达式;字符串处理;表达式合法判定;目录1 引言 (3)1.1课程设计目的 (3)1.2课程设计内容 (3)2 设计思路与方案 (4)3 详细实现 (5)3.1 表达式的合法判定 (5)3.2 中缀表达式转化为后缀表达式 (5)3.3 处理后缀表达式 (7)3.4 表达式嵌套处理 (8)4 运行环境与结果 (9)4.1 运行环境 (9)4.2 运行结果 (9)5 结束语 (12)参考文献 (13)附录1:模拟计算器源程序清单 (14)1 引言本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。

该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。

利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。

最后利用后缀表达式来求解表达式的值。

该算法的复杂度为O(n),能够高效、快速地求解表达式的值,提高用户的效率。

1.1课程设计目的数据结构主要是研究计算机存储,组织数据,非数值计算程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。

数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

学习数据结构是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。

通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

模拟计算器程序主要利用了“栈”这种数据结构来把中缀表达式转化为后缀表达式,并且运用了递归的思想来解决Abs()和Sqrt()中嵌套表达式的问题,其中还有一些统计的思想来判定表达式是否合法的算法。

1.2课程设计内容本次课程设计为计算器模拟程序,主要解决表达式计算的问题,实现分别按表达式处理的过程分解为几个子过程,详细的求解过程如下:1 用户输入表达式。

2 判定表达式是否合法。

3 把中缀表达式转化为后缀表达式。

4 求出后缀表达式的结果。

5 输出表达式的结果。

通过设计该程序,从而做到方便的求出一个表达式的值,而不需要一步一步进行运算。

2 设计思路与方案本课程设计需要考虑许多的问题,首先是表达式的合法判断,然后是字符串表达式提取分离的问题,核心部分就是中缀表达式转化为后缀表达式。

对于第一个问题,我是分步来判断,首先表达式中是否含有其它非法字符,然后判断括号是否合法,接着判断运算法两边是否合法,比如除法时,除数不能为零。

对于第二个问题,我是直接转换的,从左到右遍历中缀表达式,把数据全部取出来。

对于核心问题,利用了“栈”这种“后进先出”的数据结构,利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。

最后利用后缀表达式来求解表达式的值。

上面是数据处理的算法部分。

本程序用户界面总共分为3个模块,分别是操作提示,数据输入,数据输出。

如图2.1所示。

图2.1 用户界面除了实现基本的功能外,我还增加了其它一些功能,比如支持输入数据为浮点数,更重要的是本程序还支持表达式的嵌套运算,例如:A(1+2*S(2))我的实现方法是利用函数的递归调用来解决此问题,即把1+2*S(2)看成一个子表达式,这个子表达式中2也看成子表达式。

这样使得程序的适用范围更加的广泛,适应性更强,能支持更复杂的表达式的运算。

这也是本程序的优点之一。

3 详细实现3.1 表达式的合法判定表达式的合法判定过程如图3.1所示图3.1表达式的合法判定过程首先是其它字符的判定,从左到右遍历中缀表达式,看是否存在其它非法的。

然后是判定括号是否的匹配是否和合法,首先把“(”对应为1,相应的“)”对应为-1。

从左到右遍历表达式,如果遇到括号就加上其对应的值,用sum来保存其累加值。

如果在中途出现sum小于零的情况,即出现“..... )”那么的情况,即非法。

在遍历的最后,还要判断sum的值是否为零,如果为零就是合法,否则就是非法。

代码如下:for(i=0;i<s.length();i++){ //检验括号是否合法,以及是否存在非法字符if(!IsNum(s[i]) && !IsSign(s[i]) && s[i]!='('&& s[i]!=')' && s[i]!='A' && s[i]!='S' && s[i]!='.')return false; if(s[i]=='(')sum+=1;else if(s[i]==')')sum-=1;if(sum<0)return false; //括号匹配不合法}运算符判断是否合法,也是遍历一遍表达式,遇到“/”,看其后面的除数是否为零。

这里要考虑表达式中出现负数的情况,因此特殊考虑“-”号,判断它的前面是“(”还是没有字符了,那么就是负数。

3.2 中缀表达式转化为后缀表达式中缀表达式转化为后缀表达式,利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。

最后利用后缀表达式来求解表达式的值。

设一个stack存后缀数据,一个rout栈存运算符。

算法流程如下:(1)从右向左依次取得数据ch。

(2)如果ch是操作数,直接加进stack中。

(3)如果ch是运算符(含左右括号),则:a:如果ch = '(',放入堆栈rout中。

b:如果ch = ')',依次输出堆栈rout中的运算符,直到遇到'('为止。

c:如果ch不是')'或者'(',那么就和堆栈rout顶点位置的运算符top 做优先级比较。

1:如果ch优先级比rtop高,那么将ch放入堆栈rout。

2:如果ch优先级低于或者等于rtop,那么输出top到stack 中(直到!top或者满足 1),然后将ch放入堆栈rout。

可以看出算法复杂度是O(n)的,因此效率是比较高的,能够在1s内处理百万级别长度的表达式。

算法的主要思想是利用“栈”的后进先出的特性,以及运算符的优先级,这里我们定义运算符的优先级;代码如下:int GetKey(char c){ //定义运算符的关键字int key;switch(c){case '+':key=1;break;case '-':key=1;break;case '*':key=2;break;case '/':key=2;break;case '(':key=4;break;case ')':key=5;break;}return key;}中缀转化为后缀处理的核心代码如下:/* 双栈,sta1存放后缀表达式,sta2存放运算符符号*/stack<pair<double,int> > sta1,sta2;for(i=0;i<k;i++){if(!num[i].second)sta1.push(num[i]); //为数据,直接放入sta1else if(num[i].second==4)sta2.push(num[i]); //为'(',直接放入sta2 /* 为')',从sta2中取出运算符,push到sta1中,直到遇到')' */else if(num[i].second==5){while(sta2.top().second!=4){sta1.push(sta2.top());sta2.pop();}sta2.pop(); //取出'('括号}/*为'+','-','*'或者'/'运算符,取出sta2中的运算符,push到sta1中,直到比sta2栈顶中的优先级大*/else {while(!sta2.empty() && sta2.top().second>=num[i].second && sta2.top().second!=4){sta1.push(sta2.top());sta2.pop();}sta2.push(num[i]); //放入当前运算符}}最后,后缀表达式就存放在sta1栈中,把sta1栈中的结果存放到SufExp 中就得到了后缀表达式。

3.3 处理后缀表达式这里也是运用“栈”来处理,运用栈模板在求值过程顺序扫描后缀表达式,每次遇到操作数便将它压入堆栈;遇到运算符,则从栈中弹出两个操作数进行计算,然后再把结果压入堆栈,等到扫描结束时,则表达式的结果就求出来了。

算图 3.3 处理后缀表达式流程核心代码如下:double Expression::GetAns(){int i;double temp,num1,num2; //num1和num2为运算符两遍的操作数stack<double> sta; //数据栈for(i=0;i<Size;i++){if(!SufExp[i].second){ //为数据sta.push(SufExp[i].first);}else { //为运算符num1=sta.top(); //取出第一个操作数sta.pop();num2=sta.top(); //取出第二个操作数sta.pop();temp=Cal((char)SufExp[i].first,num2,num1);sta.push(temp); //放入操作数结果}}Ans=sta.top();return Ans; //返回最终结果}3.4 表达式嵌套处理如果遇到A()和S()中含有表达式,而不是单纯的数字,例如A(1.1+3.4*S(2.5)),那么就需要对其字表达式“1.1+3.4*S(2.5)”进行递归处理,这个子表达式中还含有子表达式“2.5”,然后再递归处理,依次类推下去。

相关文档
最新文档