当前位置:文档之家› FORTRAN模拟计算器程序

FORTRAN模拟计算器程序

FORTRAN模拟计算器程序
FORTRAN模拟计算器程序

FORTRAN实验报告

给水排水1001班

武俊槟

1004030134

模拟计算器程序

一、实验目的:

设计一个程序来模拟一个简单的手持计算器,程序支持算数运算+,-,*,/,=以及C(清除),A(全清除)等操作。

二、实验要求:

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

三、实验步骤:

1

2、程序代码见附录。

3、测试数据:经检验程序无错

四、实验心得:

经过这次编程,我熟练掌握了VF课程所教授的知识,理论联系实际,这次作业提高了我的编程水平,发现了自己平时所忽略的知识点,同时也增强了团队合作意识。

在基本确定编程思路画出大致流程草图后,我们对编程做出了安排,大家分工合作。在编程过程中,我们都或多或少的遇到一些困难,有时可以通过自己的查阅相关资料得到解决,而有时却不得甚解,此时,团队的力量便展现了出来,大家共同探讨遇到的问题。通过大家的共同努力,一起解决在编程中所遇到的问题如:如何实现清屏,输出格式的美观化等。尤其是实现清除命令的过程中,我们最后通过文件操作解决了这个问题。

最后再将大家做的程序进行整合,对程序进行debug,查找程序中的错误,大家共同探讨出现的错误,不断地将程序进行改进,最后实现编程要求并美观化。

编程不仅仅但是编程,它最大乐趣是在编程的过程中不断对自己VF知识的总结和完善,同时也考验一个团队的合作意识。通过这次编程,我觉得我的收获是巨大的,编程锻炼了我在遇到问题时的解决能力及思维方式,加强了我的团队合作意识,使我感觉到了团队的力量,并提高了个人分析能力综合素质。

!武俊槟

!西安科技大学建工学院给排1001

!学号:1004030134

!模拟计算器程序

!调用C/C++库函数清屏命令

interface to function system[c](string)

integer*2 system

character string[reference]

end

!fortran主程序

implicit none

integer::i,j,l=0,num(120),nn=0

integer*2 system

real::a,b,c

character::str(120)

character(len=125)::string,substring1,substring2

print*

print*,' 请输入运算式(len<=125):'

print*," 输入格式:'1+1='"

print*,' 小提示:输入exit可退出程序。按C清除,按A全清除。'

print*

do

j=1

!生成数据库database.txt

open(unit=1,file='database.txt')

read*,string

if(string/='A'.or.string/='C') nn=nn+1

if(string=='exit') then

close(unit=1)

exit

!清除

elseif(string=='C') then

string=system("cls")

print*

print*,' 请输入运算式(len<=125):'

print*," 输入格式:'1+1='"

print*,' 小提示:输入exit可退出程序。按C清除,按A全清除。'

print*

rewind 1

do i=1,nn

read(1,*) string

write(*,*) string

enddo

!清屏

elseif(string=='A') then

string=system("cls")

rewind 1

close(unit=1)

print*

print*,' 请输入运算式(len<=125):'

print*," 输入格式:'1+1='"

print*,' 小提示:输入exit可退出程序。按C清除,按A全清除。'

print*

else

l=len_trim(string)

if(string(l:l)/='=') then

print*,"请输入完整、合理的表达式,输入“=”,按回车。(输入格式:'1+1=')"

else

do i=1,l

if(string(i:i)=='+'.or.string(i:i)=='-'.or.string(i:i)=='*'.or.string(i:i)=='/'.or.string(i:i) =='=') then

num(j)=i

str(j)=string(i:i)

j=j+1

endif

enddo

j=j-1

substring1=string(1:num(1)-1)

read(substring1,*) a

do i=1,j

substring2=string(num(i)+1:num(i+1)-1)

read(substring2,*) b

call f(a,b,c,str(i))

a=c

enddo

write(*,*) string,c

write(1,*) string,c

endif

string='________________________________________________________ __________________'

print*,string

write(1,*) string

endif

enddo

!内部子例行程序

contains

subroutine f(a,b,c,str)

real::a,b,c

character str

if(str=='+') c=a+b

if(str=='-') c=a-b

if(str=='*') c=a*b

if(str=='/') c=a/b

if(str=='=') c=a

endsubroutine

end

模拟简单计算器实训

苏州市职业大学 课程设计说明书 名称___模拟简单计算器_______________ 2011 年12月26 日至2011年12月31 日共1 周 院系__ 计算机工程系 班级10嵌入式 姓名 系主任____李金祥 教研室主任刘文芝 指导教师徐丽华、刘文芝

目录 一.课程设计的目的与要求 (2) 1.课程设计的目的 (2) 2.课程设计的要求 (2) 二.题目说明 (2) 2.1开发背景 (3) 2.2 开发工具介绍 (4) 2.3 小组成员分工 (4) 三.硬件方案 (5) 3.1硬件设计 (5) 3.2电路原理图 (7) 四.软件设计 (8) 4.1 模块划分 (8) 4.2 模块结构图 (9) 4.3 液晶显示模块 (9) 4. 4 定时器模块 (6) 五.运行结果分析与系统改进 (10) 六.遇到的问题和解决方法 (11) 七.课程设计总结 (11) 八.参考文献 (11)

一.课程设计的目的与要求 1.课程设计的目的 《单片机原理与应用》是一门专业技术基础课,是一门实践性很强的课,单片机课程设计要求将所学的理论知识通过实践加强理解和认识,提高学生们对单片机的认识,同时提高同学们的设计能力和实践动手能力。 同时《单片机原理与应用》也是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。同时也为了提高学生的学习能力,锻炼同学之间的合作能力。 2.课程设计的要求 在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。 认真编写课程设计报告。 课程设计可以由2~4名同学合作完成一个课题。全体成员应共同完成选题,确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。 整个设计期间,组长负责协调工作。各小组成员明确自己的任务后,应独立完成设计、编码和调试。 课题设计完成后,小组成员要理解同组其他成员设计的源程序,熟练操作本组设计,各自完成课程设计说明书。 1、对系统进行功能需求分析; 2、设计合理的模块结构和系统框架; 3、编程简练,程序功能齐全,能正确运行; 4、说明书、流程图要清楚; 5、课题完成后必须按要求提交课程设计报告;

编写一个计算器程序课程设计报告-范例

学号 《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX 系 2017年月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 评分细则 评分项优秀良好中等差 上课出勤 上课表现 上机情况 平时作业完成情况 期末大作业: (1)书写认真程度 题目:用Python编写简易计算器程序 学号: 专业: 班级: 姓名: 指导教师: 2016-2017学年第二学期

(2)内容详实程度(3)文字表达能力(4)是否体现观点 简短教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

一、设计内容 ------------------------------------------------------------------------------------------------- - 1 - 1. 课程设计目的:-------------------------------------------------------------------------------------- - 1 - 2.课程设计任务: --------------------------------------------------------------------------------- - 1 - 3.创新要求:---------------------------------------------------------------------------------------------- - 2 - 4.设计要求: ------------------------------------------------------------------------------------------------ - 2 - 二、原理和分析 ---------------------------------------------------------------------------------------------- - 2 - 1.开发的技术及功能 ----------------------------------------------------------------------------------- - 2 - 2.设计思路------------------------------------------------------------------------------------------------ - 2 - 3.设计效果图--------------------------------------------------------------------------------------------- - 2 - 三、设计过程 ------------------------------------------------------------------------------------------------- - 3 - 1. 程序思路: -------------------------------------------------------------------------------------------- - 3 - 2.功能实现:---------------------------------------------------------------------------------------------- - 4 - 1)加减乘除求余以及指数运算----------------------------------------------------------------- - 4 - 2)其他运算 ------------------------------------------------------------------------------------------ - 4 - 3)主要方法说明------------------------------------------------------------------------------------ - 5 - 4)程序流程图 --------------------------------------------------------------------------------------- - 5 - 3.算法思路:---------------------------------------------------------------------------------------------- - 6 - 4.数据分析:---------------------------------------------------------------------------------------------- - 7 - 四、设计结果和分析------------------------------------------------------------------------------------------ - 7 - ⒈运行调试------------------------------------------------------------------------------------------------ - 7 - 1)进行加减乘除求余以及指数运算----------------------------------------------------------- - 7 - 2)求倒 ------------------------------------------------------------------------------------------------ - 9 - 3)退格 ------------------------------------------------------------------------------------------------ - 9 - 4)清零 ---------------------------------------------------------------------------------------------- - 10 - 5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算 ------------- - 11 - 6)连续运算(例:2*3*4=24.0)------------------------------------------------------------- - 11 - 7)异常处理(例:求倒时输入数为0) --------------------------------------------------- - 11 - 五、设计体会和小结 -------------------------------------------------------------------------------------- - 12 - 六、参考文献 ----------------------------------------------------------------------------------------------- - 13 - 七、源程序--------------------------------------------------------------------------------------------------- - 13 - 一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务:

最新计算机模拟试卷操作题答案

模拟卷1 三、简答题: 1、外存存储器有哪些?内存分哪两种?P13、15 答:外存存储器包括软盘、硬盘、光盘、U盘等。内存分只读存储器ROM和随机存取存储器RAM。 2、计算机网络的分类(按网络覆盖的范围)?P230 答:局域网、城域网、广域网和互联网。 3、常见的视频文件格式有哪些(至少四种)?P343-344 答:视频格式有:.avi格式、.mpg格式、.rm格式和.mov格式。 4、Windows操作题目(写出关键步骤) (1)在桌面上建立AA文件夹,在AA文件夹建立一个名为“JSB”的快捷方式,该快捷方式所指向的对象为“记事本”程序。(记事本程序的文件为 “C:\WINDOWS\system32\notepad.exe”) 步骤:在桌面空白处右击—选择新建文件夹,重命名为“AA”,打开“AA”文件夹,右击选择创建快捷方式,在“浏览”中找到 “C:\WINDOWS\system32\notepad.exe”,点下一步,名称输入“JSB”,完成即可。 (2)将CC文件夹中的“Excel”和“Word ”两个文件夹复制到AA文件夹中,并将“Excel”改名为“TEST”,并将其设置为隐藏属性。 步骤:打开“cc”文件夹,按住“ctrl”键选中“excel”和“word”两个文件夹,右击选择“复制”,打开“AA”文件夹,右击粘贴。在“excel”文件上右击,重命名为“TEST”,右击选择属性,在常规选项卡中,将属性改为“隐藏”。 5、WORD操作题目(6分) (1)修改Word文档中的文字字符的字体、颜色、大小,可以使用哪两种不同的方法实现?P90 答:通过“格式”工具栏和通过菜单“格式”—“字体”命令。 (2)修改文档中的首行缩进2个字符,有哪两种方法实现?P91 答:方法一:选中待修改的文档,把窗口上方的标尺左上的那个小三角往右方移动两个字符的距离,即可。 方法二:选中待修改的文档,右击——段落,在对话框内,特殊格式选择首行缩进,度量值输入2字符,即可。 (3)Word中的哪些对象可以图文混排的? 答:图片、图形,艺术字、文本框等(不确定) 6、EXCEL题目(6分) (1)列举几种Excel中的函数?p156 答:有数学(数值计算)函数、统计函数、逻辑函数、日期与时间函数、财务函数、文本函数等。 (2)列举几种对工作表的操作有哪些?p151 答:选择工作表插入工作表删除工作表移动和复制工作表重命名工作表

java编写的简单的计算器程序

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化 参考代码: import .*;

