哈尔滨哈商业大学
JAVA课 程 设 计
课程名称:Java程序设计
课题名称:简单计算器
姓 名: 宋双龙
学 号: 200850940281
班 级:08级软件工程教育
20##年10月20日
一、实验目的:
使用Eclipse软件制作简单计算器,实现加减乘除等基本功能。
二、实验源码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
publicclass Calculator {
publicstaticvoid main(String[] args) {
EventQueue.invokeLater(new Runnable()
{
publicvoid run()
{
CalculatorFrame frame = new CalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
classCalculatorFrameextends JFrame
{
public CalculatorFrame()
{
setTitle("Calculator");
CalculatorPanal panel = new CalculatorPanal();
add(panel);
pack();
}
}
classCalculatorPanalextendsJPanel
{
public CalculatorPanal()
{
setLayout(new BorderLayout());
result =0;
lastCommand = "=";
start = true;
display = new JButton("0");
display.setEnabled(false);
add(display,BorderLayout.NORTH);
ActionListener insert= new InsertAction();
ActionListener command=new CommantAction();
panel = newJPanel();
panel.setLayout(new GridLayout(4,4));
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);
}
privatevoid addButton(String label,ActionListener listener)
{
JButton button = new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
privateclass InsertAction implements ActionListener
{
publicvoid actionPerformed(ActionEvent event)
{
String input = event.getActionCommand();
if(start)
{
display.setText("");
start= false;
}
display.setText(display.getText()+input);
}
}
privateclass CommantAction implements ActionListener
{
publicvoid actionPerformed(ActionEvent event)
{
String command = event.getActionCommand();
if(start)
{
if(command.equals("-"))
{
display.setText(command);
start= false;
}
else lastCommand = command;
}
else
{
calculate(Double.parseDouble(display.getText()));
lastCommand =command;
start =true;
}
}
}
publicvoid calculate(double x)
{
if(lastCommand.equals("+")) result +=x;
elseif(lastCommand.equals("-")) result -=x;
elseif(lastCommand.equals("*")) result *=x;
elseif(lastCommand.equals("/")) result /=x;
elseif(lastCommand.equals("=")) result =x;
display.setText(""+result);
}
private JButton display;
private JPanel panel;
privatedouble result;
private String lastCommand;
privateboolean start;
}
三、实验结果:
Java程序设计“简单计算器”
一、程序代码
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class Calculator{
private static JTextField tf; private static String x[]=new String[2],op; private static double result=0; private static String[] s={"0","1","2","3","4","5","6","7","8","9",".","+","-","*","/","="}; private static String[] sb={"backspace","clear"}; private static boolean lock; public static void clearXOp(){ x[0]=new String(); } public static void clear(){ clearXOp(); result=0; tf.setText("0"); } public static void delete(int i){ int k=x[i].length()-1; StringBuffer sbr=new StringBuffer(x[i]); } sbr.deleteCharAt(k); x[i]=new String(sbr); if(x[i].equals(s[10]))x[i]=new String(); x[1]=new String(); op=new String(); lock=true; public static void cancel(){ int i=1; if(op.equals(""))i=0; if(x[i].equals("")){ tf.setText("0"); return; } delete(i); if(!x[i].equals(""))
} } tf.setText(x[i]); else tf.setText("0"); public static void comput(){ double a,b; if(x[0].equals("")) a=result; else a=Double.parseDouble(x[0]); b=Double.parseDouble(x[1]); if(op.equals(s[11])) result=a+b; else if(op.equals(s[12])) result=a-b; else if(op.equals(s[13])) result=a*b; else if(op.equals(s[14])) else result=a; x[0]=new String(""+result);x[1]=new String(); result=a/b; public static void putResult(){ comput(); } public static void getX(int i,int j){ if(x[j].lastIndexOf(s[10])!=-1&&s[i].equals(s[10]))return; if(x[j].equals(s[0])&&!s[i].equals(s[10])){ } else if(x[j].equals("")&&s[i].equals(s[10])) x[j]=s[0]+s[10]; else x[j]=new String(s[i]); int k=x[0].length(); if(x[0].substring(k-2,k).equals(".0")){ StringBuffer str=new StringBuffer(x[0]); str.delete(k-2,k); x[0]=new String(str); } tf.setText(x[0]);
x[j]+=s[i]; tf.setText(x[j]); } public static void main(String[] args){ JFrame f=new JFrame("计算器"); Container c=f.getContentPane(); c.setLayout(new BorderLayout()); Font ft = new Font("隶书",Font.PLAIN,20); clearXOp(); JPanel p1,p2; p1=new JPanel(new GridLayout(2,0)); tf=new JTextField(); tf.setFont(ft); tf.setHorizontalAlignment(JTextField.RIGHT); tf.setText("0"); tf.setEditable(false); p1.add(tf); JButton bc[]=new JButton[sb.length]; JPanel p11=new JPanel(new FlowLayout()); for (int i=0;i<sb.length;i++){ bc[i]=new JButton(sb[i]); bc[i].setActionCommand(sb[i]); } bc[i].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String str=e.getActionCommand(); if(lock&&str.equals(sb[0])&&!op.equals(tf.getText())) cancel(); else if(str.equals(sb[1])) clear(); } }); p11.add(bc[i]); p1.add(p11);
JButton[] b=new JButton[s.length]; for(int i=0;i<s.length;i++){
b[i]=new JButton(s[i]); b[i].setActionCommand(s[i]); b[i].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
String str=e.getActionCommand(); for(int i=0;i<11;i++){ if(lock){ if(str.equals(s[i])){ if(op.equals(""))getX(i,0); } } } else getX(i,1); for(int i=11;i<s.length-1;i++){ if(lock){ if(str.equals(s[i])){ if(op.equals("")){ op=s[i]; } tf.setText(op); else if(!x[1].equals("")){ if(op.equals(s[14])&&Double.parseDouble(x[1])==0) }); b[i].setFont(ft); } } } lock=false; else{ comput(); op=s[i]; } tf.setText(op); } } if(lock&&str.equals(s[15])){ } if(x[1].equals(""))x[1]="0"; if(op.equals(s[14])&&Double.parseDouble(x[1])==0) lock=false; else{ } putResult(); clearXOp(); } p2=new JPanel(new GridLayout(4,4,6,6)); for(int i=0;i<s.length;i++){
p2.add(b[i]); } c.add(p1,BorderLayout.NORTH); c.add(p2,BorderLayout.CENTER); f.setBounds(200,200,300,330); f.setVisible(true); f.setResizable(false); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
}
二、程序截图
Java程序设计实验报告题目计算器姓名学号学院软件学院专业软件工程年级20xx级指导教师张舒20xx年4月9日一实验目的1熟练掌握…
面向对象程序设计课程设计报告题目计算器模拟程序组成员信息任课老师成绩20xx年12月30日目录1课程设计目的31131232设计题…
20xx20xx年度第1学期Java程序设计课程设计报告保存计算过程的计算器专业网络工程陆春燕B计算机0920970704211徐…
课程设计报告设计题目学院班级学号姓名计算器信息工程学院应用一班房名扬070306120Java课程设计报告目录目录I1需求分析11…
JAVA课程设计报告哈尔滨哈商业大学JAVA课程设计课程名称课题名称简单计算器姓名学号班级宋双龙20xx5094028108级软件…
20xx20xx年度第1学期Java程序设计课程设计报告保存计算过程的计算器专业网络工程陆春燕B计算机0920970704211徐…
华东交通大学课程设计华东交通大学课程设计课程设计题目计算器设计课程题目年级专业学号姓名组员指导教师Java程序设计信息一班1华东交…
课程设计课程设计目的设计一个基于Swing的计算器应用程序完成普通的算术运算课程设计要求1设计的计算器是基于Swing的可以完成加…
JAVA程序设计课程设计报告书学生考勤系统的设计和实现提交日期20xx年12月1目录摘要3一前言3二设计分析3三实现方法4四调试问…
高级编程技术课程设计学号姓名何志军班级信息管理1班学期指导教师模拟科学计算器一概述1程序具备的功能1使用图形用户界面一个文本框09…
广东海洋大学学生实验报告书实验名称:JAVA计算器程序设计课程名称:JAVA程序设计1)实验总结:刚做之前,勉强还能做些小程序,但…