2018-2019-20175334實驗三《敏捷開發與XP實踐》實驗報告

2018-2019-20175334實驗三《敏捷開發與XP實踐》實驗報告

1、實驗內容及步驟

實驗三 敏捷開發與XP實踐-1

  • 實驗三 敏捷開發與XP實踐 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的內容替換成IDEAhtml

  • 參考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安裝alibaba 插件,解決代碼中的規範問題。java

  • 在IDEA中使用工具(Code->Reformate Code)把下面代碼從新格式化,再研究一下Code菜單,找出一項讓本身感受最好用的功能。提交截圖,加上本身學號水印。git

  • 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));
    }
    }
  • 安裝alibaba插件
  • 重啓IDEA後,在代碼中右擊點擊··編碼規約掃描··
  • 規範後代碼
/**
 * CodeStandard
 *
 * @author 16487
 * @date 2019/4/28
 */
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());
        int n = 20;
        if (buffer.capacity() < n){
            buffer.append("1234567");
        }
        for (int i = 0; i < buffer.length(); i++){
            System.out.println(buffer.charAt(i));
        }
    }
}
  • Code菜單中我認爲好用的功能:
    • Surround With (使用if-else、for、while等語句包裝代碼段)) Ctrl+Alt+T
    • Comment with Line Comment ( 行註釋 ) Ctrl + /

實驗三 敏捷開發與XP實踐-2

  • 在碼雲上把本身的學習搭檔加入本身的項目中,確認搭檔的項目加入本身後,下載搭檔實驗二的Complex代碼,加入很多於三個JUnit單元測試用例,測試成功後git add .; git commit -m "本身學號 添加內容";git push;算法

  • 提交搭檔項目git log的截圖,包含上面git commit的信息,並加上本身的學號水印信息。app

  • 在碼雲上把本身的學習搭檔加入本身的項目中並下載學習搭檔的代碼

    ide

  • 加入很多於三個JUnit單元測試用例並測試
    函數

  • 上傳至碼雲

    工具

  • 代碼:
/**
 * @Author 16487
 */
public class lyxComplex {
    double a,b;
    lyxComplex(double m,double n){//構造函數設置實部虛部
        a=m;
        b=n;
    }
    public double getRealPart(){//返回實部
        return a;
    }

    public double getImagePart() {//返回虛部
        return b;
    }
    public lyxComplex ComplexAdd(lyxComplex y){//加法
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a+m;
        double z=b+n;
        return new lyxComplex(x,z);
    }
    public lyxComplex ComplexSub(lyxComplex y){
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a-m;
        double z=b-n;
        return new lyxComplex(x,z);
    }
    public lyxComplex ComplexMulti(lyxComplex y){
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a*m;
        double z=b*n;
        return new lyxComplex(x,z);
    }
    public lyxComplex ComplexDiv(lyxComplex y){
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a/m;
        double z=b/n;
        return new lyxComplex(x,z);
    }
    @Override
    public java.lang.String toString() {
        String s="";
        if (a!=0&&b>0&&b!=1){
            s+= a+"+"+ b+"i";
        }
        else if(a!=0&&b==1){
            s+=a+"+i";
        }
        else if (a!=0&&b<0&&b!=-1){
            s+= a+""+b+"i";
        }
        else if (a!=0&&b==-1){
            s+=a+"-i";
        }
        else if (a!=0&&b==0){
            s+=a;
        }
        else if (a==0&&b!=0){
            s+=b+"i";
        }
        else if (a==0&&b==0){
            s+="0.0";
        }
        return s;
    }
}
/**
 * @Author 16487
 */
import junit.framework.TestCase;
import org.junit.Test;

public class lyxComplexTest extends TestCase {
    lyxComplex a=new lyxComplex(0,0);
    lyxComplex b=new lyxComplex(1,1);
    lyxComplex c=new lyxComplex(-1,-1);
    lyxComplex d=new lyxComplex(20.16,53.10);
    lyxComplex e=new lyxComplex(2,3);
    @Test
    public void testgetReal(){
        assertEquals(0.0,a.getRealPart());
        assertEquals(-1.0,c.getRealPart());
        assertEquals(20.16,d.getRealPart());
    }
    @Test
    public void testgetIma(){
        assertEquals(0.0,a.getImagePart());
        assertEquals(-1.0,c.getImagePart());
        assertEquals(53.1,d.getImagePart());
    }
    @Test
    public void testComAdd(){
        assertEquals("0.0",b.ComplexAdd(c).toString());
        assertEquals("1.0+i",a.ComplexAdd(b).toString());
        assertEquals("19.16+52.1i",c.ComplexAdd(d).toString());
        assertEquals("-1.0-i",a.ComplexAdd(c).toString());
        assertEquals("21.16+54.1i",b.ComplexAdd(d).toString());
        assertEquals("20.16+53.1i",a.ComplexAdd(d).toString());
    }
    @Test
    public void testComSub(){
        assertEquals("1.0+i",b.ComplexSub(a).toString());
        assertEquals("-21.16-54.1i",c.ComplexSub(d).toString());
        assertEquals("2.0+2.0i",b.ComplexSub(c).toString());
        assertEquals("-1.0-i",a.ComplexSub(b).toString());
    }
    @Test
    public void testComMul(){
        assertEquals("0.0",a.ComplexMulti(d).toString());
        assertEquals("-1.0-i",b.ComplexMulti(c).toString());
        assertEquals("-20.16-53.1i",c.ComplexMulti(d).toString());
        assertEquals("40.32+159.3i",d.ComplexMulti(e).toString());
        assertEquals("1.0+i",b.ComplexMulti(b).toString());
    }
    @Test
    public void  testComDiv(){
        assertEquals("0.0",a.ComplexDiv(b).toString());
        assertEquals("-1.0-i",c.ComplexDiv(b).toString());
        assertEquals("-0.5-0.3333333333333333i",c.ComplexDiv(e).toString());
        assertEquals("10.08+17.7i",d.ComplexDiv(e).toString());
        assertEquals("20.16+53.1i",d.ComplexDiv(b).toString());
    }
}

