ajva课程设计加密与解密大学毕设论文.docx
《ajva课程设计加密与解密大学毕设论文.docx》由会员分享,可在线阅读,更多相关《ajva课程设计加密与解密大学毕设论文.docx(13页珍藏版)》请在冰点文库上搜索。
ajva课程设计加密与解密大学毕设论文
JAVA课程设计报告
题目
加密与解密
院系
班级
学号
姓名
目录
1设计分析5
1.1设计目的5
1.2设计题目5
1.3设计任务5
2设计内容6
2.1需求分析6
2.1.1问题描述6
2.1.2基本要求6
2.2程序流程7
3程序相关问题8
3.1程序解决的核心问题8
3.2程序源代码8
3.3程序执行界面12
4总结与展望14
5参考文献15
1设计分析
1.1设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
1.2设计题目
采用图形用户界面,建立菜单。
(1)给定任意一个文本文件,进行加密,生成另一个文件。
(2)对加密后的文件还原。
1.3设计任务
通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用java语言进行面向对象程序设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
2设计内容
2.1需求分析
2.1.1问题描述
通过编程,实现“加密与解密”功能。
给定任意一个文本文件,进行加密,生成另一个文件。
对加密后的文件还原。
2.1.2基本要求
采用图形用户界面,建立菜单
(1)给定任意一个文本文件,进行加密,生成另一个文件。
(2)对加密后的文件还原。
2.2程序流程
3程序相关问题
3.1程序解决的核心问题
利用文件的输入输出流,按字符读取文件内容,把读取的内容,注意进行处理后,在重新写入新文件,实现文件加密。
用到的类:
FileRead,FileWrite.
添加窗体并布置面板,中间用到了,弹出对话框的事件。
设计的类有,Frame,Panel,JOptionPane。
文件选择器的载入。
通过为按钮添加事件监听,来实现文件选择器的触发操作。
用到的类为:
JFileChooser。
自定义异常的种类,实现异常的灵活应用。
适当的调整程序的终止点或者循环点。
3.2程序源代码
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
classMyframeextendsFrameimplementsActionListener{
FileDialogfiledialog_save,filedialog_load;
Buttonbutton1,button2;
Labellabel;
MenuBarbar;
Menumenu;
MenuItemitemOpen,itemSave;
TextAreatexta;
Myframe(Strings)//创建对话框
{
super(s);
texta=newTextArea(38,160);
button1=newButton("加密");
button2=newButton("解密");
menu=newMenu("文件");
itemOpen=newMenuItem("打开");
itemSave=newMenuItem("保存");
label=newLabel("文件浏览窗口");
itemOpen.addActionListener(this);
itemSave.addActionListener(this);
button1.addActionListener(this);
button2.addActionListener(this);
filedialog_save=newFileDialog(this,"保存文件对话框",FileDialog.SAVE);
filedialog_load=newFileDialog(this,"打开文件对话框",FileDialog.LOAD);
filedialog_save.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
filedialog_save.setVisible(false);
}
});
filedialog_load.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
filedialog_load.setVisible(false);
}
});
Boxbox1=Box.createHorizontalBox();//创建一个从左到右显示其组件的box1;
Boxbox2=Box.createVerticalBox();//创建一个从上到下显示其组件的box2;
Boxbox3=Box.createVerticalBox();
Boxboxbase=Box.createVerticalBox();
Panelpanel1=newPanel();
Panelpanel2=newPanel();
setMenuBar(bar=newMenuBar());
bar.add(menu);
menu.add(itemOpen);
menu.add(itemSave);
panel1.add(button1);
panel1.add(button2);
box1.add(panel1);
box2.add(label);
panel2.add(texta);
box3.add(panel2);
boxbase.add(box1);
boxbase.add(box2);
boxbase.add(box3);
add(boxbase);
setLayout(newFlowLayout());
setBounds(100,0,1200,750);
setVisible(true);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}//“关闭”窗口事件;
publicvoidactionPerformed(ActionEvente)//查找读入文件
{
if(e.getSource()==itemOpen){
filedialog_load.setVisible(true);
texta.setText(null);
Strings;
if(filedialog_load.getFile()!
=null){
try{
Filefile=newFile(filedialog_load.getDirectory(),
filedialog_load.getFile());
FileReaderfile_reader=newFileReader(file);//读取字符流
BufferedReaderin=newBufferedReader(file_reader);
while((s=in.readLine())!
=null)
texta.append(s+'\n');
in.close();
file_reader.close();
}catch(IOExceptione1){
}
}
}
if(e.getSource()==itemSave)//查找写入的文件
{
filedialog_save.setVisible(true);
if(filedialog_save.getFile()!
=null){
try{
Filefile=newFile(filedialog_save.getDirectory(),
filedialog_save.getFile());
FileWritertofile=newFileWriter(file);//读取字符流
BufferedWriterout=newBufferedWriter(tofile);
out.write(texta.getText(),0,(texta.getText()).length());
out.close();
tofile.close();
}catch(IOExceptione2){
}
}
}
if(e.getSource()==button1){
chara[]=texta.getText().toCharArray();//把text中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]中
texta.setText(null);
intn;
charsecret='';
for(inti=0;icharc=(char)(secret^a[i]);//进行异或运算
texta.append(""+c);
}
}
if(e.getSource()==button2){
chara[]=texta.getText().toCharArray();
texta.setText(null);
intn;
charsecret='';
for(inti=0;icharc=(char)(secret^a[i]);//再次异或运算,即还原
texta.append(""+c);
}
}
}
}
publicclassE1{
publicstaticvoidmain(Stringargs[]){
Myframeframe=newMyframe("加密与解密");
};
}
3.3程序执行界面
图2进入程序的主页面
图2输入内容
图3加密之后
图4解密之后
4总结与展望
通过这次课程设计,我学到了很多。
课本的内容虽说是基础,是一切的根本,但是学习基本内容和应用编程,简直就是两个天地。
一些编程的思想不是靠基础知识就能学到的,比如文件加密,开始接触到这个题目,第一反应就是,我没学过关于文件加密的内容啊,该怎么办啊。
但是当我听了老师的提醒后,才恍然醒悟,加密不一定是你没学的知识,也许它就是用你已经有的知识的变形和应用。
所以,知识的应用是灵活多态的。
有些知识虽然我们懂了,但是真正去应用时,却会捉襟见肘。
比如一个类的程序段,什么时候该用内部类什么时候该用外部类,我们怎么去权衡。
什么样的变量可以在哪个部分去调用,都需要我们在实践应用中去加强认识。
不只是通过死记硬背就能灵活应用的。
知识的海洋是无限大的,我们手头中有的资源也是无穷无尽的每次编程,不可能一点问题都没有。
总有这样和那样的难题,出现在我们思维的盲区。
我们要充分利用好自己的帮助文档和网上的资源,不要太执着于自己的知识层面,出去荡荡资料,会发现原来这个问题如此简单就可以解决。
这次课程设计后,我的学习目标和手段,有了新的改观,不在整天肯书本了,我要用自己学到的知识应用到生活中去编程,去实践,从而磨练自己的编程思维和手法。
多看网上的使用编程实例,练习自己的编程思维,学习新方法新思路。
5参考文献
[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数据库管理范例: