加密和解密.docx

上传人:b****6 文档编号:6550552 上传时间:2023-01-07 格式:DOCX 页数:14 大小:189.83KB
下载 相关 举报
加密和解密.docx_第1页
第1页 / 共14页
加密和解密.docx_第2页
第2页 / 共14页
加密和解密.docx_第3页
第3页 / 共14页
加密和解密.docx_第4页
第4页 / 共14页
加密和解密.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

加密和解密.docx

《加密和解密.docx》由会员分享,可在线阅读,更多相关《加密和解密.docx(14页珍藏版)》请在冰豆网上搜索。

加密和解密.docx

加密和解密

2014-2015学年第2学期

学号

 

《面向对象程序设计》

课程设计报告

 

题目:

加密与解密

专业:

网络工程

班级:

姓名:

指导教师:

成绩:

计算机与信息工程系

二零一五年四月二十六日

目录

1设计目的3

2设计题目3

3设计任务3

4设计内容3

4.1需求分析3

4.1.1问题描述3

4.1.2基本要求3

4.2程序流程4

4.3程序解决的核心问题5

4.4程序源代码5

4.5程序执行界面10

5总结与展望12

参考文献13

 

1设计目的

《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。

其目的在于通过实践加深学生对面向对象程序设计方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

2设计题目

的理论、

采用图形用户界面,建立菜单。

(1)给定任意一个文本文件,进行加密,生成另一个文件。

(2)对加密后的文件还原。

3设计任务

通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用java语言进行面向对象程序设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

4设计内容

4.1需求分析

4.1.1问题描述

通过编程,实现“加密与解密”功能。

给定任意一个文本文件,进行加密,生成另一个文件。

对加密后的文件还原。

4.1.2基本要求

采用图形用户界面,建立菜单

(1)给定任意一个文本文件,进行加密,生成另一个文件。

(2)对加密后的文件还原。

4.2程序流程

4.3程序解决的核心问题

利用文件的输入输出流,按字符读取文件内容,把读取的内容,注意进行处理后,在重新写入新文件,实现文件加密。

用到的类:

FileRead,FileWrite.

添加窗体并布置面板,中间用到了,弹出对话框的事件。

设计的类有,Frame,Panel,JJOptionPane。

文件选择器的载入。

通过为按钮添加事件监听,来实现文件选择器的触发操作。

用到的类为:

JFileChooser。

自定义异常的种类,实现异常的灵活应用。

适当的调整程序的终止点或者循环点。

4.4程序源代码

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

importjavax.swing.*;

publicclasscode

{

Framef;

Panelp1,p2;

Labell1,l2;

Buttonkey,unkey,scan;

TextFieldt1,t2;

TextAreata;

Stringpath;

StringFileName;

publiccode()//窗体的基本构架和面板布置

{

f=newFrame("文件加密");

f.setLayout(newBorderLayout());

p1=newPanel();

p2=newPanel();

l1=newLabel("选择路径");

scan=newButton("浏览");

l2=newLabel("密钥");

key=newButton("加密");

unkey=newButton("解密");

t1=newTextField(30);

t2=newTextField(20);

ta=newTextArea();

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(newwin());

scan.addActionListener(newscanner());

key.addActionListener(newkeyer());

unkey.addActionListener(newunkeyer());

}

publicstaticvoidmain(String[]args)

{

codecode1=newcode();//主函数入口

}

classwinextendsWindowAdapter//关闭窗口的监听事件

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

}

classscannerimplementsActionListener//浏览按钮的监听事件

