




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序(70%)设计报告(15%)答辩(15%)总分(100)工作量(35)运行效果(35)完整性(10)质量(5)通过(15)不通过教师签名: 说明:答辩未通过者总分记为0并重修。总分 = 程序70% + 设计报告15% + 答辩15%成都信息工程学院课程设计画笔程序设计系统班级:网络工程系学号:姓名:鲜海松指导老师:曾令明提交日期:2010-06-15 摘 要随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的
2、编程语言。JAVA不仅可以用来开发大型的应用程序。而且特别适合Internet的应用开发。JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。本报告中介绍了用JAVA语言实现画笔系统的全部过程。本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。本次课程设计主要是用JA
3、VA实现画笔系统,其系统主要完成以下功能:设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形的功能,并且在绘图。过程中能够修改该画笔的大小以及颜色。该画图程序还需具有橡皮擦功能以及清空整个画面的功能关键词:画笔系统,JAVA目录摘 要2目录31.绪论42. 开发环境介绍53.需求分析63.1总体目标63.2要实现的功能64.概要设计74.1设计准备74.2需用到的类75.详细设计85.1类的设计85.2类的方法介绍86.测试数据及运行结果107.总结118.参考文献129.源程序121.绪论Java不依赖平台的特点使它受到广泛的关注,Java已成为网络时代最重要的语言之一。目前,Java语
4、言不仅是一门被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。因为很多新的技术领域都涉及到Java语言,国内外许多大学已将Java语言列入本科教学计划,而IT行业对Java人才的需求也在不断的增长,因此,掌握Java已经成为共识。Java是一门说简单也不简单,说难也不难的课程。所以,我们在学习的过程中要根据自己的具体情况,合理安排编程训练时间,相信编程能力会在不知不觉中得到提高。在此次的课程设计实践中,我学到了教科书上没有的东西。这次课程设计,我按照课程设计的要求,分块实现程序的功能。在实践中我遇到许多的问题,但我都克服,最终我成功的完成了这次课程设计。从中我充分理解了Ja
5、va面对对象的特性,并体会到Java与C语言的不同之处在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础2. 开发环境介绍该项目所使用的软件开发环境如下:操作系统:Windows xp开发工具:eclipse3.2及其VE插件Eclipse简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具。 Eclipse是著名的跨平台的自由集成开发环境(IDE)。
6、最初主要用来Java语 言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持 使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。 Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,
7、其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多 大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。3.需求分析3.1总体目标设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形的功能,并且在绘图。
8、过程中能够修改该画笔的大小以及颜色。该画图程序还需具有橡皮擦功能以及清空整个画面的功能3.2要实现的功能1、这个画图程序,最基本的功能是,作为一个画笔,能利用它实现在屏幕上任意绘画、书写的功能;2、利用这个画图程序,通过选择画直线、画圆形、画矩形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能;3、这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除屏幕上的图案,并且此橡皮擦也应该能够改变大小;4、这个画图程序,还应该做到能够改变画笔颜色的功能;5、这个画图程序,还应该具备能够清除整个屏幕已绘制图画的功能。4.概要设计4.1设计准备1、此程序为实现这些功能模块,必须首先定义一个
9、工具面板,将这些画笔、画直线、画圆形、画矩形、画笔颜色、画笔大小、橡皮等功能组件放入这个工具面板中。2、此程序为实现利用鼠标做画笔的功能,必会产生鼠标事件MouseEvent。因此,为实现鼠标画图的功能,必须用到鼠标触发事件,故在此程序中,必须实现“委托事件模型”,用到事件源、事件对象以及监听者对象。3、此程序中,必须用到的包如下:import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import java.awt.geom.*;4.2需用到的类1 )class Point此类用于定义
10、一组数据成员,并且使用构造函数将他们分别初使化,以方便在下面的程序中使用他们。2)class paintboard 此类用于实现这个程序的大部分功能,在这个类中除了定义一些基本变量以及构造函数外,还定义了很多成员方法,这些成员方法将实现鼠标触发事件的一系列绘图功能。3 )public class PaintBrush 这个类是主类,是程序得以运行的入口。在这个主类中定义了主方法,是该程序执行的入口。5.详细设计5.1类的设计1) class Point在这个类中定义了用于截断的一系列标志变量,有初始坐标、颜色、工具选择等,并且在这个类中还定义了构造函数Point(int x, int y, C
11、olor col, int tool, int boarder),用于完成对这些变量的初始化工作。2)class paintboard 这个类用来实现整个程序的大部分功能,并且在这个类中定义了大部分的成员函数和成员方法,在这个类中用到的主要成员方法如下:Public void paint(Graphics g)public void itemStateChanged(ItemEvent e)public void mouseDragged(MouseEvent e)public void mousePressed(MouseEvent e)public void mouseReleased(M
12、ouseEvent e)public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)public void mouseMoved(MouseEvent e) public void actionPerformed(ActionEvent e)5.2类的方法介绍 定义的变量:在这个类中,首先定义了画笔的大小、画笔的颜色、画笔的粗细、橡皮的大小、工具的选择等一些变量,并且还用到了系统中自带的一些类初使化了一些面板工具对象,用于完成对面
13、板工具、画直线、画椭圆、画矩形、橡皮擦、清除等一些工具按钮的定义。 初使化构造函数:在这个初使化构造函数中,首先继承了父类Frame,然后初使化了各工具按钮以及各个选择项,包括颜色选择、画笔大小选择、橡皮大小选择,并且将这些组件添加到了工具面板中,最后还对各个组件注册了事件监听者对象。 paint()方法:这个方法主要用于在Applet的界面中显示文字、图形和其它界面元素。本程序中,在这个方法中,定义了一些工具选项设置,给用户选择画笔、画直线、画圆、橡皮擦等一些功能。 itemStateChanged()方法: 这个方法用来实现的功能很简单,主要是用来改变画笔大小、画笔颜色、橡皮大小的。在此方
14、法中,设置了大小以及颜色的一些预选项,以供用户对大小以及颜色做出选择。 mouseDragged()方法:此方法是处理MouseEvent事件以实现MouseMotionListener接口的对象。MouseMotionListener是事件监听者,mouseDragged(MouseEvent e)是成员方法,代表鼠标拖动事件,在这个方法中,还用到了MouseEvent类常用成员方法:public int getX()以及public int getY(),用来返回发生鼠标事件的X及Y的坐标。这个方法中,主要用来控件画笔和橡皮的转换。 mousePressed()方法: 此方法是处理Mous
15、eEvent事件以实现MouseListener接口的对象。MouseListener是事件监听者,mouseDPressed(MouseEvent e)是成员方法,代表鼠标按下事件。这个方法主要用来控件用户画直线、画圆、画矩形这些功能之间的转换。 mouseReleased()方法:mouseEntered()方法:mouseExited()方法:mouseClicked()方法:这些方法和mousePressed()方法属于同一类,他主要用来表示鼠标释放事件,是对上述各个功能完成后对鼠标事件的又一次触发。6.测试数据及运行结果1、画笔在屏幕上绘画2、改变画笔的粗细3、画直线、画圆、画矩形7
16、.总结此软件基本达到理想效果,在编写这一软件的过程中我学到了很多java编程知识,并学会了如何快速的改正程序中的错误。经过一周的课程设计,java编程方面的知识收获很大,但这只是java编程知识的冰山一角,还有很多东西没有学到。这次课程设计受益匪浅,不仅锻炼了我做事坚持不懈的心态,也慢慢地培养了我不懂就查书的好习惯,我的自学能力也有了一定的提高,我更明白了搞计算机这行,要学到真正的技术完全要靠自己,在课堂上只能学到最基本的东西,但这最基本的东西也一定要学好。毕业在即,在以后的工作学习中,我还会将更多的时间与精力投入到Java的学习中,不断为自己所学的知识补充新鲜血液。8.参考文献java2面向
17、对象程序设计 洪维恩,何嘉 编著 中国铁道出版社2005.01Java编程案例精解 孙印杰, 刘斌, 孙玉强等编著 电子工业出版社2005.01Java项目开发实用案例 赵如意等编著 科学出版社20069.源程序/*PaintBrush.java,可调画笔粗细-Java画图实验-swingcode -gcode*画直线,曲线,矩形,椭圆,可调颜色,有橡皮擦功能*可调画笔粗细*hxz*/import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import java.awt.geom.*;c
18、lass Point int x,y; Color col; int tool; int boarder; Point(int x, int y, Color col, int tool, int boarder) this.x = x; this.y = y; this.col = col; this.tool = tool; this.boarder = boarder; /*BasicStroke*Choice*validate();*/class paintboard extends Frame implements ActionListener, MouseMotionListene
19、r, MouseListener, ItemListener int xx0=0,yy0=0; int xx1=0,yy1=0; int type=6; int x = -1, y = -1; int con = 1; /画笔大小 int Econ = 5; /橡皮大小 int toolFlag = 0; /toolFlag:工具标记 /toolFlag工具对应表: /(0-画笔);(1-橡皮);(2-清除); /(3-直线);(4-圆);(5-矩形); Color c = new Color(0,0,0); /画笔颜色BasicStroke size = new BasicStroke (c
20、on,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);/画笔粗细 Point cutflag = new Point(-1, -1, c, 6, con);/截断标志 Vector paintInfo = null;/点信息向量组 int n = 1; / *工具面板-画笔,直线,圆,矩形,多边形,橡皮,清除*/ Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choice ColChoice,SizeChoice,EraserChoice; Butt
21、on colchooser; Label 颜色,大小B,大小E; paintboard(String s)/构造函数 super(s); addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /*各工具按钮及选择项*/ /颜色选择 ColChoice = new Choice(); ColChoice.add(黑色); ColChoice.add(红色); ColChoice.add(蓝色); ColChoice.add(绿色); ColChoice.addItemListener(thi
22、s); /画笔大小选择 SizeChoice = new Choice(); SizeChoice.add(1); SizeChoice.add(3); SizeChoice.add(5); SizeChoice.add(7); SizeChoice.add(9); SizeChoice.addItemListener(this)/橡皮大小选择 EraserChoice = new Choice(); EraserChoice.add(2); EraserChoice.add(3); EraserChoice.add(4); EraserChoice.add(5); EraserChoice.
23、addItemListener(this); toolPanel = new Panel(); clear = new Button(清除); eraser = new Button(橡皮); pen = new Button(画笔); drLine = new Button(画直线); drCircle = new Button(画圆形); drRect = new Button(画矩形); colchooser = new Button(显示调色板); /各组件事件监听 clear.addActionListener(this); eraser.addActionListener(this
24、); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this); colchooser.addActionListener(this); 颜色 = new Label(画笔颜色,Label.CENTER); 大小B = new Label(画笔大小,Label.CENTER); 大小E = new Label(橡皮大小,Label.CENTER); /面板添加组件 toolPanel.add(pen);
25、 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面板
26、add(toolPanel,BorderLayout.NORTH); setBounds(60,60,800,650); setVisible(true); validate(); /dialog for save and load addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void paint(Graphics g) Graphics2D g2d = (Graphics2D)g; Point p1,p2; n = paintI
27、nfo.size(); if(toolFlag=2) g.clearRect(0,0,getSize().width,getSize().height);/清除 switch(type) case 3: Line2D line = new Line2D.Double(xx0,yy0,xx1,yy1); g2d.draw(line); break; case 4: Ellipse2D ellipse1 = new Ellipse2D.Double(xx0, yy0, Math.abs(xx1-xx0) ,Math.abs(yy1-yy0); g2d.draw(ellipse1); break;
28、case 5: Rectangle2D rect1 = new Rectangle2D.Double(xx0, yy0, Math.abs(xx1-xx0) , Math.abs(yy1-yy0); g2d.draw(rect1); break; default:break; for(int i=0; in-1; i+) p1 = (Point)paintInfo.elementAt(i); p2 = (Point)paintInfo.elementAt(i+1); size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStro
29、ke.JOIN_BEVEL); g2d.setColor(p1.col); g2d.setStroke(size); if(p1.tool=p2.tool) switch(p1.tool) case 0:/画笔 Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x,p2.y); g2d.draw(line1); break; case 1:/橡皮 g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder); break; case 3:/画直线 Line2D line2 = new Line2D.Double(p
30、1.x, p1.y, p2.x, p2.y); g2d.draw(line2); break; case 4:/画圆 Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) ,Math.abs(p2.y-p1.y); g2d.draw(ellipse); break; case 5:/画矩形 Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) ,Math.abs(p2.y-p1.y); g2d.draw(rec
31、t); break; case 6:/截断,跳过 i=i+1; break; default :break; /end switch /end if /end for public void itemStateChanged(ItemEvent e) if(e.getSource()=ColChoice)/预选颜色 String name = ColChoice.getSelectedItem(); if(name=黑色) c = new Color(0,0,0); else if(name=红色) c = new Color(255,0,0); else if(name=绿色) c = ne
32、w Color(0,255,0); else if(name=蓝色) c = new Color(0,0,255); else if(e.getSource()=SizeChoice)/画笔大小 String selected = SizeChoice.getSelectedItem(); if(selected=1) con = 1; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected=3) con = 3; size = new BasicStroke(con,B
33、asicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected=5) con = 5; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected=7) con = 7; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected=9) con = 9; size = new BasicStroke
34、(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(e.getSource()=EraserChoice)/橡皮大小 String Esize = EraserChoice.getSelectedItem(); if(Esize=2) Econ = 3*3; else if(Esize=3) Econ = 4*4; else if(Esize=4) Econ = 5*5; else if(Esize=5) Econ = 6*6; public void mouseDragged(MouseEvent e) xx1 = (int)
35、e.getX(); yy1 = (int)e.getY(); Point p1 ; switch(toolFlag) case 0:/画笔 x = (int)e.getX(); y = (int)e.getY(); p1 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p1); repaint(); break; case 1:/橡皮 x = (int)e.getX(); y = (int)e.getY(); p1 = new Point(x, y, null, toolFlag, Econ); paintInfo.addElement(p1); repaint(); break; case 3: case 4: case 5: repaint(); break; default : /repaint(); public void mou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 征地合同协议书
- 汽车检测与维修作业指导书
- 小区物业场地租赁合同
- 临时活动场地租赁合同
- 中国民用航空运输合同书5篇
- 广西国汇投资担保有限公司借款担保合同8篇
- 公路货物运输合同协议
- 农业机械化装备应用作业指导书
- 公民之间借款合同书8篇
- 2025年海口经营性道路客货运输驾驶员从业资格考试
- 2024年福建福州地铁集团招聘笔试参考题库含答案解析
- 绿色施工环境保护应急预案
- 2023静脉治疗护理技术操作标准解读
- 基础日语1学习通超星课后章节答案期末考试题库2023年
- 客源国概况-韩国课件
- 船坞的施工方法与流程
- 保密风险评估报告
- 道路建筑材料电子教案(全)
- 《尹定邦设计学概论》试题及答案
- 黄河流域生态保护和高质量发展知识竞赛试题及答案(共52题)
- 1、1~36号元素电子排布式、排布图
评论
0/150
提交评论