JAVA文件加密解密课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

+<<Constructor>> KeyPay() + jian() +shuchu() +qu() : : : void void void void void
+main(String args[]): +baocun() :
+AA(String)
图 1 KeyPay 类图
图 2 AA 类图
3
4.3.2 页面设计
JPanel jp3 = new JPanel(); queding = new JButton("确定"); jp3.add(qu); jp3.add(xie); jp3.add(queding); jp4.add(jp3);
c.add(jp4, BorderLayout.SOUTH);
11
queding.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { jian(); if (xie.isSelected()) shuchu(); if (qu.isSelected()) qu(); } }); xuanz.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器 fileChooser .setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择 模式,此处为文件和目录均可 if (fileChooser.showOpenDialog(KeyPay.this) == JFileChooser.APPROVE_OPTION) { // 弹出文件选择器,并判断是否点击了打开按钮 String fileName = fileChooser.getSelectedFile() .getAbsolutePath(); // 得到选择文件或目录的绝对路径 lujin.setText(fileName); } } });
图 3
显示页面
图4
选择所要加密的文本文件
4
图 5
取出加密前文本文件的内容
图 6
加密后界面
5

7
解密成功后的界面
图 8
把内容写入到指定的文本文档中
6
图 9
写入后的文本文档页面
4.4 测试与分析
(1)不输入路径的情况
图 10
不输入路径时页面
7
(2)路径输入错误
图 11 路径错误页面
8
(3)密码错误
} });
jiami.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { AA a = new AA(nr.getText()); key.setText(a.shu + ""); try { ObjectOutputStream output = new ObjectOutputStream( new FileOutputStream(lujin.getText())); output.writeObject(a); output.flush(); output.close(); qu();
4.1 需求分析……………………………………………….....….1
4.1.1 4.1.2 问题描述……………………………….………………...…1 基本要求……………………………….………………...…1
4.2 总体设计…………………………………………………..….1
4.2.1 4.2.2 4.2.3 包的描述…………………………………….…………....…1 类的描述……………………………………….………....…1 类之间的关系…………………………………………....….2
图 12
密码错误页面
4.5 程序代码
import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*;
public class KeyPay extends JFrame
{
int shu1;
9
JLabel jl1, jl2;
4.3 详细设计………………………………………….………..….2
4.3.1 类图……………………………………………….……....…..2 4.3.2 页面设计………………………………………….……....….3
4.4 测试与分析……………………………………….………..….6 4.5 程序与代码…………………………………………………….8
软 件 学 院
课程设计报告书
课程名称 设计题目 专业班级 学 姓 号 名
指导教师




1.设计时间………………………………………….……..……1 2.设计目的…………………………………………….…..……1 3.设计任务…………………………………………….…..……1 4.设计内容………………………………………….………..…1
public void jian() { f = new File(lujin.getText()); try { f.createNewFile(); } catch (IOException e) { JOptionPane.showMessageDialog(null, "路径错误!"); } }
13
baocun(); } catch (Exception e) { // e.printStackTrace(); nr.setText("必须选择加密文件保存地址,文件不存在或者无法加密文件,加密文件不 能含有换行");
} } }); setSize(380, 350); setVisible(true); }
5.
总结与展望………………………………………..…………..17
参考文献…………………………………………….…….……..……18 课程设计成绩评定……………………..……………………………18
1
1 设计时间
2011 年 6 月 13 日-2011 年 6 月 19 日
2 设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完 该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设 计的理论、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计的基本方法,提 高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
String cc;
JButton queding, xuanz, jiami, jiemi;
JTextField lujin, key;
JTextArea nr;
JRadioButton qu, xie;
ButtonGroup fz;
File f;
public KeyPay() { Container c = getContentPane(); JPanel jp1 = new JPanel(); jl1 = new JLabel("输入路径"); lujin = new JTextField(15); xuanz = new JButton("选择"); jp1.add(jl1); jp1.add(lujin); jp1.add(xuanz); c.add(jp1, BorderLayout.NORTH);
jl2 = new JLabel("密钥"); key = new JTextField(15); jiami = new JButton("加密"); jiemi = new JButton("解密"); JPanel jp4 = new JPanel(); jp4.setLayout(new GridLayout(2, 1, 5, 5)); JPanel jp2 = new JPanel(); jp2.add(jl2); jp2.add(key); jp2.add(jiami); jp2.add(jiemi); jp4.add(jp2);
jiemi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { ObjectInputStream input; try { input = new ObjectInputStream(new FileInputStream(lujin
4.2.3 类之间的关系
2
类 KeyPay 中的方法 void baocun()用到类 AA 进行实例化, 然后调用方法 int getShu()。
4.3 详细设计
4.3.1 类图
KeyPay -shu1 -jl1 -jl2 -cc -queding -xuanz -jiami -jiemi -lujin -key -nr -qu -xie -fz -f :String :JLabel :JLabel :String :JButton :JButton :JButton :JButton :JTextField :JTextField :JTextArea :JRadioButton :JRadioButton :ButtonGroup :File -cc -shu +AA() +getShu() +setChu() :int :void AA :String : int
3 设计任务
文本文件的加密与解密
4 设计内容
4.1 需求分析
4.1.1 问题描述
(1)给定任意一个文本文件,进行加密,生成另一个文件。 (2)对加密后的文件还原。
4.1.2 基本要求
采用图形用户界面,建立菜单。
4.2 总体设计
4.2.1 包ቤተ መጻሕፍቲ ባይዱ描述
导入了 java.awt; java.awt.event; java.io; javax.swing 等包。
nr = new JTextArea();
10
c.add(new JScrollPane(nr), BorderLayout.CENTER);
xie = new JRadioButton("写入"); qu = new JRadioButton("取出", true); fz = new ButtonGroup(); fz.add(qu); fz.add(xie);
4.2.2 类的描述
KeyPay 类 : 继 承 JFrame 类 ; 有 构 造 方 法 KeyPay(), 方 法 void actionPerformed(ActionEvent event),方法 void jian(),方法 void shuchu(),方法 void qu(),主方法 static void main(String args[]),方法 String mzi(),方法 void baocun()。 AA 类:实现了 Serializable 接口,用来对象系列化,把文本内容变为二进制的数据流; 有构造方法 AA(String a),构造方法 AA(),有方法 int getShu(),方法 void setShu(int shu)。
public void shuchu() { try { FileOutputStream out = new FileOutputStream(f); byte buf[] = nr.getText().getBytes(); try { out.write(buf); out.flush();
12
.getText())); int mima = Integer.parseInt(key.getText()); AA ac = (AA) input.readObject(); if (ac.getShu() == mima) { nr.setText(ac.cc); shuchu(); JOptionPane.showMessageDialog(null, "解密成功!"); } else { JOptionPane.showMessageDialog(null, " 错误的密码!"); } } catch (Exception e) { // e.printStackTrace(); nr.setText("无法解密"); }
相关文档
最新文档