java课程设计加密与解密_Java课程设计(加密与解密)

41528d3028836879cd698677c3999917.gifJava课程设计(加密与解密)

软 件 学 院 课程设计报告书 课程名称 面向对象程序设计课程设计 设计题目 文件加密与解密 专业班级 学 号 姓 名 指导教师 2014 年 6 月 目录 1 设计时间2 2 设计目的2 3设计任务2 4 设计内容2 4.1设计要求2 4.2程序流程图2 4.3程序解决的核心问题4 4.4程序源代码4 5 运行与测试9 6 总结与展望13 参考文献14 1 设计时间 2 设计目的 其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。 3设计任务 面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。 4 设计内容 4.1设计要求 加密与解密 要求:采用图形用户界面,建立菜单 (1)给定任意一个文本文件,进行加密,生成另一个文件。 (2)对加密后的文件还原。 4.2程序流程图 图1 程序流程图 4.3程序解决的核心问题: 利用文件的输入输出流,按字符读取文件内容,把读取的内容,注意进行处理后,在重新写入新文件,实现文件加密。用到的类:FileRead,FileWrite. 添加窗体并布置面板,中间用到了,弹出对话框的事件。设计的类有,Frame,Panel,J JOptionPane。 文件选择器的载入。通过为按钮添加事件监听,来实现文件选择器的触发操作。用到的类为:JFileChooser。 自定义异常的种类,实现异常的灵活应用。适当的调整程序的终止点或者循环点。 4.4程序源代码: import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class code { Frame f; Panel p1, p2; Label l1, l2; Button key, unkey,scan; TextField t1, t2; TextArea ta; String path; String FileName; public code() //窗体的基本构架和面板布置 { f = new Frame(“文件加密“); f.setLayout(new BorderLayout()); p1 = new Panel(); p2 = new Panel(); l1 = new Label(“选择路径“); scan = new Button(“浏览“); l2 = new Label(“密钥“); key = new Button(“加密“); unkey = new Button(“解密“); t1 = new TextField(30); t2 = new TextField(20); ta = new TextArea(); p1.add(l1); p1.add(t1); p1.add(scan); f.add(p1, BorderLayout.NORTH); p2.add(l2); p2.add(t2); p2.add(key); p2.add(unkey); f.add(p2, BorderLayout.SOUTH); f.add(ta, BorderLayout.CENTER); f.pack(); f.setVisible(true); f.addWindowListener(new win()); scan.addActionListener(new scanner()); key.addActionListener(new keyer()); unkey.addActionListener(new unkeyer()); } public static void main(String[] args) { code code1 = new code(); //主函数入口 } class win extends WindowAdapter //关闭窗口的监听事件 { public void windowClosing(WindowEvent e) { System.exit(0); } } class scanner implements ActionListener //浏览按钮的监听事件 { public void actionPered(ActionEvent e) { JFileChooser file = new JFileChooser(“.“); int result = file.showOpenDialog(null);//0代表选择了文件 if (result == JFileChooser.APPROVE_OPTION) { FileName = file.getSelectedFile().getName(); path = file.getSelectedFile().getAbsolutePath(); t1.setText(path); FileReader reader = null; try { reader = new FileReader(path); int tempchar; ta.setText(““); while ((tempchar = reader.read()) != -1) { char n=(char)tempchar; char[] m ={ n}; String M = new String(m,0,1); ta.append(M); } reader.close(); } catch (Exception e1) { ta.append(“文件读取出错!“); } } } } class keyer implements ActionListener // 加密按钮的监听事件 { public void actionPered(ActionEvent e) { FileReader read1 = null; FileWriter write1 = null; int n; try { String a = t1.getText(); String b = t2.getText(); File Exist = new File(“加密“+FileName); if (a.equals(““)) throw new MyException1(“请选择路径!“); if (Exist.exists()) throw new MyException1(“已存在加密文件,请先删除,再进行加密!“); if (b.equals(““)) throw new MyException1(“请输入密钥!“); else n=Integer.parseInt(t2.getText()); try { read1 = new FileReader(path); write1 = new FileWriter(“加密“+FileName, true); int i; while ((i = read1.read()) != -1) { write1.write((char)(i+n)); } write1.close(); JOptionPane.showMessageDialog(null, “加密成功“,“祝贺您“,JOptionPane.PLAIN_MESSAGE); ta.setText(““); t2.setText(““); } catch (IOException e1) { } } catch (MyException1 e2) { } } } class unkeyer implements ActionListener //解密按钮监听事件 { public void actionPered(ActionEvent e) { FileReader read1 = null; FileWriter write1 = null; int n; try { String a = t1.getText(); String b = t2.getText(); File Exist = new File(“解密“+FileName); if (a.equals(““)) throw new MyException1(“请选择路径!“); if (Exist.exists()) throw new MyException1(“已存在解密密文件,请先删除,再进行解密!“); if (b.equals(““)) throw new MyException1(“请输入密钥!“); else n = Integer.parseInt(t2.getText()); try { ta.setText(““); t2.setText(““); read1 = new FileReader(path); write1 = new FileWriter(“解密“+FileName, true); int i; while ((i = read1.read()) != -1) { write1.write((char)(i-n)); char[] m ={(char)(i-n)}; String M = new String(m, 0, 1); ta.append(M); } write1.close(); JOptionPane.showMessageDialog(null, “解密成功“, “祝贺您“, JOptionPane.PLAIN_MESSAGE); } catch (IOException e1) { } } catch(MyException1 e2) { } } } class MyException1 extends Exception { public MyException1(String message) { JOptionPane.showMessageDialog(null, message); } } } 5运行与测试: 图Ⅰ 程序的主页面 图Ⅱ 路径为空 图Ⅲ 未输入密钥 图Ⅳ 加密成功 图Ⅴ 已经存在此文件的加密文件,准备再次加密 图Ⅵ 条件满足,点击解密按钮 图Ⅶ 已经存在选中文件的解密文件,试图再次解密 5 总结与展望 通过这次课程设计,我学到了很多。课本的内容虽说是基础,是一切的根本,但是学习基本内容和应用编程,简直就是两个天地。一些编程的思想不是靠基础知识就能学到的,比如文件加密,开始接触到这个题目,第一反应就是,我没学过关于文件加密的内容啊,该怎么办啊。但是当我听了老师的提醒后,才恍然醒悟,加密不一定是你没学的知识,也许它就是用你已经有的知识的变形和应用。所以,知识的应用是灵活多态的。 有些知识虽然我们懂了,但是真正去应用时,却会捉襟见肘。比如一个类的程序段,什么时候该用内部类什么时候该用外部类,我们怎么去权衡。什么样的变量可以在哪个部分去调用,都需要我们在实践应用中去加强认识。不只是通过死记硬背就能灵活应用的。 知识的海洋是无限大的,我们手头中有的资源也是无穷无尽的每次编程,不可能一点问题都没有。总有这样和那样的难题,出现在我们思维的盲区。我们要充分利用好自己的帮助文档和网上的资源,不要太执着于自己的知识层面,出去荡荡资料,会发现原来这个问题如此简单就可以解决。 这次课程设计后,我的学习目标和手段,有了新的改观,不在整天肯书本了,我要用自己学到的知识应用到生活中去编程,去实践,从而磨练自己的编程思维和手法。多看网上的使用编程实例,练习自己的编程思维,学习新方法新思路。 参考文献 [1] 刘万军等编著 Java程序设计实践教程 北京:清华大学出版社,2006.9 [2] Java 文件读取方法大全 [3] JFileChooser 的使用 [4] JOptionPane 的应用 成绩评定 成绩 教师签字


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部