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

下载本文档

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

文档简介

精选优质文档-----倾情为你奉上精选优质文档-----倾情为你奉上专心---专注---专业专心---专注---专业精选优质文档-----倾情为你奉上专心---专注---专业中南林业科技大学课程设计报告设计名称:计算图形面积姓名:学号:专业班级:院(系):计算机与与信息工程设计时间:设计地点:中南林业科技大学指导教师评语:成绩:签名:2013年1月11日设计目的1.深入理解Java面向对象的设计思想2.提高用Java语言编程的能力3.学会制作软件开发文二、课程要求分析2.1本课程及程序功能要求课程名称:计算图形面积的制作要求:编写一个体现MVC结构的GUI程序。首先编写一个图形接口以及实现该接口的圆类、梯形类、三角形类等,然后再编写一个窗口。要求:1.能够选择具体的图形;2.使用若干文本框和一个文本区为该图形对象中的数据提供视图,其中文本框用来显示和更新图形对象的基本要素(如梯形的上底、下底和高),文本区对象用来显示图形的面积。窗口中有一个按钮,用户单击该按钮后,程序用文本框中的数据作为图形对象的基本要素,并将计算出的图形面积显示在文本区中。2.2课程介绍计算图形面积使用的事JavaSE中的GUI和线程基本技术,可以实现三角形、圆、梯形的面积计算。具体操作如下:点击单选按钮选择要计算面积的图形形状。输入所选择图形对象的基本要素(如梯形的上底、下底、高)。点击按钮“确定”,可以在文本区显示计算得出的结果。点击右上角的关闭键可以退出本程序。三、程序流程图a、b、c构成三角形?输入边长a、b、c输入半径r输入上下底a1、a2、高hflag=3flag=2flag=1圆If(e.getSource().equals(radio2))三角形If(e.getSource().equals(radio1))选择图形开始a、b、c构成三角形?输入边长a、b、c输入半径r输入上下底a1、a2、高hflag=3flag=2flag=1圆If(e.getSource().equals(radio2))三角形If(e.getSource().equals(radio1))选择图形开始梯形梯形If(e.getSource().equals(radio3))area=(a1+a2)*h/2area=3.14*r*rarea=(a1+a2)*h/2area=3.14*r*rNP=(sideA+sideB+sideC)/2area=Math.sqrt(p*(p-sideA)*(p-side)*(p-sideC))无法计算面积NP=(sideA+sideB+sideC)/2area=Math.sqrt(p*(p-sideA)*(p-side)*(p-sideC))无法计算面积YIf(e.getSource().equals(button)) If(e.getSource().equals(button))flag=3flag=1flag=3flag=1flag=2flag=2调用lader并插入计算结果到文本区调用circle并插入计算结果到文本区调用triangle并插入计算结果到文本区调用lader并插入计算结果到文本区调用circle并插入计算结果到文本区调用triangle并插入计算结果到文本区结束四、程序设计介绍4.1本程序所用知识点(1)GUI概念图形用户界面(GraphicalUserInterface,简称GUI)是指采用图形方式显示的计算机操作用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。运行Java程序有两种方式,一是命令行输出,另一种就是图形用户界面输出(2)MVC结构模型-视图-控制器(Model-View-Controller),简称MVC。MVC是一种先进的设计结构,其目的是以会话框形式提供方便的GUI支持。(3)布局管理FlowLayout(流式布局管理器)这个简单的“Flow”的组件安装在窗体中,从左到右,直到顶部的空格全部再移去一行,并继续循环这些组件。(4)创建一个窗体窗口中可以存放各种组件,所以窗体是容器,可以被直接显示、绘制在操作系统所控制的平台上。(5)事件处理事件处理机制事件:用户对组件的一个操作事件源:发生事件的组件监听器:我们需要处理某个事件的时候,就需要在发生事件的组件上添加监听器。事件处理器:监听器中的方法,添加监听器后,组件发生了对应的事件就会执行指定的方法(6)所用组件JLabel创建标签;JTextField创建文本框;JRadioButton创建单选按钮;JTextArea创建文本区;JButton创建可单击按钮程序代码设计Main.javapublicclassMain{ publicstaticvoidmain(String[]args){ NewFramenf=newNewFrame(); nf.setVisible(true); }}NewFrame.javaimportjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.ButtonGroup;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JRadioButton;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.JTextField;publicclassNewFrameextendsJFrameimplementsActionListener{ //创建对象 intflag; Triangletriangle=newTriangle();//创建对象triangle并分配内存空间 Circlecircle=newCircle(5);//创建对象circle并分配内存空间 Laderlader=newLader(10,20,10);//创建对象lader并分配内存空间 ButtonGroupgroup;//创建按钮群 JLabellabel,a,b,c,r,a1,a2,h,result;//创建标签 JTextFieldt1,t2,t3,t4,t5,t6,t7;// 创建文本框 JRadioButtonradio1,radio2,radio3;//创建单选按钮 JTextAreaarea;//创建文本区 JButtonbutton;//创建可单击按钮 NewFrame(){ //设置窗体风格,包括大小,界面,标题等等 this.setSize(400,500);//设置窗口大小 this.setTitle("计算图形面积");//设置窗口标题 this.setLayout(null);//设置布局为空 this.setResizable(false);//不可改变窗体大小 this.setLocationRelativeTo(null);//窗口居中显示 this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);//关闭窗口时退出 //为对象分配内存 group=newButtonGroup(); radio1=newJRadioButton("三角形"); radio2=newJRadioButton("圆"); radio3=newJRadioButton("梯形"); label=newJLabel("选择形状"); a=newJLabel("边a:"); b=newJLabel("边b:"); c=newJLabel("边c:"); r=newJLabel("半径:"); a1=newJLabel("上底:"); a2=newJLabel("下底:"); h=newJLabel("高:"); t1=newJTextField(5); t2=newJTextField(5); t3=newJTextField(5); t4=newJTextField(5); t5=newJTextField(5); t6=newJTextField(5); t7=newJTextField(5); area=newJTextArea(400,50); result=newJLabel("输出结果"); button=newJButton("确定"); ////设置单选按钮大小并添加到窗体 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(newJScrollPane(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); } //以下是按钮按下的事件处理 publicvoidactionPerformed(ActionEvente){ 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)//按下“三角形”按钮时调用triangle { try{doublea=Double.parseDouble(t1.getText()); doubleb=Double.parseDouble(t2.getText()); doublec=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());//输入结果到文本区 } else { area.append("无法计算面积"); } } catch(Exceptionex){ area.append("\n"+"\n"); } } if(flag==2)//按下“圆”按钮时调用circle { try{doubler=Double.parseDouble(t4.getText().trim()); circle.setRadius(r);//输入半径到文本框中 area.setText(""); area.append("圆的面积是:"); area.append("\n"); area.append(""+circle.getArea());//插入结果到文本区 } catch(Exceptionex){ area.append("\n"+"\n"); } } if(flag==3)//按下“梯形时”按钮时调用lader { try{doublea1=Double.parseDouble(t5.getText().trim()); lader.setAbove(a1); doublea2=Double.parseDouble(t6.getText().trim()); lader.setBottom(a2); doubleh=Double.parseDouble(t7.getText().trim()); lader.setHeight(h);//输入上底、下底、高到文本框中 area.setText(""); area.append("梯形的面积是:"); area.append("\n"); area.append(""+lader.getArea());//输入结果到文本区 } catch(Exceptionex){ area.append("\n"+"\n"); } } } } }Picture.javainterfacePicture{//创建Picture接口 doublegetArea();}Triangle.javapublicclassTriangleimplementsPicture{//实现Picture接口 doublesideA,sideB,sideC,area; booleanisTriangle; publicdoublegetArea(){ if(isTriangle){ doublep=(sideA+sideB+sideC)/2.0; area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)); } else{ System.out.print("无法计算面积"); } returnarea; }//判断a、b、c是否构成三角形 publicvoidsetA(doublea){ sideA=a; if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){ isTriangle=true; } else{ isTriangle=false; } } publicvoidsetB(doubleb){ sideB=b; if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){ isTriangle=true; } else{ isTriangle=false; } } publicvoidsetC(doublec){ sideC=c; if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){ isTriangle=true; } else{ isTriangle=false; } }}Circle.javapublicclassCircleimplementsPicture{//实现Picture接口 doubleradius,area; Circle(doubler){ radius=r; } publicdoublegetArea(){ returnarea=3.14*radius*radius; } voidsetR

温馨提示

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

评论

0/150

提交评论