20172318 2017-2018-2 《程序设计与数据结构》实验3报告

20172318 2017-2018-2 《程序设计与数据结构》实验3报告

课程:《程序设计与数据结构》
班级: 1723
姓名: 陆大岳
学号:20172318
实验教师:王志强
实验日期:2018年5月10日
必修/选修: 必修

1.实验内容

public class CodeStandard {
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buffer.append("tringBuffer");
System.out.println(buffer.charAt(1));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("tring"));
System.out.println("buffer = " + buffer.toString());
if(buffer.capacity()<20)
buffer.append("1234567");
for(int i=0; i<buffer.length();i++)
System.out.println(buffer.charAt(i));
}
}

2. 实验过程及结果

实验一

实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA

参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。

在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。

public class CodeStandard {
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buffer.append("tringBuffer");
System.out.println(buffer.charAt(1));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("tring"));
System.out.println("buffer = " + buffer.toString());
if(buffer.capacity()<20)
buffer.append("1234567");
for(int i=0; i<buffer.length();i++)
System.out.println(buffer.charAt(i));
}
}
  • 按照步骤Settings ->Plugins ->Browse repositories...在idea中下载代码规范工具

  • 使用编码规约扫描对代码进行扫描并找出问题

  • 对问题进行修改之后的代码


/**
 * @author 20172318
 */
public class CodeStandard {
    public static void main(String [] args){
        final int maxCapacity= 20;
        StringBuffer buffer = new StringBuffer();
        buffer.append('S');
        buffer.append("tringBuffer");
        System.out.println(buffer.charAt(1));
        System.out.println(buffer.capacity());
        System.out.println(buffer.indexOf("tring"));
        System.out.println("buffer = " + buffer.toString());
        if(buffer.capacity()<maxCapacity) {
            buffer.append("1234567");
        }
        for(int i=0; i<buffer.length();i++) {
            System.out.println(buffer.charAt(i));
        }
    }
}

  • 使用这个代码在进行一次编码规约扫描,扫描通过

  • 研究下code菜单,发现code菜单的添加注释的功能挺好的,使用快捷键shift+Ctrl+/也很方便

实验二

在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

  • fork他的文件后 使用git pull下载文件到idea

  • 加入不少于三个JUnit单元测试用例

  • 测试成功

  • git到码云后请求合并

  • 合并成功

实验三

实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

  • 进行三项重构,主要是


  • 提交到码云

实验四

参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
提交学习成果码云链接和代表性成果截图,要有学号水印。

  • 凯撒密码
    运行:

java Caesar "Hello World!" 4

将输出“Lipps Asvph!”。这里“Hello World!”是明文,“Lipps Asvph!”是密文。

  • Java对称加密-DES算法
    Skey_DES:
    (1) 获取密钥生成器
    (2) 初始化密钥生成器
    (3) 生成密钥
    (4) 通过对象序列化方式将密钥保存在文件中
    Skey_kb:
    (1) 获取密钥
    (2) 获取主要编码格式
    (3) 保存密钥编码格式
    SEnc:
    (1) 从文件中获取密钥
    (2) 创建密码器(Cipher对象)
    (3) 初始化密码器
    (4) 获取等待加密的明文
    (5) 执行加密
    (6) 处理加密结果

  • Java非对称加密-RSA算法
    Skey_RSA:
    (1) 创建密钥对生成器
    (2) 初始化密钥生成器
    (3) 生成密钥对
    (4) 获取公钥和私钥
    Enc_RSA:
    (1) 获取公钥
    (2) 获取公钥的参数(e, n)
    (3) 获取明文整数(m)
    (4) 执行计算
    Dec_RSA:
    (1) 读取密文
    (2) 获取私钥
    (3) 获取私钥的参数(d, n)
    (4) 执行计算
    (5) 计算明文整型数对应的字符串

  • 使用密钥协定创建共享密钥

  • Java摘要算法- MD5,输入java DigestCalc abc来运行程序,其中命令行参数abc是原始数据,屏幕输出计算后的消息摘要:900150983cd24fb0d6963f7d28e17f72。

3. 实验过程中遇到的问题和解决过程

问题1:如何输入命令行参数
问题1解决方案:运行时点击图1上的图标,在如图2所示的地方输入

其他(感悟、思考等)

Java说难不难,说简单吧写博客又耗时间

参考资料

posted @ 2018-05-29 20:40  m1sty  阅读(213)  评论(0编辑  收藏  举报