版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、吉首大学面向对象程序设计课程设计实验报告书课程名称面向对象程序设计实验实验项目名称计算器课程设计专业班级08级计算机科学与技术四班组长/学号:组员/学号:组员/学号:实验报告成绩_实验指导老师签字_面向对象程序设计计算器课程设计报告一.实验目的编写一个计算器的小程序,通过这个程序,掌握Java语言程序设计中的小程序的编写。掌握在编写计算器程序中所运用的面板(Panle的使用,以及制作计算器时需要了解掌握的布局管理,采用5种布局管理器类,将计算器板面合理的规划出来。并且通过一系列的组件类设置出组件的字体、颜色、大小等。一.选题与团队分工选题:计算器分工:角色姓名承担的具体任务组长编写程序、修改程
2、序、运行结果分析、报告的整体规划、总结组员编写程序、流程图、运行结果分析组员编写程序、修改程序、结构图二.系统环境操作系统:Windows xp处理器:AMD Athlon(tm II x2 240 processor内存:1GB三.功能说明使用“计算器”可以完成任意的通常借助手持计算器来完成的标准运算。“计算器”可用于基本的算术运算,以及简单的实数运算,比如加减运算等。(1执行简单的计算:1.键入计算的第一个数字。2.单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。3.键入计算的下一个数字。4.输入所有剩余的运算符和数字。5.单击“=”。6.得出结果。7.界面上的清零键可清零。(
3、2实现效果: 四.程序功能实现:1.运用两个面板的叠加做出界面。2.通过在按钮的单击事件处理方法中调用类的成员方法calculate(来进行简易计算器的各种运算,并正确实现运算功能。3.调用Math包中的方法实现各函数功能。4.添加菜单条,列出选项、帮助等菜单选项,并分别实现选项中退出的功能,帮助'菜单栏中用法的提示对话框。5.整个程序对话框可实现最小化、最大化、关闭。五.程序说明(1定义类Calculato:public class Calculator extends Frame implements ActionListener, WindowListenerprivate Co
4、ntainer 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,button_divide,button_point,button_equal,button_log,button_tan,button_cos,button_sin,butt
5、on_exp; public Calculator( /构造方法设置布局、为按钮注册事件监听器super("Calculator"this.setLocation(400,200;/设置主界面坐标this.setSize(350,300;/设置主界面的大小.button_sin.addActionListener(this;button_plus.addActionListener(this;this.addWindowListener(new WinClose(; /注册窗口监听器this.setVisible(true;(2添加布局管理器创建窗口并添加按钮,定义数字、运
6、算符以及字符:button_sqrt=new JButton("sqrt"/创建button_sqrt并初始化标签为sqrt button_plusminus=new JButton("+/-"button_exp=new JButton("exp"button_CE=new JButton("退格"button_cancel=new JButton("清零"JPanel panel2=new JPanel(;panel2.setLayout(new GridLayout(1,5,4,4;thi
7、s.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("
8、;4"button_5=new JButton("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&
9、quot;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(panel5;button_0=new JButton("0"button_point=new JButton("."button_equal=new JButton("
10、="button_sin=new JButton("sin"button_plus=new JButton("+"(3为组件登记接口。监听器接口,响应动作事件:button_sqrt.addActionListener(this;button_plusminus.addActionListener(this;button_exp.addActionListener(this;button_CE.addActionListener(this;button_cancel.addActionListener(this;button_7.addActi
11、onListener(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.addActionListener(this;button_tan.addActionListener(this;button_multiply.add
12、ActionListener(this;button_1.addActionListener(this;button_2.addActionListener(this;button_3.addActionListener(this;button_cos.addActionListener(this;button_minus.addActionListener(this;button_0.addActionListener(this;button_point.addActionListener(this;button_equal.addActionListener(this;button_sin
13、.addActionListener(this;button_plus.addActionListener(this;(4设置板面的大小:f.setSize(215,230;(5在类中实现接口中声明的事件处理方法:public void actionPerformed(ActionEvent e(6委任事件处理模型,可以使用多个接口:class Result implements ActionListener(7响应打开窗口事件,响应关闭窗口后的事件,响应窗口失活事件:public void windowOpened(WindowEvent epublic void windowIconifi
14、ed(WindowEvent epublic void windowDeiconified(WindowEvent epublic void windowClosed(WindowEvent epublic void windowActivated(WindowEvent epublic void windowDeactivated(WindowEvent e六.流程图七.功能实现类的定义添加布局管理器创建窗口添加按钮,定义数字、运算符,字符为组件登记接口在类中实现接口中声明的事件处理方法响应事件 上图即为通过程序实现的计算器面板。八.源程序代码如下public class Calculato
15、r extends Frame implements ActionListener, WindowListener private Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; /计算结果显示区private String lastCommand; /保存+,-,*,/,=命令0private double result; /保存计算结果private boolean start; /判断是否为数字的
16、开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButtonbutton_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,b
17、utton_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;button_sqrt=ne
19、w 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"b
20、utton_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 JButton("5"button
21、_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_co
22、s=new JButton("cos"button_minus=new JButton("-"JPanel panel5=new JPanel(;panel5.setLayout(new GridLayout(1,5,4,4;this.add(panel5;button_0=new JButton("0"button_point=new JButton("."button_equal=new JButton("="button_sin=new JButton("sin"but
23、ton_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;panel2.add(button_8;panel2.add(button_9;panel2.add(button_log;panel2.add(button_divide;panel3.add(button_4;panel3.add(button_5;
24、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;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.
25、addActionListener(this;button_plusminus.addActionListener(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;but
26、ton_divide.addActionListener(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;b
27、utton_cos.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;this.addWindowListener(new WinClose(; /注册窗口监听器this.setVisi
28、ble(true;private void addmyMenu( /菜单的添加JMenuBar menubar=new JMenuBar(; /创建并初始化菜单栏this.add(menubar;/添加菜单栏到主界面JMenu m1=new JMenu("选项"/创建JMenu对象m1JMenuItem m1_exit=new JMenuItem("退出"/创建JMenuItem菜单项并初始化为退出m1_exit.addActionListener(this;JMenu m3 = new JMenu(" 帮助"JMenuItem m3
29、_Help = new JMenuItem("用法"m3_Help.addActionListener(this;dialog = new Dialog(this,"提示",true; /模式窗口dialog.setSize(240,80;label_dialog = new Label("",Label.CENTER; /标签的字符串为空,居中对齐dialog.add(label_dialog;dialog.addWindowListener(this; /为对话框注册窗口事件监听器m1.add(m1_exit;menubar.ad
30、d(m1;m2.add(m2_ejz;m2.add(m2_bjz;menubar.add(m2;m3.add(m3_Help;menubar.add(m3; public void actionPerformed(ActionEvent e /按钮的单击事件处理方法if(e.getSource(.equals(button_1|e.getSource(.equals(button_2|e.getSource(.equals(button_3|e.getSource(.equals(button_4|e.getSource(.equals(button_5| e.getSource(.equal
31、s(button_6|e.getSource(.equals(button_7| e.getSource(.equals(button_8|e.getSource(.equals(button_9 |e.getSource(.equals(button_0|e.getSource(.equals(button_point|e.getSource(.equals(button_plusminus| |e.getSource(.equals(button_cancel|e.getSource(.equals(button_CE /非运算符的处理方法String input=e.getActionC
32、ommand(;if (startdisplayField.setText(""start=false;if(input.equals("+/-"displayField.setText(displayField.getText(+"-"if(!input.equals("+/-"String str=displayField.getText(;if(input.equals("退格" /退格键的实现方法if(str.length(>0displayField.setText(str.su
33、bstring(0,str.length(-1;else if(input.equals("清零" /清零键的实现方法displayField.setText("0"start=true;elsedisplayField.setText(displayField.getText(+input;else if (e.getActionCommand(="退出" /选项中退出的处理方法System.exit(0;else if (e.getActionCommand(="用法" /按下'帮助'菜单栏中用
34、法的处理方法label_dialog.setText("sqrt,exp等键是先输运算符再输数字n"dialog.setLocation(400,250;dialog.setVisible(true;/ 设置对话框可见else /各运算符的识别String command=e.getActionCommand(;if(startlastCommand=command;elsecalculate(Double.parseDouble(displayField.getText(;/将输入文本域的内容强制转换为DoublelastCommand=command;start=tru
35、e;public void calculate(double x /各运算符的具体运算方法double d=0;if (lastCommand.equals("+"result+= x;else if (lastCommand.equals("-"result-=x;else if (lastCommand.equals("*"result*=x;else if (lastCommand.equals("/"result/=x;else if (lastCommand.equals("="res
36、ult=x;else if (lastCommand.equals("sqrt"d=Math.sqrt(x;result=d;else if (lastCommand.equals("exp"d=Math.exp(x;result=d;else if (lastCommand.equals("log"d=Math.log(x;result=d;else if (lastCommand.equals("tan"d=Math.tan(x;result=d;else if (lastCommand.equals(&quo
37、t;cos"d=Math.cos(x;result=d;else if (lastCommand.equals("sin"d=Math.sin(x;result=d;displayField.setText(""+ result;public void windowClosing(WindowEvent eif(e.getSource(=dialogdialog.setVisible(false; /隐藏对话框elseSystem.exit(0;public void windowOpened(WindowEvent e public void windowActivated(WindowEvent e public void windowDeactivated(WindowEvent e public void windowClosed(Windo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽工商职业学院单招职业倾向性考试题库附答案详解ab卷
- 2026年安徽工商职业学院单招职业技能测试题库附答案详解(突破训练)
- 2026年安徽工商职业学院单招职业适应性测试题库及答案详解(全优)
- 2026年安徽工商职业学院单招职业适应性考试题库含答案详解(基础题)
- 2026年安徽工贸职业技术学院单招综合素质考试题库带答案详解(模拟题)
- 2026年安徽工贸职业技术学院单招职业技能测试题库附答案详解(巩固)
- 2026年安徽工贸职业技术学院单招职业适应性测试题库及答案详解(必刷)
- 2026年安徽工贸职业技术学院单招职业适应性考试题库含答案详解(新)
- 2026年安徽广播影视职业技术学院单招综合素质考试题库完整参考答案详解
- 2026年安徽广播影视职业技术学院单招职业倾向性测试题库带答案详解(a卷)
- 2025年江西省高职单招文化考试语文试卷
- 露天煤矿安全知识培训课件
- 小学科技创新实验项目汇编
- 新闻传播学基础课件
- 光伏质量管理培训课件
- 委托招商提成方案(3篇)
- 《小学语文课程与教学》课件全套 第1-7章 语文课程与标准解读-小学语文教师的数字化素养
- 2025年哈铁单招试题及答案
- 洪恩识字1-1300字文档
- 目录页四项样式合集模板
- 肌骨常见疾病的超声诊断
评论
0/150
提交评论