實驗三 敏捷開發與XP實踐-3

  • 實驗三 敏捷開發與XP實踐 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的內容替換成IDEA單元測試

  • 完成重構內容的練習,下載搭檔的代碼,至少進行三項重構,提交重構後代碼的截圖,加上本身的學號水印。提交搭檔的碼雲項目連接。學習

  • 問題一:全部的類都必須添加建立者信息
  • 按照格式,添加做者和日期

  • 問題二:類、類屬性、類方法必須用javadoc規範
  • 將註釋格式改成/**內容*/

  • 問題三:方法名、參數名、成員變量、局部變量沒有聽從駝峯形式
  • 將要修改的變量單擊右鍵,Refactor->Rename進行重命名

  • 上傳至碼雲

  • 代碼:
/**
 * Complex class
 *
 * @Author 16487
 * @date 2019/4/29
 */

public class lyxcomplex {
    double a,b;
    lyxcomplex(double m, double n){/**構造函數設置實部虛部*/
        a=m;
        b=n;
    }
    public double getRealPart(){//返回實部
        return a;
    }

    public double getImagePart() {/**返回虛部*/
        return b;
    }
    public lyxcomplex complexAdd(lyxcomplex y){/**加法*/
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a+m;
        double z=b+n;
        return new lyxcomplex(x,z);
    }
    public lyxcomplex complexSub(lyxcomplex y){/**減法*/
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a-m;
        double z=b-n;
        return new lyxcomplex(x,z);
    }
    public lyxcomplex complexMulti(lyxcomplex y){/**乘法*/
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a*m;
        double z=b*n;
        return new lyxcomplex(x,z);
    }
    public lyxcomplex complexDiv(lyxcomplex y){/**除法*/
        double m=y.getRealPart();
        double n=y.getImagePart();
        double x=a/m;
        double z=b/n;
        return new lyxcomplex(x,z);
    }
    @Override
    public java.lang.String toString() {
        String s="";
        if (a!=0&&b>0&&b!=1){
            s+= a+"+"+ b+"i";
        }
        else if(a!=0&&b==1){
            s+=a+"+i";
        }
        else if (a!=0&&b<0&&b!=-1){
            s+= a+""+b+"i";
        }
        else if (a!=0&&b==-1){
            s+=a+"-i";
        }
        else if (a!=0&&b==0){
            s+=a;
        }
        else if (a==0&&b!=0){
            s+=b+"i";
        }
        else if (a==0&&b==0){
            s+="0.0";
        }
        return s;
    }
}
/**
 * Complex class
 *
 * @Author 16487
 * @date 2019/4/29
 */

import junit.framework.TestCase;
import org.junit.Test;

public class lyxcomplexTest extends TestCase {
    lyxcomplex a=new lyxcomplex(0,0);
    lyxcomplex b=new lyxcomplex(1,1);
    lyxcomplex c=new lyxcomplex(-1,-1);
    lyxcomplex d=new lyxcomplex(20.16,53.10);
    lyxcomplex e=new lyxcomplex(2,3);
    @Test
    public void testgetReal(){
        assertEquals(0.0,a.getRealPart());
        assertEquals(-1.0,c.getRealPart());
        assertEquals(20.16,d.getRealPart());
    }
    @Test
    public void testgetIma(){
        assertEquals(0.0,a.getImagePart());
        assertEquals(-1.0,c.getImagePart());
        assertEquals(53.1,d.getImagePart());
    }
    @Test
    public void testComAdd(){
        assertEquals("0.0",b.complexAdd(c).toString());
        assertEquals("1.0+i",a.complexAdd(b).toString());
        assertEquals("19.16+52.1i",c.complexAdd(d).toString());
        assertEquals("-1.0-i",a.complexAdd(c).toString());
        assertEquals("21.16+54.1i",b.complexAdd(d).toString());
        assertEquals("20.16+53.1i",a.complexAdd(d).toString());
    }
    @Test
    public void testComSub(){
        assertEquals("1.0+i",b.complexSub(a).toString());
        assertEquals("-21.16-54.1i",c.complexSub(d).toString());
        assertEquals("2.0+2.0i",b.complexSub(c).toString());
        assertEquals("-1.0-i",a.complexSub(b).toString());
    }
    @Test
    public void testComMul(){
        assertEquals("0.0",a.complexMulti(d).toString());
        assertEquals("-1.0-i",b.complexMulti(c).toString());
        assertEquals("-20.16-53.1i",c.complexMulti(d).toString());
        assertEquals("40.32+159.3i",d.complexMulti(e).toString());
        assertEquals("1.0+i",b.complexMulti(b).toString());
    }
    @Test
    public void  testComDiv(){
        assertEquals("0.0",a.complexDiv(b).toString());
        assertEquals("-1.0-i",c.complexDiv(b).toString());
        assertEquals("-0.5-0.3333333333333333i",c.complexDiv(e).toString());
        assertEquals("10.08+17.7i",d.complexDiv(e).toString());
        assertEquals("20.16+53.1i",d.complexDiv(b).toString());
    }
}

個人代碼託管

學習搭檔的代碼託管

實驗三 敏捷開發與XP實踐-4

  • 參考 http://www.cnblogs.com/rocedu/p/6683948.html,以結對的方式完成Java密碼學相關內容的學習,結合重構,git,代碼標準。

  • 提交學習成果碼雲連接和表明性成果截圖,要有學號水印。

  • 凱撒密碼的加密算法極其簡單。其加密過程以下:

  • 在這裏,咱們作此約定:明文記爲m,密文記爲c,加密變換記爲E(k1,m)(其中k1爲密鑰),解密變換記爲D(k2,m)(k2爲解密密鑰)(在這裏k1=k2,不妨記爲k)。凱撒密碼的加密過程可記爲以下一個變換:c≡m+k mod n (其中n爲基本字符個數);一樣,解密過程可表示爲:m≡c+k mod n (其中n爲基本字符個數)

  • 代碼:
/**
 * @Author 16487
 */
import java.util.Scanner;
public class Caesar {
    public String path;
    public String estr="";
    public char c;
    public static void main(String[] args) {
        Caesar c=new Caesar();
        System.out.println("1.加密");
        System.out.println("2.解密");
        System.out.println("你要進行的操做:");
        int num;
        Scanner scanner=new Scanner(System.in);
        num=scanner.nextInt();
        System.out.println("情輸入你要進行操做的字符串");
        c.path=scanner.next();
        int n;
        Scanner scan=new Scanner(System.in);
        System.out.println("情輸入祕鑰");
        n=scan.nextInt();
        if(num==1)
        {
            c.jiami(c.path, n);
            System.out.println("加密事後的字符串爲:"+c.estr);
        }
        else
        {
            c.jiemi(c.path, n);
            System.out.println("解密事後的內容爲:"+c.estr);
        }
    }
    public void jiami(String key,int n)
    {
        for(int i=0;i<key.length();i++)
        {
            c=key.charAt(i);
            if(c>='A'&&c<='Z')
            {
                if(c+n%26<='Z')
                {
                    estr+=(char)(c+n%26);
                }
                else
                {
                    estr+=(char)('A'+((n-('Z'-c)-1)%26));
                }
            }
            else if(c>='a'&&c<='z')
            {
                if(c+n%26<='z')
                {
                    estr+=(char)(c+n%26);
                }
                else
                {
                    estr+=(char)('a'+((n-('z'-c)-1)%26));
                }
            }
            else if(c>='0'&&c<='9')
            {
                if(c+n%10<='9')
                {
                    estr+=(char)(c+n%10);
                }
                else
                {
                    estr+=(char)('0'+((n-('9'-c)-1)%10));
                }
            }
            else
            {
                estr+=c;
            }
        }
    }
    public void jiemi(String key,int n)
    {
        for(int i=0;i<key.length();i++)
        {
            c=key.charAt(i);
            if(c>='A'&&c<='Z')
            {
                if(c-n%26>='A')
                {
                    estr+=(char)(c-n%26);
                }
                else
                {
                    estr+=(char)('Z'-((n-(c-'A')-1)%26));
                }
            }
            else if(c>='a'&&c<='z')
            {
                if(c-n%26>='a')
                {
                    estr+=(char)(c-n%26);
                }
                else
                {
                    estr+=(char)('z'-((n-(c-'a')-1)%26));
                }
            }
            else if(c>='0'&&c<='9')
            {
                if(c-n%10>='0')
                {
                    estr+=(char)(c-n%10);
                }
                else
                {
                    estr+=(char)('9'-((n-(c-'0')-1)%10));
                }
            }
            else
            {
                estr+=c;
            }
        }
    }
}
  • 運行結果:

2、心得體會

  • 本次實驗教會了我如何寫出更加規範的代碼,還讓我瞭解到了code中的功能,並掌握了幾個實用的功能
  • 密碼學算法部分對其餘課程頗有幫助
步驟 耗時 百分比
需求分析 20min 10%
設計 40min 20%
代碼實現 50min 25%
測試 50min 25%
分析總結 40min 20%
相關文章
相關標籤/搜索