zoukankan      html  css  js  c++  java
  • 20145205 实验一 Java开发环境的熟悉

    实验内容

    • 命令行下Java程序开发
    • IDEA下Java程序开发、调试
    • 练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序)
    • 实现凯撒密码,并进行测试

    实验要求

    使用JDK编译、运行简单的Java程序;
    使用Eclipse 编辑、编译、运行、调试Java程序。

    实验步骤

    前期准备
    预先安装好JDK,并配置好环境变量;
    继续下载idealC-2016.1.1,安装完毕后在Eclipse界面中配置JDK,为后期运行Eclipse调试程序做准备。
    需求分析
    实现凯撒密码,并进行测试;
    需要一个主类,设置主函数,提供输入、输出功能,实现加法密码加密解密;
    需要一个加密类,一个解密类,提供对于输入的明文、密文和输入的密钥进行对应的加密、解密这样一个算法,而且可以供主函数调用;
    设计
    主类的设计:
    该类不含主函数,供调用以及输出输出和跳转使用;
    设计私有成员变量result和flag,result用来记录各个功能函数的计算结果,flag用来判断除法运算是否合法;
    设计四个计算功能的函数,分别实现加减乘除功能,并通过this.result来返回计算结果,通过this.flag返回判断是否合法的结果;
    设计两个取值功能的函数,因为result和flag是私有成员变量,不能由别的类直接进行取值,所以设计两个取值的函数,分别为getResult()和isFlag()。
    主类的设计:
    首先要定义接口:java.util.Scanner;,提供用户输入的功能;
    定义主函数,记录三个输入变量,分别是左右操作数(double型),以及中间的运算符(字符串型);
    定义主类类变量,实现调用加密、解密类的功能,针对所需要进行加密或是解密调用不同功能的功能函数,进而实现加密或是解密;
    将结果进行输出。
    代码实现 & 测试
    Eclipse环境下开发:
    依据题目,根据已学JAVA知识,进行不同块的代码编写。
    主类代码:
    ```
    package cc.openhome;

      import java.util.Scanner;
      public class shiyan1_1 {
      public static void main(String args[]) throws Exception {
        System.out.println("输入[加密]进行加密[解密]进行解密,请选择");
        Scanner c = new Scanner(System.in);// 第四章,P108创建Scanner对象
        String s1 = c.nextLine();          // 获取本行的字符串
        if (s1.equalsIgnoreCase("加密")) {// 第六章P181 判断变量s1与A是否相等,忽略大小 
            System.out.println("请输入明文:");
            Scanner shuru = new Scanner(System.in);
            String s = shuru.nextLine();
            System.out.println("请输入密钥(PS:请牢记密钥):");
            Scanner miyao = new Scanner(System.in);
            int key = miyao.nextInt();// 将下一个输入项转换成int类型
            Encryption(s, key);// 调用Encryption方法
        } else if (s1.equalsIgnoreCase("解密")) {
            System.out.println("请输入密文:");
            Scanner shuru = new Scanner(System.in);
            String s = shuru.nextLine();
            System.out.println("请输入密钥:");
            Scanner miyao = new Scanner(System.in);
            int key = miyao.nextInt();
            Decrypt(s, key);// 调用Decrypt方法
        }
    }
    public static void Encryption(String str, int k) {      // 加密
        String string = "";
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c >= 'a' && c <= 'z') // 如果字符串中的某个字符是小写字母
            {
                c += k % 26; // 移动key%26位
                if (c < 'a')
                    c += 26; // 向左超界
                if (c > 'z')
                    c -= 26; // 向右超界
            } else if (c >= 'A' && c <= 'Z') // 如果字符串中的某个字符是大写字母
            {
                c += k % 26;
                if (c < 'A')
                    c += 26;// 向左超界
                if (c > 'Z')
                    c -= 26;// 向右超界
            }
            string += c;// 将加密后的字符连成字符串
        }
        System.out.println(str + " 加密后为:" + string);
    }
    public static void Decrypt(String str, int n) {// 解密
        int k = Integer.parseInt("-" + n);
        String string = "";
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c >= 'a' && c <= 'z') // 如果字符串中的某个字符是小写字母
            {
                c += k % 26; // 移动key%26位
                if (c < 'a')
                    c += 26; // 向左超界
                if (c > 'z')
                    c -= 26; // 向右超界
            } else if (c >= 'A' && c <= 'Z') // 如果字符串中的某个字符是大写字母
            {
                c += k % 26;
                if (c < 'A')
                    c += 26;// 同上
                if (c > 'Z')
                    c -= 26;// 同上
            }
            string += c;// 将解密后的字符连成字符串
        }
        System.out.println(str + " 解密后为:" + string);
    }
    }
    
    
      ```
    

    调试
    Eclipse中调试很简单,即可编译运行;
    Eclipse在编译时发现错误后,软件会给各种不改变原逻辑的解决选项,所以出现错误后解决起来比较方便;
    测试
    进行测试时,进行了输入分别是大写、小写、大小写混合输入的明文、密文,程序发聩良好

    其他(感悟、思考等,可选)

    第一次实验,因为我之前用java编写过其他的程序,所以开始的时候不像第一次自己敲代码那样不知所措,而且我比较幸运的分到了这个我较为熟悉的题目,在开始设计时较为轻松,而且我设计的代码中借鉴许多我们之前所学章节内知识,在输入密文、明文和密钥时,用到了第四章的Scanner函数,进行字符串的输入,对于不同功能的跳转用到了所学的equals ,通过提前设好的判断字符串进行判断跳转,这个方法可以使用第十章所学的流进行替换,在本周博客中有提及。而且之前在C语言中的学习中恰好编写过类似的加法密码,所以写起来有所借鉴,但是java是类的调用,C语言中直接是函数的调用,两者有所区别。
    本次实验我自己也有许多需要反思的地方,虽然设计思路比较清楚,但是开始在跳转地方卡住了,忘记了对输入对象的完全性比较,而且之后是变量的定义中,对于字符串的整合自己也之前也是不会,是在网络查找类似代码后才编写的string += c,而且因为自己对于代码也进行多次修改,有时候自己的修改后还不如修改前,但是因为之前一直在托管代码,这次编程软件崩溃也从备份处虽然不是完全修改好的代码, 但是因是自己修改的,所以重新修改时很快完成,也让我初次感到托管代码的好处,但是自己的码代码能力也要增强,虽然是一个简单的代码,也花费了不少的时间,码的过程中也需要各种翻阅资料,在之后的学习和实践需要加强。
    PS:因为软件崩溃,之前运行时没及时截图,之后恢复后再编辑补上。

    学习进度条

    步骤 耗时 :100分钟 百分比
    需求分析 10分钟 10%
    设计 5分钟 5%
    代码实现 45分钟 45%
    测试 10分钟 10%
    分析总结 30分钟 30%

    参考资料

  • 相关阅读:
    Exchange 2013与 Office Web Apps 整合
    SharePoint2013 以其他用户登录和修改AD域用户密码 功能
    sharepoint 2010 自定义页面布局
    sharepoint 2010 记录管理 对象模型
    SharePoint2010 对象模型 关联列表
    在SharePoint Server 2010中更改“我的网站”
    xenapp 6.5 客户端插件第一次安装总是跳到官网
    如何解决在Windows Server 2008 R2 上安装证书服务重启后出现 CertificationAuthority 91错误事件
    在Win7 Hyper-v虚拟机中挂接真实机的声卡
    win8 中如何删除 共享文件夹 用户名和密码
  • 原文地址:https://www.cnblogs.com/20145205y/p/5376354.html
Copyright © 2011-2022 走看看