Java实验报告计算器.docx

上传人:scccc 文档编号:12145138 上传时间:2021-12-02 格式:DOCX 页数:11 大小:49.17KB
返回 下载 相关 举报
Java实验报告计算器.docx_第1页
第1页 / 共11页
Java实验报告计算器.docx_第2页
第2页 / 共11页
Java实验报告计算器.docx_第3页
第3页 / 共11页
Java实验报告计算器.docx_第4页
第4页 / 共11页
Java实验报告计算器.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Java实验报告计算器.docx》由会员分享,可在线阅读,更多相关《Java实验报告计算器.docx(11页珍藏版)》请在三一文库上搜索。

1、院系:计算机科学学院专业:年级:课程名称:姓名(学号):指导教师:2016年 月 日年级班号组号专业实验名称实验室实 验 目 的 和 要 求一.实验目的:1. 熟悉Java集成开发环境 Eclipse (或NetBeans等);2. 掌握Java系统图形用户界面的基本工作原理;3. 掌握Java系统图形用户界面的设计步骤;4. 掌握图形用户界面的事件响应机制;5. 掌握图形用户界面的各种常用的基本组件的使用方法及事件响应;6. 掌握图形用户界面各种布局策略的设计与使用;7. 掌握绘制各种基本图形的方法;8. 掌握鼠标事件编程方法;二实验要求:(填写具体的题目要求。)import java.aw

2、t.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing .J Button;import javax.swing.JFrame;import javax.swing .J Panel;import javax.swing.JTextField;但还不支持键盘操作* 一个计算器,与 Windows附件自带计算器的标准版功能、界面相仿*/public

3、 class Calculator extends JFrame implements ActionListener /*计算器上的键的显示名字*/private final String KEYS = "7", "8", "9", "/", "sqrt", "4", "5", "6","*" "%" "1" "2" "3" "

4、" "1/x" "0" "+/" "" "+" "_" ;/*计算器上的功能键的显示名字*/private final String COMMAND _ "Backspace", "CE", "C" ;/*计算器左边的M的显示名字*/private final String M _ " ", "MC", "MR", "MS",

5、"M+" ;/*计算器上键的按钮*/private JButton keys _ new JButtonKEYS.Iength;概 要 设 计( 整 体 流 程 )/*计算器上的功能键的按钮*/private JButton commands _ new JButtonCOMMAND.Iength;/*计算器左边的M的按钮*/private JButton m _ new JButton M.l ength;/*计算结果文本框*/private JTextField resultText _ new JTextField("O");/标志用户按的是否是整

6、个表达式的第一个数字,或者是运算符后的第一个数字private boolean firstDigit _ true;/计算的中间结果。private double resultNum _ 0.0;/当前运算的运算符private String operator _ "_"/操作是否合法private boolean operateValidFlag _ true;/*构造函数*/public Calculator。super();/初始化计算器init();/设置计算器的背景颜色this.setBackground(Color 丄IGHT_GRAY);this.setTit

7、le(” 计算器");/在屏幕(500, 300)坐标处显示计算器this.setLocation(500, 300);/不许修改计算器的大小this.setResizable(false);/使计算器中各组件大小合适this.pack();/*初始化计算器*/private void init() /文本框中的内容采用右对齐方式resultText.setHorizontalAlignment(JTextField.RIGHT);/不允许修改结果文本框resultText.setEditable(false);详细设计算法实现/设置文本框背景颜色为白色resultText.setB

8、ackground(Color.WHITE);/初始化计算器上键的按钮,将键放在一个画板内JPanel calckeysPanel = new JPanel();/用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3);for (int i = 0; i < KEYS.length; i+) keysi = new JButton(KEYSi);calckeysPanel.add(keysi); keysi.setForeground(Color.blue

9、);/运算符键用红色标示,其他键用蓝色表示keys3.setForeground(Color.red);keys8.setForeground(Color.red);keys13.setForeground(Color.red);keys18.setForeground(Color.red);keys19.setForeground(Color.red);/初始化功能键,都用红色标示。将功能键放在一个画板内JPanel commandsPanel = new JPanel();/用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素commandsPanel.

