绘制java面向对象课程设计报告画图板毕业设计(论文)word格式

免费对象存储  时间:2021-05-02  阅读:()

h

《面向对象程序设计课程设计》指导书

课程设计名称面向对象程序设计课程设计 指导老师牛志毅

课程设计周时数2周

指导方式集体辅导与个别辅导相结合

课程设计适用专业信息与计算机科学

课程设计教材及主要参考资料

《Java程序设计与案例》刘宝林主编高等教育出版社

服务课程名称面向对象程序设计

一、课程设计教学目的及基本要求

通过本课程设计使学生了解面向对象程序的开发思想、方法和步骤掌握开发工具的使用提高综合运用所学的理论知识和方法独立分析和解决问题的能力进一步提高其开发应用程序的能力。

要求明确本次课程设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JAVA的应用系统综合实例来掌握Java语言编程技巧。并学会编制结构清晰、风格良好的、数据结构适当的Java语言程序从而具备解决综合性实际问题的能力。

二、设计题目及要求二选一

⑴设计一个图书信息管理系统

①图书信息包括图书编号、书名、作者、 出版社、 出版日期、 图书简介及图书类别等。

②本系统功能描述

图书信息录入功能

W

h

图书信息浏览功能

查询功能至少一种查询方式 

图书信息修改功能

及其它你认为必要的功能。

⑵设计一个画图软件

①用户界面友好

②能绘制基本形状的图形

③可设置图形的颜色、线条的粗细和填充等属性

④可将画好的图保存至文件并能从文件中读取。

三、设计报告的要求

设计结束后要写出课程设计报告以作为整个课程设计评分的书面依据和存档材料。设计报告以规定格式的电子文档书写、打印并装订排版及图、表要清楚、工整。内容及要求如下

封面题目、班级、姓名、学号、指导教师和完成日期。

正文包括以下7个内容

①课题说明

以无歧义的陈述说明程序设计的任务。

②程序设计思路

W

h

简要说明程序设计的思路。

③程序源代码

给出源代码及注释。

④程序测试

给出程序主要运行界面截图。

⑤设计总结

经验和体会等。

⑥参考文献

列出参考的相关资料和书籍。

五、课程设计考核方法及成绩评定

课程设计结束时要求学生提交课程设计报告附源程序及可运行的软件系统。课程设计成绩分两部分设计报告占50设计作品占50。

附件课程设计报告封面和参考程序。

W

h

课程设计报告

课程名称 面向对象程序设计课程设计

课程设计题目  画图板

系

专 业

年级、班

姓 名

学 号

指导教师

职 称

2012年6月

W

h

1.课题的任务和要求

设计一个画图软件

①用户界面友好

②能绘制基本形状的图形

③可设置图形的颜色、线条的粗细和填充等属性

④可将画好的图保存至文件并能从文件中读取。

2.程序设计思路

该课题的任务是设计一个画图软件要求能绘制基本形状的图形同时可以设置图形的颜色、线条的粗细和是否填充等属性并且可以将画好的图形以某种格式比如说JPG保存至文件并能从文件中读取某种格式的图像文件并显示出来。

首先作为画图板应该能够绘制基本的图形像"铅笔", "直线", "矩形", "椭圆",”圆”,同时考虑到实用性画图板应该能够提供橡皮擦设置线条粗细颜色背景颜色的功能。在鼠标停留在按钮上时按钮上应该提供显示提示文字通过设置J Button的setText方法即可达到要求在使用线条工具来绘制线条时如果设置图形过于粗大要求绘制出来图形能够消除锯齿思路是在设置Graphics2D的大小时设置Graphics2DsetRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_O N);即可达到要求

第二考虑到平时画图时总是喜欢按住shift来绘制45° 90°的线条为方便用户画图板也必须提供相应的功能思路是判断线条的角度如果角度大于0°同时小于45° 则绘制45°的斜线如果线条的角度大于45°小于90° 则绘制90度的直线。

