20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

一、实验报告封面

  • 课程:Java程序设计 班级:1652班 姓名:朱越 学号:20165227

  • 指导教师:娄嘉鹏 实验日期:2018年4月2日

  • 实验时间:13:45 - 15:25 实验序号:实验一

  • 实验名称:Java开发环境的熟悉

  • 实验题目:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)

  • 实验内容:
    1.使用JDK编译、运行简单的Java程序;
    2.使用IDEA 编辑、编译、运行、调试Java程序。

  • 实验要求:
    1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;
    2.完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);
    3.实验报告中统计自己的PSP(Personal Software Process)时间;
    4.严禁抄袭。

  • 实验知识点:

  1. JVM、JRE、JDK的安装位置与区别;
  2. 命令行运行javac;java;javac -cp; java -cp;
  3. PATH,CLASSPATH,SOURCEPATH的设定方法与应用;
  4. 包管理:package;import;javac -d ;
  5. Eclipse(Netbeans)管理Java项目,调试:断点、单步执行等;
  6. Java基础语法:类型与类型转换;变量;运算符;流程控制等;
  7. JDK帮助文档的使用。

二、实验步骤

(一)命令行下Java程序开发

  • 1、打开Linux虚拟机中的终端进行如下操作

  • 2、通过vim Hello.java 来编辑代码,并用javac -d . Hello.java 来编译代码,最后用java zy.Hello 运行带包代码

(二)IDEA下Java程序开发、调试

  • 打开IDEA新建Java项目

  • 运行代码用Alt+Shift+F10 快捷键

  • 设置断点,直接在代码左侧单击右键

  • 运行断点用Alt+Shift+F9 快捷键;继续向下单步执行可使用Step IntoF7 和Step OverF8

  • 或者直接F9 快捷键运行完毕

  • 条件断点:

  • 在断点出单击右键出现设置

  • 从上一个断点通过快捷键F9 执行至条件断点

(三)练习

  • 要求:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)
  • 凯撒密码:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。位数就是凯撒密码加密和解密的密钥。
1、代码
  • 测试代码
import java.io.*;
import java.util.Scanner;

public class K {
    public static void main(String[] args)  {
        Caeser person = new Caeser();
        System.out.println("========================================");
        System.out.println("==========加密输入1,解密输入2==========");
        System.out.println("========================================");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        if (n == 1) {
            System.out.print("明文:");
            Scanner scanner1 = new Scanner(System.in);
            String m = scanner1.nextLine();
            System.out.print("密钥:");
            Scanner scanner2 = new Scanner(System.in);
            int k = scanner2.nextInt();
            try {
                String serct = person.encrypt(m, k);
                System.out.print("密文是:" + serct);
            }
            catch (E e){
                System.out.println(e.warnMess());
            }
        } else {
            System.out.print("密文:");
            Scanner scanner1 = new Scanner(System.in);
            String m = scanner1.nextLine();
            System.out.print("密钥:");
            Scanner scanner2 = new Scanner(System.in);
            int k = scanner2.nextInt();
            try {
                String source = person.decrypt(m, k);
                System.out.print("明文是:" + source);
            }
            catch (E e){
                System.out.println(e.warnMess());
            }
        }
    }
}
  • 密码算法
public class Caeser {
    String encrypt(String sourceString, int password) throws E{   
        char[] c = sourceString.toCharArray();
        int m = c.length;
        for (int i = 0; i < m; i++) {
            if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){
                throw new E(sourceString);
            }
            int mima = (c[i] - 'a' + password) % 26 + 'a';          
            c[i] = (char) mima;
        }
        return new String(c);                                      
    }

    String decrypt(String sourceString, int password) throws E{   
        char[] c = sourceString.toCharArray();
        int m = c.length;
        for (int i = 0; i < m; i++) {
            if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){
                throw new E(sourceString);
            }
            int n = c[i] - 'a' - password;
            if (n <= 0) {
                n = n + 26;
            }
            int mima = n % 26 + 'a';         
            c[i] = (char) mima;
        }
        return new String(c);                          
    }
}
  • 异常代码
public class E extends Exception{
    String message;
    public E(String sourceString){
        message = "输入错误!";
    }
    public String warnMess(){
        return message;
    }
}
测试
  • 正常情况
  • 异常情况
  • 边界情况
3、IDEA测试
  • 正常情况

  • 异常情况

  • 边界情况

三、实验过程中遇到的问题

  • 会出现密文出现乱码的问题,已解决

四、实验体会与总结

  • 在做前两个实验的过程中让我对代码的理解和对IDEA调试方面的理解都加深了,弥补了之前对与断点调试的理解运用不恰的问题
  • 对于第三个练习实验,凯撒密码算法的编写让我思考了很久,在这里我又发现了自己对于Java代码和C语言功底的不足,通过资料查找和时间才算是完成了这个实验,也算是触及了密码算法实现的一角,加深了对其的理解
步骤 耗时 百分比
需求分析 7min 5%
设计 10min 7%
代码实现 100min 73%
测试 5min 4%
分析总结 15min 11%

参考资料

1.《Eclipse精粹(Eclipse Distilled)》

2.《Java语言调试技术》

3.《软件调试的艺术(电子版)》

4.《构建之法 (电子版)》,著者邹欣Blog

posted @ 2018-04-01 16:15  朱越  阅读(296)  评论(0编辑  收藏  举报