import .*; import .*; import import import public class Calculator implements ActionListener { #############"); dd(panel); panel1 = new JPanel(); panel2 = new JPanel(); (new BorderLayout()); 键入计算的第一个数字。\n"); ("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); ("3. 键入计算的下一个数字。\n"); ("4. 输入所有剩余的运算符和数字。\n"); ("5. 单击“=”。\n"); aboutCal = new JMenuItem(" 关于计算器(A)"); (this);

java编写的简单的计算器程序

j a v a编写的简单的计 算器程序 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化

参考代码: import .*; import .*; import .*; import import import public class Calculator implements ActionListener { #############"); dd(panel); panel1 = new JPanel(); panel2 = new JPanel(); (new BorderLayout()); 键入计算的第一个数字。\n"); ("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); ("3. 键入计算的下一个数字。\n"); ("4. 输入所有剩余的运算符和数字。\n"); ("5. 单击“=”。\n"); aboutCal = new JMenuItem(" 关于计算器(A)"); (this);

用C++编写计算器程序

1.2计算器的介绍 (1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示: 图1.1 计算器界面 (2)在计算器程序中,主要通过一个编辑框来获取表达式和显示计算结果,表达式可以通过键盘和单击按钮2种方式输入,输入后的结果如下图所示:

图1.2 输入表达式后的界面 (3)在输入完表达式后,单击“=”后,开始对表达式进行计算,计算完成后,在编辑框中显示计算的结果。 图1.3 计算后的结果

(4)计算器可以实现十进制转化为十六进制或二进制,其实现的操作为先输入一个十进制整数,再单击按钮“转化为二进制”或“转化为十六进制。 图1.4 输入一个十进制数100 图1.5 100转化为二进制后的结果

图1.6 100转化为十六进制后的结果 (4)另外,计算器还可以实现一些简单的函数运算,实现的操作和十六进制/二进制转化类似,是先输入一个数字,在单击想要进行的函数的按钮,单击后就会在编辑框中显示运算的结果。 1算法的实现 2.1把字符串转化为数字和运算符的算法 (1)如果字符串中只有数字。这个情况用来实现一些简单函数的运算。在进行简单函数的运算时,都是先输入一个数字,再单击要进行运算的按钮,然后编辑框显示运算的结果。程序用了一个函数double GetaStr(CString str)来实现这个功能,该函数以编辑框变量m_strResult为实参,再得到m_strResult的值后,调用GetAt函数,一个字符一个字符的读取,如果碰到整数,执行“itemp=itemp*rate+(str.GetAt(i)-'0');”,其中变量itemp初始值为0,

简单计算器程序设计

简单计算器程序设计 2010-01-20 16:44 1、编写一个程序实现十进制加减乘除运算 2、在命令提示后输入算式,运算符号不超过四个 3、回车后进行计算并以十进制显示结果 ;能做带括号的运算,输入错误能报警 data segment msg1 db 'Please Input an Expression:',0AH,0DH,'$' msg2 db 'the result is:$' db '(' num db 200 dup (0) temp1 db 200 dup(0),13 temp dw 0 data ends stack segment db 200 dup (?) stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax lea dx,msg1 mov ah,9 int 21h call input again2: lea si,num again1: inc si cmp byte ptr[si],13 je outt cmp byte ptr[si],')' jne again1 call chasc1 call count push ax jmp again2 outt:pop bx mov ah,2

mov dl,10 int 21h mov dl,13 int 21h lea dx,msg2 mov ah,9 int 21h call chaou mov ah,8 int 21h mov ah,4ch int 21h ;************************************** input proc ;输入子程序能纠错 push ax push bx push cx push dx push si push di xor si,si xor bh,bh mov bl,0ffh xor cx,cx top: mov ah,8 int 21h cmp al,8 jne next1 cmp si,0 jne ne1 mov bl,0ffh jmp next6 ne1: mov ah,2 mov dl,8 int 21h mov dl,0 int 21h mov dl,8 int 21h dec si

简单计算器可视化程序编程

简单计算器

一、基本功能描述二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 以角度、弧度两种方式实现上述部分函数 具备历史计算的记忆功能 对不正确的表达式能指出其错误原因 二、流程图

图1 输入数据子函数流程图 图2 三、 设计步骤 打开Microsoft Visual C++ ,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculter 及其所在位置,点击确定,如图3所示。 N 输入数据子函数

图3 新建MFC AppWizard[exe]工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。 图4 基本对话框 这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图5所示。 图5 新建的对话框 四、界面设计 1、创建控件 在图5所示的Resoure View选项卡中打开Dialog资源组,双击IDD_CALCULATOR_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。 1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。 图6 Edit属性对话框 2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择

计算器程序

制作简单计算器 要求和目的 ●要求: 设计一个的计算器,具有简单的运算功能,能进行两个操作数的“+”、“-”、“*”、“/” 运算。计算器的运行效果如图 ●目的: 掌握Label控件的使用方法; 掌握ComboBox控件的使用方法; 掌握Button控件的使用方法; 掌握TextBox控件的使用方法。 ●设计步骤 新建一个Visual C# Windows应用程序,依次在界面上拖入五个“Label控件”,分别用于“计算器”、“操作数1”、“操作数2”、“运算符”和“结果”,并设置合适的字体及位置。 拖入三个“TextBox控件”,分别用于“接收操作数”和“显示结果”,其中,显示结果的“TextBox控件”的“ReadOnly属性”设置为“True”,即该文本框为只读。最后拖入一个“Button控件”,用于“计算”功能。计算器界面设计好之后,如图所示。

相关背景知识: ComboBox 控件 ComboBox 控件又称组合框,在工具箱中的图标为。默认情况下,组合框分两个部分显示:顶部是一个允许输入文本的文本框,下面的列表框则显示列表项。可以认为ComboBox就是文本框与列表框的组合,与文本框和列表框的功能基本一致。dropdownstyle属性 ●Simple 始终显示列表 ●Dropdown 文本部分可编辑 ●Dropdownlist 文本部分不可编辑 Items 属性 若要在combobox控件中添加或删除项,可以在设计器中使用Items属性向列表添加项。 SelectedIndex 属性 编辑框所选列表条目的索引号,列表条目索引号从0开始,如果编辑框未从列表中选择条目,该值为-1 SelectedItem 属性 所选择条目的内容,即下拉列表中选中的字符串,如一个也没选,该值为空。获取或设置选定项。它返回项本身,通常是一个字符串值。 编写代码 1.要求和目的 要求: 编写一段代码,用于实现计算器的功能。在“操作数”填写上两个数字,并选择“运算符”,单击“计算”按钮之后,可以在“结果文本框”中显示计算结果。 目的: 掌握数据类型转换的方法; 掌握条件判断语句的编写方法; 掌握文本框控件属性的设置方法。 ●2.设计步骤 (1)双击“计算(Button)”按钮,进入该按钮的单击事件,编写代码。

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

简单的计算器模拟程序的设计和实现1.问题描述 对任意给定的正确四则运算表达式,程序计算其结果值并输出。程序无需查错功能,假定所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为 +、-、*、/,表达式以字符 "=" 结束。程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 2.设计说明 2.1简要的分析 根据要求,要先输入包含有+,-,*,/的运算符的表达式,然后经过计算得到正确的答案。从键盘中输入的是ASCII码,因此要将其转换为十进制的数据然后才能进行计算。如果输入混合表达式,要将中缀式先变化成后缀式,然后再进行计算。 2.2概要分析 2.2.1 定义的数据段 用于定义一些中间变量,并将显示在试验界面上,以及提示信息。data segment stri 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 ends

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

模拟计算器 学生姓名:**** 指导老师:**** 摘要本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计算,并且表达式中可以包含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 输出表达式的结果。通过设计该程序,从而做到方便的求出一个表达式的值,而不需要一步一步进行运算。

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

数据结构课程设计 题目名称:模拟计算器程序 计算机科学与技术学院 课程设计任务书 一、设计任务 设计一个模拟计算器的程序 二、设计要求 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。数据的输入这里应该要用字符,然后通过字符和整形之间的关系进行转换即可,这样处理的话,就方便很多了。 在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。 本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。 目录 第1章需求分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 5 1.1系统设计流程图‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 5 1.2 主要功能表‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 6

用JAVA编写计算器程序(模拟Windows计算器)

用JAVA编写计算器程序(模拟Windows计算器) import java.awt.*; import java.awt.event.*; public class Calculation extends WindowAdapter implements ActionListener { double dResult=0; double dNowInput=0; double dMemory; int n=0; //记载小数位数 int nOperation=1; // 记录运算符类型 int nBitsNum=0; //记录总共输入的位数 boolean alreadyHaveDot=false; //已经有小数点? boolean keyAvailable=true; boolean alreadyClickedEqueal=false; //是否按下过"="? boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值? Frame f; Panel p1,p2,p3,p4,p5,p6; TextField tf1,tf2; Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0; Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM; public void display() { f=new Frame("计算器"); f.setSize(280,213);

编写一个计算器程序课程设计报告 范例

《金融IT 入门-程序设计》 课程设计报告 中国地质大学长城学院 XX 系 2017年 月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 五.设计 体会: 题目: 用Python 编写简易计算器程序 学 号: 专业: 班级: 姓名: 指导教师: 2016-2017学年 第二学期

一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务: 1)设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); 2)有求倒数、退格和清零功能。 3.创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。图形界面采用继承windowadapter类,采取调用类方法来注册监听! 4.设计要求: 1)设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

