




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告 设计题目: 图书管理系统 学院、系: 电子与信息工程学院 专业班级: 计算机102班 学生姓名: 王喜龙 指导教师: 龙艳彬 成 绩: 2012年-2013年第一学期 第10周摘 要随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最基础方法。Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“一次写成,处处运行”的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。关键词:JAVA ; 加密; 解密;一、设计目的java程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对java面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。与此同时还培养学生在项目开发中团队合作精神、创新意识及能力。二、设计目的与意义目的: 保密性:防止用户的文档或数据被他人随意读取。广泛性:可以对所有形式的文件进行加密解密,如:文档,可执行文件等等。数据完整性:防止数据被更改,加密解密后不改变原数据。 意义: 随着计算机的广泛应用,计算机信息的保密问题显得越来越重要。数据保密变换,或密码技术,是对计算机信息进行保护的最实用最可靠的方法。设计本系统可以对电脑中的任意文件进行加密,保证了计算机中信息的安全性、完整性。通过加密自己想加密的文件,防止他人偷窥,有利的保护了个人隐私。三、设计内容3.1需求分析3.1.1问题描述(1)给定任意一个文本文件,进行加密,生成另一个文件。(2)对加密后的文件还原。3.1.2基本要求采用图形用户界面,建立菜单。3.2总体设计3.2.1 包的描述导入了java.awt; java.awt.event; java.io; javax.swing等包。3.2.2 类的描述Jiami类:继承JFrame类;有构造方法jiami(),方法void actionPerformed(ActionEvent event),方法void jian(),方法void shuruwenjianzhong(),方法void qu(),主方法static void main(String args),方法void baocun()。AA类:实现了Serializable接口,用来对象系列化,把文本内容变为二进制的数据流;有构造方法AA(String a),构造方法AA(),有方法int getShu(),方法void setShu(int shu)。四、概要设计4.1类的定义:public class jiami extends JFrame ; class AA implements Serializable;4.2设计内容 设计这个系统的主要目的是实现对文件的加密与解密,防止用户的标识或数据被读取,防止数据被更改,确保数据发自特定的一方。功能模块:设计的系统中共包括两个部分,加密模块,解密模块。加密模块:通过选择计算机中的需要加密的文件把其原始的数字信息(明文),按照加密算法变换成与明文完全不同的数字信息(密文)的过程。解密模块:是通过对已加密的文件(密文),按照解密算法把其还原成原来的数字信息(明文)的过程。4.3模块流程图用户选择加 密解 密获取密钥获取等待加密的明文执行加密处理加密结果获取密钥获取等待解密的密文执行解密处理解密结果输入密码输入密码结束判断加密或解密开始完成任务Yes 密No 密4.4各个事件响应模块1确定按钮的响应 queding.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) jian(); if (xie.isSelected() shuruwenjianzhong(); if (qu.isSelected() qu(); );2 选择模块同上个文件保存模块类似,依旧在选择菜单项“打开”后,查找读入文件,读取字符流,弹出“打开对话框”,从而可实现获取文件。 出口值:被选文件的路径 xuanz.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); if (fileChooser.showOpenDialog( jiami.this) = JFileChooser.APPROVE_OPTION) String fileName = fileChooser.getSelectedFile().getAbsolutePath(); lujing.setText(fileName); );3 加密与解密模块解密操作模块解密操作其实同加密操作相同,依旧首先打开加密后的文件,使其显示在文本区中,输入加密时的密码,即可得到解密后的文件,再显示到“文件浏览窗口”中。 jiemi.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) ObjectInputStream input; try input = new ObjectInputStream(new FileInputStream(lujing.getText(); int mima = Integer.parseInt(password.getText(); AA ac = (AA) input.readObject(); if (ac.getShu() = mima) area.setText(ac.cc); shuruwenjianzhong(); JOptionPane.showMessageDialog(null, 解密成功!); else JOptionPane.showMessageDialog(null, 错误的密码!); catch (Exception e) area.setText(无法解密); );加密操作模块本程序采用简单的加密方法,即把从文本区域获得的文本文件,初始化,存放到一个对象的cc属性中,然后用ObjectOutputStream.writeObject()方法把一个实例的对象以文件的形式保存到文件上,以实现加密的效果。 jiami.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) AA a = new AA(area.getText(); password.setText(a.shu + ); try ObjectOutputStream output = new ObjectOutputStream( new FileOutputStream(lujing.getText(); output.writeObject(a); output.flush(); output.close(); qu(); baocun(); catch (Exception e) area.setText(必须选择加密文件保存地址,文件不存在或者无法加密文件,加密文件不能含有换行); );4.5界面设计在图形用户界面,设置了一个面板,并分别设置显示其组件的布局。设置了四个按钮组件,分别为“选择”,“加密”,“解密”和“确定”;设置两个文本框,分别为“路径”和“密码”;创建一个文本区域,用取出和写入文件,这就是整个图形用户界面。 此外,还添加了一个窗口事件windowClosing,可以关闭运行的程序。 显示页面选择所要加密的文本文件 取出加密前文本文件的内容 加密后界面 解密成功后的界面4.6测试与分析(1)不输入路径的情况 不输入路径时页面(2)路径输入错误 路径错误页面(3)密码错误 密码错误页面五 总结与展望在设计过程中,我们必须持着严谨认真的态度和作风。每一个细节都需要高度重视,如果不认真思考决策,就会出现或大或小的错误。若早期的错误隐藏下来,没被发现,就会对后面的工作产生很大的影响,甚至需要从头开始。在设计过程中,我们不断发现错误,不断改正错误,不断领悟,不断获取。从中,我懂得了在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能获得最终的胜利。不然,将永远不能获得成功,也不能得到社会及他人对自己的认可!课程设计诚然是一门专业课,让我的专业知识以及专业技能上得到提升,同时又是一门讲道课,一门辩思课,给了我许多道、很多思,给了我莫大的空间。我认为,在此次实践中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这正是以后最实用的知识。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。我想,以后不管有多苦,我们都要学会变苦为乐,从中寻找乐趣。通过此次的课程设计,我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要肯花时间去认真钻研,动脑思考,动手实践,就没有弄不懂的知识。六 参考文献Java面向对象程序设计/邱少明主编.北京:清华大学出版社;北京交通大学出版社,2009.8Java安全性编程实例/徐迎晓编著.北京:清华大学出版社;2003.4Java数值计算算法编程/周长发著.北京:电子工业出版社;2007.1附录 源代码import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;public class jiami extends JFrame JLabel jlabel1, jlabel2;JButton queding, xuanz, jiami, jiemi;JTextField lujing, password;JTextArea area;JRadioButton qu, xie;ButtonGroup fz;File f;int shu1;public jiami() Container c = getContentPane();/容器类对象 JPanel jp1 = new JPanel(); jlabel1 = new JLabel(输入路径); lujing = new JTextField(15); xuanz = new JButton(选择); jp1.add(jlabel1); jp1.add(lujing); jp1.add(xuanz); c.add(jp1, BorderLayout.NORTH); area = new JTextArea(); c.add(new JScrollPane(area), BorderLayout.CENTER); xie = new JRadioButton(写入); qu = new JRadioButton(取出); fz = new ButtonGroup(); fz.add(qu); fz.add(xie); jlabel2 = new JLabel(密码); password = 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(jlabel2); jp2.add(password); jp2.add(jiami); jp2.add(jiemi); jp4.add(jp2); JPanel jp3 = new JPanel(); queding = new JButton(确定); jp3.add(qu); jp3.add(xie); jp3.add(queding); jp4.add(jp3); c.add(jp4, BorderLayout.SOUTH); queding.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) jian(); if (xie.isSelected() shuruwenjianzhong(); 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( jiami.this) = JFileChooser.APPROVE_OPTION) / 弹出文件选择器,并判断是否点击了打开按钮 String fileName = fileChooser.getSelectedFile().getAbsolutePath(); / 得到选择文件或目录的绝对路径 lujing.setText(fileName); ); jiemi.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) ObjectInputStream input; try input = new ObjectInputStream(new FileInputStream(lujing.getText(); int mima = Integer.parseInt(password.getText(); AA ac = (AA) input.readObject(); if (ac.getShu() = mima) area.setText(ac.cc); shuruwenjianzhong(); JOptionPane.showMessageDialog(null, 解密成功!); else JOptionPane.showMessageDialog(null, 错误的密码!); catch (Exception e) / e.printStackTrace(); area.setText(无法解密); ); jiami.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) AA a = new AA(area.getText(); password.setText(a.shu + ); try ObjectOutputStream output = new ObjectOutputStream( new FileOutputStream(lujing.getText(); output.writeObject(a); output.flush(); output.close(); qu(); baocun(); catch (Exception e) / e.printStackTrace(); area.setText(必须选择加密文件保存地址,文件不存在或者无法加密文件,加密文件不能含有换行); ); setSize(380, 350); setVisible(true);public void jian() f = new File(lujing.getText();/读取读取指定路径 try f.createNewFile();/用文件对象创建一个文件 catch (IOException e) JOptionPane.showMessageDialog(null, 路径错误!); public void shuruwenjianzhong() try FileOutputStream out = new FileOutputStream(f); byte buf = area.getText().getBytes(); try out.write(buf); out.flush(); out.close(); catch (IOException e) / e.printStackTrace(); catch (FileNotFoundException e) / e.printStackTrace(); public void qu()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药士资格考试试卷真题及答案
- 2025年江苏语文中考试卷及答案
- 2025开封高一历史期末考试真题及答案
- 呼吸科进修考试题及答案
- 衡水摩托考试题目及答案
- 难点解析-人教版八年级上册物理声现象《声音的产生与传播》定向练习试题(含答案及解析)
- 2025-2026学年度四川省成都市九年级上册9月考数学试题 参考答案
- 微生物期中考试题及答案
- 南京网约车考试题库及答案
- 2025年消防员招聘考试(面试)历年参考题库含答案详解
- 联通运营合作协议合同
- 8.1 走进人工智能 课件 2024-2025学年浙教版(2023)初中信息技术八年级下册
- 鄂尔多斯盆地地质特征与沉积模式分析
- 数字化赋能设计企业转型升级
- 鼻部解剖结构及其临床表现
- 2025年粮油集团笔试试题及答案
- 生鲜农产品配送商业计划书模板
- 2025年股东退股权益申请协议书范例
- 小学生乘坐飞机安全
- 《主动脉夹层动脉瘤》课件
- 配电房岗位职责
评论
0/150
提交评论