简单计算器设计java课程大学本科毕业论文.doc
《简单计算器设计java课程大学本科毕业论文.doc》由会员分享,可在线阅读,更多相关《简单计算器设计java课程大学本科毕业论文.doc(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、存档资料 成绩: 华东交通大学理工学院课 程 设 计 报 告 书所属课程名称 Java语言程序设计 题 目 简单计算器设计 分 院 电 信 分 院 专业班级 12通信工程1班 学号 20120210420112 学生姓名 指导教师 2014 年 6 月 20日 华东交通大学理工学院课程设计报告目录第1章 计算器机要求与内容. 3第2章 计算器设计. 4第3章 计算器程序代码.14第4章 计算器测试.49第5章 课程设计心得.53第6章 参考文献.54第1章 计算器内容及要求一 设计内容:1. 实现基本的加减乘除法的运算;2实现常用的函数计算功能;3. 实现将系统时间在界面上显示;4. 实现菜单
2、对计算器的关闭、开启及设置运算法则的操作。二 设计要求1. 使用菜单控制计算器界面的显示,关闭;2. 使用菜单控制运算的法则;3. 使用菜单显示函数运算窗口及运算;4. 数据采用手工输入方式;5. 对异常的数据进行异常处理,比如1/0的情况。第2章 计算器设计一设计模式 采用MVC设计模式,将模型,视图,控制分别单独完成。在模型中将视图,控制添加到其中,再分别完成视图的,控制的程序。二结构设计 在界面中分为四个视图的组件,控制分为按钮事件,菜单选择事件,以及键盘输入控制事件。如图1模型时间布局组件操作模式布局组件函数运算组件结果布局组件按钮事件菜单选择事件键盘输入事件菜单布局组件运算布局组件图
3、1在界面的布局上采用网格布局,将分别装填时间布局组件,操作模式布局组件,运算布局组件,结果布局组件。如图3组件上的相对应控件相应的事件分别封装按钮事件,菜单项选择事件,键盘输入事件。选择相应的控件,产生对应的响应事件。各组件对应控件的响应事件对应如图2。运算布局组件结果布局组件按钮事件菜单选择事件键盘输入事件菜单布局组件图2函数运算组件图3三代码设计本程序共有六个包wgr.constant,wgr.entry, wgr.event,wgr.layout,wgr.otherlayout,wgr.thread。分别用来盛装各个组件,如图4。图4(1)wgr.constant包中有一个Constan
4、t类用来盛放程序设计中用到的字符串常量。例如:加法,减法,乘法及运算符号等。 详见代码。(2)wgr.entry包中有个一Entry类,此类是程序的入口,也是程序的模型,所有的组件都加载到这里。此类中定义了两个方法main和loadwidge。Loadwidge的方法获取各个组件中的控件。然后在主方法中对获得的控件添加对应的事件处理机制。例如JButton的点击事件,菜单选择菜单项等。 详见代码。(3)wgr.event包中含有四个类分别是MyButtonLisener、MyKeyPress、MyMenu_1_Listner、MyMenu_2_listener。MyButtonLisener作
5、用是按钮的点击响应,MyKeyPress作用是键盘输入数据控制的作用,防止非法的输入,MyMenu_1_Listner的作用是对计算器菜单进行选择的响应,MyMenu_2_listener的作用是对运算模式菜单进行选择的响应,MyMenu_3_listener是对选择运算函数的监听相应。MyButtonLisener中对运算组件中的“运算”按钮与返回结果组件中的“清除”按钮进行做对应的相应。此类中带有一个MyButtonLisener的有参数构造函数,从Entry类中得到需要操作的控件,比如获得输入框的数据,获得运行模式等。继承了ActionListener接口,实现了actionPerfor
6、med方法,在响应“运算”按钮时对输入的数据进行了判断,判断是否可以进行运算,比如数据的不完整,在除法时不能除以0的情况进行了处理。 详见代码。下面是点击运行时对输入的数据进行判断是否为空,当不为空时再根据计算模式进行计算。if (textField_shuru1.getText().toString() != null)& (textField_shuru1.getText().toString() != null)当有空时将有提示对话框else JOptionPane.showMessageDialog(jFrame, 输入的数据不可以为空, 警告,JOptionPane.OK_OPTIO
7、N);在进行除法的运算是,会判断被除数是否为零,如果是会弹出一个提示对话框/运算除法时需要对输入的数据进行处理,判断是否不能进行运算if (simble.equals(Constant.DIVISION) if (shuru2 != 0.0) textField_jieguo.setText(String.valueOf(shuru1/ shuru2); else JOptionPane.showConfirmDialog(jFrame, 输入有误,不可以除以 0,提示, JOptionPane.OK_OPTION);点击“清空”按钮时会将所有的数据清空else if (e.getSource
8、().equals(button_clear) /将数据清空的按钮textField_shuru1.setText(null);textField_shuru2.setText(null);textField_jieguo.setText(null); MyKeyPress是对输入框输入数据进行了处理,阻止非法的输入,此类继承了KeyListener接口,实现了keyPressed方法,此类有一个MyKeyPress含有参数的构造方法,用来获得需要的控件。 详见代码。/构造函数,获得面板的需要进行操作的控件public MyKeyPress(JFrame frame, JTextField t
9、extField_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()
10、= KeyEvent.VK_ENTER)| (e.getKeyChar() = KeyEvent.VK_PERIOD) else JOptionPane.showConfirmDialog(frame, 输入有误, 提示,JOptionPane.OK_CANCEL_OPTION); MyMenu_1_Listner是对计算器菜单进行选择的操作事件,此类继承了ActionListener接口,实现actionPerformed了方法。对“开启计算器”,“关闭计算器”,“退出”的菜单项进行了实现。 详见代码。选择“开启计算器”时,就将运算模式组件,运算组件,返回结果组件的setVisible设为t
11、rue实现“开启计算器”功能。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实现“关闭计算器”功能。选择“退出”时,将退出程序,同时将获取时间的线程中断。/退出
12、程序if (e.getSource().equals(menuItem_exit) TimeThread.setSTATE(false);jFrame.dispose(); MyMenu_2_listener是对计算器的运算法则进行设置,该类继承了ActionListener接口,实现actionPerformed了方法。该类有一个MyMenu_2_listener有参数的构造方法,获得需要操作的显示运算法则的控件及菜单项。 详见代码。MyMenu_3_listener是对计算器的函数运算进行设置,该类继承了ActionListener接口,实现actionPerformed了方法。该类有一个
13、MyMenu_3_listener有参数的构造方法,获得需要操作菜单项。 详见代码。(4)wgr.layout包中是组件的布局,其中含有Commond_layout、Model_layout、MyMenu1、 MyMenu2、Result_layout 、Time_layout六个类的布局组件。Commond_layout是运行数据的组件,其中有JLabel,JTextField,JButton,JPanel 详见代码。JPanel使用FlowLayout布局,将JLabel,JTextField,JButton加入JPanel中,效果如上图。Model_layout是显示运行模式的布局组件,
14、Jpanel使用GridLayout的布局,其中有2个JLabel,分别是当前“当前操作模式:”和显示运算法则的JLabel。 详见代码。MyMenu1、MyMenu2、MyMenu3都是菜单,MyMenu1是“计算器”菜单里面含有“开启计算器”、“关闭计算器”、“退出”的菜单项。MyMenu2是“计算模式”菜单,里面含有“加法”、“减法”、“乘法”、“除法”的菜单项。菜单使用JMenu,菜单项使用JMenuItem。MyMenu3是“函数”菜单,里面含有“sin(x)”、“cos(x)”、“tan(x)”、“ln(x)”、“sqrt(x)”的菜单项。菜单使用JMenu,菜单项使用JMenuI
15、tem。 详见代码。 Result_layout是显示运算结果的布局组件,Jpanel使用FlowLayout的布局,Jpanel中加入JLabel、JTextField、JButton的控件。 详见代码。JLabel是“结果”的控件,JTextField用来显示得到的结果,JButton是“清除”的按钮,作用是将输入的输入与输出的数据清空。Time_layout 是显示时间的布局组件, Jpanel使用FlowLayout的布局,Jpanel中加入两个JLabel的控件。分别“显示时间”,另一个是将系统的时间显示在另一个JLabel上。 详见代码。 (5)wgr.otherlayout包中含
16、有一个Hanshu_layout的类,该是是显示函数运算的窗口,并且还有输入框的键盘输入监听事件。还对输入的数据进行的控制。以防止非法的数据输入,运算产生错误。该类是根据获得函数类型进行相应的运算。public void keyPressed(KeyEvent e) if (KeyEvent.VK_0 = e.getKeyChar() & e.getKeyChar() = KeyEvent.VK_9)| (e.getKeyChar() = KeyEvent.VK_BACK_SPACE)| (e.getKeyChar() = KeyEvent.VK_ENTER)| (e.getKeyChar()
17、 = KeyEvent.VK_PERIOD) if (e.getKeyChar() = KeyEvent.VK_PERIOD) else if (!field.getText().toString().equals(null)& (e.getKeyChar() = KeyEvent.VK_ENTER) double d = Double.parseDouble(field.getText().toString();if (MyMenu_3_listener.getString() = Constant.F_Sin) field2.setText(String.valueOf(Math.sin(
18、d).substring(0, 5);if (MyMenu_3_listener.getString() = Constant.F_Cos) field2.setText(String.valueOf(Math.cos(d).substring(0, 5);if (MyMenu_3_listener.getString() = Constant.F_Tan) field2.setText(String.valueOf(Math.tan(d).substring(0, 5);if (MyMenu_3_listener.getString() = Constant.F_Sqrt) field2.s
19、etText(String.valueOf(Math.sqrt(d);if (MyMenu_3_listener.getString() = Constant.F_Log) field2.setText(String.valueOf(Math.log(d).substring(0, 5); else if (e.getKeyChar() = KeyEvent.VK_BACK_SPACE) field.setText(null);field2.setText(null); else JOptionPane.showConfirmDialog(frame, 输入有误, 提示,JOptionPane
20、.OK_CANCEL_OPTION);/ 如果输入了非法的数据,将非法输入的数据删除掉field.setText(field.getText().toString().substring(0,field.getText().toString().length() - 1);(6)wgr.thread包中只含有一个TimeThread类,该类继承了Thread。该类有一个TimeThread有参数的构造方法,用来获得Time_layou中的显示系统时间的Jlabel。public TimeThread(JLabel label) jLabel = label;该类重写了run方法,获得系统的时间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 计算器 设计 java 课程 大学本科 毕业论文
限制150内