{

publicvoidactionPerformed(ActionEvente)

{

JFileChooserfile=newJFileChooser(".");

intresult=file.showOpenDialog(null);//0代表选择了文件

if(result==JFileChooser.APPROVE_OPTION)

{

FileName=file.getSelectedFile().getName();

path=file.getSelectedFile().getAbsolutePath();

t1.setText(path);

FileReaderreader=null;

try

{

reader=newFileReader(path);

inttempchar;

ta.setText("");

while((tempchar=reader.read())!

=-1)

{

charn=(char)tempchar;

char[]m={n};

StringM=newString(m,0,1);

ta.append(M);

}

reader.close();

}

catch(Exceptione1)

{

ta.append("文件读取出错!

");

}

}

}

}

classkeyerimplementsActionListener//加密按钮的监听事件

{

publicvoidactionPerformed(ActionEvente)

{

FileReaderread1=null;

FileWriterwrite1=null;

intn;

try

{

Stringa=t1.getText();

Stringb=t2.getText();

FileExist=newFile("加密"+FileName);

if(a.equals(""))

thrownewMyException1("请选择路径!

");

if(Exist.exists())

thrownewMyException1("已存在加密文件,请先删除,再进行加密!

");

if(b.equals(""))

thrownewMyException1("请输入密钥!

");

else

n=Integer.parseInt(t2.getText());

try

{

read1=newFileReader(path);

write1=newFileWriter("加密"+FileName,true);

inti;

while((i=read1.read())!

=-1)

{

write1.write((char)(i+n));

}

write1.close();

JOptionPane.showMessageDialog(null,"加密成功","祝贺您",JOptionPane.PLAIN_MESSAGE);

ta.setText("");

t2.setText("");

}

catch(IOExceptione1)

{

}

}

catch(MyException1e2)

{

}

}

}

classunkeyerimplementsActionListener//解密按钮监听事件

{

publicvoidactionPerformed(ActionEvente)

{

FileReaderread1=null;

FileWriterwrite1=null;

intn;

try

{

Stringa=t1.getText();

Stringb=t2.getText();

FileExist=newFile("解密"+FileName);

if(a.equals(""))

thrownewMyException1("请选择路径!

");

if(Exist.exists())

thrownewMyException1("已存在解密密文件,请先删除,再进行解密!

");

if(b.equals(""))

thrownewMyException1("请输入密钥!

");

else

n=Integer.parseInt(t2.getText());

try

{

ta.setText("");

t2.setText("");

read1=newFileReader(path);

write1=newFileWriter("解密"+FileName,true);

inti;

while((i=read1.read())!

=-1)

{

write1.write((char)(i-n));

char[]m={(char)(i-n)};

StringM=newString(m,0,1);

ta.append(M);

}

write1.close();

JOptionPane.showMessageDialog(null,"解密成功","祝贺您",JOptionPane.PLAIN_MESSAGE);

}

catch(IOExceptione1)

{

}

}

catch(MyException1e2)

{

}

}

}

classMyException1extendsException

{

publicMyException1(Stringmessage)

{

JOptionPane.showMessageDialog(null,message);

}

}

}

4.5程序执行界面

图2为进入程序的主页面

图3路径为空时弹出上页面

图4未输入密钥时弹出上界面

图5条件满足,点击加密按钮时,弹出上界面

图6已经存在此文件的加密文件时,准备再次加密时弹出上界面

图7条件满足,点击解密按钮时,弹出上界面

图8已经存在选中文件的解密文件,试图再次解密时,弹出上界面

5总结与展望

通过这次课程设计,我学到了很多。

课本的内容虽说是基础,是一切的根本,但是学习基本内容和应用编程,简直就是两个天地。

一些编程的思想不是靠基础知识就能学到的,比如文件加密,开始接触到这个题目,第一反应就是,我没学过关于文件加密的内容啊,该怎么办啊。

但是当我听了老师的提醒后,才恍然醒悟,加密不一定是你没学的知识,也许它就是用你已经有的知识的变形和应用。

所以,知识的应用是灵活多态的。

有些知识虽然我们懂了,但是真正去应用时,却会捉襟见肘。

比如一个类的程序段,什么时候该用内部类什么时候该用外部类,我们怎么去权衡。

什么样的变量可以在哪个部分去调用,都需要我们在实践应用中去加强认识。

不只是通过死记硬背就能灵活应用的。

知识的海洋是无限大的,我们手头中有的资源也是无穷无尽的每次编程,不可能一点问题都没有。

总有这样和那样的难题,出现在我们思维的盲区。

我们要充分利用好自己的帮助文档和网上的资源,不要太执着于自己的知识层面,出去荡荡资料,会发现原来这个问题如此简单就可以解决。

这次课程设计后,我的学习目标和手段,有了新的改观,不在整天肯书本了,我要用自己学到的知识应用到生活中去编程,去实践,从而磨练自己的编程思维和手法。

多看网上的使用编程实例,练习自己的编程思维,学习新方法新思路。

参考文献

[1]屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:

北京希望电子出版社,2005

[2]Java程序设计实用教程.耿祥义,张跃平人民邮电出版社,2104

[3]JiangGuo,YuehongLiao,BehzadParviz.ASurveyofJ2EEApplicationPerformanceManagementSystems[J],ProceedingsoftheIEEEInternationalConferenceonWebServices(ICWS'04),2004.6(5):

17~32.

[4]VB数据库管理范例:

 

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

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1