当前位置:文档之家› java课程设计 计算器实际与实现

java课程设计 计算器实际与实现

《面向对象程序设计》课程设计报告题目: 计算器设计与实现专业:班级:姓名:指导教师:成绩:xx201x 年 x 月xx 日xxxxxx目录1 设计内容及要求 (1)1.1设计内容 (1)1.2设计任务及具体要求 (1)2 概要设计 (1)2.1 功能需求 (1)2.2 系统的开发运行环境 (2)3 设计过程 (2)3.2系统功能模块 (3)4 设计结果与分析 (4)4.1功能模块的划分 (4)4.2功能模块的实现 (4)小结 (10)5 参考文献 (11)1 设计内容及要求1.1设计内容该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。

即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

可以进行简单的四则运算(加、减、乘、除,等)1.2设计任务及具体要求计算器的设计与实现,使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。

在日常生活中经常需要用到计算器,比如科学计算、数字计算、会计业务甚至是日常生活中的一些运算,当运算比较复杂时没有计算器就会显得很麻烦。

为了解决日常生活中的困难,特意设计了这个计算器系统。

2 概要设计2.1 功能需求在日常生活中人们总是难以避免的要进行一些运算,当运算比较复杂时没有计算器就会显得很麻烦。

为了解决日常生活中的困难,特意设计了这个计算器系统。

在该系统中不仅可以进行整数的加、减、乘、除等简单运算,也可以进行浮点数的加、减、乘、除等运算。

除此之外还可以进行三角函数、指数、对数、平方等运算。

人们应用它可以解决日常生活中的一些运算问题,比如做买卖时进行交易的过程中就可以利用该计算器进行数量、价格以及金额的统计计算。

学生也可以利用该计算器进行数学运算,解决简单的三角函数运算。

2.2 系统的开发运行环境本系统开发平台: Java本系统集成开发环境:MyEclipse和UltraEdit本系统运行环境: windows xp3 设计过程3.1 系统体系结构设计本应用程序继承自框架类(Frame),此程序使用Frame布局管理器GridLayout,在Container容器中将单行文本框放在窗体上方区域,将选项、进制转换、帮助等按钮添加到菜单条。

包含各种按钮的面板Jpanel采用n行m列的网格布局,然后将数字按钮和运算按钮以及控制按钮添加到面板中。

同时注册事件监听器:计算器总体结构如图1所示:图1总体分析图3.2系统功能模块3.2.1系统功能描述(1)基本运算,包括对整数和浮点数进行加、减、乘、除以及乘方、三角函数、指数等运算;(2)进制运算,包括十进制和二进制数、十进制和八进制之间的转换;(3)其他功能,包括对输入、输出结果的复制、粘贴、剪切和退格、清零等。

3.2.2系统流程图根据系统要求和和系统功能的划分可以得到如图2所示的流程图:图2程序流程图3.2.3主要类设计public class Calculator extends Frame implements ActionListener;WindowListener{}// Calculator是初始化界面,整体布局及响应用户的各种按钮操作class WinCloseimplementsWindowListener{public void windowClosing(WindowEvent e)}// WinClose是设置计算器整个窗体的显示、退出、隐藏的操作。

4 设计结果与分析4.1功能模块的划分(1)界面模块:实现计算器的运算界面,该界面表示数据的按钮、表示浮点型的按钮运算符按钮和实现显示运算结果界面以及菜单选项界面。

(2)监听器模块:该模块为每一个按钮设置监听器,当鼠标点击按钮时通过监听器来判断该按钮代表的什么数据、实现什么运算功能、执行什么功能等。

(3)动作响应模块:该模块通过按钮事件,进行对应的处理功能其主要是将运算数据,以浮点型类型保存在内存中,然后通过判断运算符类型对数据进行相应的运算,并将运算结果以String类型在结果文本区域中显示,其中包括菜单条里的进制转换和各选项菜单的动作响应。

(4)主函数模块:调用已经设计好的函数,来实现计算器的全部功能。

4.2功能模块的实现4.2.1计算器界面模块在界面设计中,应用Frame框架,Frame是独立于浏览器的可运行的窗口,所以应用Frame框架来设计计算器界面比较合适。

在Frame框架的容器分别设置菜单条JmenuBar、文本区JTextField、然后在其中设置了五个面板分别都采用GirdLayout 布局完成数字键盘和运算符的设置。

实现该界面的部分代码如下:public class Calculator extends Frame implements ActionListener, WindowListener{ private Container container;private GridBagLayout layout;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; //保存+,-,*,/,=命令定义各种组件JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(1,5,4,4));//定义为GridLayout布局this.add(panel1);button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+/-");panel1.add(button_sqrt);//面板的定义和按钮添加4.2.2监听器模块通过继承ActionListener和WindonListener接口来实现事件监听。

当Buttoin或Item对象上用鼠标进行点击时,将发送一个ActionEvent事件。

这个事件ActionEvent事件会被使用addAtionListener()方法注册的所有ActionListener的actionPerformed()方法接收,首先为所有具有时间动作的组件用addAtionListener(this)进行监听,当被监听的组件发生事件时就进行反馈,同时进行动作事件处理。

该模块的部分代码如下:button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(this);//各按钮的监听器设置this.addWindowListener(new WinClose()); //注册窗口监听器this.setVisible(true);dialog.add(label_dialog);dialog.addWindowListener(this);//为对话框注册窗口事件监听器JMenuItem m1_exit=new JMenuItem("复制");m1_exit.addActionListener(this);//设置菜单按钮的监听器4.2.3动作响应模块该模块通过public void actionPerformed(ActionEvent e)函数来实现动作响应事件。

首先通过e.getSource()来获得当前发生动作,然后根据不同的按钮产生不同动作响应,在实现动作响应之前定义了lastCommand、resul 、start 变量界面效果,其中若鼠标点击的是数字按钮则e.getSource()获取lastCommand ,if(e.getSource().equals(button_1)||e.getSource().equals(button_2)|| if (start)displayField.setTiext("");//设置计算器初始为空if(input.equals("+/-"))displayField.setText(displayField.getText()+"-")if(!input.equals("+/-"))当首先输入的符号是+/-时初始if(input.equals("退格")) //退格键的实现方if(str.length()>0)displayField.setText(str.substring(0,str.length()-1 ));lse if(input.equals("C")) //清零键的实现方displayField.setText("0");else if (e.getActionCommand()=="复制") //各按钮的动作响应方式代码displayField.copy();else if (e.getActionCommand()=="剪切")else if (e.getActionCommand()=="二进制") //二进制的转换if(displayField.getText()==null)若为空则弹出对话框JOptionPane.showMessageDialog(this,"不能为空!请输入要进行转换的字符"," 消息对话框",JOptionPane.WARNING_MESSAGE);else if (e.getActionCommand()=="用法") //按'帮助'菜单栏用法的处理方法label_dialog.setText("sqrt,exp,log等键是先输运算符再输数字,其他运算是先输入数字再输入运算符\n");else if (e.getActionCommand()=="关于")//按'关于'菜单栏用法的处理方法JOptionPane.showMessageDialog(label_dialog,"Java的计算器\n" + "JAVA课程设计" + "详情咨询mail:****************\n","关于计算器", RMATION_MESSAGE)if (lastCommand.equals("+"))//各运算符的具体运算方法result+= x;public void windowClosing(WindowEvent e)if(e.getSource()==dialog)dialog.setVisible(false);//隐藏对话框elseSystem.exit(0);基于前面三块模板的功能,定义一个主函数来实现计算器的所有功能,同时定义一个windowClosing 控制窗口关闭事件,其具体代码如下:public static void main(String args[])Calculator calculator=new Calculator()Calss WinClose implements WindowListener public void windowClosing(WindowEvent e)4.3功能模块的测试图 3 初始化界面图 4 求平方根图 5 cos 运算图 6 exp 运算结果图7 加减运算小结设计,给人以创作的冲动,但也要为这次冲动承担一定的痛苦,但事后发现,这一切都是值得的,本次的JAVA课程设计让我对JAVA的理论知识又有深一步的了解,温故而知新,开始设计之时完全没头绪,对与理论学习不够扎实的我深感“书到用时方恨少”只好再把书上介绍的相关知识重新阅读一遍,对知识进行了全面而系统的梳理,遇到难处首先是苦思冥想寻求方法,再向同学请教,终于熟练掌握了基本理论知识,而且领悟了诸多平时学习难以理解掌握的的较难的知识,学会了如何思考的方式,找到了设计的灵感。

相关主题