1、Java程序设计课程设计莆田学院新工科产业学院课 程 设 计课程名称:Java程序设计课程设计题 目:简易计算器学生姓名:曾佳茵2021年6月29日1. 概述 本次课程设计要求运用Java开发设计一个可以进行简单的四则运算的图形化计算器,要求此计算器能够实现基本的四则运算和清空功能,Clear按钮用于实现全部输入的清空功能,直接将显示置零。本次课程设计通过设计一个类运用成员变量和构造方法来完成计算器的设计,还增添了幂次方、正负号和开平方功能。2. 设计任务及要求设计任务利用 Java 开发一个可以进行简单的四则运算的图形化计算器,主程序所在的类名必须为CalculatorXXX(XXX为学号末
2、3位)。要求1、 参考界面设计图如下,允许根据功能自行设计界面。2、要求计算器至少能够实现基本的加减乘除运算和清空功能。3、Clear按钮用于实现全部输入的清空操作,直接将显示置零。4、请自行添加扩展功能。5、提交项目工程文件及打包发布的.jar或.exe6、提交课程设计报告。3. 设计方案成员变量设计构造方法设计其他成员方法设计 this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0); ); ButtonListener b1 = new ButtonLi
3、stener(); for(int i=0; i12; i+) b_numi.addActionListener(b1); for(int i=0; i8; i+) b_operi.addActionListener(b1); class ButtonListener implements ActionListenerprivate String lastOp;private String strVal; private double total; private double number; private boolean firsttime; private boolean operato
4、rPressed;ButtonListener()firsttime = true;strVal = ; public void actionPerformed(ActionEvent e)String s = (Button)e.getSource().getLabel().trim();if(Character.isDigit(s.charAt(0)handleNumber(s); else calculate(s); void calculate(String op)operatorPressed = true;if(firsttime&! isUnary(op)total = getN
5、umberOnDisplay();firsttime = false; if(isUnary(op)handleUnaryOp(op); else if(lastOp != null)handleBinaryOp(lastOp); if(! isUnary(op)lastOp = op; boolean isUnary(String s)return s.equals(=)|s.equals(Clear)|s.equals(sqrt)|s.equals(+/-)|s.equals(.);void handleUnaryOp(String op)if(op.equals(+/-)number =
6、 negate(getNumberOnDisplay() + );t_result.setText();t_result.setText(number + ); return; else if(op.equals(.)handleDecPoint();return;else if(op.equals(sqrt)number = Math.sqrt(getNumberOnDisplay();t_result.setText(); t_result.setText(number + ); return; else if(op.equals(=)if(lastOp!= null & !isUnary
7、(lastOp)handleBinaryOp(lastOp);lastOp = null;firsttime = true;return;elseclear();void handleBinaryOp(String op)if(op.equals(+)total +=number;else if(op.equals(-)total -=number;else if(op.equals(*)total *=number;else if(op.equals(/)trytotal /=number;catch(ArithmeticException ae)else if(op.equals(pow)
8、total = Math.pow(total, number);lastOp = null;number = 0;t_result.setText(total + );/该方法用于处理数字按钮void handleNumber(String s)if(!operatorPressed)strVal += s;elseoperatorPressed = false;strVal = s;number = new Double(strVal).doubleValue();t_result.setText();t_result.setText(strVal);/该方法用于按下.按钮void hand
9、leDecPoint()operatorPressed = false;if(strVal.indexOf(.)0)strVal += .;t_result.setText();t_result.setText(strVal);/该方法用于将一个数求反double negate(String s)operatorPressed = false;if(number = (int)number)s = s.substring(0,s.indexOf(.);if(s.indexOf(-)0)strVal = - + s;elsestrVal = s.substring(1);return new D
10、ouble(strVal).doubleValue();double getNumberOnDisplay()return new Double(t_result.getText().doubleValue();/Clear按钮清除屏幕并设置所有的标识void Clear()firsttime = true;lastOp = null;strVal = ;total = 0;number = 0;t_result.setText(0);运行结果:4. 结论分析此次实验在计算按钮设计上有一定的难度,查阅资料后发现,需要用到循环语句来实现按钮的设计。对于布局的设计有了更深的掌握。5. 参考文献1使用JAVA语言编写计算器的设计研究.赵源.包头职业技术学院.2015(11)