软件工程JAVA课程设计报告.docx

上传人:牧羊曲112 文档编号:2094437 上传时间:2023-01-09 格式:DOCX 页数:32 大小:472.22KB
返回 下载 相关 举报
软件工程JAVA课程设计报告.docx_第1页
第1页 / 共32页
软件工程JAVA课程设计报告.docx_第2页
第2页 / 共32页
软件工程JAVA课程设计报告.docx_第3页
第3页 / 共32页
软件工程JAVA课程设计报告.docx_第4页
第4页 / 共32页
软件工程JAVA课程设计报告.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《软件工程JAVA课程设计报告.docx》由会员分享,可在线阅读,更多相关《软件工程JAVA课程设计报告.docx(32页珍藏版)》请在三一办公上搜索。

1、西安科技大学软件工程课程设计报告题目:画图板应用程序开发班级 学号: 姓名: 2010年12月目 录1 绪论32 可行性研究报告33 需求分析报告44 总体设计报告75 详细设计报告86 系统实现报告127软件测试报告32参考文献1、绪论 11 目的和意义用过微软Windows操作系统的人一定都对Windows自带的画图板非常熟悉了。同图像处理软件界的老大Photoshop比起来,它虽然不及Photoshop的功能强大,内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑,简单实用等其他绘图软件所不具备的优点。同时它的风格也被许多其他的绘图软件所仿效。作为一个软件工程专业的

2、学生自己也想亲自动手编写一个属于自己的,简单实用的绘图程序。通过本次课程设计可以增加对整个流程的熟悉以及对程序组织结构和框架的理解,对以后开发和设计更大更复杂的程序无疑有更大的帮助。1.2 任务书写开发文档,分析和制定整个开发过程,然后开发一个自己的画图板应用程序。2、可行性研究报告2.1 进行可行性研究的方法本应用程序可行性研究是通过对比windows自带的画板程序的方式进行的,对Windows里面的画板进行分析研究,分析得出本应用软件应该实现的基本功能,并根据自己的能力进行了功能上的增加。2.2 评价尺度本软件在评价时应从以下几个方面进行分析:开发时间应尽量短;功能实现的代码应尽量少;代码

3、执行效率要高;有较强的容错能力;2.3技术方面的可行性 系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以画图板应用程序在技术上是完全可行的。a 在当前的限制条件下,该程序的功能目标能达到;b 利用现有的技术,该程序的功能可以实现;c 由于能力的不足,现阶段的功能不够完美,还可以在日后完善;d 在规定的限期内,本程序能够完成;2.4法律方面的可行性本程序不会在后台扫描用户的磁盘文件;本程序为完全免费,没有任何盈利行为,而且仅在内部流通,不予推广,所以不涉及浸犯微软版权的行为,所以本软件完全合法。软件服务条款要与中华

4、人民共和国的法律解释相一致,一致同意服从高等法院所有管辖。如发生软件服务条款与中华人民共和国法律相抵触时,则这些条款将完全按法律规定重新解释,而其它条款则依旧保持对用户产生法律效力和影响。2.3 经济可行行本系统开发成本低,不需要特殊要求。2.4 可行性结论综上所述,本应用程序在技术上可行,经济上可行,操作上可行,因此本应用程序可立即着手开发。3、需求分析报告对软件需求完全理解对于软件开发工作的成功是至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交

5、流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。3.1 编写目的为开发人员,维护人员,客户之间提供共同的协议而创立基础,对本画图板软件功能的实现做一全面的描述;本说明书预期读者为客户、业务或需求分析人员、测试人员、文档编写者、项目管理人员;3.2 任务概述 本软件进攻学习、研究之用,目标是让使用该软件的用户感觉能够轻松的掌握本软件的各个功能模块。为了方便用户使用,本软件在设计时尽量追求可操作性和简洁大方的人机交互界面的设计,力求尽量减少用户直接输入性的东西,大量使用可选框。3.3 功能概述通过各方面的了解,本软件初步设计的功能

