java课程设计-文件管理系统
学生管理系统JAVA课课程设计

学生管理系统JAVA课课程设计一、教学目标本课程的目标是让学生掌握学生管理系统的Java编程知识,能够运用Java语言实现一个简单的学生管理系统。
具体目标如下:1.知识目标:–理解Java语言的基本语法和数据结构。
–掌握Java中的控制结构和面向对象编程思想。
–了解Java中的文件操作和数据库连接。
2.技能目标:–能够使用Java编写简单的程序,实现学生的增删改查功能。
–能够使用Java连接数据库,实现对学生信息的持久化存储。
–能够使用Java的文件操作,读写学生数据。
3.情感态度价值观目标:–培养学生的编程兴趣,提高学生解决问题的能力。
–培养学生团队协作的精神,提高学生的沟通表达能力。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.Java语言基础:包括基本语法、数据类型、变量、运算符等。
2.控制结构:包括条件语句、循环语句等。
3.面向对象编程:包括类、对象、继承、多态等。
4.文件操作:包括文件的读写、文件管理等。
5.数据库连接:包括JDBC的概念、数据库的连接与操作等。
6.学生管理系统的设计与实现:包括系统需求分析、系统设计、功能实现等。
三、教学方法为了达到课程目标,本课程将采用以下几种教学方法:1.讲授法:用于讲解Java语言基础、控制结构、面向对象编程等理论知识。
2.案例分析法:通过分析实际案例,让学生理解并掌握文件操作和数据库连接的方法。
3.实验法:让学生动手编写代码,实现学生管理系统,提高学生的实际操作能力。
4.小组讨论法:分组让学生讨论问题,培养学生的团队协作和沟通能力。
四、教学资源为了支持课程的顺利进行,我们将准备以下教学资源:1.教材:《Java编程思想》等。
2.参考书:《Java核心技术》、《Java Web开发》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络环境、数据库服务器等。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。
课程信息管理系统java课程设计

课程信息管理系统java课程设计一、课程目标知识目标:1. 学生能够掌握Java语言基础,包括数据类型、控制结构、类与对象等;2. 学生能够理解课程信息管理系统的功能需求,掌握系统设计的基本原理;3. 学生能够运用所学知识,实现课程信息管理系统的基本功能模块。
技能目标:1. 学生能够运用Java语言编写程序,实现课程信息管理系统的功能;2. 学生能够运用面向对象编程思想,进行系统设计和模块划分;3. 学生能够运用调试工具,调试并优化自己的程序。
情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣和热情;2. 学生在团队协作中,学会沟通、分享和承担责任;3. 学生能够认识到编程在生活中的应用,提高对信息技术的认识。
课程性质:本课程为实践性较强的学科,要求学生结合所学理论知识,动手实践,培养编程能力和实际应用能力。
学生特点:学生处于高年级阶段,具有一定的Java编程基础,对面向对象编程有一定的了解,具备一定的自主学习能力。
教学要求:结合课程性质、学生特点,注重理论与实践相结合,培养学生的编程能力和实际应用能力。
通过课程学习,使学生能够独立完成课程信息管理系统的设计与实现。
同时,关注学生的情感态度价值观培养,提高学生的团队协作能力和信息技术素养。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. Java语言基础回顾:数据类型、控制结构、数组、类与对象等基本概念;2. 面向对象编程:封装、继承、多态等核心概念,以及设计模式初步了解;3. 课程信息管理系统需求分析:梳理系统功能,明确模块划分;4. 数据库基础:SQL语句编写,数据库连接与操作;5. Java图形用户界面(GUI)设计:Swing组件的使用,界面布局与美化;6. 课程信息管理系统的设计与实现:- 系统架构设计:分层设计,模块划分;- 功能模块开发:课程信息添加、修改、删除、查询等;- 系统测试与优化:测试用例设计,性能优化;7. 项目实践与团队协作:分组进行项目实践,培养学生的团队协作能力。
操作系统课程设计文件管理系统

操作系统课程设计文件管理系统1. 引言文件管理是操作系统中的一个重要模块,负责对计算机中的文件进行管理和组织。
在操作系统课程设计中,设计一个文件管理系统是一个很有挑战性的任务,需要考虑到文件的创建、打开、读取、写入、删除等功能,并且要确保文件的安全性和可靠性。
本文将详细介绍文件管理系统的设计与实现。
2. 需求分析为了满足用户对文件管理的需要,我们需要对文件管理系统的需求进行分析。
在这个文件管理系统中,用户应该能够执行以下操作:•文件的创建和命名•文件的打开和关闭•文件的读取和写入•文件的删除和修改•文件的搜索和查找除此之外,还要考虑到对文件权限的管理,可以设置不同用户对文件的不同访问权限,以保障文件的安全性。
3. 概要设计概要设计是对文件管理系统的整体架构和功能进行规划和设计。
文件管理系统可以采用层次结构的设计方式,分为用户界面、文件管理模块和存储管理模块。
3.1 用户界面用户界面是用户与文件管理系统进行交互的接口,可以通过命令行或者图形界面来实现。
在用户界面中,用户可以输入相关指令来执行对文件的操作,如创建文件、打开文件、读取文件等。
3.2 文件管理模块文件管理模块是文件管理系统的核心模块,负责对文件进行创建、打开、读取、写入、删除等操作。
在文件管理模块中,需要维护一个文件目录表来记录文件的基本信息,如文件名、文件大小、文件权限等。
还需要考虑到文件的分配和回收,可以使用位示图等方式进行实现。
3.3 存储管理模块存储管理模块负责对文件进行存储和管理,包括磁盘空间的分配和回收。
在存储管理模块中,可以采用文件分配表或者索引节点进行存储方式的选择。
4. 详细设计在详细设计阶段,需要对概要设计中的每个模块进行详细设计,并确定各个模块之间的接口和数据结构。
4.1 用户界面设计用户界面设计可以采用命令行方式进行实现。
用户可以通过命令输入来执行相应的文件管理操作。
可以设计一系列命令,如create用于创建文件,open用于打开文件,read用于读取文件等。
Java课程设计---教职工档案管理系统

