软件学院课程设计报告书课程名称面向对象程序设计设计题目文本文档的加密与解密专业班级财升本12-1班学号 1220970120 姓名王微微指导教师徐娇月2013年 1 月1 设计时间2013年1月14日-2013年1月18日2 设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程。
通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
3 设计任务对文件进行加密解密4 设计内容4.1 需求分析(1)给定任意一个文本文件,进行加密,生成另一个文件。
(2)对加密后的文件还原。
4.2 总体设计4.2.1 包的描述导入了java.awt; java.awt.event; java.io; javax.swing等包。
4.2.2 类的描述Myframe类;E1类。
其中Myframe类继承Frame类;可以扩展Frame的功能并且可以实例化的多种功能,这个类也实现了ActionListener这个接口,它是Java中关于事件处理的一个接口,ActionListener用于接收操作事件的侦听器接口。
对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的addActionListener 方法向该组件注册。
在发生操作事件时,调用该对象的actionPerformed 方法。
4.3 页面设计图4.3-1 显示页面代码实现:addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});图4.3-2 选择所要加密的文本文件代码实现: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=newFile(filedialog_load.getDirectory(),filedialog_load.getFile());FileReader file_reader=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){}}}图4.3-3 加密后界面代码实现:if(e.getSource()==button1){char a[]=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]中*/texta.setText(null);int n;char secret=' ';for(int i=0;i<a.length;i++){char c=(char)(secret^a[i]);//进行异或运算texta.append(""+c);}}图4.3-4 解密后的界面代码实现:if(e.getSource()==button2){char a[]=texta.getText().toCharArray();texta.setText(null);int n;char secret=' ';for(int i=0;i<a.length;i++){char c=(char)(secret^a[i]);//再次异或运算,即还原texta.append(""+c);}}4.4 程序代码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;MenuBar bar;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("文件浏览窗口");itemOpen.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 WindowAdapter(){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.createVerticalBox();//创建一个从上到下显示其组件的box2; Box box3=Box.createVerticalBox();Box boxbase=Box.createV erticalBox();Panel panel1=new Panel();Panel panel2=new Panel();setMenuBar(bar=new MenuBar());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(new FlowLayout());setBounds(100,0,1200,750);setVisible(true);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(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=newFile(filedialog_load.getDirectory(),filedialog_load.getFile());FileReader file_reader=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){}}}if(e.getSource()==itemSave)//查找写入的文件{filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null){try{File file=newFile(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){char a[]=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]中*/texta.setText(null);int n;char secret=' ';for(int i=0;i<a.length;i++){char c=(char)(secret^a[i]);//进行异或运算texta.append(""+c);}}if(e.getSource()==button2){char a[]=texta.getText().toCharArray();texta.setText(null);int n;char secret=' ';for(int i=0;i<a.length;i++){char c=(char)(secret^a[i]);//再次异或运算,即还原texta.append(""+c);}}}}public class E1{public static void main(String args[]){Myframe frame = new Myframe("加密与解密");}}}}5 总结与展望在本次课程设计的过程中,我学到了很多,不仅对所学的知识有一个新的认识,认识到要做一个课程设计不仅需要我们有一种很严谨的态度和扎实的知识作为基础和后盾的,还要将理论知识与实际课题相结合起来,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。