JAVA程序设计课程作业
——关于计算器的设计说明
电信06XX班 王XX 012006012XXX 郭XX 012006012XXX 陈 X 012006012XXX 一 实验目的
1、通过编写计算器程序,以达到熟悉和掌握JAVA的目的。 2、在编程的过程中,提升自己的能力。
3、能够有效的增强团队合作的能力。
二 实验内容
1、编写一个计算器,应该有如图类似的图形用户界面。
2、能够实现普通的加减乘除运算。
3、可以适当的增加一些科学计算器的功能。
三.程序设计及源码实现:
程序设计结构:
copyItem
editItem
pasteItem
tItem
mainMenu viewMenu sItem
(NORTH)
numberGroup
topHelp
helpMenu
aboutHelp
Panel textAnswer (CENTER)
textMemory labelMenSpace Panel2 buttonN
(NORTH) buttonBk
button Ce
button C
Panel1 (SOUTH)
button MC 7 8 9 Div Sqrt
button MR 4 5 6 * %
Panel3 button MS 1 2 3 - Dao
(CENTER)
button M+ 0 +/- Dot + +
Calculator面板 数字按钮触发事件 加减乘除按钮触发事件 = 输出结果事件 Sqr,%,+/-,CE,C,Backspace 按钮触发MR,MC,MS,M+按钮触发的事件 源码如下:
import java.awt.*; import java.lang.*; import javax.swing.*;
import javax.swing.event.*; import java.awt.event.*;
import java.text.DecimalFormat;
public class Calculator implements ActionListener //导入动作监听接口 {
//设计面板中的组件 JFrame frame;
JTextField textAnswer;
JPanel panel, panel1, panel2, panel3; JMenuBar mainMenu; JTextField textMemory;
JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状 JButton buttonBk, buttonCe, buttonC; JButton button[];
JButton buttonMC, buttonMR, buttonMS, buttonMAdd;
JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul, buttonDiv, buttonMod ,buttonN;
JButton buttonSqrt, buttonDao, buttonEqual; JMenu editMenu, viewMenu, helpMenu;
JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal; DecimalFormat df; //设置数据输出精度 boolean clickable; //控制当前能否按键 double memoryd; //使用内存中存储的数字 int memoryi;
double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd) short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算
String copy; //做复制用 JTextArea help; //帮助 JScrollPane scrollHelp; //构造函数
public Calculator() {
clickable = true; answerd = 0;
frame = new JFrame(\计算器\
df = new DecimalFormat(\设置数据输出精度(对于double型值) textAnswer = new JTextField(15); textAnswer.setText(\
textAnswer.setHorizontalAlignment(JTextField.RIGHT); //文本右对齐 textAnswer.setEditable(false); //设置为不可编辑
textAnswer.setBackground(new Color(255, 255,255));//白底色
panel = new JPanel();
frame.setContentPane(panel); // panel1 = new JPanel(); panel2 = new JPanel();
panel.setLayout(new BorderLayout()); //设计整个面板
mainMenu = new JMenuBar();
editMenu = new JMenu(\编辑(E)\ viewMenu = new JMenu(\查看(V)\ helpMenu = new JMenu(\帮助(H)\
copyItem = new JMenuItem(\复制(C) Ctrl+C\
copyItem.addActionListener(this); //增加动作事件监听 pasteItem = new JMenuItem(\粘贴(V) Ctrl+V\
pasteItem.addActionListener(this); //增加动作事件监听 editMenu.add(copyItem); editMenu.add(pasteItem);
tItem = new JMenuItem(\●标准型(T)\
tItem.addActionListener(this); //增加动作事件监听
sItem = new JMenuItem(\科学型(S)\
sItem.addActionListener(this); //增加动作事件监听 numberGroup = new JMenuItem(\数字分组(I)\
numberGroup.addActionListener(this); //增加动作事件监听 viewMenu.add(tItem); viewMenu.add(sItem);
viewMenu.add(numberGroup);
topHelp = new JMenuItem(\帮助主题(H)\
topHelp.addActionListener(this); //增加动作事件监听 help = new JTextArea(5, 20);
scrollHelp = new JScrollPane(help); help.setEditable(false);
help.append(\执行简单计算\\n\
help.append(\键入计算的第一个数字。\\n\ help.append(\单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\\n\ help.append(\键入计算的下一个数字。\\n\
help.append(\输入所有剩余的运算符和数字。\\n\ help.append(\单击“=”。\\n\
aboutCal = new JMenuItem(\关于计算器(A)\ aboutCal.addActionListener(this); helpMenu.add(topHelp); helpMenu.add(aboutCal);
mainMenu.add(editMenu); mainMenu.add(viewMenu); mainMenu.add(helpMenu);
panel.add(mainMenu, BorderLayout.NORTH); //利用布局管理器来布局面板,菜单在最上面
panel.add(textAnswer, BorderLayout.CENTER); panel.add(panel1, BorderLayout.SOUTH); panel1.setLayout(new BorderLayout()); textMemory = new JTextField(3); textMemory.setEditable(false);
textMemory.setBackground(new Color(217, 217, 217)); labelMemSpace = new JLabel(\ \ buttonBk = new JButton(\
buttonBk.setForeground(new Color(255, 0, 0)); buttonCe = new JButton(\
buttonCe.setForeground(new Color(255, 0, 0)); buttonC = new JButton(\
buttonC.setForeground(new Color(255, 0, 0)); buttonN = new JButton(\
buttonN.setForeground(new Color(255, 0, 0));
buttonBk.addActionListener(this); //增加动作事件监听