1、 淮 海 工 学 院 计算机 工程学院 课程设计报告 设计名称: 面向对象 课程设计 选题名称: 简单 计算器的设计与实现 姓 名: 严超 学 号: 110912128 专业班级: 网 络 工程 网络 091 系 ( 院): 计算机 工程学院 设计时间: 2011.6.132011.6.24 设计地点: 软件实验室、教室 指导教师评语: 签名: 年 月 日 成绩: 面向对象 课程设计报告 第 2 页,共 18 页 1课程设计目的 面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习 完该课程后进行的 一次 较全面的综合练习。其目的在于通过实践加深学生对面向对象程 序设计的理论、
2、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计的基本 方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。 熟练运用 GUI 标准组件和布局管理器,正确合理地利用常用 AWT 和 Swing 组件进行图形界面的设计;理解 Java 的事件处理机制,正确运用 Java 的事件处理机制及事件委托模型,编写图形界面组件的事件处理程序;理解 Java 多线程机制,掌握线程使用方法。 2课程设计任务与要求: 课程设计可选用 NetBeans、 Eclipse、 JBuilder 等作为开发平台以提 高开发效率,尽可能熟练掌握其中一种集成开发环境 。建议采用 UML 建模技术进行系
3、统的分析设计,在 Visio 中 画出系统用例图和类图,并将 UML 图复制到设计报告中 。 通过这次设计,要求掌握以下内容: 1) 面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用 2) 类、包、接口的定义与使用 3) 常用工具类与算法的实现(数组、向量、字符串、链表) 4) Java 常用标准 GUI 组件及其事件处理 5) Java 的异常处理机制 6) Java 的数据库连接技术 7) Java 的多线程技术与动画制作 Java 的网络编程 面向对象 课程设计报告 第 3 页,共 18 页 3课程设计说明书 一、 需求分析 现在生活中,银行、超市、酒店等只要与买卖有关的行
4、业甚至可以说任何行业都离不开计算器,连我们学习中也不可避免的用到计算器,在此设计一个简单计算器提供简单的加、减、乘、除运算。 系 统使 用 者加减乘清 零除*二、 概要 设计 计算器的实现主要包含图形界面的排版和计算方法 图形界面: 1.定义一些按钮和文本框并初始化 2.将这些按钮和文本框进行排版、美化 面向对象 课程设计报告 第 4 页,共 18 页 3.为按钮注册事件监听器 4.设计计算方法 5.进行最后整合 计 算 按钮响应 计算结果 除 按钮添加 文本框、按钮初始化 减 加 乘 计算方法 界 面排版、美化 初始化 定义文本框、按钮 面向对象 课程设计报告 第 5 页,共 18 页 三、
5、 详细设计 1.加载工具包 2. public void init()/初始化按钮、文本框并进行界面排版 1).定义界面中的数字按钮和文本框 2).按钮出事初始化并确定其值,确定文本框大小 3).将界面进行排版、美化 4).按钮响应 3. public void actionPerformed(ActionEvent e)/动作事件,各按钮响应 ;判断是什么运算 if()/判断它是不是加法运算 else if(operator=bsubtract)判断它是不是减法运算 else if(operator=bmultiply)判断它是不是乘法运算 else if(operator=bdivisio
6、n)判断它是不是除法运算 else if(operator=bdelete) 判断它是不是 清零 else if(operator=bequals) 判断它是不是 求值 4. public String result() 通过前面的判断进行求值 5. public class Calculator/计算 调用函数,将代码进行整合形成完整的程序 面向对象 课程设计报告 第 6 页,共 18 页 4课程设计成果 /对界面进行初始化、排版、美化 frame =new JFrame(“欢 迎使用计算器 “);/初始化框架,设置标题 text =new JTextField(18);/文本框长度 tex
7、t.setHorizontalAlignment(JTextField.RIGHT);/文本框里显示数据是从右到左 text.setEditable(false);/文本框不可以编辑 text.setText(“0“);/文本框初始值为 0 text.setForeground(Color.blue);/框架 颜色设为蓝色 container =frame.getContentPane();/取得内容面板 b0 =new JButton(“0“);/设置按钮的值 b1 =new JButton(“1“); b2 =new JButton(“2“); b3 =new JButton(“3“);
8、b4 =new JButton(“4“); b5 =new JButton(“5“); b6 =new JButton(“6“); b7 =new JButton(“7“); b8 =new JButton(“8“); b9 =new JButton(“9“); badd =new JButton(“+“); bsubtract =new JButton(“-“); bmultiply =new JButton(“*“); bdivision =new JButton(“/“); bequals =new JButton(“=“); bdelete =new JButton(“c“);/清零
9、bdian=new JButton(“.“); pane=new JPanel(); pane1 =new JPanel(); pane2 =new JPanel(); 面向对象 课程设计报告 第 7 页,共 18 页 pane3 =new JPanel(); pane4 =new JPanel(); pane1.setLayout(new GridLayout(1,4);/面板布局, 1行 4列 pane2.setLayout(new GridLayout(1,4); pane3.setLayout(new GridLayout(1,4); pane4.setLayout(new GridL
10、ayout(1,5); /设计界面,将其美化 pane.add(text); pane1.add(b7); pane1.add(b8); pane1.add(b9); pane1.add(badd); pane2.add(b4); pane2.add(b5); pane2.add(b6); pane2.add(bsubtract); pane3.add(b1); pane3.add(b2); pane3.add(b3); pane3.add(bmultiply); pane4.add(b0); pane4.add(bdian); pane4.add(bdelete); pane4.add(be
11、quals); pane4.add(bdivision); container.setLayout(new GridLayout(5,1);/将下面 5个组件添加到界面中 container.add(pane); container.add(pane1); container.add(pane2); container.add(pane3); 面向对象 课程设计报告 第 8 页,共 18 页 container.add(pane4) /监听事件处理,判断运算是属于“ +, -, /, *”中的哪个 ActionListener a =new ActionListener() public vo
12、id actionPerformed(ActionEvent e)/动作事件,各按钮响应 JButton operator=(JButton)e.getSource(); if(operator=badd)/判断它是不是加法运算 operation=“add“; firstNum =text.getText(); flag=1; else if(operator=bsubtract)/判断它是不是减法运算 operation=“subtract“; firstNum =text.getText(); flag=1; else if(operator=bmultiply)/判断它是不是乘法运算
13、operation=“multiply“; firstNum =text.getText(); flag=1; else if(operator=bdivision)/判断它是不是除法运算 operation=“division“; firstNum =text.getText(); flag=1; else if(operator=bdelete) 面向对象 课程设计报告 第 9 页,共 18 页 text.setText(“0“);/清零 flag=1; else if(operator=bequals) secondNum =text.getText(); text.setText(re
14、sult();/调用 result()函数 flag=1; else if(flag=0) String str =text.getText(); if(str.length()=28)/文本框最长显示 28 else if(new Double(str).doubleValue()=0) text.setText(operator.getActionCommand(); else text.setText(str+operator.getActionCommand(); else text.setText(operator.getActionCommand(); flag=0; 面向对象 课
15、程设计报告 第 10 页,共 18 页 ; /计算方法 public String result() double num1 =(new Double(firstNum).doubleValue(); double num2 =(new Double(secondNum).doubleValue(); if(operation.equals(“add“) return (“+(num1+num2); else if(operation.equals(“subtract“) return(“+(num1-num2); else if(operation.equals(“multiply“) return(“+(num1*num2); else if(operation.equals(“division“) return(“+(num1/num2); return(“0“);