• 20155218 《Java程序设计》实验三(Java面向对象程序设计)实验报告


    20155218 《Java程序设计》实验三(Java面向对象程序设计)实验报告

    一、实验内容及步骤

    (一)编码标准

    在IDEA中使用工具(Code->Reformate Code)把代码重新格式化。

    (二)在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

    • 要求:提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

    (三)完成重构内容

    • 要求:下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
      搭档原代码截图:
      原代码在该用类的地方使用了结构体并且每次打印角色信息都这么写代码违反了DRY原则,造成代码重复。
      修改之后

    (四)以结对的方式完成Java密码学相关内容的学习

    -凯撒密码:

    import java.util.Scanner;
    /**
     * 密码:凯撒密码
     * */
    public class Caeser {
        public static void main(String[] args) {
            System.out.println("[A 加密][J 解密],Please Choose One");
            Scanner c=new Scanner(System.in);//创建Scanner键盘输入对象
            String  s1=c.nextLine();//获取本行的字符串
            if(s1.equalsIgnoreCase("A")){
            System.out.println("请输入明文:");
                Scanner sc=new Scanner(System.in);
                String s=sc.nextLine();
                System.out.println("请输入密钥:");
                Scanner sc1=new Scanner(System.in);
                int key=sc1.nextInt();//将下一个输入项转换成int类型
                Encryption(s, key);
            }else if(s1.equalsIgnoreCase("J")){
    
                System.out.println("请输入密文:");
                Scanner sc=new Scanner(System.in);
                String s=sc.nextLine();
                System.out.println("请输入密钥:");
                Scanner sc1=new Scanner(System.in);
                int key=sc1.nextInt();//将下一个输入项转换成int类型
                Decrypt(s, key);//調用解密方法
            }
        }
        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;//移动key%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;//移动key%26;
                    if(c<'A')
                        c+=26;
                    if(c>'Z')
                        c-=26;
                }
                string+=c;//将解密后的字符串连成字符串
            }
            System.out.println(str+" 加密后为: "+string);
        }
    
    }
    

    -RSA密码:

    三、总结与分析

    (一)遇到的问题及解决方案:

    • 问题一:
      做该实验的时候“*”出现了问题。
    • 解决方案:因为“”表示通配符,不会运行后面的语句。将“”换成“x”即可。
    • 问题二:

    ( 二)PSP

    步骤 耗时 百分比)
    需求分析 10min 11.11%
    设计 15min 16.66%
    代码实现 40min 44.44%
    测试 5min 5.55%
    分析总结 20min 22.22%
  • 相关阅读:
    2017 Wuhan University Programming Contest (Online Round) Lost in WHU 矩阵快速幂 一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开。
    2017 Wuhan University Programming Contest (Online Round) C. Divide by Six 分析+模拟
    2017 Wuhan University Programming Contest (Online Round) B Color 树形dp求染色方法数
    GCD
    HighCharts SVN IReport进行PDF报表设计--模板
    项目二:品优购 第二天 AngularJS使用 brand商品页面的增删改查
    项目二 品优购第一天
    solr第一天 基础增删改查操作
    solr第二天 京东案例 课程文档 有用
    solr第二天 京东案例
  • 原文地址:https://www.cnblogs.com/xzh1996/p/6815810.html
Copyright © 2020-2023  润新知