免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 学 年 论 文论文题目: java计算器图形界面设计 院 系: 信息科学与技术 专 业: 计算机 姓 名: 学 号: 指导教师: 撰写学年: 2009 至2010 学年 二零一零年六月目录中文摘要第一章 标准计算器概述1.1设计目的1.2功能模块设计1.3系统功能图第二章 标准计算器设计与实现2.1Java技术概述2.2Java主要特点 2.3 图形界面设计方法2.4标准计算器界面2.5JAVA计算器的具体实现代码程序设计过程中的问题参考文献中文摘要本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开根号、百分号、求倒数,还可以实现数值的符号转换操作。 ,Backspace表示退格, CE表示将当前文本框内数据清除,C表示文本框内数据清除。此外还提供了“编辑”、“查看”、“帮助”三个菜单项,使用者可通过使用菜单项实现复制、粘贴功能。界面类似windows自带计算器界面。 关键词: java语言;计算器;标准 第一章 标准计算器概述1.1设计目的图形界面设计,熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。从而检测对这门课的掌握情况,有助于及时查漏补缺。1.2功能模块设计n 标准计算器以下为标准计算器的基本功能:(1)加法 两个数据进行加操作,可以为小数。(2)减法 两个数据进行减操作,可以为负数相减。(3)乘法 两个数相乘操作。(4)除法 两个数相除操作。(5)开平方对任意一个数进行开方运算,可以是小数。(6)百分号对任意一个数进行百分号运算。(7)倒数对任意一个数进行倒数运算。标准计算器加法运算减法运算乘法运算除法运算开平方运算百分号运算倒数运算1.3系统功能图第二章 标准计算器设计与实现2.1 标准计算器界面 2.2 界面设计代码计算器的界面由一个菜单栏 一个文本框及27个按钮组成,具体实现代码如下所示:MenuBar myB=new MenuBar();setMenuBar(myB);Menu m1=new Menu(编辑(E);MenuItem m11= new MenuItem(复制(C) Ctrl+C);m11.addActionListener(this);m1.add(m11);MenuItem m12=new MenuItem(粘贴(P) Ctrl+V);m12.addActionListener(this);m1.add(m12);myB.add(m1);Menu m2=new Menu(查看(V);m2.add(new MenuItem(标准型(T);m2.add(new MenuItem(科学型(S);m2.addSeparator();m2.add(new MenuItem(数字分组(I);m2.addActionListener(this);myB.add(m2);Menu m3=new Menu(帮助(H);MenuItem m31=new MenuItem(帮助主题(H);m31.addActionListener(this);m3.add(m31);m3.addSeparator();MenuItem m32=new MenuItem(关于计算器(A);m32.addActionListener(this);m3.add(m32);myB.add(m3); /JPanel pa1=new JPanel();pa1.setBackground(new Color(236,231,210);text=new JTextField(0.,31);pa1.add(North,text); /面板添加和按钮的设置 JPanel pa=new JPanel();JPanel pa2=new JPanel();JButton bt1=new JButton(Backspace);JButton bt2=new JButton(CE);JButton bt3=new JButton(C);bt1.addActionListener(this);bt2.addActionListener(this);bt3.addActionListener(this);pa2.add(bt1);pa2.add(bt2);pa2.add(bt3);pa.setLayout(new BorderLayout(); pa.add(pa2,North);JPanel p1=new JPanel();p1.setLayout(new GridLayout(4,1,2,5);JButton bt4=new JButton(MC);JButton bt5=new JButton(MR);JButton bt6=new JButton(MS);JButton bt7=new JButton(M+);p1.add(bt4);p1.add(bt5); p1.add(bt6); p1.add(bt7); pa.add(p1,West);JPanel p = new JPanel(); p.setLayout(new GridLayout(4, 5,2,5); String buttons = 7,8,9,/,sqrt,4,5,6,*,%,1,2,3,-,1/x,0,.,=,+,+/-; JButton btn=new JButtonbuttons.length; for (int i = 0; i buttons.length; i+) addButton(p, buttonsi); pa.add(p, Center); pa1.add(South,pa);this.getContentPane().add(pa1); private void addButton(Container c, String s) JButton b = new JButton(s); c.add(b); b.addActionListener(this);第三章 标准计算器的实现与演示3.1Java技术概述Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.7。 Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。 * Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。* Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。* Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能3.2Java主要特点1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。3.3标准计算器演示(1)启动计算器(2)加法、乘法运算分别输入9和3然后分别计算其加法、乘法运算9 + 3 = 9 * 3 = (3)开平方运算 sqrt (4)百分号运算 % (5)倒数运算 1/x JAVA程序设计计算器的具体实现代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class jisuanqi extends JFrame implements ActionListener,ItemListenerJTextField text;JTextField textMemory;boolean clickable;double memoryd; /使用内存中存储的数字int memoryi;String copy;public jisuanqi()super(计算器);setSize(357,253);public void init()clickable = true;/添加菜单栏MenuBar myB=new MenuBar();setMenuBar(myB);Menu m1=new Menu(编辑(E);MenuItem m11= new MenuItem(复制(C) Ctrl+C);m11.addActionListener(this);m1.add(m11);MenuItem m12=new MenuItem(粘贴(P) Ctrl+V);m12.addActionListener(this);m1.add(m12);myB.add(m1);Menu m2=new Menu(查看(V);m2.add(new MenuItem(标准型(T);m2.add(new MenuItem(科学型(S);m2.addSeparator();m2.add(new MenuItem(数字分组(I);m2.addActionListener(this);myB.add(m2);Menu m3=new Menu(帮助(H);MenuItem m31=new MenuItem(帮助主题(H);m31.addActionListener(this);m3.add(m31);m3.addSeparator();MenuItem m32=new MenuItem(关于计算器(A);m32.addActionListener(this);m3.add(m32);myB.add(m3); /JPanel pa1=new JPanel();pa1.setBackground(new Color(236,231,210);text=new JTextField(0.,31);pa1.add(North,text); /面板添加和按钮的设置 JPanel pa=new JPanel();JPanel pa2=new JPanel();JButton bt1=new JButton(Backspace);JButton bt2=new JButton(CE);JButton bt3=new JButton(C);bt1.addActionListener(this);bt2.addActionListener(this);bt3.addActionListener(this);pa2.add(bt1);pa2.add(bt2);pa2.add(bt3);pa.setLayout(new BorderLayout(); pa.add(pa2,North);JPanel p1=new JPanel();p1.setLayout(new GridLayout(4,1,2,5);JButton bt4=new JButton(MC);JButton bt5=new JButton(MR);JButton bt6=new JButton(MS);JButton bt7=new JButton(M+);p1.add(bt4);p1.add(bt5); p1.add(bt6); p1.add(bt7); pa.add(p1,West);JPanel p = new JPanel(); p.setLayout(new GridLayout(4, 5,2,5); String buttons = 7,8,9,/,sqrt,4,5,6,*,%,1,2,3,-,1/x,0,.,=,+,+/-; JButton btn=new JButtonbuttons.length; for (int i = 0; i buttons.length; i+) addButton(p, buttonsi); pa.add(p, Center); pa1.add(South,pa);this.getContentPane().add(pa1); private void addButton(Container c, String s) JButton b = new JButton(s); c.add(b); b.addActionListener(this); /功能的实现public void actionPerformed(ActionEvent evt) String s = evt.getActionCommand(); if(s.equals(CE)|s.equals(C) text.setText(); / else if(s.equals(+/-)/单击+/-选择输入的运算数是正数还是负数 double x;x=Double.parseDouble(text.getText().trim(); text.setText(+(-x); else if (s = sqrt) String s1 = text.getText(); if (s1.charAt(0) = -& clickable = true) text.setText(负数不能开根号); clickable = false; else text.setText(Double.toString(java.lang.Math.sqrt(Double. parseDouble(text.getText(); else if(s.equals(%)/单击了%按钮 double x;x=Double.parseDouble(text.getText().trim(); text.setText(+(0.01*x); /str.setLength(0); /y=0d; else if(s.equals(1/x)/单击了1/X按钮 double x;x=Double.parseDouble(text.getText().trim(); if(x=0) text.setText(除数不能为零); else text.setText(+(1/x); /按下+/-按钮时处理 if (s= +/- & clickable = true) boolean isNumber = true; String s1 = text.getText(); for (int i = 0; i = 0 & s1.charAt(i) = 9 | s1.charAt(i) = . | s1.charAt(i) = -) isNumber = false; break; if (isNumber = true) /如果当前字符串首字母有-号,代表现在是个负数,再按下时,则将首符号去掉 if (s.charAt(0) = -) text.setText(); for (int i = 1; i s1.length(); i+) char a = s1.charAt(i); text.setText(text.getText() + a); /如果当前字符串第一个字符不是符号,则添加一个符号在首字母处 else text.setText(- + s); /计算器有关内存操作 /MC的操作,将内存清0 else if (s = MC & clickable = true) memoryd = memoryi = 0; textMemory.setText(); /MS的操作,将当前文本框内容保存入内存,显示M else if (s = MS & clickable = true) boolean isDot = false; textMemory.setText( M); for (int i = 0; i text.getText().length(); i+) if (. = text.getText().charAt(i) isDot = true; break; /如果是double,则存入memoryd(double存储器) if (isDot = true) memoryd = Double.parseDouble(text.getText(); memoryi = 0; /保证存储器中存放最新的值 /如果是int,则存入memoryi(int存储器) else memoryi = Integer.parseInt(text.getText(); memoryd = 0; /保证存储器中存放最新的值 /MR的操作,将存储器中的信息输出 else if (s = MR & clickable = true) if (memoryd != 0) text.setText(Double.toString(memoryd); if (memoryi != 0) text.setText(Integer.toString(memoryi); /M+的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器 else if (s = M+ & clickable = true) boolean isDot = false; for (int i = 0; i text.getText().length(); i+) if (. = text.getText().charAt(i) isDot = true; break; if (memoryi != 0) /存储中是一个int型数 if (isDot = false) /被加数是一个int型数 memoryi += Integer.parseInt(text.getText(); else /被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零 memoryd = memoryi + Double.parseDouble(text.getText(); memoryi = 0; else memoryd += Double.parseDouble(text.getText(); /按下复制菜单栏 else if (s.equals(复制(C) Ctrl+C) copy = text.getText(); /按下粘贴菜单栏 else if (s .equals(粘贴(P) Ctrl+V) ) text.setText(copy); /按下Backspace键,利用循环将当前字符串中的最后一个字母删除 else if (s.equals(Backspace) & clickable = true) String s1 = text.getText(); text.setText(); for (int i = 0; i s1.length() - 1; i+) char a = s1.charAt(i); text.setText(text.getText() + a); /* /按下帮助主题菜单栏 if (s = 帮助主题(H) JOptionPane.showMessageDialog(panel, scrollHelp); */ / else if (0 = s.charAt(0) & s.charAt(0) = 9 | s.equals(.) /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏南京工业大学教学科研岗招聘101人备考题库含答案详解(培优)
- 2026吉林省长影集团有限责任公司招聘9人备考题库附参考答案详解(轻巧夺冠)
- 2026川投(达州)燃气发电有限公司招聘3人备考题库附答案详解(精练)
- 2026河北邢台学院高层次人才引进55人备考题库及完整答案详解一套
- 2026河北石家庄井陉矿区人民医院招聘16人备考题库含答案详解(精练)
- 2026中葡经贸中心招聘6人备考题库附参考答案详解(巩固)
- 2026河北石家庄城市建设发展集团招聘10人备考题库附参考答案详解(巩固)
- 2026广东梅州市人民医院招聘博士研究生备考题库附参考答案详解(b卷)
- 2026新疆喀什昆仑建设有限公司招聘3人备考题库及参考答案详解(综合题)
- 四川省内江市农业科学院关于2026年公开考核招聘事业单位工作人员的备考题库附参考答案详解(培优)
- 建筑安全监督站培训课件
- 《语文教学技能训练》课件全套 第1-8章 课堂教学语言技能训练- 教学反思技能训练
- 测绘公司安全培训课件
- 海南省海口市2024-2025学年七年级下学期期末考试生物试卷(含答案)
- 消防救援机器人技术应用与发展
- 食品安全卫生管理条例
- 孕期产检的课件
- 光储充车棚技术方案设计方案
- 恶性肿瘤伤口护理
- DB32/T 3564-2019节段预制拼装混凝土桥梁设计与施工规范
- 2025年春江苏开放大学维修电工实训第3次形考作业答案
评论
0/150
提交评论