版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上摘 要本设计要求学生设计、开发出一个简单的计算器。通过该题目的设计,培养学生面向对象程序设计的思想,要求学生达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。关键词:Java语言、计算器、图形界面前 言该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加,减,乘,除,以及求相反数),
2、有退格功能,归零表示初始化,界面颜色为灰白,该程序支持键盘操作等。随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器,任一种操作系统的网络环境中运行的软件,实行所谓“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行,最受欢迎的一种程序开发语言。专心-专注-专业目 录第1章 任务要求1
3、.1 基本要求:绘制基本国际象棋棋盘。国际象棋棋盘由88的深浅相间的格子构成。1.2 系统要求:1. 要求利用面向对象的方法以及Java的编程思想来完成系统的设计;2. 要求在设计的过程中,建立清晰的类层次; 3. 在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;4. 在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。5. 在基本要求达到后,可进行创新设计,如设计出比较友好的界面等。6. 该系统的要求:(1)界面模拟Windows中的计算器程序;(2)实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算;(3)提交Applicatio
4、n和Applet两个版本的程序。第2章 详细设计2.1 实现功能实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算。2.2 功能模块主界面显示区输入区(键盘区)功能区(操作区)选择功能操作输入数据数据处理显示结果图2.1 迷你计算器功能模块2.3 图形界面设计1. 主界面总体设计及显示区 CalFrame() super(迷你计算器); setLayout(new FlowLayout(FlowLayout.CENTER,8,10); setBackground(new Color(150,150,150); setForeground(Color.white); set
5、Resizable(false); setSize(310,210); tf = new TextField(22); tf.setEditable(false); tf.setBackground(new Color(50,118,103); tf.setForeground(Color.white); tf.setFont(new Font(Arial,Font.BOLD,18); add(tf); p1 = new CalPanelL(); p2 = new CalPanelR(); add(p1); add(p2); setVisible(true); addWindowListene
6、r(new Wclose(); 2. 输入区及功能区class CalPanelL extends Panel CalButton b0, b1, b2, b3, b4, b5, b6, b7,bSqrt, bSin, bCos, bYx, b8, b9, bPN, bPoint; /输入区 CalPanelL() setLayout(new GridLayout(4,3); setFont(new Font(TimesRoman,Font.BOLD,16); b0 = new CalButton(0); b1 = new CalButton(1); b2 = new CalButton(2)
7、; b3 = new CalButton(3); b4 = new CalButton(4); b5 = new CalButton(5); b6 = new CalButton(6); b7 = new CalButton(7); b8 = new CalButton(8); b9 = new CalButton(9); bPN = new CalButton(+/-); bPoint = new CalButton(.); / 加入按钮 add(b7); b7.addActionListener(new PressB7(); add(b8); b8.addActionListener(ne
8、w PressB8(); add(b9); b9.addActionListener(new PressB9(); add(b4); b4.addActionListener(new PressB4(); add(b5); b5.addActionListener(new PressB5(); add(b6); b6.addActionListener(new PressB6(); add(b1); b1.addActionListener(new PressB1(); add(b2); b2.addActionListener(new PressB2(); add(b3); b3.addAc
9、tionListener(new PressB3(); add(b0); b0.addActionListener(new PressB0(); add(bPN); bPN.addActionListener(new PressBPN(); ; add(bPoint); bPoint.addActionListener(new PressBPoint(); /功能区 class CalPanelR extends Panel CalButton bAdd, bSub, bMul, bDiv, bSqrt, bSin, bCos, bYx, bJie, bEqual, bCE, bBack; C
10、alPanelR() setLayout(new GridLayout(4,3); setFont(new Font(TimesRoman,Font.BOLD,16); bAdd = new CalButton(+); bSub = new CalButton(-); bMul = new CalButton(*); bDiv = new CalButton(/); bSqrt = new CalButton(); bSin = new CalButton(sin); bCos = new CalButton(cos); bYx = new CalButton(yx); bJie = new
11、CalButton(!); bEqual = new CalButton(=); bCE = new CalButton(CE); bBack = new CalButton(-); add(bDiv); bDiv.addActionListener(new PressBDiv(); add(bSqrt); bSqrt.addActionListener(new PressBSqrt(); add(bJie); bJie.addActionListener(new PressBLn(); add(bMul); bMul.addActionListener(new PressBMul(); ad
12、d(bSin); bSin.addActionListener(new PressBSin(); add(bBack); bBack.addActionListener(new PressBBack(); add(bSub); bSub.addActionListener(new PressBSub(); add(bCos); bCos.addActionListener(new PressBCos(); add(bCE); bCE.addActionListener(new PressBCE(); add(bAdd); bAdd.addActionListener(new PressBAdd
13、(); add(bYx); bYx.addActionListener(new PressBYx(); add(bEqual); bEqual.addActionListener(new PressBEqual(); 2.4 功能实现class PressBEqual implements ActionListener /计算四则运算及指数运算 public void actionPerformed(ActionEvent e) try double result = 0; d2 = Double.parseDouble(tf.getText(); switch(op) case 0:resu
14、lt = d1 + d2; break; case 1:result = d1 - d2; break; case 2:result = d1 * d2; break; case 3:result = d1 / d2; break; case 4:result = Math.pow(d1,d2); break; default: tf.setText(String.valueOf(result); catch(Exception ee) /计算阶乘 class PressBLn implements ActionListener public void actionPerformed(Acti
15、onEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = jiec(x); tf.setText(y+); catch(Exception ee) /阶乘调用方法private double jiec(double x) int b=1;for(int i=1;i=x;i+)b*=i;return b; /计算正弦 class PressBSin implements ActionListener public void actionPerformed(ActionEvent e) try double x
16、 = Double.parseDouble(tf.getText(); double y; y = Math.sin(x); tf.setText(y+); catch(Exception ee) / 计算余弦 class PressBCos implements ActionListener public void actionPerformed(ActionEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = Math.cos(x); tf.setText(y+); catch(Exception ee
17、) 2.5 小程序2.5.1 图形界面设计 public CalculatorPanel() setLayout(new BorderLayout(); result.setEditable(false); esult.setSize(300,200); add(result,BorderLayout.NORTH); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(5,4); sin=new JButton(sin); panel.add(sin); sin.addActionListener(this); cos=new J
18、Button(cos); panel.add(cos); cos.addActionListener(this); jie=new JButton(!); panel.add(jie); jie.addActionListener(this); zhi=new JButton(); panel.add(zhi); zhi.addActionListener(this); n7=new JButton(7); panel.add(n7); n7.addActionListener(this); n8=new JButton(8); panel.add(n8); n8.addActionListe
19、ner(this); n9=new JButton(9); panel.add(n9); n9.addActionListener(this); div=new JButton(/); panel.add(div); div.addActionListener(this); n4=new JButton(4); panel.add(n4); n4.addActionListener(this); n5=new JButton(5); panel.add(n5); n5.addActionListener(this); n6=new JButton(6); panel.add(n6); n6.a
20、ddActionListener(this); mul=new JButton(*); panel.add(mul); mul.addActionListener(this); n1=new JButton(1); panel.add(n1); n1.addActionListener(this); n2=new JButton(2); panel.add(n2); n2.addActionListener(this); n3=new JButton(3); panel.add(n3); n3.addActionListener(this); minus=new JButton(-); pan
21、el.add(minus); minus.addActionListener(this); dot=new JButton(.); panel.add(dot); dot.addActionListener(this); n0=new JButton(0); panel.add(n0); n0.addActionListener(this); equal=new JButton(=); panel.add(equal); equal.addActionListener(this); plus=new JButton(+); panel.add(plus); plus.addActionList
22、ener(this); add(panel,BorderLayout.CENTER); 2.5.2 功能运算public void actionPerformed(ActionEvent ae) if(ae.getSource()=n1) assign(1); else if(ae.getSource()=n2) assign(2); else if(ae.getSource()=n3) assign(3); else if(ae.getSource()=n4) assign(4); else if(ae.getSource()=n5) assign(5); else if(ae.getSou
23、rce()=n6) assign(6); else if(ae.getSource()=n7) assign(7); else if(ae.getSource()=n8) assign(8); else if(ae.getSource()=n9) assign(9); else if(ae.getSource()=n0) assign(0); else if(ae.getSource()=dot) if(result.getText().indexOf(.)=-1) result.setText(result.getText()+.); else if(ae.getSource()=minus
24、) preRes=Double.parseDouble(result.getText(); lastCommand=-; result.setText(0); else if(ae.getSource()=div) preRes=Double.parseDouble(result.getText(); lastCommand=/; result.setText(0); else if(ae.getSource()=equal) secVal=Double.parseDouble(result.getText(); if(lastCommand.equals(/) res=preRes/secV
25、al; else if(lastCommand.equals(*) res=preRes*secVal; else if(lastCommand.equals(-) res=preRes-secVal; else if(lastCommand.equals(+) res=preRes+secVal; else if(lastCommand.equals(sin) res=Math.sin(preRes); else if(lastCommand.equals(cos) res=Math.cos(preRes); else if(lastCommand.equals() res=Math.pow
26、(preRes, secVal); else if(lastCommand.equals(!) res=jiec(preRes); result.setText( +res); lastCommand=; else if(ae.getSource()=sin) preRes=Double.parseDouble(result.getText(); lastCommand=sin; result.setText(0); else if(ae.getSource()=cos) preRes=Double.parseDouble(result.getText(); lastCommand=cos;
27、result.setText(0); else if(ae.getSource()=jie) preRes=Double.parseDouble(result.getText(); lastCommand=!; result.setText(0); else if(ae.getSource()=zhi) preRes=Double.parseDouble(result.getText(); lastCommand=; result.setText(0); else if(ae.getSource()=mul) preRes=Double.parseDouble(result.getText()
28、; lastCommand=*; result.setText(0); else if(ae.getSource()=plus) preRes=Double.parseDouble(result.getText(); lastCommand=+; result.setText(0); private double jiec(double preRes2) int b=1;for(int i=1;i=preRes;i+)b*=i;return b; 第3章 系统测试3.1 测试方案1. 打开迷你计算器,输入数据;2. 点击功能按钮,执行相应运算;3. 使用计算器或计算软件检验运算结果是否正确。4
29、. 评价该计算器的可行性;5. 找出该计算器的不足信和有待改进的地方。3.2 测试用例1.进入计算器,依次执行“152+23.2”,“32.3-63”,“15*62.2”,“6/96.6”,“20.1/0”,检验基本四则运算结果是否正确以及对错误操作的处理。2.每次计算结束后,按“CE”键清除数据或按“-”键修改数据以进行下一轮运算。3.依次执行“6!”,“15 yx 4 =”,“6 sin”,“6 cos”,“12.96 ”“9 +/- ”,检验结果是否正确。4.输入数字,按“*/-”键可进行数据的正负切换,将数据转换为负数,依次执行上述操作,检验结果。3.3 测试结果 3.3.1 四则运算
30、测试结果 加法:152+23.2=175.2; 减法:32.3-63=-30.7; 乘法:15*62.2=933.0; 除法:6/96.6=0.0621;除法(错误处理):20.1/0=Infinity;(如图3.1) 图3.1 “20.1/0”的错误处理 3.3.2其他运算测试结果 阶乘:6!=720.0; 指数:15 4 =50625.0; 正弦:sin6 =-0.2794; 余弦:cos6 =0.9602; 开方: 12.96 =3.6;开方(错误处理):(-9)=NaN;(如图3.2) 图3.2 “(-9)”的错误处理 3.4 软件可靠性分析 1.图形界面简单、直观明了,易于初次使用者
31、方便使用; 2.基本四则运算准确无误,小数数位精确度高; 3.对其他常用功能计算(如:指数、正余弦等)较为精确; 4.能有效处理错误操作,如:“20.1/0”,“(-9)”等。3.5 软件不足性分析 1.计算数位有限,不能输入科学计数;2. 与常见计算器相比,常见计算器每执行玩一次运算,当运行下一次运算时会将前一次运算结果清零或自动跳转到下一计算运行;本软件每执行完一次运算都要按“CE”键清零或按“-”键修改数据,使用起来较为繁琐。3. 本计算器不存在记忆功能,清零之后,原有数据不可恢复。第4章 软件使用说明书4.1图形界面 图4.1 迷你计算器主界面4.2四则运算举例 1.计算“15.2/3
32、0.4”; 2.输入“15.2”; 图4.2 输入“15.2” 3.输入“/”; 图4.3 输入“/” 4.输入“30.4”; 图4.4 输入“30.4” 5.按下“=”,得出结果; 图4.5 按“=”,所得结果4.3其他运算举例 1.计算“6!”; 2.输入“6”; 图4.6 输入“6” 3.按下“!”,得出结果; 图4.7 按“!”,所得结果4.4清零及退格操作 1.按下“CE”键,对数据清零,返回主界面; 2.按下“-”键,对数据进行修改,这里对上一数据按“-”后,结果如下: 图4.8 按“sin”-“=”。参考文献1曲朝阳,杨杰明等.Java程序设计. 北京: 清华大学出版社,2008.102耿祥以,张跃平.Java大学生实用教程. 北京: 电子工业出版社,2012.6 3明日科技.Java经典编程.北京:清华大学出版社,2012
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大米专用冰箱产品供应链分析
- 带有时钟的收音机产业链招商引资的调研报告
- 医疗影像技术行业相关项目经营管理报告
- 乐器修理或维护行业营销策略方案
- 美容霜项目营销计划书
- 幼儿园行业经营分析报告
- 不动产出租服务行业营销策略方案
- 含药物的护肤液产品供应链分析
- 矿物绝缘电缆产品供应链分析
- 云计算法务服务行业营销策略方案
- 实验室设计论文 米酒厂化验室设计
- 试论网络思想政治教育存在的问题及对策
- 水浴式灭菌柜的工作原理及其验证
- (完整版)外贸合同(中英双语)
- 嵌入式系统设计专题实践嵌入式交通信号灯
- 医院胸痛中心奖惩办法(完整版)
- 行政管理存在的问题与对策
- CJJ101-2016埋地塑料给水管道工程技术规程
- 文化广场规划设计方案说明书
- 2012年数学建模机器人避障问题
- 规模化养猪场的科学用水管理
评论
0/150
提交评论