




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌大学摘 要该程序是一个图形界面的java计算器,其界面主要采用了swing包,利用eclipse工具并采用网格包布局开发 程序实现了:(1)实现简单加、减、乘、除的运算。(2)实现除了加、减、乘、除按钮外其他按钮功能。(3)在数据输入方面,可以输入负数(4)可以取余数,开根号等运算(5)实现了小数的算术运算关键字:java程序 网格包布局 面向对象 计算器目录一、问题描述31.1课设任务31.2设计要求3二、分析与设计42.1功能描述42.2算法思路42.3程序流程图52.4程序预期结果62.5模块实现7三、源代码选摘113.1 源代码11四、总结164.1设计体会164.2设计中遇到的重点及难点16五、参考文献17一、问题描述1.1课设任务:设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。1.2设计要求 设计的计算器应用程序可以完成加法、减法、乘法、除法、取余运算及开根号。且有小数点、正负号、退格和清零功能。 课程设计可用Eclipse作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握 保持代码简洁,复杂代码写后不易理解,在修改和重写上难度比较大,使工作更加复杂,所以编写代码时应保持代码的简洁易懂。 认真按时完成课程设计报告,课程设计报告内容包括:问题描述、分析与设计、源代码选摘、总结、参考文献五个部分。二、分析与设计2.1 功能描述:这是一个简单的计算器,里面所涉及到的功能就是加、减、乘、除、开根号运算、等基本功能。对于单运算操作要进一步判断是否符合要求,如果是就进入下步计算,如果不是就弹出相应的提示: “负数不能开根号; ;在进行开根号()运算时,如果输入数为负数,则弹出负数不能开根号,中止运算。对于加减乘除等双运算操作,用lastCommand来判断最后一个输入的操作符是什么,是“+”就执行加法,是“=”就计算结果。运用事件监听来监听按钮事件。定义一个布尔值start来实现负号,初始置为true,command=event.getActionCommand();来取得事件的值 ,当第一个操作符为“-”时显示出来“-”, start置为false,这是不能输入操作符了,只能输入数字,输入数字后,显示出来,start置为true,这是又可以输入操作符了。这样就实现负号。2.2 算法思路:、本应用程序继承自框架类(JFrame),容器Container c采用GridLayout网格布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel panel加入到”Center”区域。包含各种按钮的面板JPanel panel采用5行4列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中同时注册按钮事件监听器。如:private void addButton(String label,ActionListener listener)JButton btn=new JButton(label);btn.addActionListener(listener); (事件监听器);panel.add(btn);、事件监听器中的事件处理方法void actionPerformed(ActionEvent event)完成主要的按钮事件的处理。事件处理分以下几种情况:操作数按钮事件(”0”,”1”,”2”8”,”9”)、操作符按钮事件(”+”,”“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”)、退格按钮事件(”)、清除按钮事件(“C”) 、以及求平方根(”) (3)、计算器完成的是一个数学表达式,如:32,所以先输入一个数字存储,输入操作符,利用循环再次输入数字如:private void calcultor(double x) / TODO 自动生成的方法存根if(lastCommand.equals(+) result+=x;else if(lastCommand.equals(-) result -=x;else if(lastCommand.equals(*) result *=x;else if(lastCommand.equals(/) result /=x;else if(lastCommand.equals(%) result %=x;else if(lastCommand.equals(=) result =x;btn1.setText(+result);、利用按钮设计计算器的各个操作数和操作符,通过按钮的事件处理实现按钮计算功能。、利用文本框显示操作数和运算结果。2.3程序流程图2.4程序预期结果: 程序界面 计算2+3,结果应为5. 负号开根号 结果输出负数不能开根号2.5模块实现2.5.1 显示窗口btn1=new JButton( );btn1.setEnabled(false); /该显现区域不能输入,只能显示add(btn1,BorderLayout.NORTH);2.5.2 窗口布局panel=new JPanel(); panel.setLayout(new GridLayout(5,4); addButton(C,insert); addButton(,insert); addButton(,insert); addButton(%,command); addButton(7,insert); addButton(8,insert); addButton(9,insert); addButton(/,command); addButton(4,insert); addButton(5,insert); addButton(6,insert); addButton(*,command); addButton(1,insert); addButton(2,insert); addButton(3,insert); addButton(-,command); addButton(0,insert); addButton(.,insert); addButton(=,command); addButton(+,command); add(panel,BorderLayout.CENTER);2.5.3 加减乘除 取余运算private void calcultor(double x) / TODO 自动生成的方法存根if(lastCommand.equals(+) result+=x;else if(lastCommand.equals(-) result -=x;else if(lastCommand.equals(*) result *=x;else if(lastCommand.equals(/) result /=x;else if(lastCommand.equals(%) result %=x;else if(lastCommand.equals(=) result =x;btn1.setText(+result);2.5.4退格“”实现if(input.equals() / 事件执行backspace()backspace();public void backspace() /退格String s=btn1.getText();btn1.setText(s.substring(0,s.length()-1);2.5.5清除功能实现else if(input.equals(C) / C 事件执行clear()clear(); void clear() /清除 btn1.setText(); result=0;2.5.6开根号功能实现else if(input.equals() / 事件执行sqrt()sqrt();void sqrt() /开根号double m=Double.parseDouble(btn1.getText(); if (m0) btn1.setText(负数不能开根号); else btn1.setText(+Math.sqrt(m); 2.5.7 负号实现private class CommandAction implements ActionListener Override public void actionPerformed(ActionEvent event) / TODO 自动生成的方法存根String command=event.getActionCommand();if(start)if(command.equals(-) /负号设定btn1.setText(command);start=false;else lastCommand=command;elsecalcultor(Double.parseDouble(btn1.getText();lastCommand=command;start=true;2.5.8 数字09实现private class InsertAction implements ActionListenerOverridepublic void actionPerformed(ActionEvent event)/ TODO 自动生成的方法存根String input=event.getActionCommand();if(start)btn1.setText();start=false;if(input.equals() / 事件执行backspace()backspace();else if(input.equals(C) / C 事件执行clear()clear(); else if(input.equals() / 事件执行sqrt()sqrt();elsebtn1.setText(btn1.getText()+input);三 、源代码摘选3.1 源代码package calculator;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Event;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class CalculatorPanel extends JPanel/设计计算机的界面private JButton btn1;private JPanel panel;private double result;private String lastCommand;private boolean start;public CalculatorPanel()setLayout(new BorderLayout();result=0;lastCommand=;start=true;/设置布尔值为true/添加面板panelbtn1=new JButton( );btn1.setEnabled(false);add(btn1,BorderLayout.NORTH);ActionListener insert=new InsertAction();ActionListener command=new CommandAction();/添加按钮进5*4网格布局panel=new JPanel();panel.setLayout(new GridLayout(5,4);/采用网格布局/添加第一排按钮 addButton(C,insert); addButton(,insert); addButton(,insert);addButton(%,command); /添加第二排按钮 addButton(7,insert); addButton(8,insert); addButton(9,insert);addButton(/,command); /添加第三排按钮 addButton(4,insert); addButton(5,insert); addButton(6,insert);addButton(*,command);/添加第四排按钮 addButton(1,insert); addButton(2,insert); addButton(3,insert);addButton(-,command); /添加第五排按钮 addButton(0,insert); addButton(.,insert); addButton(=,command); addButton(+,command); add(panel,BorderLayout.CENTER); private void addButton(String label,ActionListener listener) /把按钮添加进面板JButton btn=new JButton(label);btn.addActionListener(listener);panel.add(btn);/鼠标事件监听private class InsertAction implements ActionListenerOverridepublic void actionPerformed(ActionEvent event)/ TODO 自动生成的方法存根String input=event.getActionCommand();if(start)btn1.setText();start=false;if(input.equals() / 事件执行backspace()backspace();else if(input.equals(C) / C 事件执行clear()clear(); else if(input.equals() / 事件执行sqrt()sqrt();elsebtn1.setText(btn1.getText()+input);/获得数字/+ - * / %操作符事件监听private class CommandAction implements ActionListenerOverridepublic void actionPerformed(ActionEvent event) / TODO 自动生成的方法存根String command=event.getActionCommand();if(start)if(command.equals(-) /负号设定btn1.setText(command);start=false;else lastCommand=command;elsecalcultor(Double.parseDouble(btn1.getText();lastCommand=command;start=true;/计算private void calcultor(double x) / TODO 自动生成的方法存根if(lastCommand.equals(+) result+=x; /执行加法else if(lastCommand.equals(-) result -=x; /执行减法else if(lastCommand.equals(*) result *=x; /执行乘法else if(lastCommand.equals(/) result /=x; /执行除法else if(lastCommand.equals(%) result %=x; /执行取余else if(lastCommand.equals(=) result =x;btn1.setText(+result);public void backspace() /退格String s=btn1.getText();btn1.setText(s.substring(0,s.length()-1);void clear() /清除 btn1.setText(); result=0;void sqrt() /开根号double m=Double.parseDouble(btn1.getText(); if (m0) btn1.setText(负数不能开根号); else btn1.setText(+Math.sqrt(m); public static void main(String args)JFrame f=new JFrame();f.setTitle(计算器); /计算器居中 Toolkit toolkit=Toolkit.getDefaultToolkit(); Dimension Screen=toolkit.getScreenSize(); int x=(Screen.width-f.getWidth()/2-150; int y=(Screen.height-f.getHeight()/2-150; f.setLocation(x,y);f.setSize(300,200);/设置大小f.add(new CalculatorPanel();f.setVisible(true);/不允许用户修改大小f.setResizable(false);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /设置关闭属性 四、总结4.1 设计体会 这次做的课程设计Java计算器。运行java计算器以后出现的那个框架图就是我们所说的java图形用户界面(GUI),它是程序与用户进行交流的图像窗口,为应用程序提供一个图形化的界面,程序通过GUI与用户交互,GUI通过事件机制响应用户和程序的交互。如当用户单击某个按钮时就会产生动作事件,要处理产生的事件,需要在特定的方法中编写处理事件的程序。这样,当产生某种事件时就会调用处理这种事件的方法,从而实现用户与程序的交互。另外GUI能使一个应用程序具有与众不同的“外观”与“感觉”。有了GUI,用户就不用花很多时间去记忆各个键盘序列的功能,从而把更多的时间投入到有效地使用应用程序本身上。这次课程设计,除了全面系统的理解了JAVA面向对象编程原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国高空作业平台租赁服务行业市场现状供需分析及投资评估规划分析研究报告
- 马耳他语中的传统民间通信词汇论文
- 2025-2030中国高尔贡坚果行业市场发展趋势与前景展望战略研究报告
- 住宿业市场细分策略-第1篇-全面剖析
- 2025-2030中国驱蚊衣行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国青花瓷行业市场发展分析及前景趋势与投资研究报告
- 2025-2030中国隔音密封条行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国除雪犁行业市场发展趋势与前景展望战略研究报告
- 医疗信息平台互连技术-全面剖析
- 数字健康革命-全面剖析
- 软件系统测试报告模板
- 小学数学小专题讲座《数学教学生活化-》
- 2024至2030年中国精量播种机行业投资前景及策略咨询研究报告
- 四年级英语教学计划及质量提升方案
- 2023年辽宁省盘锦市中考数学真题(原卷版)
- eos5ds-5dsr-im6-zh-佳能相机说明书
- 瓶瓶罐罐做花瓶课件
- 小学语文教学经验交流
- 抑郁症的科普宣讲
- 幼儿园大班语言故事《三个和尚》课件
- JBT 11270-2024 立体仓库组合式钢结构货架技术规范(正式版)
评论
0/150
提交评论