计算机科学与技术专业Java实验报告.docx
《计算机科学与技术专业Java实验报告.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术专业Java实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
计算机科学与技术专业Java实验报告
实验报告
题目:
Java程序设计实验
学院计算机科学与技术
专业xxxxxxxxxxxxxxxx
学号xxxxxxxxxxxx
姓名xxxxxx
指导教师
20xx年xx月xx日
摘要
通过设计简单计算器,掌握java程序图形界面设计的基本方法。
要求实现简单计算器的加减乘除功能
关键词:
swing;panel
目录
1需求分析…………………………………………………………………1
2整体设计…………………………………………………………………2
3详细设计…………………………………………………………………3
3.1界面设计………………………………………………………………3
3.2详细设计………………………………………………………………3
4调试与测试………………………………………………………………4
参考文献……………………………………………………………………6
附录…………………………………………………………………………7
1需求分析
通过设计简单计算器,掌握java程序图形界面设计的基本方法。
要求实现简单计算器的加减乘除功能。
操作系统为Windows8.164bit,jdk版本号1.8update2564bit,开发软件为EclipseJavaEEIDE4.4.1。
2整体设计
采用
java的swing模块生成窗口及按钮,窗口包含可点击的数字键及操作符按钮,当点击按钮时屏幕显示相应的操作结果。
3详细设计
3.1界面设计
利用java.awt.Panel类生成两个panel,panel1分别放置数字键及操作按钮,panel2放置显示结果区域及重置计算器的按钮。
点击按钮时屏幕显示对应操作。
在panel1中,利用java.awt.Button类生成按钮并添加;在panel2中,利用java.awt.TextField生成显示结果的区域。
通过setPreferredSize方法设置窗体的大小
3.2程序设计
设置double型变量number用于存放当前操作数,String类operator用于标识当前操作符。
每当点击按钮时判断当前按钮功能,若为数字则向显示区域存入,若为操作符则将显示区域的字符串显示转换为操作数并设置操作符。
布尔型变量isFirstDigit用于辅助实现连续运算。
CE按钮用于重启计算器,点击后调用handleReset()将显示区域内容置0,并将操作符重新设置为“=”
4调试与测试
运行初始界面如图:
输入1/2,计算结果为:
顺序输入1+2*4,为:
C点击CE,计算器重置:
参考文献
Java程序设计基础实用教程(第3版)叶核亚电子工业出版社2011年5月
附录
package计算器;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclass计算器extendsJFrameimplementsActionListener{
privatestaticfinallongserialVersionUID=1L;
//关闭
privateclassWindowCloseextendsWindowAdapter{
publicvoidwindowClosing(WindowEventwe){
System.exit(0);
}
}
//数字和操作符
privatefinalString[]str={"7","8","9","/","4","5","6","*","1",
"2","3","-","0",".","=","+"};
//生成按钮
Button[]buttons=newButton[str.length];
//取消或重置
Buttonreset=newButton("CE");
//生成结果显示区域
TextFielddisplay=newTextField("0");
public计算器(){
super("计算器");
//添加面板
Panelpanel1=newPanel(newGridLayout(4,4));
//生成按钮
for(inti=0;ibuttons[i]=newButton(str[i]);
panel1.add(buttons[i]);
}
Panelpanel2=newPanel(newBorderLayout());
Dimensiondimp=newDimension(220,40);
panel2.setPreferredSize(dimp);
Fontfontp=newFont("微软雅黑",Font.TRUETYPE_FONT,11);
panel2.setFont(fontp);
panel2.add("Center",display);
panel2.add("East",reset);
getContentPane().setLayout(newBorderLayout());
getContentPane().add("North",panel2);
getContentPane().add("Center",panel1);
for(inti=0;ibuttons[i].addActionListener(this);
reset.addActionListener(this);
display.addActionListener(this);
addWindowListener(newWindowClose());
//设置窗口大小
Dimensiondim=newDimension(220,220);
setPreferredSize(dim);
//显示窗口
setVisible(true);
pack();
//是否可改变大小
//setResizable(false);
setLocationRelativeTo(null);
Fontfont=newFont("微软雅黑",Font.BOLD,11);
setFont(font);
repaint();
}
publicvoidactionPerformed(ActionEvente){
Objecttarget=e.getSource();
Stringlabel=e.getActionCommand();
if(target==reset)
handleReset();
elseif("0123456789.".indexOf(label)>0)
handleNumber(label);
else
handleOperator(label);
}
booleanisFirstDigit=true;
publicvoidhandleNumber(Stringkey){
if(isFirstDigit)
display.setText(key);
elseif((key.equals("."))&&(display.getText().indexOf(".")<0))
display.setText(display.getText()+".");
elseif(!
key.equals("."))
display.setText(display.getText()+key);
isFirstDigit=false;
}
//重置计算器
publicvoidhandleReset(){
display.setText("0");
isFirstDigit=true;
operator="=";
}
doublenumber=0.0;
Stringoperator="=";
publicvoidhandleOperator(Stringkey){
if(operator.equals("+"))
number+=Double.valueOf(display.getText());
elseif(operator.equals("-"))
number-=Double.valueOf(display.getText());
elseif(operator.equals("*"))
number*=Double.valueOf(display.getText());
elseif(operator.equals("/"))
number/=Double.valueOf(display.getText());
elseif(operator.equals("="))
number=Double.valueOf(display.getText());
display.setText(String.valueOf(number));
operator=key;
isFirstDigit=true;
}
publicstaticvoidmain(String[]args){
new计算器();
}
}