1、I课程设计报告题目 面向对象程序设计课程设计 课 程 名 称 基于 java 的图片查看器设计 院 部 名 称 专 业 班 级 学 生 姓 名 学 号 课程设计地点 课程设计学时 指 导 教 师 课程设计题目:基于 java 的科学计算器设计 成绩II一、摘要(所进行设计工作的主旨、缘起、目的,设计工作的主要内容、过程,采用的方法及取得的成果。关键字(Key Words):一般 35 个,最能代表报告内容特征,或在报告起关键作用,最能说明问题的词组)主旨:进一步掌握 java 的面向对象的程序设计缘起:在学习了 java 的面向对象的程序设计后,学校开了 java 的课程设计课,正好进一步掌握
2、 java 的图形用户界面设计。目的:设计一个基于 java 的科学计算器关键字:java 面向对象 科学计算器 图形用户界面III二、目录目 录1、课程设计概述 .42、系统功能描述 .43、系统需求分析与设计 .43.1 系统需求分析 .43.2 系统设计 .43.2.1 系统总体设计 .43.2.2 程序详细设计 .54、系统测试和使用说明 .84.1 系统测试 .84.2 系统使用说明 .105、课程设计总结 .105.1 遇到的问题和解决方法 .105.2 心得体会 .10参考文献 .10附录 .11IV1三、前言(说明本次课程设计课题意义,本课题相关技术特点、拟采用的方案或路线)该
3、程序是一个图形界面的简单的 java 计算器,使用人员能快捷简单地进行 操作.即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了 时间,对人们的生活有一定的帮助.可以进行简单的四则运算(加,减,乘,除, 以及求倒数,求相反数) ,有退格功能, 归零 表示初始化 ,界面颜色为灰白,该 程序支持键盘操作。随着科学技术的不断发展, 计算机已经成为我们工作学习和生活中不可缺少 的工具.文本编辑器是个人计算机最司空见惯的应用程序了,在学习了 Java 语 言之后 ,我决定使用 Java 语言编写一个简单的计算器,可以实现简单的运算功 能,满足日常基本的工作学习和娱乐需要.Java 是由 S
4、un 公司开发的新一代纯面向对象的网络编程语言.其目标是建 立一种在任意种机器, 任一种操作系统的网络环境中运行的软件, 实行所谓的 “程 序写一次,到处运行“的目标.正因为如此,Java 已成为当今 Internet 上最流 行,最受欢迎的一种程序开发语言.Java 开发小组把 Java 按特性分为基本版,移动版,企业版,每个版本有一 个软件开发包. Java 基本版本叫 Java 2 标准版 (Java 2 Standard Edition,J2SE) , 它包含建立 Java 应用程序或者是 Applet 所需的应用程序编程接口(API) .Java 2 移动版(The Java 2 M
5、obile Edition,J2ME)包含创建无线 Java 应用程序的 API.还有 Java 2 企业版(The Java 2 Enterprise,J2EE)是 J2SE 的增强版本, 包含建立多层架构应用程序 API。2四、正文(包含所进行设计的整体内容)图片查看器1、课程设计概述为提高学生理论与实践相结合的能力,计电学院于 2009 年 6 月开展了为期两周的面向对象课程设计,针对对象为 07 级全体计科专业学生。本次实践教学采用学生集中在学校网络机房上机,指导老师指导的形式。要求学生用所学的面向对象程序设计语言JAVA 来编写程序,实现特定功能,以加深对面向对象程序设计这个概念的理
6、解。2、系统功能描述本次设计的图片查看器实现了在用户选定的文件目录下循环浏览指定后缀的图片文件,并且可以对选择的图片进行放大,缩小,左旋,右旋,另存,彻底删除等操作。33、系统需求分析与设计3.1 系统需求分析随着数字产品渐进人们的生活,网络通信技术、图像处理技术以及多媒体技术的发展,越来越多的用户希望能够对已有的数字图片进行查看并能够实现简单的操作。本图片查看器以其简洁明了易操作的特点实现图片查看的基本功能,从而也就满足了用户的基本要求。3.2 系统设计3.2.1 系统总体设计(1)系统功能分析本系统要用到以下的 Java 编程技术实现的功能:图像显示功能:客户需要显示图片,这将由图像显示功
7、能来完成。显示图片的时候,用到了双缓冲技术来消除闪烁问题。(2)类图系统中用到了一些基本类、实现了一些接口。系统所用到的类如图 1 所示:4PicViewerActionListenerJpanelJLabelJButtonImageBufferedImageGraphics2DStringJfilechooseAppletJava.awt.*Javax.swing.*Java.io.*Java.applet.*extends implement import图 1 系统类图3.2.2 程序详细设计(1)程序中引用的类JPanel 类程序中定义了三个 Jpanel 类分别是:pathBar,
8、picContainer, ctrBar。用于图片查看器的整体布局。其中 pathBar 为顶部路径栏,picContainer 为图片显示区域,ctrBar 为底部控制栏。JLabel 类程序中定义了类名为 pathInfo 的 JLabel 类,用于实现顶部路径栏,底部控5制栏按钮的文字显示。JButton 类程序中定义了多个 JButton 类:openbtn, prebtn, nextbtn, zoominbtn, zoomoutbtn, oripicbtn, angleleftbtn, anglerightbtn,exitbtn,deletebtn,sav;为查看器的按钮。Image
9、 类程序中定义了名为 pic 的 Image 类用于对被查看的图片的操作。BufferedImage 类此类为用于显示的缓冲区图像。在对图像进行操作前,都先将图片读进预设的缓冲区,然后再显示在用户前端,这样虽然速度慢了点,但很好的消除了图片闪烁效果。Graphics2D 类此类与上面的 BufferedImage 类共同作用,通过运用双缓冲技术很好的消除屏闪问题。String 类程序中运用了三个不同的 String 类,从而实现了需要查看的图片的路径的操作,并且在启动图片查看器时,图片的路径能够在路径栏显示出来。同时还设置了 String 数组用于存储用户选定的目录下所有指定格式的图片,这样可
10、以实现循环浏览图片等操作。(2)程序的构造方法及其实现因为图片查看器可以实现对图片不同的操作,程序中构造了十多个方法以达到其目的。各构造方法相互联系共同完成图片查看器的各项功能。各个方法描述如下:public void init()本方法实现了对图片查看器的界面的整体布局及按钮的初始化。对页面的总体布局采用了以下主要代码进行实现:setLayout(new BorderLayout();add(pathBar, BorderLayout.NORTH); add(picContainer, BorderLayout.CENTER); add(ctrBar, BorderLayout.SOUTH)
11、; resize(640, 400);设置顶部路径栏,及其文字显示;代码如 pathBar = new JPanel();pathBar.setLayout(new BorderLayout();6pathInfo.setText(“图片查看器“); pathBar.add(pathInfo);同时对图片显示区域,底部的控制栏的设置也运用了相似的代码进行实现,在此就不再重复。各按钮除了“打开”一按钮外,其他的各按钮均设置为 false。这是因为只有“打开”图片后才能进行以下的像循环浏览,旋转,删除等操作。具体方法的实现见附件。public void actionPerformed(Action
12、Event)在本方法中主要实现了用户对底部控制栏各按钮的点击后,图片查看器进行的相对应的操作反应。方法中一开始用 JButton click = (JButton) e.getSource();获取按键源,然后根据 click 与程序设定的已知的类进行比较决定进行相应的反应。if(click = openbtn); if(click = prebtn 或是 pre()方法的调用; 其他各操作也大同小异,在此就不再赘述。方法的详细代码见附件。public void open()该方法实现了对用户选定的文件路径下的后缀为.jpg 的图片文件的打开操作。同时能够对该路径下的一切符合条件的文件进行跟踪
13、处理。方法中的核心在于一个过滤操作:FileNameExtensionFilter filter = new FileNameExtensionFilter(“*.JPG“, “jpg“);这样就能实现.jpg 文件的浏览了。在选定了图片后,相应的按钮值应该被赋值为 ture,以便进行其他的操作。若没有选定图片则显示“没有选择图片” 。public void save() throws IOException该方法是为了满足用户希望对图片进行另外存储的操作,通过用户自己的选择重新选定图片的存储路径。详细实现见附件中代码。 public void pre()及 public void next()Pre 与 next 方法实现了对当前图片的上一张下一张的浏览。因为在第一次打开文件时就将该路径下所有符合要求的图片存储在 String pics 中。通过 if(i = 0) i = pics.length-1; else i -;其中 i 为当前的图片位置数。通过 dir = path + “ + picsi;获得文件的路径,然后调用 loadImage(dir);此方法将在后面介绍;与上面的方法相对应的是此方法实现了对当前图片下一张的浏览,实现原理与上相同,if(i = pics.length-1) i = 0; else i+;通过调用 loadImage(dir);一方法