• 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

  • 相关阅读:
    linux中断子系统
    注释规范
    linux下C获取文件的大小
    oracle 11g 修改内存示例
    联想system sr650安装windows
    iphone 手机音乐制作
    canon dpp 编辑相机raw软件
    浪潮nf5270m5 安装2012
    三种刻录工具及用法
    centos7.5 连接存储配置iscsi
  • 原文地址:https://www.cnblogs.com/zhuyue-study/p/8687022.html
Copyright © 2020-2023  润新知