实验设计二(计算器)
- 格式:doc
- 大小:83.50 KB
- 文档页数:17
— 1 — 北京信息科技大学 课程设计报告
课程名称 Java程序设计课程设计 题 目 计算器 指导教师 李 春 强 设计起止日期 2013-6-1---2013-6-14 设计地点 3-603
系 别 信息管理学院 专 业 学生姓名 ___________ 班级/学号 __ 成 绩 ___________________ — 2 —
1. 实验设计目的: (1)掌握类的定义和使用; (2)掌握对象的定义; (3)掌握常用类的使用。
2. 实验设计内容: 计算器相信对任何人来说,都不会感觉陌生,用Java语言实现一个计算器,该计算器的功能与windows操作系统的附件所带的计算器类似,支持简单的加、减、乘除运算。
3. 技术要点: 运用java中累的创建,对象的创建和使用,以及java的图形用户界面的设计思想来设计赐个计算器。 计算机系统采用人机对话方式,界面美观友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠,系统操作简单,界面简洁明了,数据计算自动完成,提高计算效率,计算器主界面主要用了Flowlayout布局和Gridlayout布局的结合。
4. 实验条件: (1)主要设备: 586或更高机型,256MB或更高的内存,40G或更大的硬盘。 (2)主要软件: ①操作系统可为Windows9X、WinMe、Win2000或更高版本等; ②开发环境为jdk或者jcreator。 (3)参考书目: ①尹继平,张帆.java范例大全.机械工业出版社
②施霞萍.java程序设计教程.机械工业出版社 — 3 —
5. 实验方法与步骤: 程序代码: import java.awt.BorderLayout;
import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField;
public class Calculator extends JFrame implements ActionListener { private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
private final String[] COMMAND = { "Backspace", "CE", "C" }; private JButton keys[] = new JButton[KEYS.length]; — 4 —
private JButton commands[] = new JButton[COMMAND.length]; private JTextField resultText = new JTextField("0"); private boolean firstDigit = true; private double resultNum = 0.0; private String operator = "="; private boolean operateValidFlag = true; public Calculator(){ super();
init(); this.setBackground(Color.LIGHT_GRAY); this.setTitle("计算器"); — 5 —
this.setLocation(500, 300); this.setResizable(false); this.pack(); }
private void init() { resultText.setHorizontalAlignment(JTextField.RIGHT); resultText.setEditable(false); resultText.setBackground(Color.white);
JPanel calckeysPanel = new JPanel(); calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3)); — 6 —
for (int i = 0; i < KEYS.length; i++) { keys[i] = new JButton(KEYS[i]); calckeysPanel.add(keys[i]); keys[i].setForeground(Color.blue); }
keys[3].setForeground(Color.red); keys[8].setForeground(Color.red); keys[13].setForeground(Color.red); keys[18].setForeground(Color.red); keys[19].setForeground(Color.red);
JPanel commandsPanel = new JPanel(); commandsPanel.setLayout(new GridLayout(1, 3, 3, 3)); for (int i = 0; i < COMMAND.length; i++) { commands[i] = new JButton(COMMAND[i]); commandsPanel.add(commands[i]); commands[i].setForeground(Color.red); — 7 —
} JPanel panel1 = new JPanel(); panel1.setLayout(new BorderLayout(3, 3)); panel1.add("North", commandsPanel); panel1.add("West", calckeysPanel);
JPanel top = new JPanel(); top.setLayout(new BorderLayout()); top.add("Center", resultText);
getContentPane().setLayout(new BorderLayout(3, 5)); getContentPane().add("North", top); getContentPane().add("Center", panel1); — 8 —
for (int i = 0; i < KEYS.length; i++) { keys[i].addActionListener(this); } for (int i = 0; i < COMMAND.length; i++) { commands[i].addActionListener(this); } }
public void actionPerformed(ActionEvent e) { String label = e.getActionCommand(); if (label.equals(COMMAND[0])){
handleBackspace(); } else if (label.equals(COMMAND[1])) {
resultText.setText("0"); } else if (label.equals(COMMAND[2])){ — 9 —
handleC(); } else if ("0123456789.".indexOf(label) >= 0) {
handleNumber(label); // handlezero(zero); } else {
handleOperator(label); } }
private void handleBackspace() { String text = resultText.getText(); int i = text.length(); if (i > 0) {
text = text.substring(0, i - 1); if (text.length() == 0) {
resultText.setText("0"); — 10 —
firstDigit = true; operator = "="; } else {
resultText.setText(text); } } }
private void handleNumber(String key) { if (firstDigit) {
resultText.setText(key); } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)){
resultText.setText(resultText.getText() + "."); } else if (!key.equals(".")) {
resultText.setText(resultText.getText() + key);