绘图程序说明书.docx
- 文档编号:4732661
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:20
- 大小:124.34KB
绘图程序说明书.docx
《绘图程序说明书.docx》由会员分享,可在线阅读,更多相关《绘图程序说明书.docx(20页珍藏版)》请在冰豆网上搜索。
绘图程序说明书
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2014年秋季学期
Java课程设计
题目:
绘图程序
专业班级:
计算机科学与技术1班
姓名:
付亮
学号:
12240106
指导教师:
王燕
成绩:
摘要
本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。
通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。
本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。
本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:
设计一个画图程序,能够实现画笔、画箭头、画直线、画圆形、画椭圆、画矩形、画多边形、书写文字修改该画笔的大小以及颜色。
该画图程序还需具有橡皮擦功能以及清空整个画面的功能
学习利用Java编程也是比较实用的,其拥有很方便的图形界面等功能。
图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
学习了一学期的《Java面向对象编程》课程,利用我们所学的GUI图形用户界面等,来编写一个简单的画图应用程序。
实现一些比较简单的画图应用;如:
画直线、曲线、矩形、椭圆、选择颜色、打开保存等基本功能。
关键词:
Java;画图;课程设计;编程;GUI
序言
简单的Java桌面应用软件开发主要表现为JavaGUI程序设计,要求能基于AWT或Swing,使用Eclipse、NetBeans等IDE,进行非可视化或可视化的GUI编程。
进行GUI程序设计,同时也是对Java语言基础知识、Java面向对象程序设计、Java多线程技术信和数据访问等技术。
此类软件包括记事本、计算器、画板和各类简单游戏软件等等。
和Java异常处理技术的综合应用。
此外,根据具体业务领域的不同,GUI程序也可能涉及网络通实际编程中,我们每设计一个窗体,都要往其中添加若干组件。
为了管理好这些组件的布局,我们就需要使用布局管理器。
比如说,设计一个简单的计算器,或一个文本编辑器等等。
这些组件是让JVM自己任意安排呢?
还是按照一定的位置关系进行规范的安排呢?
当然应该选择后者。
将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。
在Java中,布局由布局管理器(LayoutManager)来管理。
通过本课程设计使学生加深理解、巩固课堂理论知识和实验知识,使学生初步具备综合运用所学Java语言基础知识,面向对象程序设计的基本思想、方法与技术,网络通信编程技术和数据库编程技术等开发简单应用系统的基本能力,初步掌握软件开发中系统分析、系统设计、系统实现和系统测试等阶段的基本方法与技术,培养学生的创新意识,提高实践应用能力,为培养应用型人才服务。
目录
摘要1
序言2
目录3
一、系统分析与设计1
1.1、Java实现画图应用程序1
1.2、画图应用程序的综合要求1
(1)程序功能需求1
(2)程序性能需求1
(3)程序可靠性和可用性需求1
(4)程序出错处理需求2
(5)程序总体设计2
二、画图应用程序详细设3
2.1程序实现流程3
2.2程序算法设计3
2.3程序重点核心代码简介3
(1)画图应用程序的“选择颜色”代码3
(2)画图应用程序的“保存”和“打开”代码4
2.4程序按钮功能核心代码列表5
三、画图应用程序测试6
3.1程序代码测试6
3.2程序功能实现测试6
3.3程序测试结果10
四、画图应用程序使用介绍11
设计总结12
参考文献13
致谢14
附录:
部分程序源代码15
一、系统分析与设计
需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
可以说在软件工程当中的“需求分析”就是确定要计算机做什么。
利用Java语言编写一个简单的画图应用程序。
1.1、Java实现画图应用程序
学习了《Java面向对象编程》的课程,为了更进一步的提高我们对Java的深入学习,进行了一周的课程设计,我所选择课程设计是利用Java的GUI实现画图应用程度。
其目的是通过本课程设计使我们能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
1.2、画图应用程序的综合要求
(1)程序功能需求
1)利用Java设计一个画图应用程序;
2)可绘制直线、曲线、椭圆、矩形;
3)可改变线条颜色;
4)可完成图形文件的保存、打开功能。
(2)程序性能需求
1)计算机硬件要求:
P4以上微机。
2)计算机软件要求:
安装Java的JDK6软件。
3)画图程序最终是在Windows操作系统上实现图形用户界面的窗口化。
(3)程序可靠性和可用性需求
画图应用程序的可靠性和可用性:
即在选择了相应的画图应用程序按钮后其就能实现相应功能的作用。
比如:
选择画笔按钮则可以随便画图;选择了直线按钮则实现画直线功能;选择了曲线按钮则实现画曲线的功能。
(4)程序出错处理需求
画图应用程序需要编写有相应的容错、调试等功能。
比如关闭是提醒保存;或当出现其它什么错误时可以抛出异常、程序调试、基本的容错等功能。
(5)程序总体设计
绘图程序总体设计思路如图1-1所示:
二、画图应用程序详细设
2.1程序实现流程
(1)首先是了解画图应用程序的需求,进行程序的“需求分析”;在了解其需求基本上再作比较详细的程序规划。
(2)程序规划时需要建立所需文档资料,说明各个程序模块所要实现的功能是什么。
再深入了解和分析需求,举例出相关的界面和界面功能。
(3)根据确认的所需求文档列举的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。
(4)程序员根据所写的需求设计文档进行程序的代码编写,一个一个的实现其相应的编写。
(5)测试编写好的程序。
并补充和完善其相应的程序功能遗漏点,最后验收。
2.2程序算法设计
(1)if…else…和for等语句进行判断其用户选择的相应的功能和现实相应的循环,在调用选择的按钮键的功能。
(2)定义很多公共鼠标类监听鼠标的各种操作。
2.3程序重点核心代码简介
(1)画图应用程序的“选择颜色”代码
1.先判断其用户是否选择“选择颜色”。
当用户选择了“选择颜色”则弹出选色界面对话框提供用户“选择颜色”。
if(e.getActionCommand().equals("选择颜色"))
{
JColorChooserjc=newJColorChooser();
linecolor=jc.showDialog(null,"请选择颜色",Color.BLACK);
lcolor.setForeground(linecolor);
}
(2)画图应用程序的“保存”和“打开”代码
1.先是判断选择“保存”或“打开”功能,再实现相应的功能。
if(e.getActionCommand().equals("保存"))
{style=5;
JFileChoosersfc=newJFileChooser();
intflag=-1;
try{//这里将显示保存文件的对话框
flag=sfc.showSaveDialog(this);
}
catch(HeadlessExceptionhe)
{System.out.println("SaveFileDialogException!
");}
if(flag==JFileChooser.APPROVE_OPTION)
{//获取选择文件的路径
Stringfilename=sfc.getSelectedFile().getPath();
try{FileOutputStreamfos=newFileOutputStream(filename);
ObjectOutputStreamoos=newObjectOutputStream(fos);
oos.writeObject(thedraw);
oos.close();
}
catch(Exceptiones)
{System.out.println(es);}
}
}
elseif(e.getActionCommand().equals("打开"))
{style=5;
JFileChooserofc=newJFileChooser();
intreturnVal=ofc.showOpenDialog(this);
if(returnVal==JFileChooser.APPROVE_OPTION)
{Stringfilename=ofc.getSelectedFile().getPath();
try{//获取选择文件的路径
FileInputStreamfis=newFileInputStream(filename);
ObjectInputStreamois=newObjectInputStream(fis);
thedraw=(Vector
ois.close();
}
catch(Exceptiones)
{System.out.println(es);}
}
}
repaint();
}
(3)画图应用程序画图后鼠标“画图轨迹”记录存储
publicvoidmouseDragged(MouseEvente)
{//记录画图轨迹
positionp=newposition();
p.x=e.getX();
p.y=e.getY();
p.type=style;
p.color=linecolor;
thedraw.add(p);
repaint();
}
2.4程序按钮功能核心代码列表
1)画直线:
Line2Dt=newLine2D.Double(x1,y1,x2,y2);
2)画矩形:
Rectangle2Dt=newRectangle2D.Double(x1,y1,x2-x1,y2-y1);
3)画曲线:
Arc2Dt=newArc2D.Double(x1,y1,x2-x1,y2-y1,20,90,Arc2D.OPEN);
4)画椭圆:
Ellipse2Dt=newEllipse2D.Double(x1,y1,x2-x1,y2-y1);
三、画图应用程序测试
3.1程序代码测试
(1)将编写好“画图应用程序”的源代码进行测试。
我安装的是Windows8操作系统,安装的JavaJDK是现在的最新版本,将代码进行编译运行如下图3-1:
图3-1用户界面
上图为Java语言编程所实现的画图应用程序“用户界面”。
3.2程序功能实现测试
(1)画图应用程序之画笔(直线、矩形、椭圆,圆矩形)功能实现,如下图3-2标识:
图3-2功能实现
(2)画图应用程序之画笔的颜色选择功能:
其提供了三种选择“样本”、“HSB”、“RGB”的颜色选择方式,分别如图3-3,3-4,3-5所示。
图3-3样本
图3-4HSB
图3-5RGB
(3)画图应用程序之保存功能实现。
如下图3-6:
图3-6保存功能
(4)将“wb”图保存到“桌面”。
如图3-7
图3-7保存到“桌面”
(4)画图应用程序之打开功能实现。
如下图3-8:
图3-8打开功能实现
3.3程序测试结果
(1)画图应用程序的Java源代码全部正确能够通过编译并正常运行。
(2)画图应用程序要求的功能:
画直线、曲线、矩形、椭圆、圆矩形、画笔选择颜色等功能都以完全实现。
(3)通过Java编程完全实现了课程设计任务书的全部功能。
四、画图应用程序使用介绍
画图应用程序其实质也就是一个简单的画图板。
画图板的应用简单灵巧,其占用资源少、操作简单;可以实现一些简单的画图应用操作。
其功能较少但是可以为用户的小型图形应用工作带来了很多便利。
能实现简单的作图如:
画直线、曲线、椭圆、矩形等;也可以实现图像保存、打开、选择颜色等功能。
如下图4-1所示,就是本应用程序的使用介绍主面板。
图4-1程序的使用介绍
设计总结
在这次的课程设计中,我主要运用了Java语言的界面设计、异常处理、Awt控件、Swing控件等,综合运用了Java语言。
我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。
通过这两个礼拜的课程设计我真的学到了很多的东西,当然这也和我的同学的帮助是离不开的。
好了,下面就谈一下我在这些天的体会吧:
在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。
在这个小应用程序当中,我用了Java外还用了Swing控件。
GUI等技术。
由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。
正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。
此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。
通过将近两周的努力,这次课程设计终于结束了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。
在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。
参考文献
[1]曲朝阳,杨杰明等.Java程序设计.北京:
清华大学出版社,2008.10
[2]耿祥以,张跃平.Java大学生实用教程.北京:
电子工业出版社,2012.6
[3]明日科技.Java经典编程.北京:
清华大学出版社,2012.10
[4]李尊朝,苏军.Java语言程序设计.北京:
中国铁道出版社,2004.2
[5]王博.面向对象的建模、设计技术与方法.北京希望电脑公司,1990.
[6]朱福喜.《Java语言程序设计》(第二版).科学出版社
[7]陈国君等.《Java程序设计基础》(第二版).清华大学出版社
[8]Deitel.《Java大学基础教程》(第六版).电子工业出版社
[9]MaryCampione.《Java语言导学》(第四版).机械工业出版社
[10]Y.DanielLiang.《Java语言程序设计基础篇》(第六版).机械工业出版社
[11]KathySierra.《HeadFirstJava》(第二版).东南大学出版社
致谢
首先感谢我的指导老师王燕,她在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。
在这两周的java课程设计中,对课本中所学的知识进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。
一个人要完成所有的工作是非常困难和耗时的。
在以后的学习中我会更加注意各个方面的能力的协调发展。
在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。
我的同学在我的课程设计中也给了我很多无私的帮助和支持,在此一并表示感谢。
附录:
部分程序源代码
finalButtonbutton=newButton("线");
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
n=1;
m=0;
h=0;
j=0;
z=0;
d=0;
y=0;
c=0;
}
});
panel_1.addMouseListener(newMouseAdapter(){
@Override
publicvoidmousePressed(MouseEvente){
if(n==1)
{positionp=newposition();
p.x=e.getX();
p.y=e.getY();
x1=p.x;
y1=p.y;
p.color=linecolor;
p.s=x;
thedraw.add(p);
}
}
});
panel_1.addMouseMotionListener(newMouseMotionAdapter(){
@Override
publicvoidmouseDragged(MouseEvente){
if(n==1)
{positionp=newposition();
p.x=e.getX();
p.y=e.getY();
x2=p.x;
y2=p.y;
p.color=linecolor;
p.s=x;
thedraw.add(p);
Graphics2Dg=(Graphics2D)panel_1.getGraphics();
Line2Dt=newLine2D.Double(x1,y1,x2,y2);
g.setColor(p.color);
g.setStroke(newBasicStroke(p.s));
g.draw(t);
x1=x2;
y1=y2;
}
}});
button.setActionCommand("线");
panel.add(button);
Buttonbutton_1=newButton("圆");
button_1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
m=1;
n=0;
h=0;
j=0;
z=0;
d=0;
y=0;
c=0;
}
});
panel_1.addMouseMotionListener(newMouseMotionAdapter(){
@Override
publicvoidmouseMoved(MouseEvente){
if(m==1)
{positionp=newposition();
p.x=e.getX();
p.y=e.getY();
px1=p.x;
py1=p.y;
p.color=linecolor;
p.s=x;
thedraw.add(p);
status=0;
}}
@Override
publicvoidmouseDragged(MouseEvente){
if(m==1)
{
Graphics2Dg=(Graphics2D)panel_1.getGraphics();
g.setStroke(newBasicStroke(x));
g.setColor(Color.GRAY);
g.setXORMode(Color.DARK_GRAY);
if(status==1)
g.drawOval(px1,py1,px2,py2);
else{
positionp=newposition();
p.x=e.getX();
p.y=e.getY();
px1=p.x;
py1=p.y;
p.s=x;
p.color=linecolor;
thedraw.add(p);
status=1;}
px2=Math.abs(e.getX()-px1);
py2=Math.abs(e.getY()-py1);
g.drawOval(px1,py1,px2,py2);
rpx1=px1;rpy1=py1;rpx2=px2;rpy2=py2;}
}});
panel_1.addMouseListener(newMouseAdapter(){
@Override
publicvoidmouseReleased(MouseEvente){
if(m==1)
{
positionp=newposition();
p.s=x;
p.color=linecolor;
Graphics2Dg=(Graphics2D)panel_1.getGraphics();
g.setStroke(newBasicStroke(p.s));
g.setColor(p.color);
Ellipse2Dt=newEllipse2D.Double(rpx1,rpy1,rpx2,rpy2);
g.draw(t);
}}});
panel.add(button_1);
Buttonbutton_3=newButton("弧");
button_3.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
h=1;
n=0;
m=0;
j=0;
z=0;
d=0;
y=0;
c=0;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 绘图 程序 说明书