ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:889.11KB ,
资源ID:7200823      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7200823.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(画图画板设计模式.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

画图画板设计模式.docx

1、 长 沙 学 院 课程设计说明书 题目 设计模式课程设计 系(部) 数学与计算机科学系 专业(班级) 姓名 学号 指导教师 起止日期 课程设计任务书 课程名称:设计模式课程设计 设计题目:基于设计模式的绘图程序 已知技术参数和设计要求: 1. 问题描述(功能要求): 1.需求分析 该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。 1.1 设计模式要求 至少在其中运用 3 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模

2、式三种。 1.2 画图基本要求 能实现基本图形的绘制功能 1.3 画图高级要求 实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等)和持久化(利用文件或利用数据库)。 1.4 参考界面 图1 参考效果图1 图2 参考效果图2 2. 运行环境要求: Windows操作系统; Eclipse 3. 技术要求: 给出至少3种设计模式,要求具体说明使用每种设计模式的动机,画出类图,并代码实现,然后评价该设计模式的优缺点。 设计工作量: 2周 工作计划: (1) 2013级软件工程 4课时:讲授 32课时:上机、调试。计算机系机

3、房 4课时:答辩。计算机系机房。 指导教师签名:         日期:         教研室主任签名:        日期:         系主任签名:          日期:         长沙学院课程设计鉴定表 姓名 学号 专业 班级 设计题目 指导教师 指导教师意见: 评定等级: 教师签名: 日期: 答辩小组意见: 评定等级:     答辩小组长签名:     日期:     教研室意见:

4、 教研室主任签名: 日期:   系(部)意见: 系主任签名:        日期:      说明 课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类; 目录 第1章 系统需求 8 1.1系统总需求 8 1.2 功能需求 8 第3章 系统设计 9 3.1系统总功能模块设计 9 3.2子功能模块设计 9 3.2.1构建基本图形 9 3.2.2装饰模式组合图形 10 3.2.3 桥接模式修饰图形颜色线条粗细 10 第4章 系统实现 11 4.1登陆界面 11 4.2简单工厂模式绘制基本图形 1

5、1 4.2.1装饰模式图形组合 13 4.2.2桥接模式改变粗细绘制图形 14 第5章 系统测试 15 5.1测试目的 15 5.2测试手段 15 5.3测试用例 15 5.3.1登陆界面测试 15 结论 16 参考文献 17 结束语 18 附录 19 第1章 系统需求 1.1系统总需求 该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能 1.2 功能需求 1. 至少在其中运用 3 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。 2. 选择图形模块: 点击图形后,可以用画笔绘画出对应的图形。 选择

6、装饰模式模块: 点击模式,根据两次按钮的不同选择可以在原有的图形上进行组合。 选择桥接模式模块: 点击模式后,根据所选择色体,笔的型号,进行新的图形绘制。 第3章 系统设计 3.1系统总功能模块设计 图3.1程序总架构 3.2子功能模块设计 3.2.1构建基本图形 功能:通过点击对应按钮,生成对应可控制大小的基本图形。 图.3.2简单工厂模式设计 3.2.2装饰模式组合图形 (1)功能:对基本图形进行组合。 (2)程序流程图:基本信息管理的程序流程图如下图所示: 图3.3 装饰组合模式设计 3.2.3 桥接模式修饰图

7、形颜色线条粗细 功能:选择颜色与画笔粗细,重新绘制图片。 图3.4 桥接模式设计 第4章 系统实现 4.1登陆界面 本系统启动后直接显示登陆界面。如图4.1所示: 图4.1登陆界面 4.2简单工厂模式绘制基本图形 点击工厂模式中的按钮可以控制鼠标绘制所选图形。如图4.1所示: 图4.2绘制基本图形(三角形) 图4.3绘制基本图形(圆形) 图4.4绘制基本图形(矩形) 图4.5选择色彩绘绘制图形 4.2.1装饰模式图形组合 此模块让图形进行组合共有9种形式。如图4.6所示: 图4.6各种图形组合 4.2.2桥接模式

8、改变粗细绘制图形 图4.7桥接模式绘制图形 第5章 系统测试 5.1测试目的 通过测试发现软件错误; 功能的完备性:检验程序功能是否达到用户预先制定的需求; 错误检查:检查程序潜在的错误,为软件可靠性与安全性的评估提供依据。 5.2测试手段 人工测试技术。 5.3测试用例 5.3.1登陆界面测试 如表5.1所示: 表5.1 班级学生成绩管理测试用例 班级学生成绩管理 序 号 测试子项 输入/动作 期望输出/相应 实际 情况 1 绘制基本图形 鼠标点击对应按钮 绘制对应基本图形 √ 2 绘制组合图形 鼠标点击对应按钮 绘制组合

9、图形 √ 绘制桥接图形 鼠标点击对应按钮 绘制外观不同的新图形 √ 结论 绘图程序实现了图形的基本绘制功能,并在绘制的其中运用到了本学期所学的设计模式的知识,使得整个系统变得更具结构性,便于后期的功能扩展或其他。 参考文献 [1] 谭浩强编著,java程序设计[M],清华大学出版社,1991.7 [2] 姜仲秋编著,java程序设计[M],南京大学出版社,1998.1 [3] 刘瑞挺主编,计算机二级教程[M],南开大学出版社,1996.10 [4] 陈朔鹰编著,java程序设计基础教程[M],兵器工业出版社,1994.9 [5] 李虹主编,java程序设计

10、[M],南京大学出版社,2010.2 [1] 马石安、魏文平.面向对象程序设计教程[M].北京:清华大学出版社.2007.8 结束语 为期两周的实训结束了,在老师和同学的帮助下,我基本完成绘图程序系统的设计。我们按照系统工程软件设计的要求,从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的学生信息查询,学生信息更新,学生信息添加等模块的功能。 在这实训期间里我们的收获很多:巩固和加深了对JAVA的理解,提高了综合运用本课程所学知识的能力。使用窗体控件开发桌面程序。在Swing中使用控件可减少代码书写量加快开发速度。培养了我们

11、查阅文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。 通过这次实训,我们也认识到在以后的学习当中注意:认真上好专业实验课,多在实践中锻炼自己。写程序的过程中要考虑周到,严密。在做设计的时候要有信心,有耐心,切勿浮躁。认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。 附录 界面: package 界面; import java.awt.Color; import java.a

12、wt.Font; import java.awt.Graphics; import java.awt.MouseInfo; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.File; im

13、port javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.

