加密和解密Word文档格式.docx
《加密和解密Word文档格式.docx》由会员分享,可在线阅读,更多相关《加密和解密Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
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)给定任意一个文本文件,进行加密,生成另一个文件。
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//加密按钮的监听事件
FileReaderread1=null;
FileWriterwrite1=null;
intn;
try
Stringa=t1.getText();
Stringb=t2.getText();
FileExist=newFile("
+FileName);
if(a.equals("
))
thrownewMyException1("
请选择路径!
if(Exist.exists())
已存在加密文件,请先删除,再进行加密!
if(b.equals("
请输入密钥!
else
n=Integer.parseInt(t2.getText());
read1=newFileReader(path);
write1=newFileWriter("
+FileName,true);
inti;
while((i=read1.read())!
write1.write((char)(i+n));
write1.close();
JOptionPane.showMessageDialog(null,"
加密成功"
"
祝贺您"
JOptionPane.PLAIN_MESSAGE);
t2.setText("
catch(IOExceptione1)
catch(MyException1e2)
{
}
classunkeyerimplementsActionListener//解密按钮监听事件
if(a.equals("
thrownewMyException1("
if(Exist.exists())
已存在解密密文件,请先删除,再进行解密!
if(b.equals("
else
n=Integer.parseInt(t2.getText());
read1=newFileReader(path);
write1=newFileWriter("
inti;
while((i=read1.read())!
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数据库管理范例: