1、Java课程设计计算器软 件 学 院课程设计报告书课程名称 面向对象程序设计 设计题目 模拟科学计算器 专业班级 学 号 姓 名 指导教师 2014 年 06月目录1 设计时间.12 设计目的.13 设计题目.14 设计内容.14.1设计任务.14.2总体设计.14.2.1包的描述.14.2.2类的描述.14.3详细设计.14.3.1页面设计.24.4程序代码.25功能模块实现.96运行与测试.97总结与展望.11参考文献.12成绩评定.121 设计时间2014年6月16日2014年6月20日2 设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较
2、全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。3设计题目模拟科学计算器4设计内容 4.1设计任务 界面模拟Windows中的计算器程序。实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。实现要点:添加相关组件并进行按钮事件处理。4.2总体设计4.2.1 包的描述import java.awt.* ;import java.awt.event.* ;import java.text.DecimalFormat
3、;import javax.swing.*;4.2.2 类的描述public Calculator()private void init()private void addButton()private void getResult ()4.3详细设计4.3.1页面设计图1 计算器界面4.4 程序代码import java.awt.*;import java.awt.event.*;import java.text.DecimalFormat;import javax.swing.*;public class Calculator extends JFrame private JTextFie
4、ld tf; private JPanel panel1, panel2, panel3; private String back; private boolean IfResult = true, flag = false; private String oper = =; private double result = 0; private Num numActionListener; private DecimalFormat df; public Calculator() super(科学计算器);/设置标题栏 df = new DecimalFormat(#.#);/保留四位小数 t
5、his.setLayout(new BorderLayout(10, 5); panel1 = new JPanel(new GridLayout(1, 4, 10, 10); panel2 = new JPanel(new GridLayout(4, 6, 5, 5);/4行6列 panel3 = new JPanel(new BorderLayout(5, 5); numActionListener = new Num();/实现数字监听 tf = new JTextField(); tf.setEditable(false);/文本区域不可编辑 tf.setBackground(Colo
6、r.white);/文本区域的背景色 tf.setHorizontalAlignment(JTextField.RIGHT);/文字右对齐 tf.setText(0); tf.setBorder(BorderFactory.createLoweredBevelBorder(); init();/对计算器进行初始化 private void init() JButton btns = new JButton(计算器); btns.setBorder(BorderFactory.createLoweredBevelBorder(); btns.setEnabled(false);/按钮不可操作 b
7、tns.setPreferredSize(new Dimension(20, 20); panel1.add(btns);/加入按钮 addButton(panel1, Backspace, new Clear(), Color.black); addButton(panel1, CE, new Clear(), Color.black); addButton(panel1, C, new Clear(), Color.black); addButton(panel2, sin, new Signs(), Color.magenta); addButton(panel2, 7, numActi
8、onListener, Color.blue); addButton(panel2, 8, numActionListener, Color.blue); addButton(panel2, 9, numActionListener, Color.blue); addButton(panel2, , new Signs(), Color.red); addButton(panel2, sqrt, new Signs(), Color.magenta); addButton(panel2, cos, new Signs(), Color.magenta); addButton(panel2, 4
9、, numActionListener, Color.blue); addButton(panel2, 5, numActionListener, Color.blue); addButton(panel2, 6, numActionListener, Color.blue); addButton(panel2, , new Signs(), Color.red); addButton(panel2, 1/x, new Signs(), Color.magenta); addButton(panel2, x2, new Signs(), Color.magenta); addButton(pa
10、nel2, 1, numActionListener, Color.blue); addButton(panel2, 2, numActionListener, Color.blue); addButton(panel2, 3, numActionListener, Color.blue); addButton(panel2, -, new Signs(), Color.red); addButton(panel2, %, new Signs(), Color.magenta); addButton(panel2, n!, new Signs(), Color.magenta); addBut
11、ton(panel2, +/-, new Clear(), Color.blue); addButton(panel2, 0, numActionListener, Color.blue); addButton(panel2, ., new Dot(), Color.blue); addButton(panel2, +, new Signs(), Color.red); addButton(panel2, =, new Signs(), Color.magenta); panel3.add(panel1, BorderLayout.NORTH); panel3.add(panel2, Bord
12、erLayout.CENTER); this.add(tf, BorderLayout.NORTH); this.add(panel3); pack(); this.setResizable(false);/窗口不可改变大小 this.setLocation(300, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); private void addButton(JPanel panel, String name, ActionListener action, Color color) JButton bt = new JBu
13、tton(name); panel.add(bt);/在面板上增加按钮 bt.setForeground(color);/设置前景(字体)颜色 bt.addActionListener(action);/增加监听事件 private void getResult (double x) if(oper = +)result += x; else if(oper = -)result -= x; else if(oper = )result *= x; else if(oper = )result /= x; else if(oper = =)result = x; tf.setText(df.f
14、ormat(result); class Signs implements ActionListener public void actionPerformed(ActionEvent e) String str = e.getActionCommand(); /* sqrt求平方根 */ if(str.equals(sqrt) double i = Double.parseDouble(tf.getText(); if(i=0) tf.setText(String.valueOf(df.format(Math.sqrt(i); else tf.setText(负数不能开平方根); /* %求
15、百分比 */ else if(str.equals(%) tf.setText(df.format(Double.parseDouble(tf.getText() / 100); /* 1/x求倒数 */ else if(str.equals(1/x) if(Double.parseDouble(tf.getText() = 0) tf.setText(除数不能为零); else tf.setText(df.format(1 / Double.parseDouble(tf.getText(); /* sin求正弦函数 */ else if(str.equals(sin) double i =
16、Double.parseDouble(tf.getText(); tf.setText(String.valueOf(df.format(Math.sin(i); /* cos求余弦函数 */ else if(str.equals(cos) double i = Double.parseDouble(tf.getText(); tf.setText(String.valueOf(df.format(Math.cos(i); /* n!求阶乘 */ else if(str.equals(n!) double i = Double.parseDouble(tf.getText(); if(i%2=
17、0)|(i%2=1)/判断为整数放进行阶乘操作 int j = (int)i;/强制类型转换 int result=1; for(int k=1;k 0) if(tf.getText().length() 1) tf.setText(tf.getText().substring(0, tf.getText().length() - 1); /使用退格删除最后一位字符 else tf.setText(0); IfResult = true; else if(tf.getText().length() 2) tf.setText(tf.getText().substring(0, tf.getTe
18、xt().length() - 1); else tf.setText(0); IfResult = true; else if(str = CE) tf.setText(0); IfResult = true; class Num implements ActionListener public void actionPerformed(ActionEvent e) String str = e.getActionCommand(); if(IfResult) tf.setText(); IfResult = false; if(str=) tf.setText(String.valueOf
19、(Math.PI); else if(str=e) tf.setText(String.valueOf(Math.E); else tf.setText(tf.getText().trim() + str); if(tf.getText().equals(0) tf.setText(0); IfResult = true; flag = true; class Dot implements ActionListener public void actionPerformed(ActionEvent e) IfResult = false; if(tf.getText().trim().inde
20、xOf(.) = -1) tf.setText(tf.getText() + .); public static void main(String args) new Calculator().setVisible(true); 5类图 (3)Clear类图(2)Signs类图 (1)Calculator类图 Calculator类tfpanel1Panel2Panel3IfResultoperresultdfcalculator()init()addButton()getResult()main()Signs类actionPerformed()Clear类actionPerformed()
21、(5)Dot类(4)Num类 Num类actionPerformed()Dot类actionPerformed()图4 Clear类图3 Signs类图6 Dot类图5 Num类图2 Calculator类6运行与测试1、 输入“3”图7 测试图输入 2、输出结果:求x2 图8 测试图结果 3、输出结果:求cos x图9 测试图结果4.输出结果:Backspace图10 测试图结果7总结与展望 一周的课程设计紧张而忙碌的度过了,通过本次课程设计我学到了好多,也发现了自己的好多不足!也真正体会了java的特点,非常的形象,真正的懂得了面向对象的含义。在此次课设中通过查阅很多资料和同学的互相帮助,
22、 程序设计时在阶乘函数的处理中遇到不少麻烦,以后有时间也要继续思考,不过还是完成了此次任务。另外按钮功能的实现也是本次课设的一大难点,怎样实现那些功能是关键。通过这次课设我又学会了好多函数。课程设计的部分程序是通过外部资料得到的,这使得我认识到查阅资料和开外多看书籍的重要性。但不主张照搬,因为那不是我们自己成果,要自己通过得到的知识点去消化理解,真正的弄懂这个内容,当我真正的投入到课程设计的制作当中后,发觉课程设计并不枯燥乏味,相反充满了乐趣。参考文献1屈辉立,陈可明,石武信.JSP网站编程教程M.第1版, 北京:北京希望电子出版社,2005 2白勇.用B/S模式构建在线考试系统J,重庆电力高等专科学校学报,2003,10(4): 100130. 3 VB数据库管理范例: 4刘万军,郑少京,王松波,梁清华Java6程序设计,清华大学出版社成绩评定成绩 教师签字
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1