关键算法实现
数据结构选择:使用数组或链表来存储教职工信息,以便快速访问。 查询算法:实现高效的查询算法,如二分查找,以便快速查找特定教职工的信息。 排序算法:使用快速排序或归并排序对教职工信息进行排序,以便按照特定顺序显示信息。 插入和删除算法:实现插入和删除教职工信息的算法,以确保数据结构的稳定性和可靠性。
操作系统:使用 Linux系统,提 供安全、稳定的 运行环境。
数据库:选择 MySQL数据库, 确保数据存储的 安全性和可靠性。
部署方式:采用 Docker容器化 部署,实现快速 部署和容器管理。
系统维护
数据库备份与恢复 系统升级与补丁安装 故障诊断与排除 定期检查与维护
系统升级与优化
升级方式:手动升 级和自动升级
数据需求分析
教职工信息:姓 名、性别、年龄、 学历、职称等
部门信息:部门 名称、部门负责 人、联系电话等
岗位信息:岗位 名称、岗位职责、 任职条件等
工资信息:基本 工资、绩效工资、 津贴等
系统设计
章节副标题
系统架构设计
架构概述:描述 系统的整体架构 和主要组件
数据库设计:介 绍数据库表结构、 关系等
系统开发的目标 和意义
系统涉及的主要 业务和功能
系统与其他系统 的关系
系统目标
实现教职工档案 的录入、存储和 检索功能
提供方便快捷的 档案查询服务
保证数据的安全 性和保密性
提高档案管理工 作的效率和规范 性
系统功能
教职工信息录入 教职工信息查询 教职工信息修改 教职工信息删除
系统需求分析
章节副标题
数据安全性:设 置用户权限和数 据加密入框,以 及登录和取消
按钮
主界面:显示 教职工的姓名、 性别、年龄、 学历、职称等
《Java》课程设计》记事本

