




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告程序设计语言-JAVA 开课院系:经济管理学院班 级: 学生姓名: 学 号: 2011.12 目 录一、课设任务及要求- - 3二、系统分析- - 3三、系统总体设计或详细设计- 4 四、程序代码- 5五、调试和测试记录以及运行结果展示- 10六、收获体会- 15JAVA语言课程设计报告一、设计任务/*将下列程序,改造成算器,要求1 增加乘、除、减法运算2 改正现行的近似计算,即现在用7.6+7.8=15.39999999这个问题3 (选作)进行乘方、开方、取模运算4 (选作)进行统计功能开发,功能自定义。比如多个数的平均值求法等5 (选作)实现二进制运算二、系统分析 第一步: 对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,15个按钮,总体界面用BorderLayout布局。第二步:本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮加入到“Center”区域,包含各种按钮的面板采用n行n列的网格布局,然后将数字按钮和运算符按钮添加到面板中。同时注册按钮事件监听器。如:b = new JButton(1);/add butten 1b.addActionListener(this);pn1.add(b);事件监听器中的事件处理方法void actionPerformed(ActionEvent e)完成主要按钮事件的处理。事件处理分一下几种情况:数字按钮事件(1”,”2”,”3”,”4”,”5”,”6”,”7”,”8”,“9”,”0”)、运算符按钮(”+”,”-“,”*”,”/” 、”%”,)、小数点按钮(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、求平方根按钮(”sqr”)、清除键按钮(clear)、退出键按钮(”off”)等。第三步:布局和监听事件完成后,要考虑具体的计算思路以及如何去合理的布局代码编排方式,完成大致的代码雏形。 第四步:对于所完成的代码,要进行实地的测试,修改编写过程中所出现的问题,使其更加完善。例如:7.6+7.8=15.39999999这个问题,该如何去解决。 第五步: 在完成实验报告的期间,对系统进行进一步的完善。三、系统总体设计或详细设计(简单写出即可) 1. 界面设计 界面设计要求用GUI,界面设计有用到swing组件的textField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下: 2. 功能介绍这是计算器中的一种:简单计算器,本实验用到了java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个功能:点击按钮中的数字键和运算符键就能进行简单的加、减、乘、除、求模、开方等运算输入有误时可以按Clear撤消后可以重新输入新数据点击off键可以直接退出该界面 3. 程序流程图如下 四、程序代码 */import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.math.BigDecimal;public class Calculator implements ActionListenerString s=,s1;double d1,d2;JFrame jf = new JFrame(计算器-王旭丽) ;JTextField tf = new JTextField();/实现计算器界面public void init() Container c=jf.getContentPane();tf.setHorizontalAlignment(JTextField.RIGHT); /文本框c.add(tf,North);JPanel pn3 = new JPanel(new BorderLayout();c.add(pn3,Center);JPanel pn2 = new JPanel(); /功能键界面(清除键和关闭键) pn2.setLayout(new BorderLayout();JPanel pn1 = new JPanel(); /运算界面pn1.setLayout(new GridLayout(6,6);pn3.add(pn2,North);pn3.add(pn1);JButton b = new JButton(CLEAR); b.setToolTipText(请按清除键!); /设置清零键b.setForeground(Color.RED); /设置字体颜色b.setBackground(Color.YELLOW); /设置背景色b.addActionListener(this);pn2.add(b,Center);b = new JButton(OFF);b.setToolTipText(请按退出键!); /设置off键,点击退出应用程序b.addActionListener(this);b.setForeground(Color.RED);b.setBackground(Color.ORANGE);pn2.add(b,East);b = new JButton(1);/add butten 1b.addActionListener(this);pn1.add(b);b = new JButton(2);/add butten 2b.addActionListener(this);pn1.add(b);b = new JButton(3);/add butten 3b.addActionListener(this);pn1.add(b);b = new JButton(+);/add butten +b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(4);/add butten 4b.addActionListener(this);pn1.add(b);b = new JButton(5);/add butten 5b.addActionListener(this);pn1.add(b);b = new JButton(6);/add button 6b.addActionListener(this);pn1.add(b);b = new JButton(-);/add butten -b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(7);/add button 7b.addActionListener(this);pn1.add(b);b = new JButton(8);/add button 8b.addActionListener(this);pn1.add(b);b = new JButton(9);/add button 9b.addActionListener(this);pn1.add(b);b = new JButton(*);/add butten *b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(0);/add button 0b.addActionListener(this);pn1.add(b);b = new JButton(.);/add button .b.addActionListener(this);pn1.add(b);b = new JButton();/add butten b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(/); /add butten /b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(平均数); /add butten 平均数b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(%); /add butten %b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(sqr); /add butten sqrb.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton(=); /add button =b.setForeground(Color.RED);b.addActionListener(this);pn1.add(b);jf.setSize(500,500); /设置大小jf.setVisible(true); /设置为可视/处理按钮按下时的动作,进行相应的处理public void actionPerformed(ActionEvent e)String command = e.getActionCommand();tf.setText(tf.getText()+command);if(command.equals(CLEAR) /清零键 按下时返回初始状态s1=null;s=;tf.setText(); /记录输入值的变量清空else if(command.equals(OFF) System.exit(0); /off键 关闭应用程序else if(!command.equals(+)&!command.equals(=)&!command.equals(-)&!command.equals(*)&!command.equals(/)&!command.equals()&!command.equals(%)&!command.equals(sqr)&!command.equals(平均数)if(s1=null) /判断输入是否为第一个s1 = command;else s1+=command;d1 = new Double(s1).doubleValue(); /字符串型转换为双精度型,还原输入tryBigDecimal bd1 = new BigDecimal(d1+);BigDecimal bd2 = new BigDecimal(d2+);if(s.equals(+) d1 = bd1.add(bd2).doubleValue();else if(s.equals(-) d1 = bd1.subtract(bd2).doubleValue();else if(s.equals(*) d1 = bd1.multiply(bd2).doubleValue();else if(s.equals(/) if(d2!=0.0) d1 = bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP).doubleValue(); else Exception ex;else if(s.equals() d1 = Math.pow(d2,d1);else if(s.equals(sqr) d1 = Math.sqrt(d1);else if(s.equals(%) d1 = d2%d1;else if(s.equals(平均数) d1 = d1/2;catch(Exception ex)tf.setText(Error); /错误显示ErrorSystem.out.println(ex.getMessage();else if(!command.equals(=) /判断输入是否为+ - * s = command;s1 = null;d2 = d1;Else /输入=时,显示运算结果tf.setText(tf.getText()+d1);public static void main(String args)new Calculator().init();五、调试和测试记录以及运行结果展示实例一:加法运算 7.8+7.6=15.4 注:解决了7.6+7.8=15.39999999这个问题,通过增加精确度来实现的。具体解决方式如下: BigDecimal bd1 = new BigDecimal(d1+);BigDecimal bd2 = new BigDecimal(d2+);if(s.equals(+) d1 = bd1.add(bd2).doubleValue();实例二:减法运算 6.5-3.56=2.94代码如下:BigDecimal bd1 = new BigDecimal(d1+);BigDecimal bd2 = new BigDecimal(d2+); if(s.equals(-) d1 = bd1.subtract(bd2).doubleValue();实例三:乘法运算:3.5*5=17.5代码如下:if(s.equals(*) d1 = bd1.multiply(bd2).doubleValue();实例四:除法运算:6.4/2=3.2 代码如下: if(s.equals(/) if(d2!=0.0) d1 = bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP).doubleValue(); else Exception ex;实例五:乘方运算:23=8代码如下: if(s.equals() d1 = Math.pow(d2,d1); 实例六:开方运算:sqr36=6 if(s.equals(sqr) d1 = Math.sqrt(d1);实例七:取模运算:5%3=2具体代码实现如下:if(s.equals(%) d1 = d2%d1;六、收获体会终于做完了这次的实验报告,最初有一种如释重负的感觉,但平静过后,又有一些欣喜。在做这次的计算器设计与实现的课程设计中,虽说看上去有些简单,但真真的具体去操作实现,确实是有些困难。所以体会最深的莫过于“纸上得来终觉浅,绝知此事要躬行”,的确,在这次的亲身实践中,我觉得每件事都需要我们去真真的投入其中,去不断思考,才能不断促进我们的进步,成长。 在这次的计算器的设计与实现实验中,相对而言,它是一个相对简单的设计,它牵涉的知识面不是很多,功能相对简单,界面要求不是很高,相对适合初次承担java课程设计的我们。起初,自己做起来无从着手,内心有一些紧张,但是在老师和同学的帮助下,同时翻看参考书籍,逐渐对代码有了一定的了解,之后,随着精力的逐渐投入,自己对此次实验的兴趣不断增加,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 克拉玛依职业技术学院《数据库实训》2023-2024学年第二学期期末试卷
- 2025河南长期劳动合同范本
- 2025至2031年中国普通绿豆行业投资前景及策略咨询研究报告
- 2025至2031年中国收卡机行业投资前景及策略咨询研究报告
- 益阳医学高等专科学校《基础生态学》2023-2024学年第二学期期末试卷
- 2025至2031年中国打印机外壳行业投资前景及策略咨询研究报告
- 2025至2031年中国仓贮用低温除湿装置行业投资前景及策略咨询研究报告
- 致敬劳动筑梦成长主题队会教案
- 造型模板护岸施工方案
- 2025年合同法务人员合同管理实训题
- 统编版2024-2025学年语文六年级下册期中核心素养评估卷有答案
- 2025年广东省深圳市31校联考中考二模历史试题(原卷版+解析版)
- 个人车辆抵押协议书
- 中国矿产资源集团大数据有限公司招聘考试真题2024
- 八年级英语下学期期中模拟卷(宿迁专用)(原卷版)
- 杭州市市级机关事业单位招聘真题2024
- 2025年科普知识竞赛题及答案(共100题)
- 地下混凝土水池蓄水试验方案20240401
- 头晕、抑郁与焦虑关系解析与应对策略
- 初中入团考试题型及答案
- 2025年北京卫生职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
评论
0/150
提交评论