2)课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 3)认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。 二、原理与分析 1.开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。 2.设计思路 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 3.设计效果图 设计时先在设计界面中添加按钮等控件,后在按钮的actionPerformed事件中添加代码完成其功能其中调用了Java类中的Math函数库以及各种字符串操作。设计的界面如下: 图一计算器运行界面 三、设计过程 1.程序思路: 1)本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout 边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p 加入到”Center”区域。包含各种按钮的面板JPanel p 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。如: Button b=new Button(); (事件监听器); 2)事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完

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

JAVA课程设计说明书 题目:模拟科学计算器 姓名: 学号: 班级:网络工程11-2 山东科技大学 2013年11月7日

目录 1 课设任务及要求 (3) 1.1课设任务 (3) 1.2设计要求 (3) 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 设计背景 本程序是老师提供的几个课程设计题目中比较中等的题目。要求实现模拟的科学计算器功能,主要包括加减乘除四则运算和阶乘,三角函数以及指数的运算。具体的功能我参考了Windows7下的计算机小程序,并根据其界面设计了java小程序界面,根据其功能对自己设计的计算器小程序进行了功能的适当增加与修改。在实现了课程设计题目要求的基础上,自己又增添了对数函数,幂函数,三角函数,取余等我们常用到的功能比较简单的函数。由于本函数涉及的函数以及按键数目较多,故没有采用面向对象的设计方法,没有对每个功能封装成函数调用,而是针对每个按键的动作事件直接采用了算法的编写。最终实现了全部的功能,但是由于时间有限,许多功能没有坐到很到位的优化,或许还存在着许多了漏洞,欢迎老师和同学的批评指正,我一定会

