当前位置:文档之家› Java编写一个计算器程序

Java编写一个计算器程序

信息科学与技术学院 《Java语言课程设计》报告

题 目: 编写一个计算器程序 专 业: 计算机科学与技术 班 级: 学 号: 姓 名: 目录 一、概述 ................................................ 3 1.1设计目的及思路 ...................................... 3 1.2功能模块设计 ........................................ 3 1.3程序结构(流程图) .................................. 4 二、计算器的设计与实现 ................................... 4 2.1程序界面 ............................................ 4 2.2程序源代码 .......................................... 5 三、参考文献 ............................ 错误!未定义书签。 一、概述 1.1设计目的及思路 通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现!

1.2功能模块设计

(1)加法:两个数据进行加操作,可以为小数。 (2)减法:两个数据进行减操作,可以为负数相减。 (3)乘法:两个数相乘操作。 (4)除法:两个数相除操作。 (5)阶乘:对任意一个数进行阶乘运算。 (6)指数:对任意一个数进行指数运算。 (7)倒数:对任意一个数进行倒数运算。 1.3程序结构(流程图) 计算器

四则运算其他运算清零

加减乘除阶乘指数

撤消

二、计算器的设计与实现 2.1程序界面

2.2程序源代码 package mine; import java.awt.*; import java.awt.event.*;

public class Calculator implements ActionListener{ private double data1=0.0,data2=0.0; private String t_content; boolean number=false; //key用标示用户所按按钮即加减乘除 //key0标示+1表示-2表示*3表示/ short key=-1;

//pkey取值-1~5 //pkey-1表示第按=按钮5说明第按=按钮 //pkey其值0,1,2,3别代表+-,*/ short pkey=-1;

Frame frame=new Frame("计算器");//定义标题Calculator窗体 TextField textfield=new TextField(30);//定义计算机

//定义backspace,ce,c0按钮 Button backspace=new Button("退格"); Button ce=new Button("撤消"); Button c0=new Button("清空");

//定义面板其backspace,ce,c0按钮计算机栏textfeild放面板p1 //其余按钮放面板p2 Panel p1=new Panel(); Panel p2=new Panel();

//定义界面按钮数组即除backspace,ce,c0按钮所按钮 String names[]={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="}; Button bb[]=new Button[names.length];

public static void main(String[] args){ Calculator cal=new Calculator(); cal.go(); }

public void go(){ frame.setSize(300,200); frame.setLayout(new BorderLayout()); Font fonts=new Font("楷体_GB2312",Font.PLAIN,12);

//设置面板p1字体布局管理类型textfeild象添加面板 p1.setFont(fonts); p1.setLayout(new GridLayout(2,1,5,10)); textfield.setFont(fonts); p1.add(textfield,null); //backspace,ce,c0按钮注册addActionListener backspace.addActionListener(this); ce.addActionListener(this); c0.addActionListener(this);

//backspace,ce,c0按钮添加p1面板 p1.add(backspace,null); p1.add(ce,null); p1.add(c0,null);

//设置面板p2布局管理器类型GridLayout p2.setLayout(new GridLayout(4,5,5,5));

//按钮组按钮注册addActionListener for(int i=0;ibb[i]=new Button(names[i]); p2.add(bb[i]); bb[i].addActionListener(this); }

//设置面板p1面板p2窗体位置 //面板p1窗体North向面板p2窗体South向 frame.add(p1,BorderLayout.NORTH); frame.add(p2,BorderLayout.SOUTH); frame.setVisible(true);

//单击关闭按钮退系统 frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void actionPerformed(ActionEvent ae){ String s; //通ActionEvent类getActionCommand()作由哪按钮触发 s=ae.getActionCommand();

//用户单击计算栏便掉字符 //先计算栏字符清空再添加除字符字符串 if(s.equals("退格")&&number){ t_content=textfield.getText(); textfield.setText(""); for(int i=0;i char c=t_content.charAt(i); textfield.setText(textfield.getText()+c); } }

//用户单击撤消按钮 if(s.equals("撤消")){ textfield.setText(""); number=false; }

//用户单击清空按钮 if(s.equals("清空")){ textfield.setText(""); data1=data2=0.0; number=false; }

//用户单击sqrt按钮其负数能 if(s.equals("sqrt")&&number){ t_content=textfield.getText(); if(t_content.charAt(0)=='-'){ textfield.setText("负数能"); number=false; }else{

textfield.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(t_content)))); } }

//用户单击1/x求倒数按钮求倒数母能0 if(s.equals("1/x") && number){ t_content=textfield.getText(); if(t_content.equals("0")){ textfield.setText("零能求倒数"); number=false; }else{

textfield.setText(Double.toString(1/Double.parseDouble(t_content))); }

相关主题