




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计设计题目 计算器 学生姓名 XXXX 学 号 XXXXXXX 专业班级 电子商务一班 指导教师 XXXXXXX 2014年 11 月 21 日合肥工业大学课程设计任务书设计题目计算器成绩课程设计主要内容 计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。 综合掌握Java编程技巧及Java开发环境。 总体布局设计,该计算器总布局采用的是BorderLayout布局,然后里面又嵌套了一个BorderLayout布局,再在BorderLayout布局的区域里使用GridLayout布局。 按钮添加和属性设置、处理事件源发生的事件,计算器的整个程序只有一个大类Calculator类,Calculator类继承JFrame类,该类中有main()方法、Calculator()构造方、void init() 、getResult (double x) 、void addButton(JPanel panel,String name,ActionListener action, Color color)和内部类。Calculator类中又声明4个内部类Num、Dot、Signs、Clear,该4个内部类分别实现接口ActionListener,重写接口方法。指导教师评语建议:从学生的工作态度、工作量、设计(论文)的创造性、学术性、实用性及书面表达能力等方面给出评价。签名: 2014 年 月 日目 录1、 实验目的.42、 实验要求.43、 实验内容.4(1) 、功能设计.4(2) 、用户界面设计.5(3) 、概要设计.54、 实验步骤.5(1) 、需求分析.5(2) 、功能描述.5(3) 、界面设计代码. .5(4) 、接口代码处理事件.6五、实验结果. .9六、实验总结. .9七、附件.13(1)、程序流程图、类结构图. .14(2)、程序清单.15(3)、运行界面.18计算器1、 实验目的本课程设计旨在加深学生对课堂讲授内容的理解,使学生掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。综合掌握Java编程技巧及Java开发环境。2、 实验要求(1)、问题描述准确、规范;(2)、程序结构合理,调试数据准确、有代表性;(3)、界面布局整齐,人机交互方便;(4)、输出结果正确;(5)、正确撰写实验报告。(6) 、计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算,允许正负数间的运算。(7) 、通过计算器的设计,掌握Java编程的基本知识点。掌握基于AWT的图形用户界面的设计,如常用的的布局设计,容器中面板、按钮、文本框等组件的添加和布局;图形界面的事件处理方法,注册动作事件监听者;各类功能的实现思路,程序表达、及方法调用,尽量将重复用到的一段功能设计为方法。3、 实验内容(1) 、功能设计计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。(2)、用户界面设计主要布局,该计算器总布局采用的是BorderLayout布局,然后里面又嵌套了一个BorderLayout布局,再在BorderLayout布局的区域里使用GridLayout布局。 (3)、概要设计计算器的整个程序只有一个大类Calculator类,Calculator类继承JFrame类,该类中有main()方法、Calculator()构造方、void init() 、getResult (double x) 、void addButton(JPanel panel,String name,ActionListener action, Color color)和内部类。Calculator类中又声明4个内部类,该4个内部类分别实现接口ActionListener,重写接口方法。4、 实验步骤(1) 、需求分析界面简洁清晰,按钮美观、使用便捷、视觉效果好及符合用户使用规则,能使用该计算器进行基本功能计算。(2) 、功能描述该计算器程序除了具备加减乘除基本功能外,还有清零键C和退格键Backspace,和一些部分的科学计算方法,包括正负数开方、求倒、百分比、三角函数、阶乘、角度转换和对数运算等。(3) 、界面设计代码:用户界面包括Swing组件、AWT组件。使用import语句引入包中的类。import java.awt.event.*;import java.text.DecimalFormat;import java.awt.*;import javax.swing.*;public class Calculator extends JFrame /变量声明private JTextField tf;private JPanel panel1, panel2, panel3;public Calculator()/Calculator类的 构造方法super(计算器);/调用父类的构造方法pack();this.setResizable(true);/窗口可改变大小this.setBounds(300, 200, 600, 400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLayout(new BorderLayout(10, 5); panel1 = new JPanel(new GridLayout(1, 3, 10, 10);panel2 = new JPanel(new GridLayout(5, 6, 5, 5);/5行6列panel3 = new JPanel(new BorderLayout(5, 5);.Init();private void init()/调用addButton(JPanel panel,String name, ActionListener action, Color color)./ 统一设置按钮的的使用方式private void addButton(JPanel panel, String name, ActionListener action, Color color)JButton bt = new JButton(name);panel.add(bt); /在面板上增加按钮bt.setForeground(color); /设置前景(字体)颜色bt.addActionListener(action);/增加监听事件 (4) 、接口代码处理事件触发按钮时的事件处理:通过e.getActionCommand()获得按钮事件对象的命令名,再在if语句中根据操作命令符按情况分别处理事件,进行相应运算。符号按钮事件:/Calculator类中声明的内部类Signs类实现ActionListener接口class Signs implements ActionListenerpublic void actionPerformed(ActionEvent e) String str = e.getActionCommand();if(str.equals(sqrt)double i = Double.parseDouble(tf.getText();if(i=0)tf.setText(String.valueOf(df.format(Math.sqrt(i);elsetf.setText(负数不能开平方根);/ log求常用对数 public static double log(double a) 返回a的对数。else if(str.equals(log)double i = Double.parseDouble(tf.getText();if(i0)tf.setText(String.valueOf(df.format(Math.log(i);elsetf.setText(负数不能求对数);/ %求百分比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(除数不能为零);elsetf.setText(df.format(1/Double.parseDouble(tf.getText();/sin求正弦函数 public static double sin(double a)返回a的正弦值。else if(str.equals(sin)double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(Math.sin(i);/cos求余弦函数public static double log(double a)返回a的余弦值else if(str.equals(cos)double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(Math.cos(i);/tan求正切函数public static double log(double a)返回a的正切值。else if(str.equals(tan)double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(Math.tan(i);/n!求阶乘 else if(str.equals(n!)double i = Double.parseDouble(tf.getText();if(i%2=0)|(i%2=1)/判断为整数放进行阶乘操作int j = (int)i;/强制类型转换int result=1;for(int k=1;k=0)tf.setText(String.valueOf(df.format(Math.sqrt(i);elsetf.setText(负数不能开平方根);(3) 、Calculator类调用父类JFrame的构造方法,super(计算器);子类不能继承父类的构造方法,子类如果要使用父类的构造方法,必须在子类的构造方法的第一条语句中使用super关键字public Calucator()super(计算器);pack();this.setResizable(true);/窗口不可改变大小this.setBounds(300, 200, 600, 400);.(4) 、各个添加按钮、注册监视器并设置其它属性会占用极大篇幅,其代码没有什么特别之处但又必须使用其设置添加按钮。使用addButton()统一添加设置,然后在init()方法中调用该方法private void addButton(JPanel panel, String name, ActionListener action, Color color)JButton bt = new JButton(name);panel.add(bt); /在面板上增加按钮bt.setForeground(color); /设置前景(字体)颜色bt.addActionListener(action); /增加监听事件 private void init()addButton(panel1, Backspace, new Clear(), Color.red);addButton(panel1, CE, new Clear(), Color.red);addButton(panel1, C, new Clear(), Color.red);.(5) 、不同的类可以实现相同的接口。内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。不希望其它类使用某些特殊的类,即可将此类声明为自己的内部类public class Calucator extends JFrame .class Signs implements ActionListener /内部类public void actionPerformed(ActionEvent e) .最后,我们应该有效充分利用互联网学习,互联网上可以说是应有尽有,很多问题我们可以从互联网上找到,但我们不能把互联网当做一种依赖,要学会分析,取其精华去其糟粕。系统有待完善的地方1.不能对类似5+6*3的运算判断运算顺序。2.不能实现精度。3.程序比较长,还可以进行简化,实现接口的方法有待完善。4.对于运算方法等方面仍可以进行一些改进。5.这界面还应设有菜单的真实操作(包括:“编辑”,“查看”,“帮助”三个菜单项)6.程序里面可以写上键盘事件监听器接口,该计算器应该能实现此功能。7、 附件(1)、程序流程图类结构图(要有系统分析、设计的内容) (2) 程序清单 (要说明程序的功能和程序之间的关系,如程序很多,可以只附主要的程序代码) import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.text.DecimalFormat;public class Calucator extends JFrame private JTextField tf;private JPanel panel1, panel2, panel3;private boolean IfResult = true, flag = false;private String oper = =;private double result = 0;private Num numActionListener;private DecimalFormat df;public Calucator()super(计算器);/设置标题栏pack();this.setResizable(true);/窗口不可改变大小this.setBounds(300, 200, 600, 400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLayout(new BorderLayout(10, 5);panel1 = new JPanel(new GridLayout(1, 3, 10, 10);panel2 = new JPanel(new GridLayout(5, 6, 5, 5);panel3 = new JPanel(new BorderLayout(5, 5);df = new DecimalFormat(#.#);/保留四位小数numActionListener = new Num();/实现数字监听/文本域,即为计算器的屏幕显示区域 tf = new JTextField();tf.setEditable(false);/文本区域不可编辑tf.setBackground(Color.white);/文本区域的背景色tf.setHorizontalAlignment(JTextField.RIGHT);/文字右对齐tf.setText(0);tf.setBorder(BorderFactory.createLoweredBevelBorder();init();/对计算器进行初始化/ 统一设置按钮的的使用方式private void addButton(JPanel panel, String name, ActionListener action, Color color)JButton bt = new JButton(name);panel.add(bt); /在面板上增加按钮bt.setForeground(color); /设置前景(字体)颜色bt.addActionListener(action); /增加监听事件 / 初始化操作 添加按钮private void init()addButton(panel1, Backspace, new Clear(), Color.red);addButton(panel1, CE, new Clear(), Color.red);addButton(panel1, C, new Clear(), Color.red);addButton(panel2, 1/x, new Signs(), Color.magenta);addButton(panel2, log, new Signs(), Color.magenta);addButton(panel2, 7, numActionListener, Color.blue);addButton(panel2, 8, numActionListener, Color.blue);addButton(panel2, 9, numActionListener, Color.blue);addButton(panel2, , new Signs(), Color.red);addButton(panel2, n!, new Signs(), Color.magenta);addButton(panel2, sqrt, new Signs(), Color.magenta);addButton(panel2, 4, numActionListener, Color.blue);addButton(panel2, 5, numActionListener, Color.blue);addButton(panel2, 6, numActionListener, Color.blue);addButton(panel2, , new Signs(), Color.red);addButton(panel2, sin, new Signs(), Color.magenta);addButton(panel2, x2, new Signs(), Color.magenta);addButton(panel2, 1, numActionListener, Color.blue);addButton(panel2, 2, numActionListener, Color.blue);addButton(panel2, 3, numActionListener, Color.blue);addButton(panel2, -, new Signs(), Color.red);addButton(panel2, cos, new Signs(), Color.magenta);addButton(panel2, x3, new Signs(), Color.magenta);addButton(panel2, 0, numActionListener, Color.blue);addButton(panel2, -/+, new Clear(), Color.blue);addButton(panel2, ., new Dot(), Color.blue);addButton(panel2, +, new Signs(), Color.red);addButton(panel2, tan, new Signs(), Color.magenta);addButton(panel2, %, new Signs(), Color.magenta);addButton(panel2, , numActionListener, Color.orange);addButton(panel2, e, numActionListener, Color.orange);addButton(panel2, , new Signs(), Color.orange);addButton(panel2, =, new Signs(), Color.red);panel3.add(panel1, BorderLayout.NORTH);panel3.add(panel2, BorderLayout.CENTER);this.add(tf,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灞桥健康小知识培训中心课件
- 植物生长模拟研究-洞察及研究
- 知识型培训课件
- 激光刻字专业知识培训课件
- 铁路事故人身伤害课件
- 知识付费培训赛道前景课件
- 知识付费培训班东莞常平课件
- 脊柱康复训练机制-洞察及研究
- 2024年西藏直机关公开遴选公务员笔试题及答案解析(B类)
- Unit 1 Helping at home Part A Let's spe课件2025-2026学年人教版英语四年级上册
- 六年级家长会课件
- 2025年安徽省淮南市【辅警协警】笔试模拟考试题(含答案)
- 废气处理活性炭吸附操作规范
- 2025年教科版新教材科学二年级上册教学计划(含进度表)
- 创伤急救基本知识培训课件
- 2025年农业农村科技基础知识考试题库(附含答案)
- 合同第三方见证人范本
- 学生心理健康教育干预措施
- DB32∕T 4652-2024 基于区块链技术的多中心药物临床试验管理系统开发指南
- 实验室生物安全知识培训考试试题(含答案)
- 2025年成人高考英语试题及答案
评论
0/150
提交评论