《Java课程设计》记事本课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求1)界面设计2)功能实现(1)文件菜单:新建、打开、保存、另存为、退出等。
(2)其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为3)编辑菜单:复制、剪切和粘贴等4)帮助菜单:软件版本信5)右键弹出快捷菜单2.总体设计1)功能模块图:图一功能模块图2)功能描述1、打开记事本。
首先是标准型的记事本,拥有文件、编辑。
格式和帮助。
如图1所示:图1标准型记事本界面2、在标准型的记事本界面中,进行的新建一个本件名字叫新记事本。
如图2记事本文件帮助新建打开保存另存为退出复制剪切粘贴编辑关于记事本右键快捷格式字体颜色图2新建记事本功能3、用打开文件打开刚刚新建的新记事本。
如图三所示。
图3—打开文件4、点击退出即可退出,如图4所示:图4—退出记事本5、点击帮助可以看到有关记事本的相关信息,其中有作者名、版本、许可条款、隐私声明等必要信息。
如图5所示:图5—帮助相关信息6、右键可实现复制、粘贴、剪切、清除等常用功能,方便用户可以快捷方便的使用记事本。
如图6所示:图6—右键功能7、编辑也可实现制、粘贴、剪切、清除等常用功能,方便用户选择自己适合的方式,自由选择方便的快捷方式使用。
如图7:图7—编辑八、程序清单package test;import java.io.File;import java.io.*;import java.awt.event.*;import java.awt.Toolkit;import java.awt.*;import javax.swing.*;import javax.swing.filechooser.*;public class Notebook extends JFrame implements ActionListener,ItemListener{ //组件创建JButton b_save,b_close; //按钮JTextArea textArea; //文本框File tempFile; //文件JPanel jp; //面板JMenu file,edit,style,help; //菜单JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy, e_paste,e_cut,e_clear,e_selectAll,e_find,e_rep lace,s_font,s_color,h_editor,h_help; //菜单条JMenuBar jmb;JScrollPane jsp; //滚动面板JPopupMenu popUpMenu = new JPopupMenu(); //右键弹出式菜单JLabel stateBar;//标签JLabel jl,jj;JFileChooser jfc = new JFileChooser(); //文件选择JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je _find,je_replace; //弹出式菜单条public Notebook(){jfc.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(*.txt)","txt"));jmb = new JMenuBar();textArea = new JTextArea();jsp = new JScrollPane(textArea);file = new JMenu("文件");edit = new JMenu("编辑");style = new JMenu("格式");help = new JMenu("帮助");je_copy = new JMenuItem("复制(C) ");je_paste = new JMenuItem("粘贴(P) ");je_cut = new JMenuItem("剪切(X) ");je_clear = new JMenuItem("清除(D) ");je_selectAll = new JMenuItem("全选(A) ");je_find = new JMenuItem("查找(F) ");je_replace = new JMenuItem("替换(R) ");je_copy.addActionListener(this); //给弹窗式的各组件添加监听器je_paste.addActionListener(this);je_cut.addActionListener(this);je_clear.addActionListener(this);je_selectAll.addActionListener(this);je_find.addActionListener(this);je_replace.addActionListener(this);//给界面上方的菜单条添加监听器f_new = new JMenuItem("新建(N)");f_new.setAccelerator(KeyStroke.getKeyS troke('N',InputEvent.CTRL_MASK,false)); //设置带修饰符快捷键f_new.addActionListener(this);f_open = new JMenuItem("打开(O)");f_open.setAccelerator(KeyStroke.getKey Stroke('O',InputEvent.CTRL_MASK,false));f_open.addActionListener(this);f_save = new JMenuItem("保存(S)");f_save.setAccelerator(KeyStroke.getKey Stroke('S',InputEvent.CTRL_MASK,false));f_save.addActionListener(this);f_saveas = new JMenuItem("另存为");f_saveas.setAccelerator(KeyStroke.getKe yStroke(KeyEvent.VK_S,InputEvent.CTRL_ MASK|InputEvent.SHIFT_MASK));f_saveas.addActionListener(this);f_close = new JMenuItem("退出(W)");f_close.setAccelerator(KeyStroke.getKey Stroke('W',InputEvent.CTRL_MASK,false));f_close.addActionListener(this);e_copy = new JMenuItem("复制(C)");e_copy.setAccelerator(KeyStroke.getKey Stroke('C',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_paste = new JMenuItem("粘贴(V)");e_paste.setAccelerator(KeyStroke.getKeyStro ke('V',InputEvent.CTRL_MASK,false));e_paste.addActionListener(this);e_cut = new JMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke ('X',InputEvent.CTRL_MASK,false));e_cut.addActionListener(this);e_clear = new JMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStrok e('D',InputEvent.CTRL_MASK,false));e_clear.addActionListener(this);e_selectAll = new JMenuItem("全选(A)");e_selectAll.setAccelerator(KeyStroke.getKey Stroke('A',InputEvent.CTRL_MASK,false));e_selectAll.addActionListener(this);e_find = new JMenuItem("查找(F)");e_find.setAccelerator(KeyStroke.getKeyStrok e('F',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_replace = new JMenuItem("替换(R)");e_replace.setAccelerator(KeyStroke.getK eyStroke('R',InputEvent.CTRL_MASK,false)) ;e_replace.addActionListener(this);s_font = new JMenuItem("字体(T)");s_font.setAccelerator(KeyStroke.getKeyStrok e('T',InputEvent.CTRL_MASK,false));s_font.addActionListener(this);s_color = new JMenuItem("颜色(C)...");s_color.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_C,InputEvent.CTRL_MAS K | InputEvent.SHIFT_MASK));s_color.addActionListener(this);h_editor = new JMenuItem("关于记事本");h_editor.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_E,InputEvent.CTRL_MAS K));h_editor.addActionListener(this);h_help = new JMenuItem("帮助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStrok e(KeyEvent.VK_I,InputEvent.CTRL_MASK) );h_help.addActionListener(this);//添加右键弹出式菜单popUpMenu.add(je_copy);popUpMenu.add(je_paste);popUpMenu.add(je_cut);popUpMenu.add(je_clear);popUpMenu.addSeparator();popUpMenu.add(je_selectAll);popUpMenu.add(je_find);popUpMenu.add(je_replace);//编辑区鼠标事件,点击右键弹出"编辑"菜单textArea.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(), e.getX(), e.getY());} //e.getComponent()和textArea具有同等效果public void mouseClicked(MouseEvent e){if(e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});this.setJMenuBar(jmb);this.setTitle("记事本程序");file.add(f_new); //添加文件菜单组件file.add(f_open);file.addSeparator(); //加分隔线file.add(f_save);file.add(f_saveas);file.addSeparator();file.add(f_close);edit.add(e_copy); //添加编辑菜单组件edit.add(e_paste);edit.add(e_cut);edit.add(e_clear);edit.addSeparator();edit.add(e_selectAll);edit.add(e_find);edit.add(e_replace);style.addSeparator();style.add(s_font);style.add(s_color);jmb.add(file); //添加格式菜单组件jmb.add(edit);jmb.add(style);jmb.add(help);help.add(h_editor); //添加帮助菜单组件help.add(h_help);//textArea.setWrapStyleWord(true); //设置在单词过长的时候是否要把长单词移到下一行。
java课程设计学生信息管理系统

java课程设计学生信息管理系统一、教学目标本节课的教学目标是使学生掌握Java编程语言的基本语法和编程技巧,能够运用Java语言实现简单的学生信息管理系统。
具体目标如下:1.知识目标:–掌握Java语言的基本语法和数据结构;–理解面向对象编程的基本概念和方法;–了解学生信息管理系统的功能和结构。
2.技能目标:–能够使用Java语言编写简单的程序;–能够运用面向对象编程方法设计和实现学生信息管理系统;–能够对程序进行调试和优化。
3.情感态度价值观目标:–培养学生的编程兴趣和自主学习能力;–培养学生解决问题的能力和团队合作精神;–使学生认识到计算机技术在现实生活中的重要性和应用价值。
二、教学内容本节课的教学内容主要包括以下几个部分:1.Java语言的基本语法和数据结构;2.面向对象编程的基本概念和方法;3.学生信息管理系统的功能和结构;4.学生信息管理系统的实现和优化。
具体安排如下:1.第1-2课时:讲解Java语言的基本语法和数据结构;2.第3-4课时:讲解面向对象编程的基本概念和方法;3.第5-6课时:介绍学生信息管理系统的功能和结构;4.第7-8课时:引导学生实现和优化学生信息管理系统。
三、教学方法本节课采用多种教学方法相结合的方式,以激发学生的学习兴趣和主动性:1.讲授法:讲解Java语言的基本语法和数据结构,面向对象编程的基本概念和方法;2.案例分析法:分析实际的学生信息管理系统的案例,使学生更好地理解理论知识;3.实验法:引导学生动手实现和优化学生信息管理系统,提高学生的实际编程能力。
四、教学资源本节课所需的教学资源包括:1.教材:Java编程语言相关教材;2.参考书:面向对象编程相关参考书;3.多媒体资料:讲解Java语言和面向对象编程的PPT;4.实验设备:计算机和网络设备,以便进行编程实践。
五、教学评估本节课的教学评估将采用多元化评价方式,以全面、客观、公正地评估学生的学习成果。
学生信息管理系统课程设计java

学生信息管理系统课程设计 java一、课程目标知识目标:1. 让学生理解学生信息管理系统的基本概念,掌握Java语言实现该系统的核心知识,包括类的定义、对象的使用、集合框架等。
2. 使学生掌握如何使用Java编写数据库连接程序,实现对数据库的增、删、改、查等基本操作。
3. 帮助学生了解Java GUI编程,能够使用Swing组件设计出友好的用户界面。
技能目标:1. 培养学生运用Java语言设计并实现学生信息管理系统,提高编程实践能力。
2. 培养学生分析问题、解决问题的能力,能够根据需求独立完成系统功能模块的设计与实现。
3. 培养学生具备一定的项目开发经验,能够进行团队合作,分工协作完成项目。
情感态度价值观目标:1. 激发学生对Java编程的兴趣,培养其主动学习的习惯,提高学习积极性。
2. 培养学生具备良好的编程习惯,注重代码规范,提高代码质量。
3. 培养学生的团队协作意识,使其认识到团队协作的重要性,学会与他人共同解决问题。
课程性质:本课程为实践性较强的Java语言课程,以项目驱动的方式进行教学,旨在提高学生的编程能力、项目开发能力和团队协作能力。
学生特点:学生已具备一定的Java基础,具有一定的编程能力,但缺乏实际项目经验和团队协作能力。
教学要求:结合学生特点,注重实践操作,引导学生主动参与,充分调动学生的积极性,培养其编程实践和团队协作能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. Java基础回顾:包括类与对象、继承与多态、集合框架等基础知识,对应教材第一章至第四章。
- 类与对象:定义类、创建对象、封装、构造方法等。
- 继承与多态:继承的概念、方法重写、多态性等。
- 集合框架:常用集合类、迭代器、泛型等。
2. 数据库连接与操作:学习JDBC技术,实现与数据库的连接、数据查询、插入、删除和修改操作,对应教材第五章。
- JDBC概念与使用:理解JDBC的作用,掌握JDBC API的使用。
java课程设计(班级管理系统)

Java课程设计------简单的班级管理系统一:需求分析1.功能需求1).能够实现对班级学生基本资料的录入,包括学生的学号,姓名,性别,所学专业,家庭住址以及出生年月等。
2).能够实现对学生基本资料的修改。
3).根据学号对学生资料进行查询。
4).能够删除某些学生的资料。
二:总体设计本班级管理系统共有6个java源文件。
类之间的主要关系如下图所示:各主类的主要作用如下:1).StudentManager.java该java文件的类负责创建班级学生管理系统的主窗口。
该类包含main方法,程序从该类开始执行。
2).StudentStituation.java该文件的类负责创建班级学生管理系统的学生信息录入界面。
3).ModifySituation.java该文件的类负责创建班级学生管理系统的学生基本信息修改界面。
4).Inquest.java该文件的类负责创建班级学生管理系统的学生基本信息查询界面。
5).Delete.java该文件的类负责创建班级学生管理系统的学生信息删除界面。
6).Student.java负责创建存放学生信息的对象。
三:详细设计1.主类StudentManager.java1).成员变量主要成员变量2).方法主要方法3).代码StudentManager.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class StudentManager extends JFrame implements ActionListener {StudentSituation 基本信息录入=null;ModifySituation 基本信息修改=null;Inquest 基本信息查询=null;Delete 基本信息删除=null;JMenuBar bar;JMenu fileMenu;JMenuItem 录入,修改,查询,删除,退出;Container con=null;Hashtable 基本信息=null;File file=null;CardLayout card=null;JLabel label;JPanel pCenter;public StudentManager(){setTitle("欢迎进入班级管理系统");录入=new JMenuItem("录入学生基本信息");修改=new JMenuItem("修改学生基本信息");查询=new JMenuItem("查询学生基本信息");删除=new JMenuItem("删除学生基本信息");退出=new JMenuItem("退出本系统");退出.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event) {System.exit(0);}});bar=new JMenuBar();fileMenu=new JMenu("菜单选项");fileMenu.add(录入);fileMenu.addSeparator();fileMenu.add(修改);fileMenu.addSeparator();fileMenu.add(查询);fileMenu.addSeparator();fileMenu.add(删除);fileMenu.addSeparator();fileMenu.addSeparator();fileMenu.add(退出);bar.add(fileMenu);setJMenuBar(bar);label=new JLabel("欢迎进入班级管理系统!",label.CENTER); label.setFont(new Font("隶书",Font.BOLD,30));label.setForeground(Color.blue);基本信息=new Hashtable();录入.addActionListener(this);修改.addActionListener(this);查询.addActionListener(this);删除.addActionListener(this);card=new CardLayout();con=getContentPane();pCenter=new JPanel();pCenter.setLayout(card);file=new File("学生基本信息.txt");if(!file.exists()){try{FileOutputStream out=new FileOutputStream(file); ObjectOutputStreamobjectOut=new ObjectOutputStream(out);objectOut.writeObject(基本信息);objectOut.close();out.close();}catch(IOException e){}}基本信息录入=new StudentSituation(file);基本信息修改=new ModifySituation(file);基本信息查询=new Inquest(this,file);基本信息删除=new Delete(file);pCenter.add("欢迎语界面",label);pCenter.add("录入界面",基本信息录入);pCenter.add("修改界面",基本信息修改);pCenter.add("删除界面",基本信息删除);con.add(pCenter,BorderLayout.CENTER);con.validate();addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) {System.exit(0);}});setVisible(true);setBounds(100,50,420,380);validate();}public void actionPerformed(ActionEvent e){if(e.getSource()==录入){card.show(pCenter,"录入界面");}else if(e.getSource()==修改){card.show(pCenter,"修改界面");}else if(e.getSource()==查询){基本信息查询.setVisible(true);}else if(e.getSource()==删除){card.show(pCenter,"删除界面");}}public static void main(String args[]){new StudentManager();}}2.录入界面1).成员变量主要成员变量属性2).方法3).代码StudentSituation.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class StudentSituation extends JPanel implements ActionListener {Hashtable 基本信息表=null;JTextField 学号,姓名,所学专业,家庭住址,出生;JRadioButton 男,女;Student 学生=null;ButtonGroup group=null;JButton 录入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public StudentSituation(File file){this.file=file;学号=new JTextField(10);姓名=new JTextField(10);所学专业=new JTextField(10);家庭住址=new JTextField(10);出生=new JTextField(10);group=new ButtonGroup();男=new JRadioButton("男",true);女=new JRadioButton("女",false);group.add(男);group.add(女);录入=new JButton("录入");重置=new JButton("重置");录入.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox(); box1.add(new JLabel("学号:",JLabel.CENTER));box1.add(学号);Box box2=Box.createHorizontalBox(); box2.add(new JLabel("姓名:",JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox(); box3.add(new JLabel("性别:",JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox(); box4.add(new JLabel("所学专业:",JLabel.CENTER)); box4.add(所学专业);Box box5=Box.createHorizontalBox(); box5.add(new JLabel("家庭住址:",JLabel.CENTER)); box5.add(家庭住址);Box box6=Box.createHorizontalBox(); box6.add(new JLabel("出生:",JLabel.CENTER));box6.add(出生);Box boxH=Box.createVerticalBox(); boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(box5);boxH.add(box6);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(录入);pSouth.add(重置);add(pSouth,BorderLayout.SOUTH);validate();}public void actionPerformed(ActionEvent e){if(e.getSource()==录入){String number="";number=学号.getText();if(number.length()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();}catch(Exception ee){}if(基本信息表.containsKey(number)){String warning="该生基本信息已存在,请到修改页面修改!"; JOptionPane.showMessageDialog(this,warning,警告",JOptionPane.WARNING_MESSAGE);}else{String m="基本信息将被录入!";intok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION,RMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){String name=姓名.getText();String discipling=所学专业.getText();String grade=家庭住址.getText();String borth=出生.getText();String sex=null;if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}学生=new Student();学生.setNumber(number);学生.setName(name);学生.setDiscipling(discipling);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,学生);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}catch(Exception ee){System.out.println(ee);}}}}else{String warning="必须要输入学号!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);}}if(e.getSource()==重置){学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}}3.查询界面1).成员变量主要成员变量属性2).方法主要方法3).代码Inquest.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener {Hashtable 基本信息表=null;JTextField 学号,姓名,所学专业,家庭住址,出生; JRadioButton 男,女;JButton 查询;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null;public Inquest(JFrame f,File file){super(f,"查询对话框",false); this.file=file;学号=new JTextField(10);查询=new JButton("查询");学号.addActionListener(this);查询.addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);所学专业=new JTextField(10);所学专业.setEditable(false);家庭住址=new JTextField(10);家庭住址.setEditable(false);出生=new JTextField(10);出生.setEditable(false);男=new JRadioButton("男",false);女=new JRadioButton("女",false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox();box1.add(new JLabel("输入要查询的学号:",JLabel.CENTER)); box1.add(学号);box1.add(查询);Box box2=Box.createHorizontalBox();box2.add(new JLabel("姓名:",JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel("性别:",JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel("所学专业:",JLabel.CENTER));box4.add(所学专业);Box box5=Box.createHorizontalBox();box5.add(new JLabel("家庭住址:",JLabel.CENTER));box5.add(家庭住址);Box box6=Box.createHorizontalBox();box6.add(new JLabel("出生:",JLabel.CENTER));box6.add(出生);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(box5);boxH.add(box6);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);Container con=getContentPane();con.add(pCenter,BorderLayout.CENTER);con.validate();setVisible(false);setBounds(100,200,360,270);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) {setVisible(false);}});}public void actionPerformed(ActionEvent e){姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);if(e.getSource()==查询||e.getSource()==学号){String number="";number=学号.getText();if(number.length()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject(); inOne.close();inTwo.close();}catch(Exception ee){}if(基本信息表.containsKey(number)){Student stu=(Student)基本信息表.get(number);姓名.setText(stu.getName());所学专业.setText(stu.getDisciping());家庭住址.setText(stu.getGrade());出生.setText(stu.getBorth());if(stu.getSex().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}else{String warning="该学号不存在!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);}}else{String warning="必须要输入学号!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);}}}}3.修改界面1).成员变量主要成员变量2).方法主要方法3).代码ModifySituation.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ModifySituation extends JPanel implements ActionListener {Hashtable 基本信息表=null;JTextField 学号,姓名,所学专业,家庭住址,出生;JRadioButton 男,女;ButtonGroup group=null;JButton 开始修改,录入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null;public ModifySituation(File file){this.file=file;学号=new JTextField(10);姓名=new JTextField(10);所学专业=new JTextField(10);家庭住址=new JTextField(10);出生=new JTextField(10);group=new ButtonGroup();男=new JRadioButton("男",true);女=new JRadioButton("女",false);group.add(男);group.add(女);开始修改=new JButton("开始修改");录入修改=new JButton("录入修改");录入修改.setEnabled(false);重置=new JButton("重置");学号.addActionListener(this);开始修改.addActionListener(this);录入修改.addActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox();box1.add(new JLabel("输入要修改信息的学号:",JLabel.CENTER));box1.add(学号);box1.add(开始修改);Box box2=Box.createHorizontalBox();box2.add(new JLabel("(新)姓名:",JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel("(新)性别:",JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel("(新)所学专业:",JLabel.CENTER)); box4.add(所学专业);Box box5=Box.createHorizontalBox();box5.add(new JLabel("(新)家庭住址:",JLabel.CENTER)); box5.add(家庭住址);Box box6=Box.createHorizontalBox();box6.add(new JLabel("(新)出生:",JLabel.CENTER));box6.add(出生);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(box5);boxH.add(box6);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSouth.add(录入修改);pSouth.add(重置);add(pSouth,BorderLayout.SOUTH);validate();}public void actionPerformed(ActionEvent e){if(e.getSource()==开始修改||e.getSource()==学号){String number="";number=学号.getText();if(number.length()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();}catch(Exception ee){}if(基本信息表.containsKey(number)){录入修改.setEnabled(true);Student stu=(Student)基本信息表.get(number);姓名.setText(stu.getName());所学专业.setText(stu.getDisciping());家庭住址.setText(stu.getGrade());出生.setText(stu.getBorth());if(stu.getSex().equals("男")){男.setSelected(true);}else{女.setSelected(true);}}else{录入修改.setEnabled(false);String warning="该学号不存在!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}else{录入修改.setEnabled(false);String warning="必须要输入学号!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}else if(e.getSource()==录入修改){String number="";number=学号.getText();if(number.length()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();}catch(Exception ee){}if(基本信息表.containsKey(number)){String question="该生基本信息已存在,您想修改他(她)的基本信息吗?"; JOptionPane.showMessageDialog(this,question,"警告",JOptionPane.QUESTION_MESSAGE);String m="基本信息将被修改!";int ok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTION,RMATION_MESSAGE);if(ok==JOptionPane.YES_OPTION){String name=姓名.getText();String discipling=所学专业.getText();String grade=家庭住址.getText();String borth=出生.getText();String sex=null;if(男.isSelected()){sex=男.getText();}else{sex=女.getText();}Student 学生=new Student();学生.setNumber(number);学生.setName(name);学生.setDiscipling(discipling);学生.setGrade(grade);学生.setBorth(borth);学生.setSex(sex);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,学生);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}catch(Exception ee){System.out.println(ee);}录入修改.setEnabled(false);}else if(ok==JOptionPane.NO_OPTION){录入修改.setEnabled(true);}}else{String warning="该学号没有基本信息,不能修改!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);录入修改.setEnabled(false);}}else{String warning="必须要输入学号!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);录入修改.setEnabled(false);}}if(e.getSource()==重置){学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}}4.删除界面1).成员变量主要成员变量2).方法主要方法3).代码Delete.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class Delete extends JPanel implements ActionListener{Hashtable 基本信息表=null;JTextField 学号,姓名,所学专业,家庭住址,出生;JRadioButton 男,女;JButton 删除;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null; public Delete(File file){this.file=file;学号=new JTextField(10);删除=new JButton("删除");学号.addActionListener(this);删除.addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);所学专业=new JTextField(10);所学专业.setEditable(false);家庭住址=new JTextField(10);家庭住址.setEditable(false);出生=new JTextField(10);出生.setEditable(false);男=new JRadioButton("男",false);女=new JRadioButton("女",false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox();box1.add(new JLabel("输入要删除的学号:",JLabel.CENTER)); box1.add(学号);box1.add(删除);Box box2=Box.createHorizontalBox();box2.add(new JLabel("姓名:",JLabel.CENTER));box2.add(姓名);Box box3=Box.createHorizontalBox();box3.add(new JLabel("性别:",JLabel.CENTER));box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox();box4.add(new JLabel("所学专业:",JLabel.CENTER));box4.add(所学专业);Box box5=Box.createHorizontalBox();box5.add(new JLabel("家庭住址:",JLabel.CENTER));box5.add(家庭住址);Box box6=Box.createHorizontalBox();box6.add(new JLabel("出生:",JLabel.CENTER));box6.add(出生);Box boxH=Box.createVerticalBox();boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(box5);boxH.add(box6);boxH.add(Box.createVerticalGlue());JPanel pCenter=new JPanel();pCenter.add(boxH);setLayout(new BorderLayout());add(pCenter,BorderLayout.CENTER);validate();}public void actionPerformed(ActionEvent e){if(e.getSource()==删除||e.getSource()==学号){String number="";number=学号.getText();if(number.length()>0){try {inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject(); inOne.close();inTwo.close();}catch(Exception ee){}if(基本信息表.containsKey(number)){Student stu=(Student)基本信息表.get(number);姓名.setText(stu.getName());所学专业.setText(stu.getDisciping());家庭住址.setText(stu.getGrade());出生.setText(stu.getBorth());if(stu.getSex().equals("男")){男.setSelected(true);}else{女.setSelected(true);}String m="确定要删除该学号及全部信息吗?";int ok=JOptionPane.showConfirmDialog(this,m,"确认",JOptionPane.YES_NO_OPTIONJOptionPane.QUESTION_MESSAGE);if(ok==JOptionPane.YES_OPTION){基本信息表.remove(number);try{outOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}catch(Exception ee){System.out.println(ee);}}else if(ok==JOptionPane.NO_OPTION){学号.setText(null);姓名.setText(null);所学专业.setText(null);家庭住址.setText(null);出生.setText(null);}}else{String warning="该学号不存在!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);}}else{String warning="必须要输入学号!";JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);}}}}5.学生对象1).成员变量主要成员变量2). 方法3).代码Student.javapublic class Student implements java.io.Serializable{String number,name,discipling,grade,borth,sex;public Student(){}public void setNumber(String number){this.number=number;}public String getNumber(){return number;}public void setName(String name){=name;}public String getName(){return name;}public void setDiscipling(String discipling) {this.discipling=discipling;}public String getDisciping(){return discipling;}public void setGrade(String grade){this.grade=grade;}public String getGrade(){return grade;}public void setBorth(String borth){this.borth=borth;}public String getBorth(){return borth;}public void setSex(String sex){this.sex=sex;}public String getSex(){return sex;}}四:测试结果及问题分析本程序为一简单的班级管理系统,功能比较单一,但是基本功能还是实现了,能够对学生基本资料的录入,修改,删除以及查询。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计课程设计名称:java课程设计专业班级: XXX班级学生姓名: XXXX学号: XXXXX指导教师: XXXXX课程设计时间:目录目录 ------------------------ 1 课程设计任务书 ------------------------- 2一、需求分析 ------------------------- 3二、概要设计 ------------------------- 4三、开发语言 ------------------------- 4四、详细设计 ------------------------ 4五、调试与分析 ------------------------- 13六、功能测试 ------------------------- 14七、结论与心得 -------------------------- 15八、参考资料 -------------------------- 16九、成绩评价表 -------------------------- 17计算机科学技术(卓越计划)专业课程设计任务书文件管理系统一、需求分析题目要求对文件进行复制,压缩,解压等操作,相当于一个简单的文管理系统。
对此我新加了剪切,删除,和重命名等功能。
程序的整体输入控制是采用图形用户界面,同时为了减少用户输入时不必要的错误,程序还支持文件选择器功能,用户可以直接点击相应的按钮选择相应的文件或文件夹。
(1)复制功能实现了将文件复制到指定的文件夹中(包括文件夹的复制和单个文件的复制),同时允许用户选择不同类型的文件复制。
其中有全文件复制(文件夹里所有文件全部复制)、无空文件夹的文件复制(即复制的文件夹不含空文件夹)、指定参数的文件复制(即文件夹复制时可以指定相应的类型参数doc、txt等选择要被复制的文件类型)。
(2)压缩功能实现将文件压缩到指定路径(包括单个文件的压缩和文件夹的压缩)。
(3)解压功能实现将指定的压缩文件解压到指定的路径(4)剪切功能实现将制订文件夹下的文件剪切到制订的文件夹下,与复制不同的,剪切后该文件只存在于剪切后的文件夹。
(5)删除功能实现了文件的删除和文件夹删除,其中文件的删除可以直调用文件的方法删除文件,而文件夹的删除必须递归删除文件夹中的所有文件,然后再层层调用方法删除文件夹。
(6)重命名功能实现对指定文件夹下的文件的重命名,如果该文件夹下已经存在该文件名,则提示重新命名二、概要设计图2-1设计模块图图2-2系统流程图三、运行环境、开发语言Eclipse、Java四、详细设计1 程序清单表4-1主要列出了各个文件实现的功能表4-1 程序清单表4-2主要列出Copytest.java文件中各个方法的所实现的功能。
其余文件的方法基本都是用于图形用户界面的设置,在此就不一一例举。
表4-2 Copytest.java中方法清单2 主要代码2.1菜单界面运行程序时会弹出一个菜单界面,供用户选择相应的文件操作。
包括复制、压缩、解压、剪切、删除、重命名。
该功能截图如图2-1所示.图4-1 菜单功能界面2.2复制界面点击复制选项,会弹出窗口,如图4-2所示。
在文本框里输入相应信息,或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,如图4-3所示。
具体代码如下:图4-2 文件复制图4-3文件选择器选择文件(1)复制功能代码,用于调用//单个文件复制,用于调用public static void doCopy(String path1,String path2,String name){Reader in= null;Writer out= null;try {in = new FileReader(path1+"/"+name);out = new FileWriter(path2+"/"+name);int len= 0;char[] c= new char[1024];while((len= in.read(c))!=-1){out.write(c,0,len);}} catch (IOException e) {e.printStackTrace();}finally{try {in.close();out.close();} catch (IOException e) {e.printStackTrace();}}}(2)无参数的文件复制,递归遍历文件夹,调用doCopy()方法实现复制//无参数文件夹复制(含空文件夹)public static void copy(String frompath,String topath){File ffile = new File(frompath);File[] fs = ffile.listFiles();if(fs != null){for(File f : fs){if(f.isDirectory()){new File(topath +"/"+ f.getName()).mkdirs();copy(f.getAbsolutePath(),topath +"/"+ f.getName());}else{doCopy(frompath,topath,f.getName()); //执行文件复制操作}}}}(3)功能是在全文件复制的基础上改动的,在方法中增加判断语句,如果是空文件夹就不复制。
//无空文件夹的复制public static void emptycopy(String frompath,String topath){File ffile = new File(frompath);File[] fs = ffile.listFiles();if(fs != null){for(File f : fs){if(f.isDirectory()){if((f.listFiles()).length>0){new File(topath +"/"+ f.getName()).mkdirs();emptycopy(f.getAbsolutePath(),topath +"/"+ f.getName());}}else{doCopy(frompath,topath,f.getName()); //执行文件复制操作}}}}(4)从用户输入操作获取要被复制的文件类型,然后通过数组传递参数,根据参数来限制复制的文件类型//有参数限制的文件复制public static void extcopy(String frompath,String topath,String[] temp){File fromfile = new File(frompath);File[] fs = fromfile.listFiles();if(fs != null){for(File f : fs){//如果是文件夹则进行递归调用if(f.isDirectory()){if((f.listFiles()).length>0){new File(topath +"/"+ f.getName()).mkdirs();extcopy(f.getAbsolutePath(),topath +"/"+ f.getName(),temp);}}//如果是文件则进行判断else{for(int i=0;i<temp.length;i++){if(f.getName().endsWith(temp[i])){ //过滤不符合要求的文件doCopy(frompath,topath,f.getName());//执行文件复制操作}}}}}}2.3 压缩界面点击压缩选项,会弹出窗口,如图4-4所示。
在文本框里输入相应信息,或者直接点击相应的按钮,通过文件选择器选择文件,获取路径信息,类似可参照图4-3。
具体代码如下:图4-4 文件压缩界面(1)通过该方法传递路径信息,同时调用递归遍历的方法//文件压缩public static void compactFile(String source,String target){try{out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(target))); // 创建压缩文件输出流recursionFile(source,source); // 递归遍历文件out.close();// 关闭输入流}catch(Exception e){System.out.println("压缩出现错误!");}}(2)该方法实现递归遍历文件夹,同时判断文件是否为文件夹,如果是,就添加压缩项,如果不是就调用单个文件压缩的方法//压缩文件夹public static void recursionFile(String filepath,String origin) throws Exception { //该方法的作用是递归遍历文件String[] temp=origin.split("/"); //将文件路径以“/”分割为若干字符串String origin1=temp[temp.length-1]; //要保留的路径值File file = new File(filepath);File[] files = file.listFiles();for (File f : files) {if (!f.isDirectory()) {// 如果是文件,则执行压缩操作ZipAFile(f,origin);} else {// 如果是目录,则首先将目录添加到压缩项中out.putNextEntry(new ZipEntry(f.getAbsolutePath().substring(f.getAbsolutePath().indexOf(origin1))+ "/"));recursionFile(f.getAbsolutePath(),origin);}}}(3)该方法用于实现单个文件压缩//压缩文件public static void ZipAFile(File file,String origin) throws IOException {String[] temp=origin.split("/"); //将文件路径以“/”分割为若干字符串String origin1=temp[temp.length-1]; //要保留的路径值in = new FileInputStream(file); // 创建文件源输入流out.putNextEntry(new ZipEntry(file.getAbsolutePath().substring(file.getAbsolutePath().indexOf(origin1)))); //将当前文件添加到压缩项byte[] b = new byte[1024];int len;while ((len = in.read(b)) != -1) {out.write(b, 0, len);}in.close();// 关闭输入流}2.4解压界面点击解压选项,会弹出窗口,如图4-5所示。