ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:158.53KB ,
资源ID:9227228      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9227228.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java计算器课程设计报告模拟科学计算器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java计算器课程设计报告模拟科学计算器.docx

1、Java计算器课程设计报告模拟科学计算器 模拟科学计算器一.概述1.程序具备的功能:(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除)以及三角函数的运算等等;(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。实现要点:添加相关组件并进行按钮事件处理。要求提交源程序。2课程设计的主要设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本,总体界面用布局管理器布局。布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一

2、次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除以及三角函数等一系列的运算。二.课程设计思路1.界面设计界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:2.功能介绍这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面

3、和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算 ;还能通过用户自己在文本框中输入数字,进行简单运算 ;如果输入有误时可以按Clear撤销后重新输入新数据 。三.设计过程以及源代码 程序流程图如下:UML图如下:附录源程序:import java.awt.*;import java.awt.event.*;import java.text.DecimalFormat;import javax.swing.*;public class Calucator extends JFrame private JT

4、extField tf; private JPanel panel1, panel2, panel3, panel4; private JMenuBar myBar; private JMenu menu1, menu2, menu3; private JMenuItem editItem1, editItem2, help1, help2, help3; private JRadioButtonMenuItem seeItem1, seeItem2;/单选框 private JCheckBoxMenuItem seeItem3;/复选框 private ButtonGroup bgb; pr

5、ivate String back; private boolean IfResult = true, flag = false; private String oper = =; private double result = 0; private Num numActionListener; private DecimalFormat df; public Calucator() super(科学计算器);/设置标题栏 df = new DecimalFormat(#.#);/保留四位小数 this.setLayout(new BorderLayout(10, 5); panel1 = n

6、ew JPanel(new GridLayout(1, 3, 10, 10); panel2 = new JPanel(new GridLayout(5, 6, 5, 5);/5行6列 panel3 = new JPanel(new GridLayout(5, 1, 5, 5); panel4 = new JPanel(new BorderLayout(5, 5); /* * 菜单栏 */ myBar = new JMenuBar(); menu1 = new JMenu(编辑(E); menu2 = new JMenu(查看(V); menu3 = new JMenu(帮助(H); menu

7、1.setFont(new Font(宋体, Font.PLAIN, 12); menu2.setFont(new Font(宋体, Font.PLAIN, 12); menu3.setFont(new Font(宋体, Font.PLAIN, 12); /* * 编辑栏 */ editItem1 = new JMenuItem(复制(C) Ctrl+C); editItem2 = new JMenuItem(粘贴(P) Ctrl+V); editItem1.setFont(new Font(宋体,Font.PLAIN,12); editItem2.setFont(new Font(宋体,Fo

8、nt.PLAIN,12); /* * 查看栏 */ seeItem1 = new JRadioButtonMenuItem(科学型(T); seeItem2 = new JRadioButtonMenuItem(标准型(S); seeItem3 = new JCheckBoxMenuItem(数字分组(I); seeItem1.setFont(new Font(宋体,Font.PLAIN,12); seeItem2.setFont(new Font(宋体,Font.PLAIN,12); seeItem3.setFont(new Font(宋体,Font.PLAIN,12); /* * 帮助栏

9、*/ help1 = new JMenuItem(帮助主题(H); help2 = new JMenuItem(关于计算器(A); help1.setFont(new Font(宋体,Font.PLAIN,12); help2.setFont(new Font(宋体,Font.PLAIN,12); bgb = new ButtonGroup();/选项组 menu1.add(editItem1); menu1.add(editItem2); menu2.add(seeItem1); menu2.add(seeItem2); menu2.addSeparator();/添加一条分割线 menu2

10、.add(seeItem3); menu3.add(help1); menu3.addSeparator();/添加一条分割线 menu3.add(help2); myBar.add(menu1); myBar.add(menu2); myBar.add(menu3); this.setJMenuBar(myBar); numActionListener = new Num();/实现数字监听 /* * 文本域,即为计算器的屏幕显示区域 */ tf = new JTextField(); tf.setEditable(false);/文本区域不可编辑 tf.setBackground(Colo

11、r.white);/文本区域的背景色 tf.setHorizontalAlignment(JTextField.RIGHT);/文字右对齐 tf.setText(0); tf.setBorder(BorderFactory.createLoweredBevelBorder(); init();/对计算器进行初始化 /* * 初始化操作 * 添加按钮 */ private void init() addButton(panel1, Backspace, new Clear(), Color.red); addButton(panel1, CE, new Clear(), Color.red);

12、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, Colo

13、r.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, numActionListen

14、er, 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, numActio

15、nListener, 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

16、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

17、 Signs(), Color.orange); addButton(panel2, =, new Signs(), Color.red); JButton btns = new JButton(计算器); btns.setBorder(BorderFactory.createLoweredBevelBorder(); btns.setEnabled(false);/按钮不可操作 btns.setPreferredSize(new Dimension(20, 20); panel3.add(btns);/加入按钮 addButton(panel3, MC, null, Color.red);/

18、用于清除存储区中的数值 addButton(panel3, MR, null, Color.red);/可将存储区中的数调出到显示栏中 addButton(panel3, MS, null, Color.red);/存储当前的显示值 addButton(panel3, M+, null, Color.red);/将当前显示的数与存储区中的数相加 panel4.add(panel1, BorderLayout.NORTH); panel4.add(panel2, BorderLayout.CENTER); this.add(tf, BorderLayout.NORTH); this.add(pa

19、nel3, BorderLayout.WEST); this.add(panel4); pack(); this.setResizable(false);/窗口不可改变大小 this.setLocation(300, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* * 统一设置按钮的的使用方式 * param panel * param name * param action * param color */ private void addButton(JPanel panel, String name, Actio

20、nListener action, Color color) JButton bt = new JButton(name); panel.add(bt);/在面板上增加按钮 bt.setForeground(color);/设置前景(字体)颜色 bt.addActionListener(action);/增加监听事件 /* * 计算器的基础操作(+ - ) * param x */ private void getResult (double x) if(oper = +)result += x; else if(oper = -)result -= x; else if(oper = )re

21、sult *= x; else if(oper = )result /= x; else if(oper = =)result = x; tf.setText(df.format(result); /* * 运算符号的事件监听 */ class Signs implements ActionListener public void actionPerformed(ActionEvent e) /* * 用ActionEvent对象的getActionCommand()方法 * 取得与引发事件对象相关的字符串 */ String str = e.getActionCommand(); /* sq

22、rt求平方根 */ if(str.equals(sqrt) double i = Double.parseDouble(tf.getText(); if(i=0) /* * String.valueOf() 转换为字符串 * df.format() 按要求保留四位小数 * Math.sqrt() 求算数平方根 */ tf.setText(String.valueOf(df.format(Math.sqrt(i); else tf.setText(负数不能开平方根); /* log求常用对数 */ else if(str.equals(log) double i = Double.parseDo

23、uble(tf.getText(); if(i0) tf.setText(String.valueOf(df.format(Math.log(i); else tf.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(除数不能为零); else t

24、f.setText(df.format(1 / Double.parseDouble(tf.getText(); /* sin求正弦函数 */ else if(str.equals(sin) double i = 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

25、.format(Math.cos(i); /* tan求正切函数 */ 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;

26、for(int k=1;k=j;k+) result *= k; tf.setText(String.valueOf(result); else tf.setText(无法进行阶乘); /* x2求平方 */ else if(str.equals(x2) double i = Double.parseDouble(tf.getText(); tf.setText(String.valueOf(df.format(i*i); /* x3求立方 */ else if(str.equals(x3) double i = Double.parseDouble(tf.getText(); tf.setT

27、ext(String.valueOf(df.format(i*i*i); /* 角度转换 */ /* * 将角度值转换成弧度值,方便三角函数的计算 */ else if(str.equals() double i = Double.parseDouble(tf.getText(); tf.setText(String.valueOf(i/180*Math.PI); else if(flag) IfResult = false; if(IfResult) oper = str; else getResult(Double.parseDouble(tf.getText(); oper = str;

28、 IfResult = true; /* * 清除按钮的事件监听 */ class Clear implements ActionListener public void actionPerformed(ActionEvent e) /* * 用ActionEvent对象的getActionCommand()方法 * 取得与引发事件对象相关的字符串 */ String str = e.getActionCommand(); if(str = C) tf.setText(0); IfResult = true; result = 0; else if(str = -/+) double i = 0 - Double.parseDouble(tf.getText().trim(); tf.setText(df.form

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1