6、为:1 新建一个空白图形文件:用于绘制新的图形。2 打开或保存一个图形文件,便于对图形文件的管理。3 绘制一些基本的图形组件:直线,矩形,实心矩形,椭圆,实心椭圆,圆,实心圆,圆角矩形,实心圆角矩形等。4 用鼠标在绘图板上单击拖动进行随笔花。5 橡皮擦:可以将已绘制的图形擦掉。6 添加文字:可以在绘图区域内添加文字。7 选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,Times New Roman,Serif,Monospaced,SonsSerif,Garamond。当然,在下面的程序分析中可以看到,由于设置了字

7、体选择数组,使得可以随意添加系统支持的任何字体。大大方便和简化了程序设计。8 选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体,斜体,用同时选中两者,只选择其中一种或两者都不选中3种选择方式。9 设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩,生动活泼。10. 设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不同的。当作用于绘制图形组建时,它的作用是改变画笔绘制线条的粗细;当作用于文字时,它的作用是改变文字的大小。 由此可以看出,虽然这个画图板程序不如那些专业的绘图程序,但是,“麻雀虽小五脏俱全”,它已经具备了一个绘图软件所应该有的基

8、本功能和操作。3.4 功能结构图图3-1 软件功能层次图3.5 用例图用例图4、总体设计报告4.1 编写目的总体设计的目的就是回答“概括的说,系统该如何实现?”这个问题,也就是说这个说明书的编写目的就是告诉程序员和软件设计人员本软件的系统结构和软件结构。4.2 本软件的系统层次结构图图3-1 是该软件的系统层次结构图。4.3 基本图形按钮基本图形按钮包括:Pencil(随笔画)、Line(直线)、Rect(矩形)、fRect(实心矩形)、Oval(椭圆)、fOval(实心椭圆)、Circle(圆)、fCircle(实心圆)、RoundRect(圆角矩形)、frrect(实心圆角矩形)、Rubb

9、er(橡皮擦)、Word(字)。基本图形都继承自同一个父类:drawings。Drawings具有的变量(属性):int x1, y1, x2, y2; /用来存放相应图形元素的左边int R, G, B; /用来存放图形色彩信息float stroke; /用来存放画笔粗细int type; /用来保存图形类型string s1; /用来保存输入文字字符串string s2; /用来保存字体类型字符串同时,drawings还有方法:Void draw(Graphics2D g2d) ;draw()方法中用到了java绘图里面的Graphics2D类,所有继承drawings类的图形子类都重写

10、此方法。这就是Java中类继承的概念。4.4 基本操作按钮1. New:新建一个图形文件。2. Open:打开一个图形文件。3. Save:保存当前图形文件。4.5 菜单条及其组成1. File菜单项,包括:New(新建一个图形文件)、Load(打开一个图形文件)、Save(保存一个图形文件)、Exit(退出程序)。2. Color菜单项:用来设置当前颜色。3. Stroke菜单项:用来设置当前画笔粗细。4. Help菜单项:有关的程序帮助提示。4.6 其他功能组成1. 选择颜色和设置当前画笔粗细的按钮分别为:Color、Stroke。2. 选择当前字体风格的选择框为:BOLD、ITALIC,

11、用以设置当前字体的风格。3. 选择当前字体的下来是复选框为:Styles。4.7 完成的程序界面效果为:图4-1 完成的程序界面效果图5、详细设计报告5.1 编写目的详细设计阶段的根本目的是确定应该怎么具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种设计语言书写的程序。本说明书是为了给程序员提供出一个程序的“蓝图”,指导他们更好地完成编码任务。本说明书的读者是:软件设计师、所有参与这个项目的编码人员和测试人员。5.2 新建一个图形文件单击工具栏上的图标,或选择File New菜单,则清除当前所绘制的图像,回到初

