[计算机软件及应用]java课程设计.doc

上传人:sccc 文档编号:4561565 上传时间:2023-04-27 格式:DOC 页数:35 大小:273.50KB
返回 下载 相关 举报
[计算机软件及应用]java课程设计.doc_第1页
第1页 / 共35页
[计算机软件及应用]java课程设计.doc_第2页
第2页 / 共35页
[计算机软件及应用]java课程设计.doc_第3页
第3页 / 共35页
[计算机软件及应用]java课程设计.doc_第4页
第4页 / 共35页
[计算机软件及应用]java课程设计.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《[计算机软件及应用]java课程设计.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]java课程设计.doc(35页珍藏版)》请在三一办公上搜索。

1、吉林工程技术师范学院面向对象程序设计java课程设计报告书设计题目:图片尺寸批量修改工具专 业: 信息管理与信息系统 班 级: X0941 学生姓名: 许艺伟 学 号: 10 指导教师: 孙超 孟宇桥 2010年12月 信息工程学院摘要该程序是一个图形界面的简单的图片尺寸批量修改工具,具有良好的界面,使用人员能快捷简单地进行操作。即时准确地获得所需尺寸的图片,充分降低了处理图片的难度和节约了时间,对人们的生活有一定的帮助。此程序,可打开文件夹,自动排除文件夹和非图片格式文件,同时列出所有图片文件,能够一次将所有图片修改成同样的尺寸大小。关键词:java;图片;批量修改目录第一章 绪论1第二章

2、问题分析22.1开发目的22.2开发设计思想22.3开发和运行环境22.4功能分析22.5程序处理流程3第三章 系统详细设计53.1需用到的包53.2需用到的类53.3类的方法介绍5第四章 代码实现7第五章 测试与调试16第六章 总结与心得20第七章 附录21附录1:程序源代码21附录2:参考文献32第一章 绪论随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。加上网络技术的成熟,网店盛行,图片修改就是使用最频繁的服务之一了,也有大量的工具可供我们使用,如PS,QQ影像等。但是这些主流的图片编辑工具并不能实现我们所需要所有的功能,或者操作起来非常繁琐。在学习了Java语

3、言之后,我决定使用Java语言编写一个简单的图片批量处理工具,可以实现图片任意尺寸的批量处理,满足日常实际的应用及工作学习的需要。要实现批量修改就得要批量导入图片和导出图片,要是通过手工方式单条进行录入几乎是不可能的,不仅烦琐,而且极易出现错误。所以就要用到基于数据文件的批量数据导入导出方法。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的 “程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。Java语言是由C+语言发展起而来的,是一种彻底的

4、面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C+语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。第二章 问题分析2.1开发目的通过开发一个简单的批量处理图片尺寸程序来巩固所学的Java知识。要求程序能自动筛选出文件夹中的图片格式文件,并批量的对图片尺寸进行修改,同时要新生成修改后的图片,为了方便经常要进行图片大小修改的使用者,如网店用户。2.2开发设计思想本应用程序的设计思想:程序应该充分利用课堂所学的知识和自学的知识满足其功能设计的需求;程序采用可视化、模块化程序设计方法,既便于程序功

5、能的各种组合和修改,又便于未参与开发的技术维护人员进行补充、维护;程序应具备维护功能,及时根据用户需求进行数据的修改。程序应该尽量简单。2.3开发和运行环境开发工具:JCreator LE运行环境:JDK1.6.0_22 、Windows 72.4功能分析1、这个图片尺寸修改程序,最基本的功能是对所需图片的大小尺寸进行任意修改,达到期望效果。2、能读取文件夹下的文件,并自动筛选出图片格式文件而排除非图片格式文件,省去挑选的麻烦。3、对读取到的图片文件进行批量修改,这样省去很多时间。2.5程序处理流程开始PicChanger输入源文件夹地址夹检查输入目标文件夹地址夹检查输入转换后X与Y进行修改关

6、闭PicChanger输入转换后的图片文件第三章 系统详细设计3.1需用到的包import java.io.*;import javax.imageio.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.image.*; 3.2需用到的类public class PicChanger此程序就是这个主类,它是程序得以运行的入口。在这个主类中定义了主方法,是该程序执行的入口。还定义了多种其他方法,是用来实现各个功能。3.3类的方法介绍1.定义的变量在这个类中,首先定义了面板的大小,所需按

7、钮名称和位置,输入框的大小和位置等一些变量,并且还用到了系统中自带的一些类初使化了一些面板工具对象,用于完成对面板工具、检查、更改、说明、帮助、关于、重置、清空等一些工具按钮的定义。2actionPerformed(ActionEvent e)方法这个方法是用来处理ActionEvent事件以实现ActionListener接口的对象。ActionListener是事件监听者,actionPerformed(ActionEvent e)是成员方法,代表鼠标点击事件。3windowClosing(WindowEvent e)方法这个方法用来实现的功能很简单,就是关闭窗口动作。4.Buffered