14、filechooser.FileNameExtensionFilter; import 简单工厂模式.*; import 装饰模式.*; import 桥接模式.*; public class MainFrame extends JFrame{ private JPanel downPanel = new JPanel(); private Color c=Color.black; int x = 0; int y = 0; int x1 = 0; int y1 = 0; String name; String name2;

15、 int flag=0; Conpotent con; pen pen; File[] selectedFiles = null; int fileIndex = 0; int width = 200; int height = 200; public MainFrame(){ initUI(); showFrame(); } // 初始化界面显示组件 private void initUI() { final JTextField jtfGrap = new JTex

16、tField("图形"); final JTextField jtfModi = new JTextField("装饰"); final JTextField jtfStra = new JTextField("桥接"); final JButton jbtColo = new JButton("颜色"); final JButton jbtTria = new JButton("三角形"); final JButton jbtRoun = new JButton("圆形"); final JButton jbtRect

17、 new JButton("矩形"); final JButton jbtClea = new JButton("清空"); final JButton jbtMod1 = new JButton("三角形"); final JButton jbtMod2 = new JButton("圆形"); final JButton jbtMod3 = new JButton("矩形"); final JButton jbtMod4 = new JButton("可移动"); final JButton jbtStr1 = ne

18、w JButton("大笔红"); final JButton jbtStr2 = new JButton("大笔绿"); final JButton jbtStr3 = new JButton("小笔红"); final JButton jbtStr4 = new JButton("小笔绿"); final JPanel jpPanel1 = new JPanel(); final JPanel jpPanel2 = new JPanel(); final JPanel jpPanel3 = new JPanel();

19、 jbtColo.setBounds(115, 10, 90, 20); jbtColo.setForeground(new Color(153, 217, 234)); jbtColo.setContentAreaFilled(false); jbtColo.setFont(new Font("黑体", Font.BOLD, 14)); jtfGrap.setBounds(15, 5, 40, 30); jtfGrap.setFont(new Font("

20、黑体", Font.BOLD, 14)); jtfGrap.setBorder(null); jtfGrap.setEditable(false); jtfGrap.setOpaque(false); jbtTria.setBounds(15, 35, 90, 40); jbtTria.setForeground(new Color(153, 217, 234)); jbtTria.setContentAreaFilled(false); jbtTria.setFont(new Font("黑体"

21、 Font.BOLD, 14)); jbtRoun.setBounds(115, 35, 90, 40); jbtRoun.setForeground(new Color(153, 217, 234)); jbtRoun.setContentAreaFilled(false); jbtRoun.setFont(new Font("黑体", Font.BOLD, 14)); jbtRect.setBounds(15, 85, 90, 40); jbtRect.setForegrou

22、nd(new Color(153, 217, 234)); jbtRect.setContentAreaFilled(false); jbtRect.setFont(new Font("黑体", Font.BOLD, 14)); jtfModi.setBounds(15, 5, 40, 30); jtfModi.setFont(new Font("黑体", Font.BOLD, 14)); jtfModi.setBorder(null); jtfModi.setEditable(false);

23、jtfModi.setOpaque(false); jbtMod1.setBounds(15, 35, 90, 40); jbtMod1.setForeground(new Color(153, 217, 234)); jbtMod1.setContentAreaFilled(false); jbtMod1.setFont(new Font("黑体", Font.BOLD, 14)); jbtMod2.setBounds(115, 35, 90, 40); jbtMod2.setForegrou

24、nd(new Color(153, 217, 234)); jbtMod2.setContentAreaFilled(false); jbtMod2.setFont(new Font("黑体", Font.BOLD, 14)); jbtMod3.setBounds(15, 85, 90, 40); jbtMod3.setForeground(new Color(153, 217, 234)); jbtMod3.setContentAreaFilled(false); jbtMod3.setFont(new F

25、ont("黑体", Font.BOLD, 14)); jbtMod4.setBounds(115, 85, 90, 40); jbtMod4.setForeground(new Color(153, 217, 234)); jbtMod4.setContentAreaFilled(false); jbtMod4.setFont(new Font("黑体", Font.BOLD, 14)); jtfStra.setBounds(15, 5, 40, 30); jtfStra.setF

26、ont(new Font("黑体", Font.BOLD, 14)); jtfStra.setBorder(null); jtfStra.setEditable(false); jtfStra.setOpaque(false); jbtStr1.setBounds(15, 35, 90, 40); jbtStr1.setForeground(new Color(153, 217, 234)); jbtStr1.setContentAreaFilled(false); jbtStr1.setFont

27、new Font("黑体", Font.BOLD, 14)); jbtStr2.setBounds(115, 35, 90, 40); jbtStr2.setForeground(new Color(153, 217, 234)); jbtStr2.setContentAreaFilled(false); jbtStr2.setFont(new Font("黑体", Font.BOLD, 14)); jbtStr3.setBounds(115, 85, 90, 40); jbtStr3.set

28、Foreground(new Color(153, 217, 234)); jbtStr3.setContentAreaFilled(false); jbtStr3.setFont(new Font("黑体", Font.BOLD, 14)); jbtStr4.setBounds(15, 85, 90, 40); jbtStr4.setForeground(new Color(153, 217, 234)); jbtStr4.setContentAreaFilled(false); jbtStr4.setFo

29、nt(new Font("黑体", Font.BOLD, 14)); jbtClea.setBounds(620, 10, 70, 20); jbtClea.setForeground(new Color(153, 217, 234)); jbtClea.setContentAreaFilled(false); jbtClea.setFont(new Font("黑体", Font.BOLD, 14)); jbtClea.addActionListener(new ActionListener

30、) { public void actionPerformed(ActionEvent e) { downPanel.removeAll(); downPanel.add(jbtClea); downPanel.update(downPanel.getGraphics()); } }); downPanel.setBounds(260, 15, 700, 627); downPanel.setBackground(Color.WHITE); dow

31、nPanel.setLayout(null); downPanel.add(jbtClea); jpPanel1.setBorder(BorderFactory.createLineBorder(getForeground())); jpPanel1.setBounds(20, 15, 222, 142); jpPanel1.setBackground(Color.WHITE); jpPanel1.setLayout(null); jpPanel1.add(jbtTria); jpPanel1.

32、add(jbtRoun); jpPanel1.add(jbtRect); jpPanel1.add(jbtColo); jpPanel1.add(jtfGrap); jpPanel2.setBorder(BorderFactory.createLineBorder(getForeground())); jpPanel2.setBounds(20, 177, 222, 142); jpPanel2.setBackground(Color.WHITE); jpPanel2.setLayout(null

33、); jpPanel2.add(jbtMod1); jpPanel2.add(jbtMod2); jpPanel2.add(jbtMod3); jpPanel2.add(jbtMod4); jpPanel2.add(jtfModi); jpPanel3.setBorder(BorderFactory.createLineBorder(getForeground())); jpPanel3.setBounds(20, 339, 222, 142); jpPanel3.setBackgro

34、und(Color.WHITE); jpPanel3.setLayout(null); jpPanel3.add(jbtStr1); jpPanel3.add(jbtStr2); jpPanel3.add(jbtStr3); jpPanel3.add(jbtStr4); jpPanel3.add(jtfStra); this.add(downPanel); this.add(jpPanel1); this.add(jpPanel2); this.add(jp

35、Panel3); ////// jbtRoun.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { name = "圆形"; } }); jbtRect.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { name="矩形"; } });

36、 jbtTria.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { name = "三角形"; } }); jbtColo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { c = JColorChooser.showDialog(null, "Choose a Color",

37、 jbtColo.getForeground()); } }); jbtMod1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { name2 = "三角形"; if(name!=null &&name.equals("矩形") ){ flag=1; }else if(name!=null &&name.equals("圆形")

38、){ flag=2; }else if(name!=null &&name.equals("三角形") ){ flag=3; } } }); jbtMod2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { name2 = "圆形"; if(name!=null &&name.equals("矩形

39、") ){ flag=4; } else if(name!=null &&name.equals("三角形") ){ flag=5; } else if(name!=null &&name.equals("圆形") ){ flag=6; } } }); jbtMod3.addActionListener(new ActionListener() { public vo

40、id actionPerformed(ActionEvent e) { name2 = "矩形"; if(name!=null &&name.equals("矩形") ){ flag=7; }else if(name!=null &&name.equals("圆形") ){ flag=8; }else if(name!=null &&name.equals("三角形") ){ flag=9; } }

41、 }); jbtMod4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { flag=-1; JFileChooser chooser = new JFileChooser(); chooser.setMultiSelectionEnabled(true); FileNameExtensionFilter filter = new FileNameExtensionFilter( "JPG &

42、GIF Images", "jpg", "gif"); // 设置文件类型 chooser.setFileFilter(filter); // 打开选择器面板 int returnVal = chooser.showOpenDialog(downPanel); if (returnVal == JFileChooser.APPROVE_OPTION) { selectedFiles = chooser.getSelectedFiles(); repaint(); } } }); jbtS

43、tr1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { c=Color.red; flag=10; } }); jbtStr2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { c=Color.green; flag=10; } });

44、jbtStr3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { c=Color.red; flag=11; } }); jbtStr4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { c=Color.green; flag=11; } });

45、 downPanel.addMouseListener(new MouseListener(){ public void mousePressed(MouseEvent e) { x = e.getX(); y = e.getY(); } public void mouseReleased(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); Graphics g = downPanel.getGraphics(); // System.out.println("nam

46、e="+name); switch (flag){ case 0: Draw d =proFactory.produce(name); d.draw(g, x, y, x1, y1, c);break; case 1: con = new Rec(); con.paint(g, x, y, x1, y1, c); break; case 2: con = new Oval(); con.paint(g, x, y, x1, y1, c);break; case 3: con = new Tri();

47、 con.paint(g, x, y, x1, y1, c);break; case 4: con = new Rec(); con.paint(g, x, y, x1, y1, c);break; case 5: con = new Tri(); con.paint(g, x, y, x1, y1, c);break; case 6: con = new Oval(); con.paint(g, x, y, x1, y1, c);break; case 7: con = new Rec();

48、 con.paint(g, x, y, x1, y1, c);break; case 8: con = new Oval(); con.paint(g, x, y, x1, y1, c);break; case 9: con = new Tri(); con.paint(g, x, y, x1, y1, c);break; } if(flag==1||flag==2||flag==3){ Tri_Tri tr = new Tri_Tri(con); tr.paint(g, x, y,

49、 x1, y1, c); flag=0; } if(flag==4||flag==5||flag==6){ Oval_Oval tr = new Oval_Oval(con); tr.paint(g, x, y, x1, y1, c); flag=0; } if(flag==7||flag==8||flag==9){ Rec_Rec tr = new Rec_Rec(con); tr.paint(g, x, y, x1, y1, c); flag=0; }

50、 if(flag==10){ size s = new redbig(); float size; size = s.bepaint(); pen p = new bigpen(); p.draw(name, g, x, y, x1, y1, c,size); } if(flag==11){ size s = new greensmall(); float size; size = s.bepaint(); pen p = new bigpen();

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服