版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上保存计算过程的计算器1.课程设计的目的随着计算机技术的飞速发展,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需要,保存计算过程的计算器更是能够让用户随时随地的查找以前的计算过程。保存计算过程的计算器正是在这样的市场需求之下研发的,目的旨在帮助用户快速准确的得到计算结果。掌握Java语言编程的基础知识并能熟练运用,熟悉类声明与对象的使用,理解委托时间处理模型,了解Java语言的图形用户界面的设计知识,运用JCreator编写简单计算器程序,并实现其功能 。2.设计方案论证2.1需求分析设计一个图形界面的带保存过程的计算器
2、应用程序,完成简单的算术过程。设计的计算器应用程序除了普通的计算功能外,还有n次方、算术平方根、正弦函数、对数、随机取值、退格、清零等功能。程序主要是设计一个计算器的界面,并练习使用事件监听器处理数据的输入,并完成相关计算。用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的过程将被显示在窗口右边的文本框中,另外使用程序自带的保存功能将计算过程保存到想要的地方。2.2设计思路本应用程序继承自框架类(Frame),此程序不使用布局管理器,将单行输入显示文本框、各个按钮功能、计算过程显示区加入到同一个面板内,直接添加到各自区域。同时注册按钮时间监听器。如:b0 = new JButton(0
3、);b0.addActionListener(new ActionListener()事件监听器中的事件处理方法void actionPerformed(ActionEvent e), 完成主要事件的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(“1”,“2”,“3”,“9”,“0”)、运算符按钮事件(“+”,“-”, “*”,“/”)、正负号按钮事件(“”)、小数点按钮事件(“.”)、等号按钮事件(“=”)、n次方按钮事件(“xy”)、算术平方根按钮事件(“”)、正弦函数按钮事件(“sin”)、对数函数按钮事件(“log”)、随机取值按钮事件(“R”)、PI按钮事件(“”)、退格按钮
4、事件(“”)、清零按钮事件(“C”)、保存复制清除按钮事件(“保存”,“复制”,“清除”)。2.3设计方法将数字键与其他键分别进行监听,一个单行文本框用来显示输入的数据,str用来存放每次录入的数据,数据与字符录入都通过按键来触发事件,单行文本框设置为不可编辑、下沉。然后对所有的button进行监听,当按到“+,-,*,/”按钮时,将之前输入的数字存储到s中,输入的运算符通过变量operatorchar来储存,当再输入数字后遇到“=”时,便将运算符后的数字存储到变量s2里,接着调用“+,-,*,/”运算函数进行运算,将结果用s1保存起来,并显示 在单行文本框中。退格按钮事件只需将输入的数据字符
5、型重新编辑后,把最后一个数字消去再重新显示出来,清空按钮即是将所有变量初始化。求n次方、开方、正弦函数和对数函数可调用系统Math类的静态方法t1(),随机取值设定当事件发生时100以内的正数随机出现。2.4功能模块设计按下数字键在文本框上会显示数字,这是计算器最基本的功能;在任何时候按下“+-”键,计算器文本框上的数字置相反数;右边一个文本框显示计算过程,上面一个文本框显示输入的数字;当按下的运算符号时前面已经按下过运算符号时,右边一个文本框显示上一个运算符号以及两个数之间的运算结果;按下清除“C”键,数据被全部清除;点击右侧“保存”按钮,可保存计算过程。2.4.1基本运算模块功能(1)加法
6、两个数据相加操作,可以为正负数、小数。(2)减法两个数据相减操作,可以为正负数、小数。(3)乘法两个数据相乘操作,可以为正负数、小数。(4)除法两个数据相除操作,可以为正负数、小数。2.4.2特殊运算模块功能(1)n次方求一个自然数m的n次方。(2)算术平方根求一个非负整数的算术平方根。(3)正弦函数求一个自然数的正弦值。(4)对数函数求一个正数以10为底的对数。(5)随机函数随机出现一个0100以内的整数。2.4.3保存计算过程模块(1)保存:选择保存位置、输入保存文件名称及格式,确定完成保存。(2)复制:复制运算过程区域内容。(3)清除:清除运算过程区域所有内容。系统结构图,如图1所示。计
7、算器标题栏文本框按键计算过程区计算器文本框0-9、+、-、*、/、=、. 、C、xy、sin、log、R计算过程保存区域保存复制清除选择保存位置、输入保存名称格式确定完成保存图1 系统结构图主要程序运算过程流程图,如图2所示。开始初始化数据退格数字否删除输入的数是否运算符输出数字结束进行计算是否等号是是输出结果否清除否初始化变量图2 运算过程流程图3.设计结果与分析编写Java程序,开发环境为JCreator,程序包含jisuan.java和jisq.java两个java源文件。其中,jisuan.java为程序的主类,jisq.java内包含程序主界面设计、各类算法设计以及保存计算过程等部分
8、。程序经过检查修改无误后运行得到如下运行结果。(1)计算器程序主界面,如图3所示。图3 计算器主界面(2)各种运算界面,如图4所示。图4 运算界面(3)计算器显示框清零操作,如图5所示。图5 清零操作(4)保存计算过程,如图6所示。图6 保存计算过程(5)查看保存后文件,如图7所示。图7 保存文件(6)点击“清除”按钮,清除计算过程区内容,清除内容后,界面返回程序主界面,计算过程显示区重新显示新的计算过程。当输入数据有误时,程序会运行出错。(1)当程序进行除法运算除数为零时,程序运行错误,如图8所示。图8 除数为零错误(2)当程序进行求算术平方根运算根号下为负数时,程序运行错误,如图9所示。图
9、9 根号下为负数错误(3)当程序进行对数运算底数为非正数时,程序运行错误,如图10所示。图10 底数为非正数错误4.设计体会在这两周的Java课程设计中,我学到了很多很多,感受也是颇多。越来越发现实践的重要性。首先在做这次课程设计的时候,遇到了很多问题,这些问题让我改掉了自己暴躁的性格,学会了有耐心,耐心的去琢磨枯燥的代码,耐心的去敲代码,耐心的去调试代码,修改错误其中最大的问题的如何保存已经输入的数字或者符号进行运算,如何显示运算过程,经过多次研究和查询发现有很多种保存运算过程的方法,可以运用链表进行存储和提取数据,也可以用栈。另外,此次课程设计让我更了解熟悉了Java中的图形用户界面和它的
10、编程方式。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。最大的收获是在完成过程中培养的解决问题的能力。在做课程设计时必然会遇到困难,会有不会的东西,重要的不是现在会不会,而是遇到问题知道如何找到解决的途径。还使我对所学知识能够融会贯通,又不断丰富了新知识。Java计算器设计使得我对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。这两周磨平了尖锐的棱角,让我变的更加成熟,同时,更加加深对知识的理解和印象。在学习的过程中,我发现了许多简便方法,例如检查错误,尝试新方法,调试不懂语句的作用但是,这也是在深刻的教训中学到的,慢慢发现自己的Java语言学的还不
11、够好,理解的还不够深,知道的还少,有的甚至都没见过,所以,我的学习还有待于加强,并且要继续努力学习,吾生也有涯,而知也无涯,所以应该树立良好的学习理念,更何况现代信息技术高速发展,不学习就会落后,就会被社会所淘汰,因此要时刻提醒自己学习,学习新的科学技术。5.参考文献1刘升华.JAVA从入门到实践M. 北京:清华大学出版社 20092王晓东.算法设计与分析M. 北京:清华大学出版社 20033艾力江. Java2范例入门与提高M. 北京:清华大学出版社20034陈国君. Java2设计基础M. 北京:清华大学出版社 20095饶一梅. Java语言程序设计M. 北京:人民邮电出版社 2009附
12、录(1)jisuan.java/jisuan.javaimport javax.swing.*;public class jisuan public static void main(String args) jisq ji = new jisq();(2)jisq.java/ jisq.javaimport java.awt.*;import java.awt.event.*;import java.io.*;import java.text.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;publi
13、c class jisq extends JFrame implements ActionListener JPanel pane = new JPanel();String s, s1, s2;double t, t1, t2 = 0;JTextField fiel, show;JTextArea area;JButton b0, b1, b2, add, b3, b4, b5, b6, b7, b8, b9, sub, mul, dele, equ, dev;JButton sqrt, pow, random, sin, p, log, zf, tui, save, clear, copy
14、, point;public jisq() init();this.setBounds(123, 143, 500, 330);this.setTitle(计算器);this.setVisible(true);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);void init() pane.setLayout(null);this.add(pane);area = new JTextArea(); JScrollPane scrollPane = new JScrollPane(area,
15、JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setBounds(280, 70, 200, 140);area.setEditable(false);pane.add(scrollPane);fiel = new JTextField();fiel.setBounds(10, 30, 250, 30);fiel.setEditable(false);fiel.setFont(new Font(TimesRoman, Font.BOLD, 16);
16、/ 显示框中的数字大小和颜色fiel.setHorizontalAlignment(JTextField.RIGHT);/ 文字右对齐fiel.setBackground(Color.white);/ 设置背景颜色fiel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED);pane.add(fiel);show = new JTextField();show.setBounds(280, 30, 200, 30);show.setEditable(false);show.setFont(new Font(TimesRoman, Font.BO
17、LD, 16);/ 显示框中的数字大小、颜色show.setHorizontalAlignment(JTextField.CENTER);/ 文字居中pane.add(show);b0 = new JButton(0);b0.setBounds(10, 70, 43, 33);pane.add(b0);b0.addActionListener(new ActionListener() / 匿名类实例做监视器public void actionPerformed(ActionEvent e) if (e.getSource() = b0) fiel.setText(fiel.getText()
18、+ 0);show.setText(fiel.getText(););b1 = new JButton(1);b1.setBounds(59, 70, 43, 33);pane.add(b1);b1.addActionListener(this);b2 = new JButton(2);b2.setBounds(108, 70, 43, 33);pane.add(b2);b2.addActionListener(this);add = new JButton(+);add.setForeground(Color.BLUE);add.setBounds(157, 70, 43, 33);pane
19、.add(add);add.addActionListener(this);b3 = new JButton(3);b3.setBounds(10, 109, 43, 33);pane.add(b3);b3.addActionListener(this);b4 = new JButton(4);b4.setBounds(59, 109, 43, 33);pane.add(b4);b4.addActionListener(this);b5 = new JButton(5);b5.setBounds(108, 109, 43, 33);pane.add(b5);b5.addActionListen
20、er(this);sub = new JButton(-);sub.setForeground(Color.BLUE);sub.setBounds(157, 109, 43, 33);pane.add(sub);sub.addActionListener(this);b6 = new JButton(6);b6.setBounds(10, 148, 43, 33);pane.add(b6);b6.addActionListener(this);b7 = new JButton(7);b7.setBounds(59, 148, 43, 33);pane.add(b7);b7.addActionL
21、istener(this);b8 = new JButton(8);b8.setBounds(108, 148, 43, 33);pane.add(b8);b8.addActionListener(this);mul = new JButton(*);mul.setForeground(Color.BLUE);mul.setBounds(157, 148, 43, 33);pane.add(mul);mul.addActionListener(this);b9 = new JButton(9);b9.setBounds(10, 187, 43, 33);pane.add(b9);b9.addA
22、ctionListener(this);dele = new JButton(C);dele.setForeground(Color.red);dele.setBounds(59, 187, 43, 33);pane.add(dele);dele.addActionListener(this);equ = new JButton(=);equ.setBounds(108, 187, 43, 33);pane.add(equ);equ.addActionListener(this);dev = new JButton(/);dev.setForeground(Color.blue);dev.se
23、tBounds(157, 187, 43, 33);pane.add(dev);dev.addActionListener(this);point = new JButton(.);point.setBounds(10, 226, 43, 33);pane.add(point);point.addActionListener(this);p = new JButton();p.setBounds(59, 226, 43, 33);pane.add(p);p.addActionListener(this);zf = new JButton();zf.setBounds(108, 226, 43,
24、 33);pane.add(zf);zf.addActionListener(this);tui = new JButton();tui.setBounds(206, 70, 53, 33);pane.add(tui);tui.addActionListener(this);sqrt = new JButton();sqrt.setBounds(206, 148, 53, 33);pane.add(sqrt);sqrt.addActionListener(this);pow = new JButton(xy);pow.setBounds(206, 109, 53, 33);pane.add(p
25、ow);pow.addActionListener(this);random = new JButton(R);random.setBounds(156, 226, 43, 33);pane.add(random);random.addActionListener(this);sin = new JButton(sin);sin.setBounds(206, 187, 53, 33);pane.add(sin);sin.addActionListener(this);log = new JButton(log);log.setBounds(206, 226, 53, 33);pane.add(
26、log);log.addActionListener(this);save = new JButton(保存);save.setForeground(Color.RED);save.setBounds(280, 220, 60, 42);pane.add(save);save.addActionListener(this);copy = new JButton(复制);copy.setForeground(Color.BLACK);copy.setBounds(350, 220, 60, 42);pane.add(copy);copy.addActionListener(this);clear
27、 = new JButton(清除);clear.setForeground(Color.BLUE);clear.setBounds(420, 220, 60, 42);pane.add(clear);clear.addActionListener(this);save.setToolTipText(保存计算过程到文件); copy.setToolTipText(复制选中的计算过程); clear.setToolTipText(清除计算过程);public void actionPerformed(ActionEvent e) String str = e.getActionCommand()
28、;if (str.equals(1) fiel.setText(fiel.getText() + 1);show.setText(fiel.getText(); else if (str.equals(2) fiel.setText(fiel.getText() + 2);show.setText(fiel.getText(); else if (str.equals(3) fiel.setText(fiel.getText() + 3);show.setText(fiel.getText(); else if (str.equals(4) fiel.setText(fiel.getText(
29、) + 4);show.setText(fiel.getText(); else if (str.equals(5) fiel.setText(fiel.getText() + 5);show.setText(fiel.getText(); else if (str.equals(6) fiel.setText(fiel.getText() + 6);show.setText(fiel.getText(); else if (str.equals(7) fiel.setText(fiel.getText() + 7);show.setText(fiel.getText(); else if (
30、str.equals(8) fiel.setText( fiel.getText() +8);show.setText(fiel.getText(); else if (str.equals(9) fiel.setText(fiel.getText() + 9);show.setText(fiel.getText();else if (str.equals(清除) area.setText(null);else if (str.equals(.) fiel.setText(fiel.getText() + .);show.setText(fiel.getText(); else if (str
31、.equals(C) fiel.setText();show.setText(); if (str.equals(复制) area.copy(); if (str.equals(清除) area.setText(null); if (str.equals(保存) JFileChooser chooser = new JFileChooser(); int state = chooser.showSaveDialog(null); File file = chooser.getSelectedFile(); if (file != null & state = JFileChooser.APPR
32、OVE_OPTION) try String content = area.getText(); StringReader read = new StringReader(content); BufferedReader in = new BufferedReader(read); FileWriter outOne = new FileWriter(file); BufferedWriter out = new BufferedWriter(outOne); String str1 = null; while (str1 = in.readLine() != null) out.write(
33、str1); out.newLine(); in.close(); out.close(); catch (IOException exc) else if (str.equals() StringBuffer s = new StringBuffer(fiel.getText();if (s.length() 0) fiel.setText(s.delete(s.length() - 1, s.length().toString(); else if (str.equals() t = Math.PI;fiel.setText( + t);show.setText(fiel.getText(
34、);area.append( + =+fiel.getText()+ n); else if (str.equals(+) s = fiel.getText();s1 =+;fiel.setText();show.setText(s1); else if (str.equals(/) s = fiel.getText();s1 = /;fiel.setText();show.setText(s1); else if (str.equals(-) s = fiel.getText();s1 = -;fiel.setText();show.setText(s1); else if (str.equals(*) s = fiel.getText();s1 = *;fiel.setText();show.setText(s1); else if (str.equals() s = fiel.getText();t1 = Double.parseDouble(s);t = Math.sqrt(t1);fiel.setText(t + ); String process = sqrt( + s + ) = + t; sho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度合同公司管理制度与绿色供应链管理合同3篇
- 2025年度矿山安全生产标准化建设合同3篇
- 二零二五年度城市绿化工程项目物资采购合同风险识别与应对3篇
- 标题27:2025年度公司借用办公场地协议3篇
- 二零二五年度股东在公司设立前知识产权归属协议3篇
- 二零二五年度全新出售房屋买卖绿色认证合同3篇
- 二零二五年度共享办公房屋无偿使用及配套服务合同3篇
- 2025年农村合作建房质量安全监督协议范本
- 二零二五年度电影主题公园运营管理合同3篇
- 2025年度智能仓储物流系统整体转让协议版3篇
- 呼吸内科临床诊疗指南及操作规范
- 物业经理转正述职
- 贸易岗位招聘面试题及回答建议(某大型国企)2025年
- 北师大版(2024新版)生物七年级上册期末考点复习提纲
- 2024年理论中心组学习心得体会模版(2篇)
- 浙江省杭州市2023-2024学年六年级上学期语文期末试卷(含答案)
- 环保行业工业废气污染防治技术路线方案
- 电工的职业健康培训
- 《预防性侵害讲座》课件
- 2024年中国船舶涂料市场调查研究报告
- 少儿编程教育教学指南
评论
0/150
提交评论