第三关于设置背景颜色考虑到美观使用了渐变背景色思路是在设置Graphics2D的背景色时通过绘制不同透明度的条纹背景与设置不同级别的透明度来达到绘制渐变背

W

h

景色的目的。

第四关于画图板在提供通用的功能的同时应该能够提供一些扩展功能这是课程设计的一项基本要求对于扩展功能我提供了绘制圆角矩阵三角形3D立方体和绘制f(x)=A*sin(Bx)+C*cos(Cx) 绘制重叠椭圆等扩展功能绘制圆角矩阵是通过Graphics2D的drawRoundRect来实现的而3D立方体则是通过fi l l3DRect实现的而三角形是通过绘制首尾相连的三条直线来实现的。而正余弦曲线则完全是通过计算出曲线的值然后绘制一小段直线通过绘制很多这样的小直线相连来达到绘制正余弦曲线的目的。的值然后绘制一小段直线通过绘制很多这样的小直线相连来达到绘制正余弦曲线的目的。而重叠椭圆的实现则是通过Graphics2D的draw(new El l ipse2D.Double(x1 ,y1 ,85,90);绘制一个椭圆然后translate(x1 ,y1);将Graphics2D上下文的原点平移到当前坐标系中的点(x1 ,y1),在计算d=m*math. .PI/180的值rotate(d); 将当前的Graphics2D Transform与旋转转换连接,然后 translate(-x1 ,-y1);将Graphics2D上下文的原点平移到当前坐标系中的点(-x1 ,-y1)。draw(new El l ipse2D.Double(x1 ,y1 ,85,90));再来绘制一个椭圆通过这样的处理来绘制一个在一个圆平面且重叠的椭圆图形。

第五关于设置是否填充的问题对于直线来说是否填充是没有实际意义的所以不予考虑释放填充应该考虑圆椭圆圆角矩阵三角形对于圆和椭圆的填充是通过调用

Graphics2D的drawOval方法实现的圆角矩阵则是通过调用Graphics2D的drawRoundRect来实现的而三角行的填充则是通过调用Graphics2D的fi l lPolygon方法来实现的.而填充与否的判断则是通过isfi l l的真与假来实现的.

W

h

第六要求能够保存图形与打开已有的图形这是通过使用Buffered Image来缓存绘制的图形然后使用ImageIO将绘制的图形在重新绘制一次再保存到指定的位置从而实现了文件的保存打开文件时考虑到实用性与方便提供了预览图像的功能通过继承Jpanel 将选得的图片通过setIcon绘制在出来实现预览的功能。打开是通过ImageIO将图片绘制在面板上。为方便用户提供了一个Fi le的菜单菜单中提供了新建保存打开退出的功能。

第七考虑到美观使用了观感器的图形界面。主要是通过观感管理器来实现的。UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());对于背景颜色则是通过设置渐变背景颜色来实现的。

第八在用户退出时要求能询问用户是否保存作品考虑到菜单中有保存的选项所以通过菜单退出时没有提供询问是否保存的功能而在实际生活中考虑到有时候会忘记保存所以通过右上角窗口退出时必须询问是否保存是否保存则是通过

JOptionPane.showConfirmDialog来实现的当用户选择Yes时保存文件。其他则直接退出。

根据课题要求首先对要实现的功能类型抽象出一个公共的基类Drawing 子类Line Rectange Oval Penci l RoundRect Circle Rect3DTriangleSinCos Tuo Eraser通过继承基类来实现不同的功能在使用时通过基类来调用不同的子类很好地体现了面向对象的Java语言的多态抽象继承的思想。用户通过选择不同的按钮来绘制图形这主要是利用按钮监听将不同的绘图功能绑定到不同的按钮上通过监听用户的选择来创建不同的子类通过子类绘制不同的图形。

3.源代码及注释package myclass;

W

himport java.awt.*;import java.awt.event.*;import java.awt.geom.El l ipse2D;import java.awt.geom.Rectangle2D;import java.awt. image.BufferedImage;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java. io.*;import java.uti l .ArrayList;import java.uti l .Random;import javax. imageio. ImageIO;import javax.swing.*;import javax.swing.event.*;import javax.swing.fi lechooser.Fi leFi lter;import javax.swing.fi lechooser.Fi leNameExtensionFi lter;import javax.swing.fi lechooser.Fi leView;import javax.swing.text.StyledEditorKit.ForegroundAction;

W

himport org.omg.CORBA.FREE_MEM;import org.w3c.dom.css.Rect;publ ic class DrawingBoard{publ ic static void main(String[]args) {

DrawGraphic newPad=new DrawGraphic(); //创建窗口对象

}

}class DrawGraphic extends JFrame{private JButton choices[]; //按钮数组private String names[]={ "铅笔", "直线", "矩形", "椭圆","圆角矩阵", "圆","3D立方体","三角形","椭圆重叠","正余弦曲线","橡皮擦","背景色","颜色" }; //按钮上的文本private String tipText[] ={ "自由绘制", "绘制直线", "绘制矩形", "绘制椭圆" ,"绘制圆角矩阵","绘制圆","绘制3D立方体","绘制三角形","椭圆重叠","正余弦曲线","橡皮檫","设置透明背景色","选择颜色"}; //按钮的提示字串

JToolBar buttonBar; //工具条

Drawing[]iteml ist=new Drawing[1000];

JCheckBox fi l lCheckBox;//复选框

JSl ider strokeSl ider;//滑动条int index=0;private int currentType=1 ;//当前选择private Color color=Color.black;//颜色

W

RackNerd :美国大硬盘服务器促销/洛杉矶multacom数据中心/双路e5-2640v2/64G内存/256G SSD+160T SAS/$389/月

大硬盘服务器、存储服务器、Chia矿机。RackNerd,2019年末成立的商家,主要提供各类KVM VPS主机、独立服务器和站群服务器等。当前RackNerd正在促销旗下几款美国大硬盘服务器,位于洛杉矶multacom数据中心,亚洲优化线路,非常适合存储、数据备份等应用场景,双路e5-2640v2,64G内存,56G SSD系统盘,160T SAS数据盘,流量是每月200T,1Gbps带宽,配5...

HTTPS加密协议端口默认是多少且是否支持更换端口访问

看到群里网友们在讨论由于不清楚的原因,有同学的网站无法访问。他的网站是没有用HTTPS的,直接访问他的HTTP是无法访问的,通过PING测试可以看到解析地址已经比较乱,应该是所谓的DNS污染。其中有网友提到采用HTTPS加密证书试试。因为HTTP和HTTPS走的不是一个端口,之前有网友这样测试过是可以缓解这样的问题。这样通过将网站绑定设置HTTPS之后,是可以打开的,看来网站的80端口出现问题,而...

DiyVM:499元/月香港沙田服务器,L5630*2/16G内存/120G SSD硬盘/5M CN2线路

DiyVM是一家成立于2009年的国人主机商,提供的产品包括VPS主机、独立服务器租用等,产品数据中心包括中国香港、日本大阪和美国洛杉矶等,其中VPS主机基于XEN架构,支持异地备份与自定义镜像,VPS和独立服务器均可提供内网IP功能。商家VPS主机均2GB内存起步,三个地区机房可选,使用优惠码后每月69元起;独立服务器开设在香港沙田电信机房,CN2线路,自动化开通上架,最低499元/月起。下面以...

免费对象存储为你推荐
学生微信5支出127formgraph浙江世纪华通集团股份有限公司阿片类药物:您需要知道什么支持ipad支持ipad南京医科大学合同管理系统css3圆角css实现圆角的几种方法是什么?css3圆角在HTML里如何实现圆角矩形?
美国vps 域名服务器的作用 域名备案只选云聚达 主机 nerd NetSpeeder 阿里云代金券 debian6 lamp配置 云图标 北京双线机房 中国电信测网速 phpmyadmin配置 卡巴斯基破解版 服务器硬件防火墙 吉林铁通 免费私人服务器 空间登陆首页 服务器防火墙 酸酸乳 更多