《面向对象程序设计课程设计 -计算器.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计 -计算器.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计课程设计 -计算器 吉首大学 面向对象程序设计课程设计 实验报告书 课程名称面向对象程序设计实验 实验项目名称计算器课程设计 专业班级08级计算机科学与技术四班 组长/学号: 组员/学号: 组员/学号: 实验报告成绩 实验指导老师签字 面向对象程序设计 计算器课程设计报告 一实验目的 编写一个计算器的小程序,通过这个程序,掌握Java语言程序设计中的小程序的编写。掌握在编写计算器程序中所运用的面板(Panle)的使用,以及制作计算器时需要了解掌握的布局管理,采用5种布局管理器类,将计算器板面合理的规划出来。并且通过一系列的组件类设置出组件的字体、颜色、大小等。 一选题与团队分工
2、 选题:计算器 分工: 角色姓名承担的具体任务 组长编写程序、修改程序、运行结果分析、报告的整 体规划、总结 组员编写程序、流程图、运行结果分析 组员编写程序、修改程序、结构图 二系统环境 操作系统:Windows xp Java版本:jdk1.6.0_18 处理器:AMD Athlon(tm) II x2 240 processor 内存:1GB 三功能说明 使用“计算器”可以完成任意的通常借助手持计算器来完成的标准运算。“计算器”可用于基本的算术运算,以及简单的实数运算,比如加减运算等。 (1)执行简单的计算: 1.键入计算的第一个数字。 2.单击“+”执行加、“-”执行减、“*”执行乘或
3、“/”执行除。 3.键入计算的下一个数字。 4.输入所有剩余的运算符和数字。 5.单击“=”。 6.得出结果。 7.界面上的清零键可清零。 (2)实现效果: 四程序功能实现: 1.运用两个面板的叠加做出界面。 2.通过在按钮的单击事件处理方法中调用类的成员方法calculate()来进行简易 计算器的各种运算,并正确实现运算功能。 3.调用Math包中的方法实现各函数功能。 4.添加菜单条,列出选项、帮助等菜单选项,并分别实现选项中退出 的功能,帮助菜单栏中用法的提示对话框。 5.整个程序对话框可实现最小化、最大化、关闭。 五程序说明 (1)定义类Calculato: public class
4、 Calculator extends Frame implements ActionListener, WindowListener private Container container; /定义一个container的容器 private GridBagLayout layout; /定义一个layout 类型为GridBagLayout布局方式 . . button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0, button_plus,button_minus,button_multiply,butt
5、on_divide,button_point, button_equal,button_log,button_tan,button_cos,button_sin,button_exp; public Calculator() /构造方法设置布局、为按钮注册事件监听器 super(Calculator); this.setLocation(400,200);/设置主界面坐标 this.setSize(350,300);/设置主界面的大小 . button_sin.addActionListener(this); button_plus.addActionListener(this); this.
6、addWindowListener(new WinClose(); /注册窗口监听器 this.setVisible(true); (2)添加布局管理器创建窗口并添加按钮,定义数字、运算符以及字符: button_sqrt=new JButton(sqrt);/创建button_sqrt并初始化标签为sqrt button_plusminus=new JButton(+/-); button_exp=new JButton(exp); button_cancel=new JButton(清零); JPanel panel2=new JPanel(); panel2.setLayout(new
7、GridLayout(1,5,4,4); this.add(panel2); button_7=new JButton(7); button_8=new JButton(8); button_9=new JButton(9); button_log=new JButton(log); button_divide=new JButton(/); JPanel panel3=new JPanel(); panel3.setLayout(new GridLayout(1,5,4,4); this.add(panel3); button_4=new JButton(4); button_5=new J
8、Button(5); button_6=new JButton(6); button_tan=new JButton(tan); button_multiply=new JButton(*); JPanel panel4=new JPanel(); panel4.setLayout(new GridLayout(1,5,4,4); this.add(panel4); button_1=new JButton(1); button_2=new JButton(2); button_3=new JButton(3); button_cos=new JButton(cos); button_minu
9、s=new JButton(-); JPanel panel5=new JPanel(); panel5.setLayout(new GridLayout(1,5,4,4); this.add(panel5); button_0=new JButton(0); button_equal=new JButton(=); button_sin=new JButton(sin); button_plus=new JButton(+); (3)为组件登记接口。监听器接口,响应动作事件: button_sqrt.addActionListener(this); button_plusminus.addA
10、ctionListener(this); button_exp.addActionListener(this); button_CE.addActionListener(this); button_cancel.addActionListener(this); button_7.addActionListener(this); button_8.addActionListener(this); button_9.addActionListener(this); button_log.addActionListener(this); button_divide.addActionListener
11、(this); button_4.addActionListener(this); button_5.addActionListener(this); button_6.addActionListener(this); button_tan.addActionListener(this); button_multiply.addActionListener(this); button_1.addActionListener(this); button_2.addActionListener(this); button_3.addActionListener(this); button_cos.
12、addActionListener(this); button_minus.addActionListener(this); button_0.addActionListener(this); button_point.addActionListener(this); button_equal.addActionListener(this); button_sin.addActionListener(this); button_plus.addActionListener(this);(4)设置板面的大小: f.setSize(215,230); (5)在类中实现接口中声明的事件处理方法: p
13、ublic void actionPerformed(ActionEvent e) (6)委任事件处理模型,可以使用多个接口: class Result implements ActionListener (7)响应打开窗口事件,响应关闭窗口后的事件,响应窗口失活事件:public void windowOpened(WindowEvent e) public void windowIconified(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowClosed(WindowEvent
14、e) public void windowActivated(WindowEvent e) public void windowDeactivated(WindowEvent e) 六流程图 七功能实现类的定义 添加布局管理器创建窗口 添加按钮,定义 数字、运算符, 字符 为组件登记接 口 在类中实现接口中声明的 事件处理方法 响应事件 上图即为通过程序实现的计算器面板。 八源程序 代码如下 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends Fram
15、e implements ActionListener, WindowListener private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField; /计算结果显示区 private String lastCommand; /保存+,-,*,/,=命令0 private double result; /保存计算结果 private boolean start; /判断是否为数字的开始 priva
16、te JMenuBar menubar; private JMenuItem m_exit,m2_ejz,m2_bjz; private Dialog dialog; private Label label_dialog; private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2, button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0, button_plus,button_minus,bu
17、tton_multiply,button_divide,button_point, button_equal,button_log,button_tan,button_cos,button_sin,button_exp; public Calculator() /构造方法设置布局、为按钮注册事件监听器 super(Calculator); this.setLocation(240,200); this.setSize(350,300); this.setResizable(true); this.setLayout(new GridLayout(7,1); this.addmyMenu();
18、/调用成员方法添加菜单 displayField=new JTextField(30); this.add(displayField); displayField.setEditable(true); start=true; result=0; lastCommand = =; JPanel panel0=new JPanel(); panel0.setLayout(new GridLayout(1,4,4,4); JPanel panel1=new JPanel(); panel1.setLayout(new GridLayout(1,5,4,4); this.add(panel1); bu
19、tton_sqrt=new JButton(sqrt); button_plusminus=new JButton(+/-); button_exp=new JButton(exp); button_CE=new JButton(退格); button_cancel=new JButton(C); JPanel panel2=new JPanel(); panel2.setLayout(new GridLayout(1,5,4,4); this.add(panel2); button_7=new JButton(7); button_8=new JButton(8); button_9=new
20、 JButton(9); button_log=new JButton(log); button_divide=new JButton(/); JPanel panel3=new JPanel(); panel3.setLayout(new GridLayout(1,5,4,4); this.add(panel3); button_4=new JButton(4); button_5=new JButton(5); button_6=new JButton(6); button_tan=new JButton(tan); button_multiply=new JButton(*); JPan
21、el panel4=new JPanel(); panel4.setLayout(new GridLayout(1,5,4,4); this.add(panel4); button_1=new JButton(1); button_2=new JButton(2); button_3=new JButton(3); button_cos=new JButton(cos); button_minus=new JButton(-); JPanel panel5=new JPanel(); panel5.setLayout(new GridLayout(1,5,4,4); this.add(pane
22、l5); button_0=new JButton(0); button_point=new JButton(.); button_equal=new JButton(=); button_sin=new JButton(sin); button_plus=new JButton(+); panel1.add(button_sqrt); panel1.add(button_plusminus); panel1.add(button_exp); panel1.add(button_CE); panel1.add(button_cancel); panel2.add(button_7); pane
23、l2.add(button_8); panel2.add(button_9); panel2.add(button_log); panel2.add(button_divide); panel3.add(button_4); panel3.add(button_5); panel3.add(button_6); panel3.add(button_tan); panel3.add(button_multiply); panel4.add(button_1); panel4.add(button_2); panel4.add(button_3); panel4.add(button_cos);
24、panel4.add(button_minus); panel5.add(button_0); panel5.add(button_point); panel5.add(button_equal); panel5.add(button_sin); panel5.add(button_plus); button_sqrt.addActionListener(this); button_plusminus.addActionListener(this); button_exp.addActionListener(this); button_CE.addActionListener(this); b
25、utton_cancel.addActionListener(this); button_7.addActionListener(this); button_8.addActionListener(this); button_9.addActionListener(this); button_log.addActionListener(this); button_divide.addActionListener(this); button_4.addActionListener(this); button_5.addActionListener(this); button_6.addActio
26、nListener(this); button_tan.addActionListener(this); button_multiply.addActionListener(this); button_1.addActionListener(this); button_2.addActionListener(this); button_3.addActionListener(this); button_cos.addActionListener(this); button_minus.addActionListener(this); button_0.addActionListener(thi
27、s); button_point.addActionListener(this); button_equal.addActionListener(this); button_sin.addActionListener(this); button_plus.addActionListener(this); this.addWindowListener(new WinClose(); /注册窗口监听器 this.setVisible(true); private void addmyMenu() /菜单的添加 JMenuBar menubar=new JMenuBar(); /创建并初始化菜单栏 this.add(menubar);/添加菜单栏到主界面 JMenu m1=new JMenu(选项);/创建JMenu对象m1 JMenuItem m1_exit=new JMenuItem(退出);/创建JMenuItem菜单项并初始化为退出 m1_exit.addActionListener(this); JMenu m3 = new JMenu( 帮助); JMenuItem m3_Help = new JMenuItem(用法);
限制150内