8、Image convert(int w,int h,BufferedImage input)方法这个方法是设置图片大小,将所需图片转换成期待的尺寸。5checkNum(String s)方法这个方法是检查路径6main(String args)方法这个是主方法,程序的执行入口。 第四章 代码实现1、显示主窗口PicChanger()frame=new JFrame(图片尺寸批量修改工具);frame.setSize(500,450);frame.setLocation(500,200);frame.setResizable(false);panel1=new JPanel();panel2=n

9、ew JPanel();panel3=new JPanel();panel4=new JPanel();panel5=new JPanel();panel6=new JPanel(); tf1=new JTextField(30);tf2=new JTextField(30);tf3=new JTextField(6);tf4=new JTextField(6);tf1.setFont(font1);tf2.setFont(font1);tf3.setFont(font1);tf4.setFont(font1);label1=new JLabel( 源文件夹 );label2=new JLab

10、el(目标文件夹);label3=new JLabel(转换后X:(宽));label6=new JLabel((整数));label4=new JLabel(b转换后Y:(高));label7=new JLabel((整数)); label1.setFont(font2);label2.setFont(font2);label3.setFont(font2);label4.setFont(font2);label6.setFont(font3);label7.setFont(font3);ta=new JTextArea();ta.setFont(font2);ta.setEditable(

11、false);ta.setLineWrap(true);JScrollPane scroller=new JScrollPane(ta);scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);frame.add(scroller,BorderLayout.CENTER);ta.setText(文件名以及提示将显示在下面,内容过多可清空,请注意!n); button=new JButton(更改);button1=new JButton(检查);button2=new JButton(检查);butt

