课程设计JAVA规则几何图形求解.docx

上传人:b****6 文档编号:8018485 上传时间:2023-01-28 格式:DOCX 页数:24 大小:37.13KB
下载 相关 举报
课程设计JAVA规则几何图形求解.docx_第1页
第1页 / 共24页
课程设计JAVA规则几何图形求解.docx_第2页
第2页 / 共24页
课程设计JAVA规则几何图形求解.docx_第3页
第3页 / 共24页
课程设计JAVA规则几何图形求解.docx_第4页
第4页 / 共24页
课程设计JAVA规则几何图形求解.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

课程设计JAVA规则几何图形求解.docx

《课程设计JAVA规则几何图形求解.docx》由会员分享,可在线阅读,更多相关《课程设计JAVA规则几何图形求解.docx(24页珍藏版)》请在冰豆网上搜索。

课程设计JAVA规则几何图形求解.docx

课程设计JAVA规则几何图形求解

1前言1

2需求分析1

2.1任务和要求1

2.2运行环境1

2.3开发工具1

3分析和设计2

3.1系统分析及设计思路2

3.2主要类图5

3.3函数流程图6

4具体代码实现8

5课程设计总结8..4.

5.1程序运行结果或预期运行结果2.44

5.2设计结论2..4.6

参考文献2..6.7

致谢2..7..7

1前言

图形化界面(GUI)编程,编写一个规则几何问题求解程序。

(1)根据所给参数绘制出图形。

(2)根据条件计算几何图形的面积和周长。

(3)程序至少实现圆、长方形和三角形等规则几何图形的求解。

(4)几何图形的参数可变(如圆的半径、长方形的长和宽、三角形的边长、颜色和线条粗细等)。

2需求分析

2.1任务和要求

要求:

(1)用JAVA语言实现程序设计;

(2)利用结构体、共用体进行相关信息处理;

(3)画出系统的各个类图模块;

(4)画出查询类模块的流程图;

(5)界面友好(良好的人机互交),程序要有注释。

任务:

(1)定义一个抽象类,三个抽象方法,在子类中覆写抽象方法;

(2)通过args输入三个数:

第一个数调用到圆类;第一、二个数调用到长方形类;三个数同时调用到三角形类,并在屏幕上显示计算结果;

(3)画出部分模块的类图和流程图;

(4)编写代码;

(5)程序分析与调试。

2.2运行环境

(1)WINDOWS2000/XP系统

(2)editplus或eclipse

2.3开发工具

Java

3分析和设计

3.1系统分析及设计思路

首先在程序的开头部分引入10包,java.io.*;定义抽象类Shape在其中声明三个抽象方法,check1()、check2()、check3()分别对矩形、圆、三角形实施处理。

并定义一个全局常量Pl=3.14。

禾U用类的继承性,将Shape类的抽象方法覆写。

(1)矩形类继承:

在矩形类Square中定义double型变量,长cl、宽k1、面积和周长len。

第一步:

覆写check1()方法,判断输入的长和宽是否为正数if(c1>0&&k1>0),当为正数时,则可以对该类进行面积和周长的计算:

sum=c1*k1;len=2*(c1+k1);