编写计算器程序

计算器的介绍 (1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示: 图1.1 计算器界面 (2)在计算器程序中,主要通过一个编辑框来获取表达式和显示计算结果,表达式可以通过键盘和单击按钮2种方式输入,输入后的结果如下图所示:

图1.2 输入表达式后的界面 (3)在输入完表达式后,单击“=”后,开始对表达式进行计算,计算完成后,在编辑框中显示计算的结果。 图1.3 计算后的结果

(4)计算器可以实现十进制转化为十六进制或二进制,其实现的操作为先输入一个十进制整数,再单击按钮“转化为二进制”或“转化为十六进制。 图1.4 输入一个十进制数100 图1.5 100转化为二进制后的结果

图1.6 100转化为十六进制后的结果 (4)另外,计算器还可以实现一些简单的函数运算,实现的操作和十六进制/二进制转化类似,是先输入一个数字,在单击想要进行的函数的按钮,单击后就会在编辑框中显示运算的结果。 1算法的实现 2.1把字符串转化为数字和运算符的算法 (1)如果字符串中只有数字。这个情况用来实现一些简单函数的运算。在进行简单函数的运算时,都是先输入一个数字,再单击要进行运算的按钮,然后编辑框显示运算的结果。程序用了一个函数double GetaStr(CString str)来实现这个功能,该函数以编辑框变量m_strResult为实参,再得到m_strResult的值后,调用GetAt函数,一个字符一个字符的读取,如果碰到整数,执行“itemp=itemp*rate+(str.GetAt(i)-'0');”,其中变量itemp初始值为0,变量rate初始值为10,如果碰到了小数点,改变rate的值,使其等于0.1,再向后继续读取,再碰到整数时执行“itemp=itemp+rate*(str.GetAt(i)-'0');rate=rate/10;”,函数的最后确定返回值为itemp。以下是这个函数的代码[2]: double CMyDlg::GetaStr(CString str) { int i=0; double rate=10.0,itemp=0.0; for(;i

相关主题
文本预览
相关文档 最新文档