12、始画面,如图4-1所示。5.3 打开已有的文件单击工具栏上的图标,或选择FileLoad菜单,则清除当前所绘制的图像,并弹出打开文件对话框要求选择打开的文件,如图5-1所示。图5-1 选择打开文件对话框5.4 保存单击工具栏上的图标,或者选择FileSave菜单,则弹出要求保存文件对话框,如图5-2所示。 图5-2 保存文件对话框5.5 绘制基本图形基本图形包括:1. Pencil:随笔画,图标为。2. Line:直线,图标为。3. Rect:矩形,图标为。4. fRect:实心矩形,图标为。5. Oval:椭圆,图标为。6. fOval:实心椭圆,图标为。7. Circle:圆,图标为。8.

13、 Fcircle:实心圆,图标为。9. RoundRect:圆角矩形,图标为。10. frRect:实心圆角矩形,图标为。11. Rubber:橡皮擦,图标为。画图时,单击工具栏上相应图形的图标,然后用鼠标拖动,在绘图区域内进行绘画即可。5.6 设置画笔大小单击工具栏上的图标,或者单击StrokeSet Stroke菜单,则弹出相应的设置当前画笔粗细对话框,如图5-3所示。 图5-3 设置当前画笔粗细对话框5.7 选择颜色 单击工具栏上的图标,或单击ColorChoose Color菜单,则弹出相应的选择当前画图颜色对话框,如图5-4所示。图5-4 选择颜色对话框5.8 选择字体风格在工具栏区

14、域,可以选择相应的字体风格,有粗体和斜体两种风格可供选择。5.9选择字体 在工具栏区域,可以选择字体,本程序中有如下几种字体可供选择:宋体,隶书,华文彩云,仿宋-GB2312,华文行楷,Times New Roman,Serif,Monospaced,SonsSerif,Garamond。5.10 程序结构说明本程序主体文件为一个文件:MiniDrawPad.Java。其中包括的程序段有:1. MiniDrawPad():构造函数,用以初始化。2. chooseColor():选择当前绘图颜色程序段。3. setStroke():设置当前画笔粗细程序段。4. loadFile():调用图形文件

15、程序段。5. newFile():新建一个图形文件程序段。6. saveFile():保存当前所绘制图形程序段。7. createNewItem():新建一个基本图形单元程序段。相应的内部类有:1. ButtonHandler:用来处理基本图形单元的按钮事件。2. ButtonHandler1:用来处理New、Open、Save三个操作按钮的按钮事件。3. DrawPanel:用老创建绘图区域的子类。4. MouseA:继承了MouseAdapter,用来完成鼠标相应事件的操作,如单击、松开、进入和离开等。5. MouseB:继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移

16、动时的相应操作。6、系统实现报告6.1 开发环境CPU:Intel Core(TM)2 E5300 内存:2G运行平台:Windows XP 主频:2.60GHz 开发平台:Eclipse 主板:ASUSTeK Computer INC. P5QL-ASUS-SE6.2 关键技术本软件的关键技术有主窗体的设计、菜单栏和工具栏的设计、事件响应的处理、画图的基本功能的实现。6.3 运行结果1. 主界面框架主界面类继承自JFrame类,包括构造函数及各种功能的定义,主要代码如下 :import java.awt.*;import java.awt.geom.*;import java.awt.eve

17、nt.*;import javax.swing.*;import java.io.*;import java.util.*;public class MiniDrawPad extends JFrame /主类,扩展了JFrame类,用来生成主界面 private ObjectInputStream input; private ObjectOutputStream output; /定义输入输出流,用来调用和保存图像文件 private JButton choices; /按钮数组,存放以下名称的功能按钮 private String names= New, Open, Save, /这三个

18、是基本操作按钮,包括新建、打开、保存 Pencil,/铅笔画,也就是用鼠标拖动着随意绘图 Line,/绘制直线 Rect,/绘制空心矩形 fRect,/绘制以指定颜色填充的实心矩形 Oval,/绘制空心椭圆 fOval,/绘制以指定颜色填充的实心椭圆 Circle,/绘制圆形 fCircle,/绘制以指定颜色填充的实心圆形 RoundRect,/绘制空心圆角矩形 frRect,/绘制以指定颜色填充的实心圆角矩形 Rubber,/橡皮擦,可用来擦去已经绘制好的图案 Color,/选择颜色按钮,可用来选择需要的颜色 Stroke,/选择线条粗细的按钮,输入需要的数值可以实现绘图线条粗细的变化 Wo

19、rd/输入文字按钮,可以在绘图板上实现文字输入 ; private String styleNames= 宋体 , 隶书 , 华文彩云 , 仿宋_GB2312 , 华文行楷 , 方正舒体 , Times New Roman , Serif , Monospaced , SonsSerif , Garamond ; /可供选择的字体项 private Icon items; private String tipText= /这里是鼠标移动到相应按钮上面上停留时给出的提示说明条 Draw a new picture, Open a saved picture, Save current drawi

20、ng, Draw at will, Draw a straight line, Draw a rectangle, Fill a ractangle, Draw an oval, Fill an oval, Draw a circle, Fill a circle, Draw a round rectangle, Fill a round rectangle, Erase at will, Choose current drawing color, Set current drawing stroke, Write down what u want ; JToolBar buttonPanel

21、 ; /定义按钮面板 private JLabel statusBar; /显示鼠标状态的提示条 private DrawPanel drawingArea; /画图区域 private int width=800,height=550; /定义画图区域初始大小 drawings itemList=new drawings5000; /用来存放基本图形的数组 private int currentChoice=3; /设置默认画图状态为随笔画 int index=0; /当前已经绘制的图形数目 private Color color=Color.black; /当前画笔颜色 int R,G,B

22、; /用来存放当前色彩值 int f1,f2; /用来存放当前字体风格 String style1; /用来存放当前字体 private float stroke=1.0f; /设置画笔粗细,默认值为1.0f JCheckBox bold,italic; /定义字体风格选择框 /bold为粗体,italic为斜体,二者可以同时使用 JComboBox styles; public MiniDrawPad() /构造函数 super(Drawing Pad); JMenuBar bar=new JMenuBar();/定义菜单条 JMenu fileMenu=new JMenu(File); f

23、ileMenu.setMnemonic(F);2. 新建、保存、打开、退出菜单项代码如下:/新建文件菜单条 JMenuItem newItem=new JMenuItem(New); newItem.setMnemonic(N); newItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) newFile();/如果被触发,则调用新建文件函数段 ); fileMenu.add(newItem);/保存文件菜单项 JMenuItem saveItem=new JMenuIte

24、m(Save); saveItem.setMnemonic(S); saveItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile();/如果被触发,则调用保存文件函数段 ); fileMenu.add(saveItem);/打开文件菜单项 JMenuItem loadItem=new JMenuItem(Load); loadItem.setMnemonic(L); loadItem.addActionListener( new ActionListene

25、r() public void actionPerformed(ActionEvent e) loadFile();/如果被触发,则调用打开文件函数段 ); fileMenu.add(loadItem); fileMenu.addSeparator();/退出菜单项 JMenuItem exitItem=new JMenuItem(Exit); exitItem.setMnemonic(X); exitItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) System.ex

26、it(0);/如果被触发,则退出画图板程序 ); fileMenu.add(exitItem); bar.add(fileMenu);3. 线条宽度、颜色、提示功能代码如下:/设置颜色菜单条 JMenu colorMenu=new JMenu(Color); colorMenu.setMnemonic(C);/选择颜色菜单项 JMenuItem colorItem=new JMenuItem(Choose Color); colorItem.setMnemonic(O); colorItem.addActionListener( new ActionListener() public void

27、 actionPerformed(ActionEvent e) chooseColor();/如果被触发,则调用选择颜色函数段 ); colorMenu.add(colorItem); bar.add(colorMenu);/设置线条粗细菜单条 JMenu strokeMenu=new JMenu(Stroke); strokeMenu.setMnemonic(S);/设置线条粗细菜单项 JMenuItem strokeItem=new JMenuItem(Set Stroke); strokeItem.setMnemonic(K); strokeItem.addActionListener(

28、 new ActionListener() public void actionPerformed(ActionEvent e) setStroke(); ); strokeMenu.add(strokeItem); bar.add(strokeMenu);/设置提示菜单条 JMenu helpMenu=new JMenu(Help); helpMenu.setMnemonic(H);/设置提示菜单项 JMenuItem aboutItem=new JMenuItem(About this Drawing Pad!); aboutItem.setMnemonic(A); aboutItem.a

29、ddActionListener( new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, This is a mini drawing pad!nBy Jian Yongkang 0808010208 , 画图板程序说明 ,JOptionPane.INFORMATION_MESSAGE ); ); helpMenu.add(aboutItem); bar.add(helpMenu); items=new ImageIconnames.length;4

30、. 工具栏图形按钮功能实现 创建基本图形按钮、导入图标、加入动作侦听器、字体风格选择、字体选择、画图板等功能的实现。代码如下:/创建各种基本图形的按钮 drawingArea=new DrawPanel(); choices=new JButtonnames.length; buttonPanel = new JToolBar( JToolBar.VERTICAL ) ; buttonPanel = new JToolBar( JToolBar.HORIZONTAL) ; ButtonHandler handler=new ButtonHandler(); ButtonHandler1 han

31、dler1=new ButtonHandler1();/导入图形图标,这些图标都存放在与源文件相同的目录下面 for(int i=0;ichoices.length;i+) itemsi=new ImageIcon(namesi + .jpg); choicesi=new JButton(,itemsi); choicesi.setToolTipText(tipTexti); buttonPanel.add(choicesi); /将动作侦听器加入按钮里面 for(int i=3;ichoices.length-3;i+) choicesi.addActionListener(handler)

32、; choices0.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) newFile(); ); choices1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) loadFile(); ); choices2.addActionListener( new ActionListener() public void actionPerformed(ActionEv

33、ent e) saveFile(); ); choiceschoices.length-3.addActionListener(handler1); choiceschoices.length-2.addActionListener(handler1); choiceschoices.length-1.addActionListener(handler1);/字体风格选择 styles=new JComboBox(styleNames); styles.setMaximumRowCount(8); styles.addItemListener( new ItemListener() publi

34、c void itemStateChanged(ItemEvent e) style1=styleNamesstyles.getSelectedIndex(); );/字体选择 bold=new JCheckBox(BOLD); italic=new JCheckBox(ITALIC); checkBoxHandler cHandler=new checkBoxHandler(); bold.addItemListener(cHandler); italic.addItemListener(cHandler); JPanel wordPanel=new JPanel(); buttonPane

35、l.add(bold); buttonPanel.add(italic); buttonPanel.add(styles); styles.setMinimumSize( new Dimension ( 50, 20 ) ); styles.setMaximumSize(new Dimension ( 100, 20 ) ); Container c=getContentPane(); super.setJMenuBar( bar ); c.add(buttonPanel,BorderLayout.NORTH); c.add(drawingArea,BorderLayout.CENTER);

36、statusBar=new JLabel(); c.add(statusBar,BorderLayout.SOUTH); statusBar.setText( Welcome To The Little Drawing Pad! :); createNewItem(); setSize(width,height); show(); /按钮侦听器ButtonHanler类,内部类,用来侦听基本按钮的操作public class ButtonHandler implements ActionListener public void actionPerformed(ActionEvent e) for(int j=3;jchoices.length-3;j+) if(e.getSource()=choicesj) currentChoice=j; createNewItem(); repaint(); /按钮侦听器ButtonHanler1类,用来侦听颜色选择、画笔粗细设置、文字输入按钮的操作public class ButtonHandler1 implements ActionLi

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号