版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE21软件学院课程设计报告书课程名称设计题目专业班级学号姓名指导教师年月目录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设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用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类:实现了Serializable接口,用来对象系列化,把文本内容变为二进制的数据流;有构造方法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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公积金个人贷款合同模板
- 银行授信保证合同模板
- 苗木供应商招募公告
- 标准家庭服务合同案例
- 沼气工程可行性研究
- 租房协议合同的签订技巧与流程
- 安全栏杆采购合同
- 渔业产品买卖合同
- 在线电子购销合同制作
- 药材进出口合同
- 福建省厦门市2023-2024学年高二上学期期考化学试题(含答案)
- 广东省六校联考2024-2025学年高二上学期12月月考试题 英语 含答案
- 人教版高一地理必修一期末试卷
- 山东省临沂市2023-2024学年高二上学期1月期末地理试题 附答案
- 2024-2025学年北师大版九年级上册数学期末测试综合练习题(原卷版)-A4
- 导管室工作总结课件
- 2025北京语言大学新编长聘人员招聘21人笔试备考试题及答案解析
- 派出所户籍业务培训
- 2025届四川省德阳市重点中学物理高一第一学期期末统考试题含解析
- 二年级上册语文期末总复习
- GB/T 44811-2024物联网数据质量评价方法
评论
0/150
提交评论