1、java课程设计计算器的制作 java课程设计计算器的制作 河北工程大学科信学院 JAVA 课程设计说明书 计算器的设计 专业班级 班 课设题目 学生姓名 学生学号 指导教师 提交日期 2 一、 内容摘要: 运用本学期所学知识设计一个能够完成简单四则运算的计算器; 以 Myeclipse 作为开发环境, 结合之前所学的 Java 基础知识共同完成。 该计算器的计算结果保留了两位小数; 这里简单介绍设计思想: 构造出一个界面, 然后往面板上粘贴各个组件,包括按钮、 标签、 文本框等。 二、 设计目的: 通过课程设计加深对 Java 程序设计的理解, 掌握 Java 程序开发的基本方法, 把课堂上
2、所学到的多个单元串到一起, 提高解决问题和分析问题的能力, 具体体现在以下几个方面: 1、 了解 Java 开发一般应用程序的方法和步骤; 2、 进一步强化类的定义, 掌握类的继承、 接口; 3、 熟练掌握变量、 数组的应用; 4、 熟悉图形用户界面中常用组件的使用, 掌握事件处理机制; 5、 了解数据库连接技术 JDBC、 网络编程和多线程机制。 三、 设计内容: 3. 1 需求分析 3. 1. 1 计算器的基本功能: 加法运算: 用+ 按钮进行运算; 减法运算: 用- 按钮进行运算; 乘法运算: 用 * 按钮进行运算; 除法运算: 用 / 按钮进行运算; 清零键: 用 清空 按钮实现; 3
3、. 2 用户界面设计 该计算器程序的设计: 用户界面包括 Swing 组件, 不过程序中大都使用的是 AWT 组件. import java. awt. *; 在 AWT 组件中: (1) 、 使用了面板和按钮: mianban 1, 2, 3; private JPanel mianBan1 = new JPanel() ; /面板 1 存放, 窗口、 和清空按钮 chuangKou. add(mianBan1, BorderLayout. NORTH) ; /面板 1, 存放窗口的北边 private JPanel mianBan2 = new JPanel() ; /存放其他按钮 mia
4、nBan2. add(s7) ; mianBan2. add(s8) ; mianBan2. add(s9) ; mianBan2. add(jia) ; mianBan2. add(s4) ; mianBan2. add(s5) ; mianBan2. add(s6) ; mianBan2. add(jian) ; mianBan2. add(s1) ; mianBan2. add(s2) ; mianBan2. add(s3) ; mianBan2. add(cheng) ; mianBan2. add(s0) ; mianBan2. add(dian) ; mianBan2. add(d
5、eng) ; mianBan2. add(chu) ; mianBan2. setLayout(new GridLayout(4, 4) ) ; / 面板 2 的布局模式 Button s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; Button jia, jian, cheng, chu; Button 清空, = , . ; private JPanel mianBan3 = new JPanel() ; /存放标签 JLabel biaoQian0 = new JLabel(- 屠 式 计算器-) ; /标签 mianBan3. add(biaoQian0
6、) ; chuangKou. add(mianBan3, BorderLayout. SOUTH) ; / 位于窗口南边 (2)、 界面属性: chuangKou. setVisible(true) ; /可见 chuangKou. pack() ; /把容器包起来 chuangKou. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE) ; / 直接退出 shuRuKuang. setHorizontalAlignment(JTextField. RIGHT ) ; / 编 辑 框文字右对齐 /chuangKou. setResizable(fal
7、se) ; /不能调大小 chuangKou. setLocation(500, 300) ; /坐标 chuangKou. setSize(330, 250) ; /大小 (3)、 给按钮添加背景颜色: jia. setBackground(new Color(255, 50, 50) ) ; jian. setBackground(new Color(255, 50, 50) ) ; cheng. setBackground(new Color(255, 50, 50) ) ; chu. setBackground(new Color(255, 50, 50) ) ; dian. setB
8、ackground(new Color(60, 200, 50) ) ; deng. setBackground(new Color(60, 200, 50) ) ; s0. setBackground(new Color(60, 200, 50) ) ; s1. setBackground(new Color(60, 200, 50) ) ; s2. setBackground(new Color(60, 200, 50) ) ; s3. setBackground(new Color(60, 200, 50) ) ; s4. setBackground(new Color(60, 200,
9、 50) ) ; s5. setBackground(new Color(60, 200, 50) ) ; s6. setBackground(new Color(60, 200, 50) ) ; s7. setBackground(new Color(60, 200, 50) ) ; s8. setBackground(new Color(60, 200, 50) ) ; s9. setBackground(new Color(60, 200, 50) ) ; qingKong. setBackground(new Color(200, 250, 100) ) ; /清除按钮颜色 mianB
10、an1. setBackground(new Color(200, 200, 255) ) ; /mianBan1 颜色 mianBan3. setBackground(new Color(200, 200, 255) ) ; /mianBan2 颜色 (4)、 事件监听: dian. addMouseListener(new OperationMouseListener() ) ; deng. addMouseListener(new OperationMouseListener() ) ; a、 注册四则运算监听 jia. addMouseListener(new YunSuanJianT
11、ing() ) ; jian. addMouseListener(new YunSuanJianTing() ) ; cheng. addMouseListener(new YunSuanJianTing() ) ; chu. addMouseListener(new YunSuanJianTing() ) ; b、 注册数字监听事件 s0. addMouseListener(new ShuZiJianTing() ) ; s1. addMouseListener(new ShuZiJianTing() ) ; s2. addMouseListener(new ShuZiJianTing()
12、) ; s3. addMouseListener(new ShuZiJianTing() ) ; s4. addMouseListener(new ShuZiJianTing() ) ; s5. addMouseListener(new ShuZiJianTing() ) ; s6. addMouseListener(new ShuZiJianTing() ) ; s7. addMouseListener(new ShuZiJianTing() ) ; s8. addMouseListener(new ShuZiJianTing() ) ; s9. addMouseListener(new S
13、huZiJianTing() ) ; c、 清空监听器: qingKong. addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) shuRuKuang. setText() ; /清空编辑框 d、 数字按钮监听器: private class ShuZiJianTing implements MouseListener public void mouseClicked(MouseEvent e) if(shuRuKuang. getText() . trim() . equals(0
14、) ) /如果文本框已 经是0, 结果还是 0 shuRuKuang. setText(JButton) e. getSource() ) . getText() . trim() ) ; shuRuKuang. setText(shuRuKuang. getText() . concat(JButton) e. getSource() ) . getText() . trim() ) ) ; public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed
15、(MouseEvent e) public void mouseReleased(MouseEvent e) e、 运算按钮监听器: private class YunSuanJianTing implements MouseListener /如果输入的是运算符号, 保存第一个结果和运算符号 public void mouseClicked(MouseEvent e) num1 = shuRuKuang. getText() . trim() ; shuRuKuang. setText() ; operator = (JButton) e. getSource() ) . getText()
16、 . trim() ; public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) f、 小数点、 等号监听器: private class OperationMouseListener implements MouseListener public void mouseClicked(MouseEvent e) if(e. getSource(
17、) = dian) String text = shuRuKuang. getText() . trim() ; /如果按了小数点, 如果文本框已经有小数点, 不做任何操作, 否则在结果后面加上小数点 if(text. indexOf(. ) = -1) shuRuKuang. setText(text. concat(. ) ) ; else if(e. getSource() = deng) /如果是等号 if(!operator. trim() . equals() ) if(!shuRuKuang. getText() . trim() . equals() ) double resu
18、lt = 0D; if(operator. equals(+) ) /执行加法运算 result = Double. parseDouble(num1) + Double. parseDouble(shuRuKuang. getText() . trim() ) ; else if(operator. equals(-) ) /减法运算 result = Double. parseDouble(num1) - Double. parseDouble(shuRuKuang. getText() . trim() ) ; else if(operator. equals(*) ) /乘法运算 re
19、sult = Double. parseDouble(num1) * Double. parseDouble(shuRuKuang. getText() . trim() ) ; else if(operator. equals(/) ) /除法运算 result = Double. parseDouble(num1) / Double. parseDouble(shuRuKuang. getText() . trim() ) ; /格式化最终结果, 保留两位小数点 shuRuKuang. setText(new DecimalFormat(0. 00) . format(result) )
20、; 四、 测试 4. 1 加法运算(实现 49+57=106): 4. 2 减法运算(实现 48-79= -31): 4. 3 乘法运算(684*211=144324): 4. 4 除法运算(251/51=4. 92): 4. 5 清空: 任何情况下鼠标点击清空按钮都可以进行清空操作 4. 6 计算器整界面运行效果: 五、 设计缺陷: 5. 1 该计算器只能进行简单的加、 减、 乘、 除四则运算, 不能进行科学计算比如: 幂运算、 对数运算、 三角函数运算等。 5. 2 在进行运算的过程中, 输入数值以后当按下加减乘除任意一个按钮时数值会自 动清空, 这带来的不便之处在于有时候会忘记输入的值。
21、 5. 3 在不用鼠标的情况下不能对该计算器进行操作, 把键盘上小键盘各个按键与界面各个按钮相对应起来操作会更加方便。 六、 总结体会: 做完这次程序设计, 我学到了很多知识, 我选的是计算机程序, 大家都说计算机程序比较简单。 可我觉得虽然简单, 但也有许多不清楚的地方。 尤其是刚开始编写程序的时候, 好多地方都出错, 做着总是比想象的难。 学习 JAVA 半年了, 没学习前只是听说过, 现在对 JAVA 也有了一些更深入的了解。 比起 C 语言, JAVA 语言的确先进了许多。 计算器的设计, 首先就是考虑图形界面怎么分布。 在头脑里大概有了思路。 我想设计一个计算器除了可以进行基本的加减
22、乘除外还具备求平方、 倒数和其他之类的一些功能。 可到最后我也只是弄出了加减乘除。 我们用了 十天的时间做程序设计, 十天虽然不长, 但我的收获挺大。 把以前好多不清晰的知识在老师的指导下, 我慢慢懂了许多。 用了好七天的时间勉强的做了一个程序出来。 通过这次课程设计, 我体会了 JAVA 广泛的运用性。 由于时间仓促还有很多有待完善的地方, 在今后的学习中, 我会加倍努力去做好。 附: 程序全部代码 import java. awt. *; import javax. swing. *; import java. awt. event. *; import java. text. Decim
23、alFormat; public class JiSuanQi public JFrame chuangKou = new JFrame(计算器) ; private JPanel mianBan1 = new JPanel() ; private JPanel mianBan2 = new JPanel() ; private JPanel mianBan3 = new JPanel() ; private JTextField shuRuKuang = new JTextField(20) ; private JButton qingKong = new JButton(清 空) ; pr
24、ivate JButton jia = new JButton(+) ; private JButton jian = new JButton(-) ; private JButton cheng = new JButton(*) ; private JButton chu = new JButton(/) ; private JButton dian = new JButton(. ) ; private JButton deng = new JButton(=) ; private JButton s0 = new JButton(0) ; private JButton s1 = new
25、 JButton(1) ; private JButton s2 = new JButton(2) ; private JButton s3 = new JButton(3) ; private JButton s4 = new JButton(4) ; private JButton s5 = new JButton(5) ; private JButton s6 = new JButton(6) ; private JButton s7 = new JButton(7) ; private JButton s8 = new JButton(8) ; private JButton s9 =
26、 new JButton(9) ; private String num1 = ; private String operator = ; public static void main(String args) new JiSuanQi() ; public JiSuanQi() mianBan1. add(shuRuKuang) ; mianBan1. add(qingKong) ; chuangKou. add(mianBan1, BorderLayout. NORTH) ; mianBan2. add(s7) ; mianBan2. add(s8) ; mianBan2. add(s9
27、) ; mianBan2. add(jia) ; mianBan2. add(s4) ; mianBan2. add(s5) ; mianBan2. add(s6) ; mianBan2. add(jian) ; mianBan2. add(s1) ; mianBan2. add(s2) ; mianBan2. add(s3) ; mianBan2. add(cheng) ; mianBan2. add(s0) ; mianBan2. add(dian) ; mianBan2. add(deng) ; mianBan2. add(chu) ; mianBan2. setLayout(new G
28、ridLayout(4, 4) ) ; chuangKou. add(mianBan2, BorderLayout. CENTER) ; JLabel biaoQian0 = new JLabel(-屠式计算器-) ; mianBan3. add(biaoQian0) ; chuangKou. add(mianBan3, BorderLayout. SOUTH) ; chuangKou. setVisible(true) ; chuangKou. pack() ; chuangKou. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE) ; shuR
29、uKuang. setHorizontalAlignment(JTextField. RIGHT ) ; chuangKou. setLocation(500, 300) ; chuangKou. setSize(330, 250) ; jia. setBackground(new Color(255, 50, 50) ) ; jian. setBackground(new Color(255, 50, 50) ) ; cheng. setBackground(new Color(255, 50, 50) ) ; chu. setBackground(new Color(255, 50, 50
30、) ) ; dian. setBackground(new Color(60, 200, 50) ) ; deng. setBackground(new Color(60, 200, 50) ) ; s0. setBackground(new Color(60, 200, 50) ) ; s1. setBackground(new Color(60, 200, 50) ) ; s2. setBackground(new Color(60, 200, 50) ) ; s3. setBackground(new Color(60, 200, 50) ) ; s4. setBackground(ne
31、w Color(60, 200, 50) ) ; s5. setBackground(new Color(60, 200, 50) ) ; s6. setBackground(new Color(60, 200, 50) ) ; s7. setBackground(new Color(60, 200, 50) ) ; s8. setBackground(new Color(60, 200, 50) ) ; s9. setBackground(new Color(60, 200, 50) ) ; qingKong. setBackground(new Color(200, 250, 100) )
32、 ; mianBan1. setBackground(new Color(200, 200, 255) ) ; mianBan3. setBackground(new Color(200, 200, 255) ) ; dian. addMouseListener(new OperationMouseListener() ) ; deng. addMouseListener(new OperationMouseListener() ) ; jia. addMouseListener(new YunSuanJianTing() ) ; jian. addMouseListener(new YunSuanJianTing() ) ; cheng. addMouseListener(new YunSuanJianTing() ) ; chu. addMouseListener(new YunSuanJianTing() ) ; s0. addMouseListener(new ShuZiJianTing() ) ; s1. addMo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1