System.out.println(”长方形面积:

"+sum+"长方形周长:

"+len);

如果不为正数输入没有意义,则输出提示语:

System.out.println("输入不正确,请输入正数");

第二步:

覆写方法,因为在矩形类中需处理的是求矩形的面积和周长的方法,所以这里覆写不考虑输出的具体内容

check2()、check3()

voidcheck2(doublec1){//方法覆写

System.out.println("");

}

voidcheck3(doublec1,doublek1,doublet1){//方法覆写

System.out.println("");

}

(2)圆类继承:

第一步:

覆写方法check2(),定义半径c1、面积sum和周长len。

判断半径是否大于零。

若为正数就计算圆的面积和周长:

通过调用上面定义的函数实现了计算器整个功能。

sum=Pl*c1*c1;

len=2*c1*Pl;

System.out.println(”长方形面积:

"+sum+"长方形周长:

"+len);

如果不为正数输入没有意义,则输出提示语:

System.out.println("输入不正确,请输入正数");

第二步:

覆写方法,因为在圆类中需处理的是求圆的面积和周长的方法,所以这里覆

写不考虑输出的具体内容

check1()、check3()

voidcheck1(doublec1,doublek1){//方法覆写System.out.println("");

}

voidcheck3(doublec1,doublek1,doublet1){//方法覆写System.out.println("");

}

(3)三角形类继承:

第一步:

覆写三角形的方法check3(),定义三边长分别为cl,k1,t1,面积sum和周长len。

同样是判断输入的三边长是否为正数

if((c1>0&&k1>0)&&t1>0){}//判断是否为正数

若为正数还要捕获异常判断是否构成三角形并调用Math类中的sqrt()方法计算面积,输出结果:

try{

if(c1+k1>t1&&c1-k1

//调用Math类的sqrt()方法,利用海伦公式计算面积sum=Math.sqrt((c1+k1+t1)/2*(c1+k1-t1)/2*(t1+c1-k1)/2*(k1+t1-c1)/2);

len=c1+k1+t1;

}catch(Exceptione){

e.printStackTrace();

}finally{

System.out.println(”三角形面积:

"+sum+

"三角形周长:

"+len);

}

第二步:

覆写方法check1()、check2(),同上在三角形类中不需考虑输出内容:

voidcheck1(doublec1,doublek1){//方法覆写

System.out.println("");

voidcheck2(doublec1){//方法覆写

System.out.println("");

}

(4)测试类Demo1:

在主方法main中,分别将矩形、圆、三角形实例化对象Squaresqu=newSquare();//实例化长方形对象

Circlecir=newCircle();//实例化圆对象

Triangletri=newTriangle();//实例化三角形对象通过args数组向程序中输入待测的数,先判断数组的长度是否为3,若不为3,提示输入错误:

if(args.length!

=3){

System.out.println("---输入错误,请输入三个数");}

若输入正确,利用Double类的valueOf()方法将数组元素转换成double型,并赋给c,k,t

doublec=Double.valueOf(args[0]);

〃将字符串转换成double形

doublek=Double.valueOf(args[1])

〃将字符串转换成double形

doublet=Double.valueOf(args[2]);

〃将字符串转换成double形在通过对象调用方法,将程序结果显性化出来:

System.out.println("长方形");

System.out.println("长为:

"+c+"宽为:

"+k);

squ.check1(c,k);//长方形方法调用

System.out.println("圆");

System.out.println(”半径为:

"+c);

cir.check2(c);//圆方法调用

System.out.println("三角形");

System.out.println("边长1为:

"+c+"边长2为:

"+k+"边长3为:

"+t);tri.check3(c,k,t);//三角形方法调用

3.2主要类图

对规则几何图形求解进行系统分析之后,定义抽象类Shape,在其中声明三个抽象方法,check1()、check2()、check3()分别对矩形、圆、三角形实施处理。

并定义一个全局常量Pl=3.14。

禾U用类的继承性,将Shape类的抽象方法覆写。

然后根据分析画出了父类Shape矩形Square圆Circle、三角形Triangle的类图。

如下图所示:

Shape

Square

+

PI

double

+

check1()

void

+

check2()

void

+

check3()

void

+

sum

double

+

c1

double

+

k1

double

+

check1()

void

+

check2()

void

+

check3()

void

 

图3.1父类Shape类图

Circl

+sum

double

+len

double

+c1

double

+check1()

void

+check2()

void

+check3()

void

图3.3圆Circle类图

图3.2矩形Square类图

Triangle

+

sum

double

+

len

double

+

c1

double

+

k1

double

+

t1

double

+

check1()

void

+

check2()

void

+

check3()

void

图3.4三角形Triangle类图

3.3函数流程图

图3.5长方形类流程图

 

图3.6圆形类流程图

 

图3.7三角形类流程图

4具体代码实现(主要源代码)

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjavax.swing.*;

importjava.awt.geom.*;

importjava.io.*;

classPointimplementsSerializable

{

intx,y;

Colorcol;

inttool;

intboarder;

Point(intx,inty,Colorcol,inttool,intboarder)

{

this.x=x;

this.y=y;

this.col=col;

this.tool=tool;

this.boarder=boarder;

}

}

classpaintboardextendsFrameimplements

ActionListener,MouseMotionListener,MouseListener,ItemListener

{

intx=-1,y=-1;

intcon=1;//画笔大小

intEcon=5;//橡皮大小

inttoolFlag=0;//toolFlag:

工具标记

//toolFlag工具对应表:

//(0--画笔);(1--橡皮);(2--清除);

//(3--直线);(4--圆);(5--矩形);

Colorc=newColor(0,0,0);//画笔颜色

BasicStrokesize=new

BasicStroke(con,BasicStroke.CAP_BUTT,BasicStrokeJOIN_BEVEL);〃画笔粗细

Pointcutflag=newPoint(-1,-1,c,6,con);//截断标志

VectorpaintInfo=null;//点信息向量组

intn=1;

FileInputStreampicIn=null;

FileOutputStreampicOut=null;

ObjectInputStreamVIn=null;

ObjectOutputStreamVOut=null;

//*工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/PaneltoolPanel;

Buttonerase,rdrLine,drCircle,drRect;

Buttonclear,pen;

ChoiceColChoice,SizeChoice,EraserChoice;

Buttoncolchooser;

Label颜色,大小B,大小E;

//保存功能

ButtonopenPic,savePic;

FileDialogopenPicture,savePicture;paintboard(Strings)

{

super(s);

addMouseMotionListener(this);

addMouseListener(this);

paintInfo=newVector();

/*各工具按钮及选择项*/

//颜色选择

ColChoice=newChoice();

ColChoice.add("black");

ColChoice.add("red");

ColChoice.add("blue");

ColChoice.add("green");

ColChoice.addItemListener(this);//画笔大小选择

SizeChoice=newChoice();

SizeChoice.add("1");

SizeChoice.add("3");

SizeChoice.add("5");

SizeChoice.add("7");

SizeChoice.add("9");

SizeChoice.addItemListener(this);//橡皮大小选择

EraserChoice=newChoice();

EraserChoice.add("5");

EraserChoice.add("9");

EraserChoice.add("13");

EraserChoice.add("17");

EraserChoice.addItemListener(this);////////////////////////////////////////////////////toolPanel=newPanel();

clear=newButton("清除");eraser=newButton(”橡皮");pen=newButton("画笔");drLine=newButton(”画直线");drCircle=newButton(”画圆形");drRect=newButton(”画矩形");openPic=newButton(”打开图画");savePic=newButton(”保存图画");colchooser=newButton("显示调色板");

//各组件事件监听

clear.addActionListener(this);eraser.addActionListener(this);pen.addActionListener(this);drLine.addActionListener(this);drCircle.addActionListener(this);drRect.addActionListener(this);openPic.addActionListener(this);savePic.addActionListener(this);colchooser.addActionListener(this);

颜色=newLabel("画笔颜色"丄abel.CENTER);

大小B=newLabel("画笔大小"丄abel.CENTER);

大小E=newLabel("橡皮大小"丄abel.CENTER);

//面板添加组件toolPanel.add(openPic);toolPanel.add(savePic);

toolPanel.add(pen);toolPanel.add(drLine);toolPanel.add(drCircle);toolPanel.add(drRect);

toolPanel.add颜色);toolPanel.add(ColChoice);

toolPanel.add(大小B);toolPanel.add(SizeChoice);

toolPanel.add(colchooser);

toolPanel.add(eraser);

toolPanel.add(大小E);toolPanel.add(EraserChoice;toolPanel.add(clear);

//工具面板到APPLET面板add(toolPanel,BorderLayout.NORTH);

setBounds(60,60,900,600);setVisiblet(rue);

validate();

//dialogforsaveandload

openPicture=newFileDialog(this,"打开图画”,FileDialog.LOAD);openPicture.setVisible(false);

savePicture=newFileDialog(this,"保存图画",FileDialog.SAVE);savePicture.setVisible(false);

openPicture.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente)

{openPicture.setVisible(false);}

});savePicture.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente)

{savePicture.setVisible(false);}

});

addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{System.exit(0);}

});

}

publicvoidpaint(Graphicsg)

{

Graphics2Dg2d=(Graphics2D)g;

Pointp1,p2;n=paintInfo.size();

if(toolFlag==2)

g.clearRect(O,O,getSize()width,getSize().height);//清除

for(inti=0;i

p1=(Point)paintInfo.elementAt(i);

p2=(Point)paintInfo.elementAt(i+1);

size=newBasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g2d.setColor(p1.col);

g2d.setStroke(size);

if(p1.tool==p2.tool)

{

switch(p1.tool)

{

caseO:

//画笔

Line2Dline1=newLine2D.Double(p1.x,p1.y,p2.x,p2.y);g2d.draw(line1);

break;

easel:

//橡皮

g.clearRect(p1.x,p1.y,p1.boarder,p1.boarder);break;

case3:

//画直线

Line2Dline2=newLine2D.Double(p1.x,p1.y,p2.x,p2.y);g2d.draw(line2);

break;

case4:

//画圆

Math.abs(p2.x-p1.x)

Math.abs(p2.x-p1.x)

Ellipse2Dellipse=newEllipse2D.Double(p1.x,p1.y,Math.abs(p2.y-p1.y));

g2d.draw(ellipse);

break;

case5:

//画矩形

Rectangle2Drect=newRectangle2D.Double(p1.x,p1.y,Math.abs(p2.y-p1.y));

g2d.draw(rect);

break;

case6:

//截断,跳过

i=i+1;break;

default:

}//endswitch

}//endif

}//endfor

}

publicvoiditemStateChanged(ItemEvente)

{

if(e.getSource()==ColChoice)〃预选颜色

{

Stringname=ColChoice.getSelectedItem();if(name=="black")

{c=newColor(0,0,0);}

elseif(name=="red")

{c=newColor(255,0,0);}

elseif(name=="green")

{c=newColor(0,255,0);}

elseif(name=="blue")

{c=newColor(0,0,255);}

}

elseif(e.getSource()==SizeChoice)〃画笔大小

{

Stringselected=SizeChoice.getSelectedItem();

if(selected=="1")

{

con=1;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

elseif(selected=="3")

{

con=3;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

elseif(selected=="5")

{con=5;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

elseif(selected=='7")

{con=7;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStrokeJOIN_BEVEL);

}

elseif(selected=='9")

{con=9;

size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStrokeJOIN_BEVEL);

}

}

elseif(e.getSource()==EraserChoice〃橡皮大小

{

String

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1