




免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一 题目内容及要求*1二 设计思路*2三 具体实现*4四 运行调试与分析讨论*9五 设计体会与小结*12六 参考文献*15一题目内容及要求设计一个复杂的计算器,能实现Windows系统中计算器的功能。(1)定义组件:09,+、-、*、/、C=按钮;显示屏文本行;菜单; (2)要求能关闭窗口;点击按钮,或键盘数字会在显示屏上输出结果; (3)具有进制转换功能.二设计思路1) 计算器主要包含的功能:实现加、减、乘、除等基本运算、可以将十进制数据转换成为二进制、八进制、十六进制等进制。当输入数据有误时还可以删除数据,分为退格或是清空。2)程序包含两个主要类,Calculate和CalculatorFrame ; 其中Calculate类的功能是进行计算,它利用CalculatorFrame中的数据计算出结果,显示在界面上。CalculatorFrame 是初始化界面,以及响应用户的操作。另外还有一个是测试类Calculator类用于启动计算器。工作原理图如下:功能规划如下:(1)基本运算(2)进制运算,如二进制和十进制数,十进制数和十六进制数之间的转换。(3)类设计。Calculate和CalculatorFrame。Calculate类的功能是进行计算,CalculatorFrame 是初始化界面,以及响应用户的操作。三具体实现本程序采用java语言开发,利用java语言的布局管理器设计所需界面,并利用java的事件监听处理机制对用户请求的事件进行处理。代码简洁,易维护、易扩展 CalculatorFrame类的实现:class CalculatorFrame extends JFrame implements ActionListenerJRadioButton jRadioButton; /声明窗口中用到的各种组件 JTextField displayTextField;JButton backButton,clearButton,button;JPanel textPanel,controlPanel,mainPanel,digitalPanel,jinzhiPanel; double result = 0; String operator = =; /保存运算符的变量 boolean start = true; /设置输入标志位 Calculate calculate; String getValue=;四运行调试与分析讨论源代码如下:class CalculatorFrame extends JFrame implements ActionListenerJRadioButton jRadioButton; /声明窗口中用到的各种组件 JTextField displayTextField;JButton backButton,clearButton,button;JPanel textPanel,controlPanel,mainPanel,digitalPanel,jinzhiPanel; double result = 0; String operator = =; /保存运算符的变量 boolean start = true; /设置输入标志位 Calculate calculate; String getValue=;public CalculatorFrame()this.setTitle(计算器); /设置计算器标题this.setLayout(new BorderLayout(); /设置布局管理器calculate=new Calculate(); /创建Calculate类的一个对象/* * 结果显示面板 */textPanel=new JPanel(); /创建显示面板displayTextField=new JTextField(0,24);/创建显示文本框textPanel.add(displayTextField); /将文本框添加到显示面板上this.add(textPanel,North);controlPanel=new JPanel(); /创建控制面板controlPanel.setLayout(new FlowLayout(FlowLayout.RIGHT,5,5);backButton=new JButton(退格); /创建退格按钮clearButton=new JButton(清空); /创建清空按钮backButton.addActionListener(this); /为按钮添加事件监听器clearButton.addActionListener(this);backButton.setFont(new Font(SansSerif, Font.PLAIN, 12);/设置字体clearButton.setFont(new Font(SansSerif, Font.PLAIN, 12);controlPanel.add(backButton); /将按钮添加到面板上controlPanel.add(clearButton);this.add(controlPanel,Center); /将面板添加到框架窗口中/* * 主面板 */mainPanel=new JPanel(); /创建主面板并设置布局管理mainPanel.setLayout(new BorderLayout();jinzhiPanel=new JPanel();jinzhiPanel.setLayout(new FlowLayout(FlowLayout.CENTER,4,4);String jRadioButtons=十进制,二进制,八进制,十六进制;ButtonGroup buttonGroup=new ButtonGroup(); /创建单选按钮组for(int i=0;ijRadioButtons.length;i+) /用循环语句生成按钮if(i=0)jRadioButton=new JRadioButton(jRadioButtonsi,true);jRadioButton=new JRadioButton(jRadioButtonsi); /创建单选按钮 jRadioButton.setFont(new Font(SansSerif, Font.PLAIN, 12);jRadioButton.setForeground(Color.BLUE);jRadioButton.addActionListener(this); /添加事件监听器buttonGroup.add(jRadioButton); /将单选按钮添加到组里jinzhiPanel.add(jRadioButton);digitalPanel=new JPanel();digitalPanel.setLayout(new GridLayout(4,4,5,5);/将数字面板布局管理器设置为String buttons=789/456*123-0.=+; /GridLayout,4行4列,间隔5像素for (int i = 0; i buttons.length(); i+) button = new JButton(buttons.substring(i, i + 1); button.setForeground(Color.BLUE); /设置按钮文本颜色为蓝色 button.addActionListener(this); /为按钮注册事件监听器 digitalPanel.add(button); /将按钮放置在数字面板上 mainPanel.add(jinzhiPanel,North); /将进制转换面板放置在顶部 mainPanel.add(digitalPanel,Center); /将数字面板放置在主面板的中部this.add(mainPanel,South); /将主面板放置在框架底部 /* * 界面显示*/ setLocation(200,100); /设置界面出现位置 setSize(285,260); /设置界面大小 setResizable(false); /将界面大小设置为不可编辑 setVisible(true); /设置界面可见public void actionPerformed(ActionEvent evt) /响应用户点击按钮事件 String inputString = evt.getActionCommand(); if (0 = inputString.charAt(0) & inputString.charAt(0) = 9 | inputString.equals(.) if (start) displayTextField.setText(inputString); /在文本框中显示用户输入 else displayTextField.setText(displayTextField.getText() + inputString); start = false; getValue=displayTextField.getText(); else if (start) if (inputString.equals(-) displayTextField.setText(inputString);/显示用户输入的操作符或数字 start = false; else operator = inputString; /得到用户选择的运算符 else double input = Double.parseDouble(displayTextField.getText();/将用户输入转换格式result=calculate.calculated(input,operator); /调用Calculator类的计算方法获得结果 operator = inputString; / 用operater保存用户要进行的操作的操作符 start = true; displayTextField.setText(Double.toString(result); /将结果显示在文本框中 if(inputString.equals(二进制) displayTextField.setText(calculate.toBinary(getValue); /调用计算类的方法toBinary() else if(inputString.equals(十进制) displayTextField.setText(getValue); else if(inputString.equals(八进制) displayTextField.setText(calculate.toOctal(getValue);/调用计算类的方法toOctal() else if(inputString.equals(十六进制) displayTextField.setText(calculate.toHex(getValue);/调用计算类的方法toHex() else if(inputString.equals(退格) String getStr=displayTextField.getText(); if(getStr!=) String subStr=getStr.substring(0,getStr.length()-1); /得到退格后的字符串 displayTextField.setText(subStr); /显示退格后的字符串 else if(inputString.equals(清空) displayTextField.setText(); /将显示文本框清空 2)计算类Calculator代码: class Calculate public double result=0; /存放中间结果及最终结果 public Calculate() public double calculated(double inputNum,String operator) if (operator.equals(+) result += inputNum; /根据用户选择的运算符执行不同的运算 else if (operator.equals(-) result -= inputNum; else if (operator.equals(*) result *= inputNum; else if (operator.equals(/) result /= inputNum; else if (operator.equals(=) result = inputNum; return result; /返回运算结果 public String toBinary(String getValue) /转换为二进制 return Integer.toBinaryString(Integer.parseInt(getValue); public String toOctal(String getValue) /转换为八进制 return Integer.toOctalString(Integer.parseInt(getValue); public String toHex(String getValue) /转换为十六进制 return Integer.toHexString(Integer.parseInt(getValue); (1)运行调试结果如下图所示(2)pow功能:2的3次方(3)二进制数1001转化为十进制数:(4)十进制数35转化为二进制数(5)十进制数35转化为十六进制数(6)十六进制数23转化为十进制数五设计体会与小结设计,给人以创作的冲动。在画家眼里,设计是一幅清明上河图或是一幅向日葵;在建筑师眼中,设计是昔日鎏金般的圆明园或是今日一塑自由女神像;在电子工程师心中,设计是贝尔实验室的电话机或是华为的程控交换机。凡此种种,但凡涉及设计都是一件良好的事情,因为她能给人以美的幻想,因为她能给人以金般财富,因为她能给人以成就之感,更为现实的是她能给人以成长以及成长所需的营养,而这种营养更是一种福祉,一辈子消受不竭享用不尽。我就是以此心态对待此次Java技术课程设计的,所谓“态度决定一切”,于是偶然又必然地收获了诸多,概而言之,大约以下几点:一、温故而知新。课程设计发端之始,思绪全无,举步维艰,对于理论知识学习不够扎实的我深感“书到用时方恨少”,于是想起圣人之言“温故而知新”,便重拾教材与实验手册,对知识系统而全面进行了梳理,遇到难处先是苦思冥想再向同学请教,终于熟练掌握了基本理论知识,而且领悟诸多平时学习难以理解掌握的较难知识,学会了如何思考的思维方式,找到了设计的灵感。二、思路即出路。当初没有思路,诚如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新学期开学第一课主题班会教案
- 面对风险:成功企业家的关键风险控制策略
- 高中语文老师2025年个人方案
- 汽车使用与维护 课件 项目一 汽车发动机舱盖与后备箱盖的使用与维护
- 2025年玻璃单臂异形磨边机项目可行性研究报告
- 2025年环保型彩色镀铝礼品包装纸项目可行性研究报告
- 2025年特效净水项目可行性研究报告
- 2025年燃气烤猪炉项目可行性研究报告
- 山东省临沂一中2025届高三2月份生物试题模拟试题含解析
- 吉林省白城地区大安县2025年初三期末热身联考物理试题含解析
- 景观人行吊桥(悬索桥)施工组织设计
- 八大特殊作业试题及答案
- 车辆转让确认书
- 教学教案检查记录表
- 二氧化碳爆破方案
- 人工智能第2章知识表示课件
- 生活垃圾填埋场设计规范
- 有机化学第四篇芳香烃
- T∕ACSC 01-2022 辅助生殖医学中心建设标准(高清最新版)
- 关于国家重点研发计划重点专项中国生物技术发展中心
- 三国两晋南北朝大事年表
评论
0/150
提交评论