JAVA 计算器 课程设计Word格式文档下载.docx
- 文档编号:16366847
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:29.51KB
JAVA 计算器 课程设计Word格式文档下载.docx
《JAVA 计算器 课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JAVA 计算器 课程设计Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
①源程序(必须有简单注释)②使用说明③参考资料
指导教师签名:
2010年6月20日
教研室主任(或责任教师)签名:
年月日
一.设计目的
1.1:
1.2:
二.需求分析
日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。
本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;
要提供主要的设计思路、类的设计,本次设计添加转进制等功能
三.设计思路
本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按纽的面板buttonpanel加入相应区域
还可以将进制转换的面板与单行文本框放一块
包含各种按纽的面板buttonpanel采用N行N列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器
四.详细设计
4.1数据分析
计算器的程序设计,必然有数据输入,其中数据包括运算符和数字,均要通过计算器上的button按钮选项按钮输入进去,里面录入的必然是字符型的数据,如果进行运算要将输入的数据转化成Double型,以防出错
4.2算法思路
大致思路已经在上面阐述,主要是通过将数字键和其他符号区别开来进行监听
4.3类设计
以下见代码部分
五.详细代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsFrameimplementsActionListener,WindowListener
{
privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFielddisplayField;
//计算结果显示区
privateStringlastCommand;
//保存+,-,*,/,=命令0
privatedoubleresult;
//保存计算结果
privatebooleanstart;
//判断是否为数字的开始
privateJMenuBarmenubar;
privateJMenuItemm_exit,m2_ejz,m2_bjz;
privateDialogdialog;
privateLabellabel_dialog;
privateJButtonbutton_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,
button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,
button_plus,button_minus,button_multiply,button_divide,button_point,
button_equal,button_log,button_tan,button_cos,button_sin,button_exp;
publicCalculator()//构造方法设置布局、为按钮注册事件监听器
super("
Calculator"
);
this.setLocation(240,200);
this.setSize(350,300);
this.setResizable(true);
this.setLayout(newGridLayout(7,1));
this.addmyMenu();
//调用成员方法添加菜单
displayField=newJTextField(30);
this.add(displayField);
displayField.setEditable(true);
start=true;
result=0;
lastCommand="
="
;
JPanelpanel0=newJPanel();
panel0.setLayout(newGridLayout(1,4,4,4));
JPanelpanel1=newJPanel();
panel1.setLayout(newGridLayout(1,5,4,4));
this.add(panel1);
button_sqrt=newJButton("
sqrt"
button_plusminus=newJButton("
+/-"
button_exp=newJButton("
exp"
button_CE=newJButton("
退格"
button_cancel=newJButton("
C"
JPanelpanel2=newJPanel();
panel2.setLayout(newGridLayout(1,5,4,4));
this.add(panel2);
button_7=newJButton("
7"
button_8=newJButton("
8"
button_9=newJButton("
9"
button_log=newJButton("
log"
button_divide=newJButton("
/"
JPanelpanel3=newJPanel();
panel3.setLayout(newGridLayout(1,5,4,4));
this.add(panel3);
button_4=newJButton("
4"
button_5=newJButton("
5"
button_6=newJButton("
6"
button_tan=newJButton("
tan"
button_multiply=newJButton("
*"
JPanelpanel4=newJPanel();
panel4.setLayout(newGridLayout(1,5,4,4));
this.add(panel4);
button_1=newJButton("
1"
button_2=newJButton("
2"
button_3=newJButton("
3"
button_cos=newJButton("
cos"
button_minus=newJButton("
-"
JPanelpanel5=newJPanel();
panel5.setLayout(newGridLayout(1,5,4,4));
this.add(panel5);
button_0=newJButton("
0"
button_point=newJButton("
."
button_equal=newJButton("
button_sin=newJButton("
sin"
button_plus=newJButton("
+"
panel1.add(button_sqrt);
panel1.add(button_plusminus);
panel1.add(button_exp);
panel1.add(button_CE);
panel1.add(button_cancel);
panel2.add(button_7);
panel2.add(button_8);
panel2.add(button_9);
panel2.add(button_log);
panel2.add(button_divide);
panel3.add(button_4);
panel3.add(button_5);
panel3.add(button_6);
panel3.add(button_tan);
panel3.add(button_multiply);
panel4.add(button_1);
panel4.add(button_2);
panel4.add(button_3);
panel4.add(button_cos);
panel4.add(button_minus);
panel5.add(button_0);
panel5.add(button_point);
panel5.add(button_equal);
panel5.add(button_sin);
panel5.add(button_plus);
button_sqrt.addActionListener(this);
button_plusminus.addActionListener(this);
button_exp.addActionListener(this);
button_CE.addActionListener(this);
button_cancel.addActionListener(this);
button_7.addActionListener(this);
button_8.addActionListener(this);
button_9.addActionListener(this);
button_log.addActionListener(this);
button_divide.addActionListener(this);
button_4.addActionListener(this);
button_5.addActionListener(this);
button_6.addActionListener(this);
button_tan.addActionListener(this);
button_multiply.addActionListener(this);
button_1.addActionListener(this);
button_2.addActionListener(this);
button_3.addActionListener(this);
button_cos.addActionListener(this);
button_minus.addActionListener(this);
button_0.addActionListener(this);
button_point.addActionListener(this);
button_equal.addActionListener(this);
button_sin.addActionListener(this);
button_plus.addActionListener(this);
this.addWindowListener(newWinClose());
//注册窗口监听器
this.setVisible(true);
}
privatevoidaddmyMenu()//菜单的添加
JMenuBarmenubar=newJMenuBar();
this.add(menubar);
JMenum1=newJMenu("
选项"
JMenum2=newJMenu("
进制转换"
JMenuItemm1_exit=newJMenuItem("
退出"
m1_exit.addActionListener(this);
JMenuItemm2_ejz=newJMenuItem("
二进制"
m2_ejz.addActionListener(this);
JMenuItemm2_bjz=newJMenuItem("
八进制"
m2_bjz.addActionListener(this);
JMenum3=newJMenu("
帮助"
JMenuItemm3_Help=newJMenuItem("
用法"
m3_Help.addActionListener(this);
dialog=newDialog(this,"
提示"
true);
//模式窗口
dialog.setSize(240,80);
label_dialog=newLabel("
"
Label.CENTER);
//标签的字符串为空,居中对齐
dialog.add(label_dialog);
dialog.addWindowListener(this);
//为对话框注册窗口事件监听器
m1.add(m1_exit);
menubar.add(m1);
m2.add(m2_ejz);
m2.add(m2_bjz);
menubar.add(m2);
m3.add(m3_Help);
menubar.add(m3);
}
publicvoidactionPerformed(ActionEvente)//按钮的单击事件处理方法
if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||
e.getSource().equals(button_3)||e.getSource().equals(button_4)||
e.getSource().equals(button_5)||e.getSource().equals(button_6)||
e.getSource().equals(button_7)||e.getSource().equals(button_8)||
e.getSource().equals(button_9)||e.getSource().equals(button_0)||
e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||
e.getSource().equals(button_cancel)||e.getSource().equals(button_CE))
{//非运算符的处理方法
Stringinput=e.getActionCommand();
if(start)
displayField.setText("
start=false;
if(input.equals("
))
displayField.setText(displayField.getText()+"
if(!
input.equals("
Stringstr=displayField.getText();
))//退格键的实现方法
if(str.length()>
0)
displayField.setText(str.substring(0,str.length()-1));
elseif(input.equals("
))//清零键的实现方法
else
displayField.setText(displayField.getText()+input);
elseif(e.getActionCommand()=="
)//二进制的转换
intn=Integer.parseInt(displayField.getText());
displayField.setText(Integer.toBinaryString(n));
)//八进制的转换
displayField.setText(Integer.toOctalString(n));
)//选项中退出的处理方法
System.exit(0);
)//按下'
帮助'
菜单栏中用法的处理方法
label_dialog.setText("
sqrt,exp等键是先输运算符再输数字\n"
dialog.setLocation(400,250);
dialog.setVisible(true);
else//各运算符的识别
Stringcommand=e.getActionCommand();
if(start)
lastCommand=command;
calculate(Double.parseDouble(displayField.getText()));
publicvoidcalculate(doublex)//各运算符的具体运算方法
doubled=0;
if(lastCommand.equals("
result+=x;
elseif(lastCommand.equals("
result-=x;
result*=x;
result/=x;
result=x;
d=Math.sqrt(x);
result=d;
d=Math.exp(x);
d=Math.log(x);
d=Math.tan(x);
d=Math.cos(x);
d=Math.sin(x);
+result);
publicvoidwindowClosing(WindowEvente)
if(e.getSource()==dialog)
dialog.setVisible(false);
//隐藏对话框
publicvoidwindowOpened(WindowEvente){}
publicvoidwindowActivated(WindowEvente){}
publicvoidwindowDeactivated(WindowEvente){}
publicvoidwindowClosed(WindowEvente){}
publicvoidwindowIconified(WindowEvente){}
publicvoidwindowDeiconified(WindowEvente){}
publicstaticvoidmain(Stringargs[])
Calculatorcalculator=newCalculator();
classWinCloseimplementsWindowListener
//结束程序运行
publicvoidwindowOpened(WindowEvente){}
publicvoidwindowActivated(WindowEvente){}
publicvoidwindowDeactivated(WindowEvente){}
publicvoidwindowClosed(WindowEvente){}
publicvoidwindowIconified(WindowEvente){}
publicvoidwindowDeiconified(WindowEvente){}
运行结果截图:
程序功能实现:
1.运用两个面板的叠加做出界面。
2.通过在按钮的单击事件处理方法中调用类的成员方法calculate()来进行简易计算器的各种运算,并正确实现运算功能。
3.调用Math包中的方法实现各函数功能。
4.添加菜单条,列出‘选项’、‘进制转换’、‘帮助’等菜单选项,并分别实现‘选项’中‘退出’的功能,通过调用Integer包中的方法实现二进制、八进制的转换,‘帮助'
菜单栏中‘用法’的提示对话框。
5.整个程序对话框可实现最小化、最大化、关闭。
设计体会:
在此次的课程设计实践中,我学到了教科书上没有的东西。
这次课程设计,我按照课程设计的要求,分块实现程序的功能。
在实践中我遇到许
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 计算器 课程设计