12、on3=new JButton(说明);button4=new JButton(帮助);button5=new JButton(关于); button6=new JButton(重置); button7=new JButton(清空); button.setFont(font2);button1.setFont(font2);button2.setFont(font2);button3.setFont(font2);button4.setFont(font2);button5.setFont(font2);button6.setFont(font2);button7.setFont(font2

13、);panel1.setLayout(new GridLayout(4,1);panel1.add(panel3);panel1.add(panel4);panel1.add(panel5);panel1.add(panel6);panel3.add(label1);panel3.add(tf1);panel3.add(button1);panel4.add(label2);panel4.add(tf2);panel4.add(button2);panel5.add(label3);panel5.add(tf3);panel5.add(label4);panel5.add(tf4);panel

14、5.add(button);panel6.add(button3); panel6.add(button4); panel6.add(button5); panel6.add(button6); panel6.add(button7); frame.add(panel1,BorderLayout.NORTH);frame.setVisible(true);button.addActionListener(this);button1.addActionListener(this);button2.addActionListener(this); button3.addActionListener

15、(this); button4.addActionListener(this); button5.addActionListener(this); button6.addActionListener(this); button7.addActionListener(this);frame.addWindowListener(this);2、列出文件窗口public void actionPerformed(ActionEvent e)if(e.getSource()=button3)JOptionPane.showMessageDialog( null,请注意各项的填写格式:nb1.各名称均区

16、分大小写;nb2.源文件夹填写需转换图片集所在的文件夹,例如D:pictureb;nb3.目标文件夹填写转换后保存的文件夹,例如C:picture;nb4.转换后X与Y:填写希望转换后图片的宽度和高度(整数);nb5.源文件夹中程序会自动选择出图片文件nb6.更改之前请先检查,当目标文件夹中出现重名情况时,nbbb程序会给出是否覆盖的提示;n ,说明 , JOptionPane.INFORMATION_MESSAGE) ;else if(e.getSource()=button4)JOptionPane.showMessageDialog(null,程序问题联系:QQ:229423474 E_

17、mail:liubin8926 n,帮助,JOptionPane.INFORMATION_MESSAGE) ; else if(e.getSource()=button5) JOptionPane.showMessageDialog(null,程序名称:图片尺寸批量修改工具nn制作人员:08级 电商2班 b刘 彬 nn,关于,JOptionPane.INFORMATION_MESSAGE) ; else if(e.getSource()=button6) tf1.setText();tf2.setText();tf3.setText();tf4.setText(); else if(e.get

18、Source()=button7) ta.setText(); ta.setText(文件名以及提示将显示在下面,内容过多可清空,请注意!n); if(e.getSource()=button) flag_num=false; if(checkNum(tf3.getText()=true&checkNum(tf4.getText()width=(int) Double.parseDouble(tf3.getText();height=(int) Double.parseDouble(tf4.getText();flag_num=true; else flag_num=false;ta.appe

19、nd(nXY填写格式不正确,请重新填写n);if(flag_in=true&flag_out=true&flag_num=true)ta.append(目标文件列表n);int cnt=0;for(int i=0;ifilelist.length;i+)if(filelisti!=wzw)File outtemp;try RenderedImage im=convert(width,height,ImageIO.read(filelisti);String outputFilename=filelisti.getName();String format=outputFilename.subst

20、ring(outputFilename.lastIndexOf(.)+1);outtemp=new File(fileout+outputFilename);if(outtemp.exists()=true)int restartChoose=JOptionPane.showConfirmDialog(frame,有相同名称的文件,是否覆盖?,提示,JOptionPane.OK_CANCEL_OPTION); if(restartChoose=JOptionPane.OK_OPTION)ImageIO.write(im,format,outtemp); ta.append(outtemp.ge

21、tAbsolutePath(); ta.append(t+完成+n); cnt+;else return; else ImageIO.write(im,format,outtemp);ta.append(outtemp.getAbsolutePath();ta.append(t+完成+n);cnt+; catch (IOException e2) e2.printStackTrace(); catch (Exception e1) e1.printStackTrace(); ta.append(目标文件共+cnt+个n); else if(e.getSource()=button1)flag_

22、in=false;filein=new File(tf1.getText();if(filein.exists()=true&filein.isDirectory()=true)ta.append(n源文件夹填写格式正确n);flag_in=true;filelist=filein.listFiles();for(int i=0;ifilelist.length;i+)if(filelisti.isFile()=false)filelisti=wzw; String ispic;for(int i=0;ifilelist.length;i+)if(filelisti!=wzw) String

23、temp;temp=filelisti.getName();ispic=temp.substring(temp.lastIndexOf(.)+1);if(ispic.equals(jpg)=false)&(ispic.equals(bmp)=false)& (ispic.equals(gif)=false)&(ispic.equals(png)=false)&(ispic.equals(JPG)=false)&(ispic.equals(BMP)=false)&(ispic.equals(GIF)=false)&(ispic.equals(PNG)=false)filelisti=wzw; t

24、a.append(源文件列表:n);int num=0;for(int i=0;ifilelist.length;i+)if(filelisti!=wzw)ta.append(filelisti+n);num+;ta.append(源文件共+num+个n);ta.append(n);elseta.append(n源文件夹不存在或者输入格式错误!n);flag_in=false;else if(e.getSource()=button2) flag_out=false; fileout=new File(tf2.getText();if(fileout.exists()=true&fileout

25、.isDirectory()=true)ta.append(目标文件夹填写格式正确n);flag_out=true; else ta.append(n目标文件夹不存在或者输入格式错误!n);flag_out=false; public void windowClosing(WindowEvent e) System.exit(0); public static void main(String args) throws Exception try UIManager.setLookAndFeel(com.sun.java.swing.plaf.windows.WindowsLookAndFee

26、l); catch(Exception e) new PicChanger();还有其他功能方法,此处就不一一列举。第五章 测试与调试图1 1、运行程序,出现工具界面2、输入源文件夹和目标文件夹地址,检查将自动筛选出图片文件而排除文件夹和非图片格式文件,列出文件列表。图23、设置转换后的宽和高,更改:图3如果转换后的文件和目标文件夹的文件同名: 如图3如果没有文件同名,则会列出转换成功的文件列表:如图4图4图54、说明,帮助,关于图6图75、重置:所有输入框恢复为空;清空:显示框恢复空在测试中遇到的问题如下: 过程中,有时候输入的数据过大,就会出现意想不到的结果,与真实的结果又很大的区别,我想

27、是跟定义的数据类型和表达式逻辑结果有关,但没有找到错误。第六章 总结与心得经过差不多两个星期的努力,基本上完成我的Java课程设计-图片尺寸批量修改工具程序, 也基本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使我从课本上学习到的理论用到了实践上,从而进一步巩固和丰富了我所学的知识,让我更深层次的认识到Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计, 我提前做了很多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这个过程中也无形中锻炼了我的思维分析,遇到问题及时想方法设法通过各种途径解决问题的能力。但是,设计过程中也存在一些问题

28、,本来一开始想给这个图片修改程序加上的其他对图片的修改功能,以及树状浏览文件夹功能,但是由于本人只是浅陋及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾第七章 附录附录1:程序源代码import java.io.*;import javax.imageio.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.image.*;public class PicChanger extends WindowAdapter implements ActionListener JF

29、rame frame;JPanel panel1,panel2,panel3,panel4,panel5,panel6,panel7;JTextField tf1,tf2,tf3,tf4;JTextArea ta;JLabel label1,label2,label3,label4,label5,label6,label7;JButton button,button1,button2,button3,button4,button5,button6,button7;Font font1=new Font(宋体,Font.PLAIN,20);Font font2=new Font(宋体,Font.

30、PLAIN,16);Font font3=new Font(宋体,Font.PLAIN,10);File filein;File fileout;Filefilelist;File wzw=new File(wzw);int width;int height;boolean flag_in;boolean flag_out;boolean flag_num;PicChanger()frame=new JFrame(图片尺寸批量修改工具);frame.setSize(500,450);frame.setLocation(500,200);frame.setResizable(false);pan

31、el1=new JPanel();panel2=new JPanel();panel3=new JPanel();panel4=new JPanel();panel5=new JPanel();panel6=new JPanel(); tf1=new JTextField(30);tf2=new JTextField(30);tf3=new JTextField(6);tf4=new JTextField(6);tf1.setFont(font1);tf2.setFont(font1);tf3.setFont(font1);tf4.setFont(font1);label1=new JLabe

32、l( 源文件夹 );label2=new JLabel(目标文件夹);label3=new JLabel(转换后X:(宽));label6=new JLabel((整数));label4=new JLabel(b转换后Y:(高));label7=new JLabel((整数)); label1.setFont(font2);label2.setFont(font2);label3.setFont(font2);label4.setFont(font2);label6.setFont(font3);label7.setFont(font3);ta=new JTextArea();ta.setFo

33、nt(font2);ta.setEditable(false);ta.setLineWrap(true);JScrollPane scroller=new JScrollPane(ta);scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);frame.add(scroller,BorderLayout.CENTER);ta.setText(文件名以及提示将显示在下面,内容过多可清空,请注意!n); button=new JButton(更改);button1=new JButton(检查);but

34、ton2=new JButton(检查);button3=new JButton(说明);button4=new JButton(帮助);button5=new JButton(关于); button6=new JButton(重置); button7=new JButton(清空); button.setFont(font2);button1.setFont(font2);button2.setFont(font2);button3.setFont(font2);button4.setFont(font2);button5.setFont(font2);button6.setFont(fon

35、t2);button7.setFont(font2);panel1.setLayout(new GridLayout(4,1);panel1.add(panel3);panel1.add(panel4);panel1.add(panel5);panel1.add(panel6);panel3.add(label1);panel3.add(tf1);panel3.add(button1);panel4.add(label2);panel4.add(tf2);panel4.add(button2);panel5.add(label3);panel5.add(tf3);panel5.add(labe

36、l4);panel5.add(tf4);panel5.add(button);panel6.add(button3); panel6.add(button4); panel6.add(button5); panel6.add(button6); panel6.add(button7); frame.add(panel1,BorderLayout.NORTH);frame.setVisible(true);button.addActionListener(this);button1.addActionListener(this);button2.addActionListener(this);

37、button3.addActionListener(this); button4.addActionListener(this); button5.addActionListener(this); button6.addActionListener(this); button7.addActionListener(this);frame.addWindowListener(this);public void actionPerformed(ActionEvent e)if(e.getSource()=button3)JOptionPane.showMessageDialog( null,请注意

38、各项的填写格式:nb1.各名称均区分大小写;nb2.源文件夹填写需转换图片集所在的文件夹,例如D:pictureb;nb3.目标文件夹填写转换后保存的文件夹,例如C:picture;nb4.转换后X与Y:填写希望转换后图片的宽度和高度(整数);nb5.源文件夹中程序会自动选择出图片文件nb6.更改之前请先检查,当目标文件夹中出现重名情况时,nbbb程序会给出是否覆盖的提示;n ,说明 , JOptionPane.INFORMATION_MESSAGE) ;else if(e.getSource()=button4)JOptionPane.showMessageDialog(null,程序问题联

39、系:QQ:229423474 E_mail:liubin8926 n,帮助,JOptionPane.INFORMATION_MESSAGE) ; else if(e.getSource()=button5) JOptionPane.showMessageDialog(null,程序名称:图片尺寸批量修改工具nn制作人员:08级 电商2班 b刘 彬 nn,关于,JOptionPane.INFORMATION_MESSAGE) ; else if(e.getSource()=button6) tf1.setText();tf2.setText();tf3.setText();tf4.setText(); else if(e.getSource()=button7) ta.setText(); ta.setText(文件名以及提示将显示在下面,内容过多可清空,请注意!n); if(e.getSource()=button) flag_num=false; if(checkNum(tf3.getText()=true&checkNum(tf4.getText()width=(int)

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

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号