10、setLayout(new GridLayout(1,3, 3, 3);for (int i = 0; i < COMMAND.Iength; i+) commandsi = new JButton(COMMANDi);commandsPanel.add(commandsi); commandsi.setForeground(Color.red);/初始化M键,用红色标示,将 M键放在一个画板内JPanel calmsPanel = new JPanel();/用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素calmsPanel.setLayo

11、ut(new GridLayout(5, 1,3, 3);for (int i = 0; i < M.length; i+) mi = new JButton(Mi);calmsPanel.add(mi); mi.setForeground(Color.red);/下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部,/将文本框放在北部,将calms画板放在计算器的西部。/新建一个大的画板,将上面建立的command和calckeys画板放在该画板内JPanel panel1 = new JPanel();/画板采用边界布局管理器,画板里组件之间的水平和垂直方

12、向上间隔都为3象素panel1.setLayout(new BorderLayout(3, 3);panel1.add("North", commandsPanel);panel1.add("Center", calckeysPanel);实 验 结 果 及 分 析/建立一个画板放文本框JPanel top = new JPanel();top.setLayout(new BorderLayout();top.add("Center", resultText);/整体布局getContentPane().setLayout(new B

13、orderLayout(3, 5);getContentPane().add("North", top);getContentPane().add("Center", panel1);getContentPane().add("West", calmsPanel);/为各按钮添加事件侦听器for (int i = 0; i < COMMAND.length; i+) commandsi.addActionListener(this);implements ActionListener/都使用同一个事件侦听器,即本对象。本类的声明

14、中有 for (int i = 0; i < KEYS.Iength; i+) keysi.addActionListener(this);for (int i = 0; i < COMMAND.Iength; i+) commandsi.addActionListener(this);for (int i = 0; i < M.length; i+) mi.addActionListener(this);/*处理事件*/public void actionPerformed(ActionEvent e) /获取事件源的标签String label = e.getAction

15、Command();if (label.equals(COMMAND0) / 用户按了 "Backspace"键 handleBackspace(); else if (label.equals(C0MMAND1) /用户按了 "CE"键resultText.setText("O"); else if (label.equals(C0MMAND2) /用户按了 "C"键handleC(); else if ("0123456789.".indexOf(label) >= 0) /用户按了数

16、字键或者小数点键handleNumber(label);/ handlezero(zero); else /用户按了运算符键handleOperator(label);处理Backspace键被按下的事件*/private void handleBackspace() String text = resultText.getText();int i = text .l ength();if (i > 0) /退格,将文本最后一个字符去掉text = text.substring(O, i - 1);if (text.length() = 0) /如果文本没有了内容,则初始化计算器的各种值

17、resultText.setText("O");firstDigit = true;operator ="=" else /显示新的文本resultText.setText(text);/*处理数字键被按下的事件* param key*/private void handleNumber(String key) if (firstDigit) /输入的第一个数字resultText.setText(key); else if (key.equals(".") && (resultText.getText().index

18、Of(".") < 0) /输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 resultText.setText(resultText.getText() + "."); else if (!key.equals(".") /如果输入的不是小数点,则将数字附在结果文本框的后面 resultText.setText(resultText.getText() + key);/以后输入的肯定不是第一个数字了firstDigit = false;/*处理C键被按下的事件*/private void handleC()

19、 /初始化计算器的各种值resultText.setText("0");firstDigit = true;operator ="="/*处理运算符键被按下的事件* param key*/private void handleOperator(String key) if (operator.equals("/") /除法运算/如果当前结果文本框中的值等于0if (getNumberFromText() = 0.0) /操作不合法operateValidFlag = false; resultText.setText(”除数不能为零&

20、quot;); else resultNum /= getNumberFromText(); else if (operator.equals("1/x") /倒数运算if (resultNum = 0.0) /操作不合法operateValidFlag = false; resultText.setText(”零没有倒数"); else resultNum = 1 / resultNum; else if (operator.equals("+") /加法运算resultNum += getNumberFromText(); else if

21、(operator.equals("-") /减法运算resultNum -= getNumberFromText(); else if (operator.equals("*") /乘法运算resultNum *= getNumberFromText(); else if (operator.equals("sqrt") /平方根运算resultNum = Math.sqrt(resultNum); else if (operator.equals("%") /百分号运算,除以100resultNum = res

22、ultNum / 100; else if (operator.equals("+/-") /正数负数运算resultNum = resultNum * (-1); else if (operator.equals("=") !(3SO_IO_NO_llX38Luejzir)uo!;ej9dO9SO|9;|nepai8S|,JO;e|no|eo!(9nj;)9|q!S!Al9S' |,jo;e|no|eo !()jo;e|no|eo msu = |,jo;e|no|eo jo;e|no|eo (s6jb 6u!4S)U!Biu pioa oi;e

23、;s oi|qnd!;|nssj ujn;sj(a uoiidsoxieiujodJsqiunN) i|oieo !()9n|eA9|qnop();x9H96ix9mns9J)jO9n|eA9|qnoa = ;|nssj心:0 = linssj siqnop ()xo丄LuoJTJoqiunN旧b siqnop 甸现d/*ujn;sj® * 者滋盜并出K*伞兀番孫W *!snj; = bEiTPHEgEJodo9ni = Mgs!/!Xs>l = jo;ejsdo陽第阴第7宙丄昜谢意吴/ !(LunNl|ns9J)j09n|eA'6u!4S)lx9 丄旧 sjxo 丄

24、iinsai 8S|S K(H)JO9nIBA'6uu;s)lx9 丄旧 sjxo 丄 unsai(0 = 0)j!LunNlinssj = qIiunNlinssj (6uo|) = n22iqnop6uo|意吴阴诲单悬圍/ (6e|dP!|eA9iej9do)t()ixo 丄 LuoJTJoqiunNlob = LunNlinssjS£>W /运行图0BackspaceCtc帆1HisanMR_|4MS丄21 3 1L 一0ii*! 5卜CE :键入数字时,按下相应的数字键,如果按错可用(CE)键消去一次数值,再重新输入正确的数字C:清除数据,所有数据、算式都清除,归零复位MC :清除记忆储存MR :读记忆储存M+ :记忆储存增加MS :存储显示栏中的数字1/x :求倒数Backspace :退格组 内 分 工心 得 体 会在我们三个人的讨论和不断的学习中我们终于完成这次的实验。在实验期间我们查阅的很多的文献和课本,并一次次的将自己的实验代码和报告加以完善。这对我们的java的编程水准又来了极大的提咼,也让我们更家的喜爱java。成绩评教师签名:疋年 月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1