




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(大作业)报告课程名称: 面向对象程序设计 设计题目: 计算器 院 系: 信息技术学院 班 级: 10级 本(2)班 设 计 者: 朱亮 学 号: 201011010229 指导教师: 何英 设计时间: 2011-12-26-2011-12-30 昆明学院昆明学院课程设计(大作业)任务书姓 名: 朱亮 院 系:信息技术学院 专 业:计算机科学与技术专业 学 号: 201011010229设计起止时间:2011-12-26-2011-12-30课程设计题目:计算器 课程设计要求:1. 使学生巩固和提高java编程技术;2. 培养学生掌握程序设计的基本思路和方法;3. 加强学生研发,调试程序的能力;4. 培养学生分析,解决问题的能力;5. 提高学生的科技论文写作能力。工作计划及安排: 1. Java课程设计从2011年12月26日开始,于30日下午上交作业。2. 上机制作时间为27日至30日,每天上网搜寻资料,下载并分析了解。3. 流程图的画法,上网搜寻。4. 不懂的向同学请教或上网寻求答案。指导教师签字 年 月 日 课程设计(大作业)成绩学号:201011010229 姓名:朱亮 指导教师: 何英 老师课程设计题目: 计算器 总结:1. 计算器的制作很是简单,只有简单的加减乘除运算,特殊功能也只有少数一两个。2. 从制作计算器的过程中,我学会了很多,不懂就得上网去搜,去查。3. 从漫漫地制作过程中,我又找到了上大一的那种感觉,要学好一门课,就得用心去学习。4. 虽然制作给我带来了巨大的困扰,但只有解决困扰才能有更好的机会进行学习。指导教师评语:成绩:填表时间:指导教师签名: 课程设计(大作业)报告1、 课程设计介绍 11.1课程设计内容.11.2课程设计要求.12、 总体设计.12.1课设题目总体设计、算法描述.12.2功能模块图、流程图分析13、 调试与性能分析 (相关截图).14、 参考文献3附 录(程序清单).3课程设计(大作业)报告1. 课程设计介绍 1.1课程设计内容自行设计一个图形界面的计数器,要求如下:能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计设计任务要完成设计、编码、测试等过程,给出设计思路、设计说明书、主要的代码的说明、使用说明书。源代码以及可运行的计算器程序。1.2课程设计要求课程设计是巩固所学理论知识、提高程序设计能力的重要实践环节。通过课程设计的训练,使学生能够综合应用Java的基础知识和基本方法,体会软件设计的全过程,编写出高效率的应用程序,培养学生的数据处理能力,提高软件设计能力,从而为今后进行系统软件和应用软件的开发研究打下坚实的基础。(1)使学生巩固和提高 Java 编程技术 (2)培养学生掌握程序设计的基本思路和方法;(3)加强学生研发,调试程序的能力;(4)培养学生分析,解决问题的能力;(5)提高学生的科技论文写作能力.2.总体设计2.1课设题目总体设计、算法描述总体设计:拥有最基本的加减乘除运算,显示文本框在计算器顶部,从左边开始输入,进行计算。额外功能是重置与消除,计算器背景颜色为灰白色。算法描述:根据加减乘除的原理,很容易的想出计算器的基本算法。2.2功能模块图、流程图分析 功能模块及流程图如下:为operator添加处理方式3.调试与性能分析 (相关截图)3.1调试结果如下: 3.2性能分析结果如下:4.参考文献百度文库附 录(程序清单)import javax.swing.*; import javax.swing.border.Border; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashMap; /* * 计算器。Calculator 继承于 JFrame,是计算器的界面 */ public class Calculator extends JFrame private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5); private JTextField textbox = new JTextField(); private CalculatorCore core = new CalculatorCore(); private ActionListener listener = new ActionListener() public void actionPerformed(ActionEvent e) JButton b = (JButton) e.getSource(); String label = b.getText(); String result = cess(label); textbox.setText(result); ; public Calculator(String title) throws HeadlessException super(title); / 调用父类构造方法 setupFrame(); / 调整窗体属性 setupControls(); / 创建控件 private void setupControls() setupDisplayPanel(); / 创建文本面板 setupButtonsPanel(); / 创建按钮面板 / 创建按钮面板并添加按钮 private void setupButtonsPanel() JPanel panel = new JPanel(); panel.setBorder(border); panel.setLayout(new GridLayout(4, 5, 3, 3); createButtons(panel, new String 7, 8, 9, +, C, 4, 5, 6, -, CE, 1, 2, 3, *, , / 空字符串表示这个位置没有按钮 0, ., =, /, ); this.add(panel, BorderLayout.CENTER); /* * 在指定的面板上创建按钮 * * param panel 要创建按钮的面板 * param labels 按钮文字 */ private void createButtons(JPanel panel, String labels) for (String label : labels) / 如果 label 为空,则表示创建一个空面板。否则创建一个按钮。 if (label.equals() panel.add(new JPanel(); else JButton b = new JButton(label); b.addActionListener(listener); / 为按钮添加侦听器 panel.add(b); / 设置显示面板,用一个文本框来作为计算器的显示部分。 private void setupDisplayPanel() JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(); panel.setBorder(border); setupTextbox(); panel.add(textbox, BorderLayout.CENTER); this.add(panel, BorderLayout.NORTH); / 调整文本框 private void setupTextbox() textbox.setHorizontalAlignment(JTextField.LEFT); / 文本左对齐 textbox.setEditable(false); / 文本框只读 textbox.setBackground(Color.white); / 文本框背景色为白色 / 调整窗体 private void setupFrame() this.setDefaultCloseOperation(EXIT_ON_CLOSE); / 当窗体关闭时程序结束 this.setLocation(100, 50); / 设置窗体显示在桌面上的位置 this.setSize(300, 200); / 设置窗体大小 this.setResizable(false); / 窗体大小固定 / 程序入口 public static void main(String args) throws Exception UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); Calculator frame = new Calculator(计算器); frame.setVisible(true); / 在桌面上显示窗体 /* * 计算器核心逻辑。这个逻辑只能处理 12 个数的运算。 */ class CalculatorCore private String displayText = ; / 要显示的文本 boolean reset = true; private BigDecimal number1, number2; private String operator; private HashMap operators = new HashMap(); private HashMap processors = new HashMap(); CalculatorCore() setupOperators(); setupProcessors(); / 为每种命令添加处理方式 private void setupProcessors() processors.put(0-9, new Processor() public void calculate(String command) numberClicked(command); ); processors.put(., new Processor() public void calculate(String command) dotClicked(); ); processors.put(=, new Processor() public void calculate(String command) equalsClicked(); ); processors.put(+-*/, new Processor() public void calculate(String command) operatorClicked(command); ); processors.put(C, new Processor() public void calculate(String command) clearClicked(); ); processors.put(CE, new Processor() public void calculate(String command) clearErrorClicked(); ); / 为每种 operator 添加处理方式 private void setupOperators() operators.put(+, new Operator() public BigDecimal process(BigDecimal number1, BigDecimal number2) return number1.add(number2); ); operators.put(-, new Operator() public BigDecimal process(BigDecimal number1, BigDecimal number2) return number1.subtract(number2); ); operators.put(*, new Operator() public BigDecimal process(BigDecimal number1, BigDecimal number2) return number1.multiply(number2); ); operators.put(/, new Operator() public BigDecimal process(BigDecimal number1, BigDecimal number2) return number1.divide(number2, 30, RoundingMode.HALF_UP); ); / 根据命令处理。这里的命令实际上就是按钮文本。 public String process(String command) for (String pattern : processors.keySet() if (command.matches(pattern) processors.get(pattern).calculate(command); break; return displayText; / 当按下 CE 时 private void clearErrorClicked() if (operator = null) number1 = null; else number2 = null; displayText = ; reset = true; / 当按下 C 时,将计算器置为初始状态。 private void clearClicked() number1 = null; number2 = null; operator = null; displayText = ; reset = true; / 当按下 = 时 private void equalsClicked() calculateResult(); number1 = null; number2 = null; operator = null; reset = true; / 计算结果 private void calculateResult() number2 = new BigDecimal(displayText); Operator oper = operators.get(operator); if (oper != null) BigDecimal resu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理札记读后感:细节与本质的再思考
- 长江艺术工程职业学院《食工仪表自动化》2023-2024学年第二学期期末试卷
- 护理文件书写规范及要求
- 江苏省百校2024-2025学年高三下学期期初开学联考物理试题含解析
- 南充科技职业学院《中学生物课程资源开发与应用》2023-2024学年第二学期期末试卷
- 四川西南航空职业学院《化工热力学实验》2023-2024学年第二学期期末试卷
- 江苏航运职业技术学院《城乡空间分析与规划新技术》2023-2024学年第一学期期末试卷
- 中华女子学院《食品工厂设计概论》2023-2024学年第二学期期末试卷
- 十堰市茅箭区2024-2025学年小升初总复习数学测试题含解析
- 石家庄信息工程职业学院《FPGA数字系统课程设计》2023-2024学年第二学期期末试卷
- 北京市朝阳区2025届高三下学期一模试题 数学 含答案
- 运输公司安全管理制度
- 2025届吉林省长春市高三下学期4月三模政治试题(原卷版+解析版)
- 2025届江苏省扬州市中考一模语文试题(含答案)
- 2025年河北省唐山市中考一模道德与法治试题(含答案)
- 2025年一级注册计量师考试题库大全及答案
- 放疗皮肤反应分级护理
- 工程造价咨询服务投标方案(专家团队版-)
- 2024年广东省中考生物+地理试卷(含答案)
- 小小科学家《物理》模拟试卷A(附答案)
- 劳务派遣劳务外包服务方案(技术方案)
评论
0/150
提交评论