java文件加密解密課程設計_第1頁
java文件加密解密課程設計_第2頁
java文件加密解密課程設計_第3頁
java文件加密解密課程設計_第4頁
java文件加密解密課程設計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGE21軟件學院課程設計報告書課程名稱設計題目專業(yè)班級學號姓名指導教師年月目錄1.設計時間………….……..……12.設計目的…………….…..……13.設計任務…………….…..……14.設計內容………….………..…14.1需求分析………………….14.1.1問題描述……………….………………...…14.1.2基本要求……………….………………...…14.2總體設計…………………..….14.2.1包的描述…….……………14.2.2類的描述……….…………14.2.3類之間的關系…………….24.3詳細設計………….………..….24.3.1類圖……………….………..24.3.2頁面設計………….……….34.4測試與分析……….………..….64.5程序與代碼…………………….85.總結與展望………..…………..17參考文獻…………….…….……..……18課程設計成績評定……..……………181設計時間2011年6月13日-2011年6月19日2設計目的《面向對象程序設計》是一門實踐性很強的計算機專業(yè)基礎課程,課程設計是學習完該課程后進行的一次較全面的綜合練習。其目的在于通過實踐加深學生對面向對象程序設計的理論、方法和基礎知識的理解,掌握使用Java語言進行面向對象設計的基本方法,提高運用面向對象知識分析實際問題、解決實際問題的能力,提高學生的應用能力。3設計任務文本文件的加密與解密4設計內容4.1需求分析4.1.1問題描述(1)給定任意一個文本文件,進行加密,生成另一個文件。(2)對加密后的文件還原。4.1.2基本要求采用圖形用戶界面,建立菜單。4.2總體設計4.2.1包的描述導入了java.awt;java.awt.event;java.io;javax.swing等包。4.2.2類的描述KeyPay類:繼承JFrame類;有構造方法KeyPay(),方法voidactionPerformed(ActionEventevent),方法voidjian(),方法voidshuchu(),方法voidqu(),主方法staticvoidmain(Stringargs[]),方法Stringmzi(),方法voidbaocun()。AA類:實現(xiàn)了Serializable接口,用來對象系列化,把文本內容變?yōu)槎M制的數(shù)據(jù)流;有構造方法AA(Stringa),構造方法AA(),有方法intgetShu(),方法voidsetShu(intshu)。4.2.3類之間的關系類KeyPay中的方法voidbaocun()用到類AA進行實例化,然后調用方法intgetShu()。4.3詳細設計4.3.1類圖KeyPay-shu1:String-jl1:JLabel-jl2:JLabel-cc:String-queding:JButton-xuanz:JButton-jiami:JButton-jiemi:JButton-lujin:JTextField-key:JTextField-nr:JTextArea-qu:JRadioButton-xie:JRadioButton-fz:ButtonGroup-f:File+<<Constructor>>KeyPay()+jian():void+shuchu():void+qu():void+main(Stringargs[]):void+baocun():voidAA-cc:String-shu:int+AA()+getShu():int+setChu():void+AA(String)圖1KeyPay類圖圖2AA類圖4.3.2頁面設計圖3顯示頁面圖4選擇所要加密的文本文件圖5取出加密前文本文件的內容圖6加密后界面圖7解密成功后的界面圖8把內容寫入到指定的文本文檔中圖9寫入后的文本文檔頁面4.4測試與分析(1)不輸入路徑的情況圖10不輸入路徑時頁面(2)路徑輸入錯誤圖11路徑錯誤頁面(3)密碼錯誤圖12密碼錯誤頁面4.5程序代碼importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjavax.swing.*;publicclassKeyPayextendsJFrame{intshu1;JLabeljl1,jl2;Stringcc;JButtonqueding,xuanz,jiami,jiemi;JTextFieldlujin,key;JTextAreanr;JRadioButtonqu,xie;ButtonGroupfz;Filef;publicKeyPay(){Containerc=getContentPane();JPaneljp1=newJPanel();jl1=newJLabel("輸入路徑");lujin=newJTextField(15);xuanz=newJButton("選擇");jp1.add(jl1);jp1.add(lujin);jp1.add(xuanz);c.add(jp1,BorderLayout.NORTH);nr=newJTextArea();c.add(newJScrollPane(nr),BorderLayout.CENTER);xie=newJRadioButton("寫入");qu=newJRadioButton("取出",true);fz=newButtonGroup();fz.add(qu);fz.add(xie);jl2=newJLabel("密鑰");key=newJTextField(15);jiami=newJButton("加密");jiemi=newJButton("解密");JPaneljp4=newJPanel();jp4.setLayout(newGridLayout(2,1,5,5));JPaneljp2=newJPanel();jp2.add(jl2);jp2.add(key);jp2.add(jiami);jp2.add(jiemi);jp4.add(jp2);JPaneljp3=newJPanel();queding=newJButton("確定");jp3.add(qu);jp3.add(xie);jp3.add(queding);jp4.add(jp3);c.add(jp4,BorderLayout.SOUTH);queding.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){jian();if(xie.isSelected())shuchu();if(qu.isSelected())qu();}});xuanz.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){JFileChooserfileChooser=newJFileChooser();//實例化文件選擇器fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//設置文件選擇模式,此處為文件和目錄均可if(fileChooser.showOpenDialog(KeyPay.this)==JFileChooser.APPROVE_OPTION){//彈出文件選擇器,并判斷是否點擊了打開按鈕StringfileName=fileChooser.getSelectedFile().getAbsolutePath();//得到選擇文件或目錄的絕對路徑lujin.setText(fileName);}}});jiemi.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){ObjectInputStreaminput;try{input=newObjectInputStream(newFileInputStream(lujin.getText()));intmima=Integer.parseInt(key.getText());AAac=(AA)input.readObject();if(ac.getShu()==mima){nr.setText(ac.cc);shuchu();JOptionPane.showMessageDialog(null,"解密成功!");}else{JOptionPane.showMessageDialog(null,"錯誤的密碼!");}}catch(Exceptione){//e.printStackTrace();nr.setText("無法解密");}}});jiami.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){AAa=newAA(nr.getText());key.setText(a.shu+"");try{ObjectOutputStreamoutput=newObjectOutputStream(newFileOutputStream(lujin.getText()));output.writeObject(a);output.flush();output.close();qu();baocun();}catch(Exceptione){//e.printStackTrace();nr.setText("必須選擇加密文件保存地址,文件不存在或者無法加密文件,加密文件不能含有換行");}}});setSize(380,350);setVisible(true);}publicvoidjian(){f=newFile(lujin.getText());try{f.createNewFile();}catch(IOExceptione){JOptionPane.showMessageDialog(null,"路徑錯誤!");}}publicvoidshuchu(){try{FileOutputStreamout=newFileOutputStream(f);bytebuf[]=nr.getText().getBytes();try{out.write(buf);out.flush();out.close();}catch(IOExceptione){//e.printStackTrace();}}catch(FileNotFoundExceptione){//e.printStackTrace();}}publicvoidqu(){try{FileInputStreamin=newFileInputStream(f);inta=(int)f.length();bytebuf[]=newbyte[a];try{intlen=in.read(buf);if(len!=-1) { nr.setText(newString(buf,0,len)); }elseJOptionPane.showMessageDialog(null,"文件內容為空!");}catch(IOExceptione){//e.printStackTrace();}}catch(FileNotFoundExceptione){//e.printStackTrace();}}publicstaticvoidmain(Stringarge[]){KeyPays=newKeyPay();s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidbaocun(){AAa=newAA();shu1=a.getShu();a.shu=shu1;}}classAAimplementsSerializable{Stringcc;publicintshu;publicAA(){}publicintgetShu(){returnshu;}publicvoidsetShu(intshu){this.sh

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論