计算表图形面积课程设计报告.doc_第1页
计算表图形面积课程设计报告.doc_第2页
计算表图形面积课程设计报告.doc_第3页
计算表图形面积课程设计报告.doc_第4页
计算表图形面积课程设计报告.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南林业科技大学课程设计报告 设计名称: 计算图形面积 姓 名: 学 号: 专业班级: 院(系): 计算机与与信息工程 设计时间: 设计地点: 中南林业科技大学 指导教师评语: 成绩: 签名: 2013 年 1 月 11 日1、 设计目的1深入理解Java面向对象的设计思想2提高用Java语言编程的能力3学会制作软件开发文二、课程要求分析2.1本课程及程序功能要求 课程名称:计算图形面积的制作要求:编写一个体现MVC结构的GUI程序。首先编写一个图形接口以及实现该接口的圆类、梯形类、三角形类等,然后再编写一个窗口。要求:1能够选择具体的图形;2使用若干文本框和一个文本区为该图形对象中的数据提供视图,其中文本框用来显示和更新图形对象的基本要素(如梯形的上底、下底和高),文本区对象用来显示图形的面积。窗口中有一个按钮,用户单击该按钮后,程序用文本框中的数据作为图形对象的基本要素,并将计算出的图形面积显示在文本区中。 2.2课程介绍 计算图形面积使用的事JavaSE中的GUI和线程基本技术,可以实现三角形、圆、梯形的面积计算。 具体操作如下:1. 点击单选按钮选择要计算面积的图形形状。2. 输入所选择图形对象的基本要素(如梯形的上底、下底、高)。3. 点击按钮“确定”,可以在文本区显示计算得出的结果。4. 点击右上角的关闭键可以退出本程序。三、程序流程图a、b、c构成三角形?输入边长a、b、c 输入半径r输入上下底a1、a2、高h flag=3 flag=2 flag=1 圆If(e.getSource().equals(radio2) 三角形If(e.getSource().equals(radio1) 选择图形 开始 梯形If(e.getSource().equals(radio3) area=(a1+a2)*h/2 area=3.14*r*rNP=(sideA+sideB+sideC)/2area=Math.sqrt(p*(p-sideA)*(p-side)*(p-sideC)无法计算面积 YIf(e.getSource().equals(button) flag=3 flag=1 flag=2调用lader并插入计算结果到文本区调用circle并插入计算结果到文本区调用triangle并插入计算结果到文本区 结束四、程序设计介绍 4.1本程序所用知识点 (1)GUI概念 图形用户界面(Graphical User Interface,简称 GUI)是指采用图形方式显示的计算机操作用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。运行Java程序有两种方式,一是命令行输出,另一种就是图形用户界面输出 (2)MVC结构 模型-视图-控制器(Model-View-Controller),简称MVC。MVC是一种先进的设计结构,其目的是以会话框形式提供方便的GUI支持。 (3)布局管理 FlowLayout (流式布局管理器)这个简单的“Flow”的组件安装在窗体中,从左到右,直到顶部的空格全部再移去一行,并继续循环这些组件。 (4)创建一个窗体 窗口中可以存放各种组件,所以窗体是容器,可以被直接显示、绘制在操作系统所控制的平台上。 (5)事件处理事件处理机制事件:用户对组件的一个操作事件源:发生事件的组件监听器:我们需要处理某个事件的时候,就需要在发生事件的组件上添加监听器。事件处理器:监听器中的方法,添加监听器后,组件发生了对应的事件就会执行指定的方法 (6)所用组件JLabel创建标签;JTextField 创建文本框;JRadioButton创建单选按钮;JTextArea 创建文本区;JButton 创建可单击按钮5、 程序代码设计Main.javapublic class Main public static void main(String args) NewFrame nf=new NewFrame();nf.setVisible(true);NewFrame.javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class NewFrame extends JFrame implements ActionListener /创建对象int flag;Triangle triangle=new Triangle();/创建对象triangle并分配内存空间Circle circle=new Circle(5);/创建对象circle并分配内存空间Lader lader=new Lader(10,20,10);/创建对象lader并分配内存空间ButtonGroup group;/创建按钮群JLabel label,a,b,c,r,a1,a2,h,result;/创建标签JTextField t1,t2,t3,t4,t5,t6,t7;/创建文本框JRadioButton radio1,radio2,radio3;/创建单选按钮JTextArea area;/创建文本区JButton button;/创建可单击按钮NewFrame() /设置窗体风格,包括大小,界面,标题等等this.setSize(400, 500);/设置窗口大小this.setTitle(计算图形面积);/设置窗口标题this.setLayout(null);/设置布局为空this.setResizable(false);/不可改变窗体大小this.setLocationRelativeTo(null);/窗口居中显示this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);/关闭窗口时退出/为对象分配内存group=new ButtonGroup();radio1=new JRadioButton(三角形);radio2=new JRadioButton(圆);radio3=new JRadioButton(梯形); label=new JLabel(选择形状);a=new JLabel(边 a:);b=new JLabel(边b:);c=new JLabel(边c:);r=new JLabel(半径:);a1=new JLabel(上底:);a2=new JLabel(下底:);h=new JLabel(高:);t1=new JTextField(5);t2=new JTextField(5);t3=new JTextField(5);t4=new JTextField(5);t5=new JTextField(5);t6=new JTextField(5);t7=new JTextField(5);area=new JTextArea(400,50);result=new JLabel(输出结果);button=new JButton(确定);/设置单选按钮大小并添加到窗体radio1.setBounds(40,30,80, 50);this.add(radio1);group.add(radio1);radio2.setBounds(40,80,80, 50);this.add(radio2);group.add(radio2);radio3.setBounds(40,130,80, 50);this.add(radio3);group.add(radio3);/设置标签的大小并添加到窗体上label.setBounds(40, 10, 100, 20);this.add(label);a.setBounds(120, 50,40, 10);this.add(a);b.setBounds(210,50, 40, 10);this.add(b);c.setBounds(300, 50, 40, 10);this.add(c);r.setBounds(120,100, 40, 10);this.add(r);a1.setBounds(120, 145, 50, 20);this.add(a1);a2.setBounds(210, 145, 50, 20);this.add(a2);h.setBounds(300, 145, 50, 20);this.add(h);result.setBounds(40, 250, 60, 20);this.add(result);/设置文本框、文本区的大小并添加到窗体上t1.setBounds(150,45, 50, 20);this.add(t1);t2.setBounds(240,45, 50, 20);this.add(t2);t3.setBounds(330,45,50, 20);this.add(t3);t4.setBounds(160, 95, 50, 20);this.add(t4);t5.setBounds(150, 145, 50, 20);this.add(t5);t6.setBounds(240,145,50, 20);this.add(t6);t7.setBounds(330,145,50, 20);this.add(t7);area.setBounds(100, 250, 200, 100);this.add(new JScrollPane(area);/为area绑定一个滚动条并添加到窗体this.add(area);button.setBounds(150, 400, 100, 30);this.add(button);/在按钮上添加命令radio1.addActionListener(this);radio2.addActionListener(this);radio3.addActionListener(this);button.addActionListener(this);/以下是按钮按下的事件处理public void actionPerformed(ActionEvent e) if(e.getSource().equals(radio1)/如果按下“三角形”按钮flag=1;if(e.getSource().equals(radio2)/如果按下“圆”按钮flag=2;if(e.getSource().equals(radio3)/如果按下“梯形”按钮flag=3;if(e.getSource().equals(button)/如果按下“确定”按钮if(flag=1)/按下“三角形”按钮时调用triangletrydouble a=Double.parseDouble(t1.getText();double b=Double.parseDouble(t2.getText();double c=Double.parseDouble(t3.getText();triangle.setA(a);triangle.setB(b);triangle.setC(c);/输入三边长到文本框中area.setText();if(triangle.getArea()!=0)area.append(三角形的面积是:);area.append(n);area.append(+triangle.getArea();/输入结果到文本区elsearea.append(无法计算面积);catch(Exception ex)area.append(n+n);if(flag=2)/按下“圆”按钮时调用circletrydouble r=Double.parseDouble(t4.getText().trim();circle.setRadius(r);/输入半径到文本框中area.setText();area.append(圆的面积是:);area.append(n);area.append(+circle.getArea();/插入结果到文本区catch(Exception ex)area.append(n+n);if(flag=3)/按下“梯形时”按钮时调用ladertrydouble a1=Double.parseDouble(t5.getText().trim();lader.setAbove(a1);double a2=Double.parseDouble(t6.getText().trim();lader.setBottom(a2);double h=Double.parseDouble(t7.getText().trim();lader.setHeight(h);/输入上底、下底、高到文本框中area.setText();area.append(梯形的面积是:);area.append(n);area.append(+lader.getArea();/输入结果到文本区catch(Exception ex)area.append(n+n); Picture.javainterface Picture /创建Picture接口double getArea();Triangle.javapublic class Triangle implements Picture /实现 Picture接口double sideA,sideB,sideC,area;boolean isTriangle;public double getArea() if(isTriangle) double p=(sideA+sideB+sideC)/2.0;area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC);elseSystem.out.print(无法计算面积) ;return area; /判断a、b、c是否构成三角形public void setA(double a)sideA=a; if(sideA+sideBsideC&sideA+sideCsideB&sideB+sideCsideA) isTriangle=true; else isTriangle=false; public void setB(double b)sideB=b;if(sideA+sideBsideC&sideA+sideCsideB&sideB+sideCsideA) isTriangle=true; else isTriangle=false; public void setC(double c)sideC=c;if(sideA+sideBsideC&sideA+sideCsideB&sideB+sideCsideA) isTriangle=true; else isTriangle=false; Circle.javapublic class Circle implements Picture/实现Picture接口double radius,area;Circle(double r) radius=r;public double getArea() return area=3.14*radius*radius;void setRadius(double newRadius) radius=newRadius;double getRadius() return radius;Lader.javapublic class Lader implements Picture/实现 Picture接口double above,bottom,height,area;Lader(double a1,double a2,double h) above=a1;bottom=a2;height=h;void setAbove(double newAbove) above=newAbove;double getAbove() return above;void setBottom(double newBottom)bottom=newBotto

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论