1、 课程设计报告 (本科) 课程: JAVA 课程设计 学号: 1310211 姓名: 卫晓燕 班级: 计算机科学与技术 教师: 凡 时间: 20140601 计算机科学与技术系 1 设计名称: 名称:文本文档的加密与解密 设计内容、目的与要求: 设计内容:图形化界面编程,编写一个加密与解密程序 目的与要求: ( 1)采用图形用户界面; ( 2)给定任意一个文本文件,进行加密,生成另一个文件; ( 3)对加密后的文件还原 计划与进度安排: 计划与进度: 一:需求分析 二:总体设计 2.1 包的描述 2.2 类的描述 三:页面设计与分析 四:设计体会与建议 设计过程、步骤(可加页): 一需求分析
2、(1)给定任意一个文本文件,进行加密,生成另一个文件。 (2)对加密后的文件还原。 二总体设计 2.1 包的描述 导入了 java.awt; java.awt.event; java.io; javax.swing 等包。 2.2 类的描述 Myframe 类; E1 类。其中 Myframe 类继承 Frame 类;可以扩展 Frame的功能并且可以实例化的多种功能,这个类也实现了 ActionListener这个接口,它是 Java 中关于事件处理的一个接口, ActionListener 用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件
3、的 addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。 结果与分析(可以加页): 三:页面设计与分析 2 图 3.1 显示页 面 代码实现: addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); 3 图 3.2 选择所要加密的文件 代码实现: public void actionPerformed(ActionEvent e) /查找读入文件 if(e.getSource()=it
4、emOpen) filedialog_load.setVisible(true); texta.setText(null); String s; if(filedialog_load.getFile()!=null) try File file=new File(filedialog_load.getDirectory(),filedialog_load.getFile(); 4 FileReader file_reader=new FileReader(file);/读取字符流 BufferedReader in=new BufferedReader(file_reader); while(
5、s=in.readLine()!=null) texta.append(s+n); in.close(); file_reader.close(); catch (IOException e1) 图 3.3 加密后的文件 代码实现: if(e.getSource()=button1) 5 char a=texta.getText().toCharArray(); /把 texta 中获得的文本,进行 初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组 a中 */ texta.setText(null); int n; char secret= ; for(int i=0;ia.
6、length;i+) char c=(char)(secretai);/进行异或运算 texta.append(“+c); 6 图 3.4 解密后的文件 代码实现: if(e.getSource()=button2) char a=texta.getText().toCharArray(); texta.setText(null); int n; char secret= ; for(int i=0;ia.length;i+) char c=(char)(secretai);/再次异或运算,即还原 texta.append(“+c); 总体程序代码见附录部分 设计体会与建议: 设计体会: 在本
7、次课程设计的过程中,我学到了很多,不仅对所学的知识有一个新的认识,认识到要做一个课程设计不仅需要我们有一种很严谨的态度和扎实的知识作为基础和后盾的,还要将理论知识与实际课题相结合起来,不仅培养了独立思考、动手操作的能力,在各种 其它能力上也都有了提高。通过此次课程设计,将本学期所学的 JAVA 知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过 通过上网查找资料和在我们同组成员的努力配合尝试下, 还是很好的完成了。这次课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资源。 在以后的生活中不管做什么事都需要有一颗坚持不懈的心,
8、在遇到困难时要有毫不气馁迎难而上的勇气,要脚踏实地一步一步的做下去,不能急于求成。 附录: 一:程序代码 二:参考文献 程序代码: package jm; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; class Myframe extends Frame implements ActionListener FileDialog filedialog_save,filedialog_load; Button button1,button2; Label label; Men
9、uBar bar; 7 Menu menu; MenuItem itemOpen,itemSave; TextArea texta; Myframe(String s) /创建对话框 super(s); texta= new TextArea(38,160); button1= new Button(“加密 “); button2= new Button(“解密 “); menu=new Menu(“文件 “); itemOpen=new MenuItem(“打开 “); itemSave=new MenuItem(“保存 “); label=new Label(“文件浏览窗口 “); ite
10、mOpen.addActionListener(this); itemSave.addActionListener(this); button1.addActionListener(this); button2.addActionListener(this); filedialog_save=new FileDialog(this,“保存文件对话框 “,FileDialog.SAVE); filedialog_load=new FileDialog(this,“打开文件对话框 “,FileDialog.LOAD); filedialog_save.addWindowListener(new W
11、indowAdapter() public void windowClosing(WindowEvent e) filedialog_save.setVisible(false); ); filedialog_load.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) filedialog_load.setVisible(false); ); Box box1=Box.createHorizontalBox(); /创建一个从左到右显示其组件的 box1; Box box2=Box.cr
12、eateVerticalBox(); /创建一个从上到下显示其组件的 box2; Box box3=Box.createVerticalBox(); Box boxbase=Box.createVerticalBox(); Panel panel1=new Panel(); Panel panel2=new Panel(); setMenuBar(bar=new MenuBar(); bar.add(menu); menu.add(itemOpen); menu.add(itemSave); 8 panel1.add(button1); panel1.add(button2); box1.ad
13、d(panel1); box2.add(label); panel2.add(texta); box3.add(panel2); boxbase.add(box1); boxbase.add(box2); boxbase.add(box3); add(boxbase); setLayout(new FlowLayout(); setBounds(100,0,1200,750); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(
14、0); ); /“关闭 ”窗口事件 ; public void actionPerformed(ActionEvent e) /查找读入文件 if(e.getSource()=itemOpen) filedialog_load.setVisible(true); texta.setText(null); String s; if(filedialog_load.getFile()!=null) try File file=new File(filedialog_load.getDirectory(),filedialog_load.getFile(); FileReader file_read
15、er=new FileReader(file);/读取字符流 BufferedReader in=new BufferedReader(file_reader); while(s=in.readLine()!=null) texta.append(s+n); in.close(); file_reader.close(); catch (IOException e1) 9 if(e.getSource()=itemSave) /查找写入的文件 filedialog_save.setVisible(true); if(filedialog_save.getFile()!=null) try Fi
16、le file=new File(filedialog_save.getDirectory(),filedialog_save.getFile(); FileWriter tofile=new FileWriter(file); /读取字符流 BufferedWriter out=new BufferedWriter(tofile); out.write(texta.getText(),0,(texta.getText().length(); out.close(); tofile.close(); catch (IOException e2) if(e.getSource()=button1
17、) char a=texta.getText().toCharArray(); /把 texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组 a中 texta.setText(null); int n; char secret= ; for(int i=0;ia.length;i+) char c=(char)(secretai); /进行异或运算 texta.append(“+c); if(e.getSource()=button2) char a=texta.getText().toCharArray(); texta.setText(null); int n; char secret= ; for(int i=0;ia.length;i+) char c=(char)(secretai); /再次异或运算,即还原