当前位置:文档之家› java课设计算器

java课设计算器

java课设计算器华东交通大学理工学院课程设计报告书所属课程名称Java语言程序设计题目简单计算器设计分院电信分院专业班级12通信工程1班学号212学生姓名指导教师2014 年6 月20日java课设计算器目录第1章计算器机要求及内容 (3)第2章计算器设计.............................................................4第3章计算器程序代码 (14)第4章计算器测试.............................................................49第5章课程设计心得 (53)第6章参考文献..................................................................54第1章计算器内容及要求一设计内容:1. 实现基本的加减乘除法的运算;2 实现常用的函数计算功能;3. 实现将系统时间在界面上显示;4. 实现菜单对计算器的关闭、开启及设置运算法则的操作。

二设计要求1.使用菜单控制计算器界面的显示,关闭;2.使用菜单控制运算的法则;3.使用菜单显示函数运算窗口及运算;4.数据采用手工输入方式;5.对异常的数据进行异常处理,比如1/0的情况。

第2章计算器设计一.设计模式采用MVC设计模式,将模型,视图,控制分别单独完成。

在模型中将视图,控制添加到其中,再分别完成视图的,控制的程序。

二.结构设计在界面中分为四个视图的组件,控制分为按钮事件,菜单选择事件,以及键盘输入控制事件。

如图1图1在界面的布局上采用网格布局,将分别装填时间布局组件,操作模式布局组件,运算布局组件,结果布局组件。

如图3组件上的相对应控件相应的事件分别封装按钮事件,菜单项选择事件,键盘输入事件。

选择相应的控件,产生对应的响应事件。

各组件对应控件的响应事件对应如图2。

图3 运算布局组件结果布 局组件按钮菜单键盘菜单图2函数运算组件三.代码设计本程序共有六个包wgr.constant,wgr.entry, wgr.event,yout,wgr.otherlayout,wgr.thread。

分别用来盛装各个组件,如图4。

图4(1)wgr.constant包中有一个Constant类用来盛放程序设计中用到的字符串常量。

例如:加法,减法,乘法及运算符号等。

详见代码。

(2)wgr.entry包中有个一Entry类,此类是程序的入口,也是程序的模型,所有的组件都加载到这里。

此类中定义了两个方法main和loadwidge。

Loadwidge 的方法获取各个组件中的控件。

然后在主方法中对获得的控件添加对应的事件处理机制。

例如JButton的点击事件,菜单选择菜单项等。

详见代码。

(3)wgr.event包中含有四个类分别是MyButtonLisener、MyKeyPress、MyMenu_1_Listner、MyMenu_2_listener。

MyButtonLisener作用是按钮的点击响应,MyKeyPress 作用是键盘输入数据控制的作用,防止非法的输入,MyMenu_1_Listner的作用是对计算器菜单进行选择的响应,MyMenu_2_listener的作用是对运算模式菜单进行选择的响应,MyMenu_3_listener是对选择运算函数的监听相应。

○1MyButtonLisener中对运算组件中的“运算”按钮及返回结果组件中的“清除”按钮进行做对应的相应。

此类中带有一个MyButtonLisener的有参数构造函数,从Entry类中得到需要操作的控件,比如获得输入框的数据,获得运行模式等。

继承了ActionListener接口,实现了actionPerformed方法,在响应“运算”按钮时对输入的数据进行了判断,判断是否可以进行运算,比如数据的不完整,在除法时不能除以0的情况进行了处理。

详见代码。

下面是点击运行时对输入的数据进行判断是否为空,当不为空时再根据计算模式进行计算。

if ((textField_shuru1.getText().toString() != null)&&(textField_shuru1.getText().toString() != null))当有空时将有提示对话框else {JOptionPane.showMessageDialog(jFrame, "输入的数据不可以为空", "警告",JOptionPane.OK_OPTION);}在进行除法的运算是,会判断被除数是否为零,如果是会弹出一个提示对话框//运算除法时需要对输入的数据进行处理,判断是否不能进行运算if (simble.equals(Constant.DIVISION)) {if (shuru2 != 0.0) {textField_jieguo.setText(String.valueOf(shuru1/ shuru2));} else {JOptionPane.showConfirmDialog(jFrame, "输入有误,不可以除以0","提示",JOptionPane.OK_OPTION);}}点击“清空”按钮时会将所有的数据清空elseif (e.getSource().equals(button_clear)) { //将数据清空的按钮textField_shuru1.setText(null);textField_shuru2.setText(null);textField_jieguo.setText(null);}○2MyKeyPress是对输入框输入数据进行了处理,阻止非法的输入,此类继承了KeyListener接口,实现了keyPressed 方法,此类有一个MyKeyPress含有参数的构造方法,用来获得需要的控件。

详见代码。

//构造函数,获得面板的需要进行操作的控件public MyKeyPress(JFrame frame, JTextField textField_shuru1,JTextField textField_shuru2) {this.frame = frame;this.textField_shuru1 = textField_shuru1;this.textField_shuru2 = textField_shuru2;}对非法的输入将弹出提示对话框,然后清除非法的输入。

if ((KeyEvent.VK_0 <= e.getKeyChar() &&e.getKeyChar() <= KeyEvent.VK_9)|| (e.getKeyChar() ==KeyEvent.VK_BACK_SPACE)|| (e.getKeyChar() ==KeyEvent.VK_ENTER)|| (e.getKeyChar() ==KeyEvent.VK_PERIOD)) {} else {JOptionPane.showConfirmDialog(frame, "输入有误", "提示",JOptionPane.OK_CANCEL_OPTION);○3MyMenu_1_Listner是对计算器菜单进行选择的操作事件,此类继承了ActionListener接口,实现actionPerformed了方法。

对“开启计算器”,“关闭计算器”,“退出”的菜单项进行了实现。

详见代码。

选择“开启计算器”时,就将运算模式组件,运算组件,返回结果组件的setVisible设为true实现“开启计算器”功能。

if (e.getSource().equals(menuitem_start)) {//将模板组件隐藏panel_2_method.setVisible(true);panel_3_commond.setVisible(true);panel_4_result.setVisible(true);menu.setVisible(true);menu2.setVisible(true);}同理,单击“关闭计算器”时,就将运算模式组件,运算组件,返回结果组件的setVisible设为false实现“关闭计算器”功能。

选择“退出”时,将退出程序,同时将获取时间的线程中断。

//退出程序if (e.getSource().equals(menuItem_exit)) {TimeThread.setSTATE(false);jFrame.dispose();}○4MyMenu_2_listener是对计算器的运算法则进行设置,该类继承了ActionListener接口,实现actionPerformed 了方法。

该类有一个MyMenu_2_listener有参数的构造方法,获得需要操作的显示运算法则的控件及菜单项。

详见代码。

○5MyMenu_3_listener是对计算器的函数运算进行设置,该类继承了ActionListener接口,实现actionPerformed 了方法。

该类有一个MyMenu_3_listener有参数的构造方法,获得需要操作菜单项。

详见代码。

(4)yout包中是组件的布局,其中含有Commond_layout、Model_layout、MyMenu1、MyMenu2、Result_layout 、Time_layout六个类的布局组件。

○1Commond_layout是运行数据的组件,其中有JLabel,JTextField,JButton,JPanel 详见代码。

JPanel使用FlowLayout布局,将JLabel,JTextField,JButton加入JPanel中,效果如上图。

○2Model_layout是显示运行模式的布局组件,Jpanel使用GridLayout的布局,其中有2个JLabel,分别是当前“当前操作模式:”和显示运算法则的JLabel。

详见代码。

○3MyMenu1、MyMenu2、MyMenu3都是菜单,MyMenu1是“计算器”菜单里面含有“开启计算器”、“关闭计算器”、“退出”的菜单项。

MyMenu2是“计算模式”菜单,里面含有“加法”、“减法”、“乘法”、“除法”的菜单项。

菜单使用JMenu,菜单项使用JMenuItem。

MyMenu3是“函数”菜单,里面含有“sin(x)”、“cos(x)”、“tan(x)”、“ln(x)”、“sqrt(x)”的菜单项。

菜单使用JMenu,菜单项使用JMenuItem。

详见代码。

相关主题