加密与解密Java课程设计.docx
- 文档编号:10842005
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:14
- 大小:190.47KB
加密与解密Java课程设计.docx
《加密与解密Java课程设计.docx》由会员分享,可在线阅读,更多相关《加密与解密Java课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
加密与解密Java课程设计
1设计时间
2013年6月8日-2013年6月14日
2设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
3设计题目
采用图形用户界面,建立菜单。
(1)给定任意一个文本文件,进行加密,生成另一个文件。
(2)对加密后的文件还原。
4设计任务
通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用java语言进行面向对象程序设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
5设计内容
5.1需求分析
5.1.1问题描述
通过编程,实现“加密与解密”功能。
给定任意一个文本文件,进行加密,生成另一个文件。
对加密后的文件还原。
5.1.2基本要求
采用图形用户界面,建立菜单
(1)给定任意一个文本文件,进行加密,生成另一个文件。
(2)对加密后的文件还原。
5.2程序流程
5.3程序解决的核心问题
利用文件的输入输出流,按字符读取文件内容,把读取的内容,注意进行处理后,在重新写入新文件,实现文件加密。
用到的类:
FileRead,FileWrite.
添加窗体并布置面板,中间用到了,弹出对话框的事件。
设计的类有,Frame,Panel,JJOptionPane。
文件选择器的载入。
通过为按钮添加事件监听,来实现文件选择器的触发操作。
用到的类为:
JFileChooser。
自定义异常的种类,实现异常的灵活应用。
适当的调整程序的终止点或者循环点。
5.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);
}
}
}
5.5程序执行界面
图2为进入程序的主页面
图3路径为空时弹出上页面
③
图4未输入密钥时弹出上界面
图5条件满足,点击加密按钮时,弹出上界面
图6已经存在此文件的加密文件时,准备再次加密时弹出上界面
图7条件满足,点击解密按钮时,弹出上界面
图8已经存在选中文件的解密文件,试图再次解密时,弹出上界面
6总结与展望
通过这次课程设计,我学到了很多。
课本的内容虽说是基础,是一切的根本,但是学习基本内容和应用编程,简直就是两个天地。
一些编程的思想不是靠基础知识就能学到的,比如文件加密,开始接触到这个题目,第一反应就是,我没学过关于文件加密的内容啊,该怎么办啊。
但是当我听了老师的提醒后,才恍然醒悟,加密不一定是你没学的知识,也许它就是用你已经有的知识的变形和应用。
所以,知识的应用是灵活多态的。
有些知识虽然我们懂了,但是真正去应用时,却会捉襟见肘。
比如一个类的程序段,什么时候该用内部类什么时候该用外部类,我们怎么去权衡。
什么样的变量可以在哪个部分去调用,都需要我们在实践应用中去加强认识。
不只是通过死记硬背就能灵活应用的。
知识的海洋是无限大的,我们手头中有的资源也是无穷无尽的每次编程,不可能一点问题都没有。
总有这样和那样的难题,出现在我们思维的盲区。
我们要充分利用好自己的帮助文档和网上的资源,不要太执着于自己的知识层面,出去荡荡资料,会发现原来这个问题如此简单就可以解决。
这次课程设计后,我的学习目标和手段,有了新的改观,不在整天肯书本了,我要用自己学到的知识应用到生活中去编程,去实践,从而磨练自己的编程思维和手法。
多看网上的使用编程实例,练习自己的编程思维,学习新方法新思路。
参考文献
[1]屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:
北京希望电子出版社,2005
[2]白勇.用B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,2003,10(4):
100~130.
[3]JiangGuo,YuehongLiao,BehzadParviz.ASurveyofJ2EEApplicationPerformanceManagementSystems[J],ProceedingsoftheIEEEInternationalConferenceonWebServices(ICWS'04),2004.6(5):
17~32.
[4]VB数据库管理范例:
成绩评定
成绩:
教师签字:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 加密与解密 Java课程设计 加密 解密 Java 课程设计