20175314 实验二 Java面向对象程序设计

一、实验报告封面

课程:Java程序设计 班级:1753班 姓名:薛勐 学号:20175314

指导教师:娄嘉鹏 实验日期:2019年5月3日

实验时间:15:35 - 17:15 实验序号:三

实验名称: 敏捷开发与XP实践

实验要求:

1、完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析。

2、实验报告中统计自己的PSP(Personal Software Process)时间;

3、掌握使用IDEA完成基础编程与程序调试的能力。

二、实验内容

  • XP基础
  • XP核心实践
  • 相关工具

三、实验步骤

(一)代码格式化

创建“175314.exp3”项目,在该项目下创建CodeStandard.java,并输入代码:

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,在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装

安装后右键点击类名,再点击“编码规约扫描”

  • 发现代码中不规范的地方后进行纠正:

打开Code->Reformate Code,格式化代码:

我认为最好用的工具是Reformate Code,可以快速规范代码格式,方便观察及编写,还有就是Override Methods,提供了Java.lang包中的一些类的方法重写

(二)邀请搭档加入码云项目,对搭档的代码进行Junit测试

在我的码云中创建Teamwork项目,邀请自己的搭档20175316盛茂淞成为“开发者”

引入搭档在实验二中的Complex代码,加入多个Junit测试用例并编译:

搭档的 Complex.java:

public class Complex {
double R;
double I;
Complex(double R, double I) {
this.R = R;
this.I = I;
}
public static double getRealPart(double R) {
return R;
}
public static double getImagePart(double I) {
return I;
}
public Complex ComplexAdd(Complex c) {
return new Complex(R + c.R, I + c.I);
}
public Complex ComplexSub(Complex c) {
return new Complex(R - c.R, I - c.I);
}
public Complex ComplexMulti(Complex c) {
return new Complex(R * c.R - I * c.I, R * c.I + I * c.R);
}
public Complex ComplexDiv(Complex c) {
return new Complex((R * c.I + I * c.R) / (c.I * c.I + c.R * c.R), (I * c.I + R * c.R) / (c.I * c.I + c.R * c.R));
}
public String toString() {
String str = "";
if (I > 0)
str = R + "+" + I + "i";
if (I == 0)
str = R+"";
if (I < 0)
str = R + "" + I + "i";
return str;
}
public boolean equals(Object obj){
if (this == obj)
return true;
if(obj==null)
return false;
if(obj instanceof Complex){
Complex p = (Complex) obj;
if(p.R==this.R &&p.I==this.I )
return true;
}
return false;
}
}

ComplexTest:



出现“绿条”,通过测试

在命令行中使用git语句将代码传到我和搭档新建的共同项目Teamwork,然后输入git log并截图:

(三)重构的练习

下载一个搭档的代码,我选择了MyUtil.java:

代码中存在的问题与分析

  • 问题:根据截图中的结果分析,没有考虑分数不能低于0分而且分数可以等于100分

根据以上问题,对代码进行了如下重构

else if (grade < 100)
return "优秀";
  • 修改为:
else if (grade <= 100)
return "优秀";
  • 添加:
if ((grade < 0))
return "错误";

对修改的代码进行Junit测试,出现“绿条”,结果正确

(四)Java密码学算法的学习

编写一个实现MD5加密的程序:

import javax.swing.*;
import java.io.Console;
import java.security.*;
import java.util.Scanner;
public class MD5{
public static void main(String args[ ]) throws Exception{
System.out.println("请输入密码");
Scanner scanner = new Scanner(System.in);
String pass = scanner.nextLine();
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(pass.getBytes());
byte[] hash = md5.digest();
pass = "";
for (int i = 0; i < hash.length; i++) {
pass += Integer.toHexString(hash[i] & 0xff);
}
System.out.print("加密结果为"+pass);
}
}

运行MD5.java,输入abc,得到如下结果:

阅读并运行DES算法程序并且运行,得到如下结果:

阅读并运行RSA算法程序并且运行,得到如下结果:

四、遇到的问题

  • (MD5.java)Java(pass方法)中只有按值传递,没有按引用传递:



值传递:传递的是存储单元中的内容,而非地址或者引用。

五、感想与收获

这次实验对于我来说依然不轻松,不过学到的也是很多的,特别是再一次更深入地了解了Java里面强大的关于密码的功能(之前在Example8_8也有接触过),Java可以很容易地实现很多密码算法,十分方便,这与我们的信息安全专业紧密地连接到了一起。

六、码云链接

七、Personal Software Process时间

步骤 耗时 百分比
需求分析 40 13.3%
设计 60 20%
代码实现 120 40%
测试 40 13.3%
分析总结 40 13.4%

八、参考资料

实验三 敏捷开发与XP实践

Java 密码学算法

20175314 实验三 敏捷开发与XP实践的更多相关文章

  1. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

  2. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  3. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  4. 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"

    20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...

  5. 20145215实验三 敏捷开发与XP实践

    20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...

  6. 20145325张梓靖 实验三 "敏捷开发与XP实践"

    20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...

  7. 20162311 实验三 敏捷开发与XP实践 实验报告

    20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...

  8. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  9. #实验三 敏捷开发与XP实践---实验报告

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

随机推荐

  1. MySql 的SQL执行计划查看,判断是否走索引

    在select窗口中,执行以下语句: set profiling =1; -- 打开profile分析工具show variables like '%profil%'; -- 查看是否生效show p ...

  2. spring声明式事务 同一类内方法调用事务失效(转)

    原文 https://blog.csdn.net/jiesa/article/details/53438342 [问题] Spring的声明式事务,我想就不用多介绍了吧,一句话“自从用了Spring ...

  3. Webpack 学习总结

    1.Webpack的特性 webpack 模块打包机,分析你的项目结构,找到JavaScript模块以及其他一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),将其打包为合适的格式以 ...

  4. Qt之QTreeWidget入门

    QTreeWidget的一些基本操作 1.insertTopLevelItems,insertTopLevelItem用来添加顶层的item QTreeWidget *treeWidget = new ...

  5. 关于mysql文件导入提示“Variable @OLD_CHARACTER_SET_CLIENT can't be set to the value of @@CHARACTER_SET_CLIENT”问题分析

    今天用myssqldump导出数据,然后再导入另外mysql数据库时,提示Variable @OLD_CHARACTER_SET_CLIENT can't be set to the value of ...

  6. java构建工具——ant使用

    Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.安装与部署 1.1 下载 下载地址:https: ...

  7. Linux中常用目录作用

    Linux一般相应的文件都会会放在相应的目录下.这样更有利于文件的查找. 1.可以在家目录root或home,以及temp目录下随便放东西. 2.根目录下的bin和sbin,usr目录下的bin和sb ...

  8. C#将unix时间戳转换成.net的DateTime类型的代码

    下面的内容是关于C#将unix时间戳转换成.net的DateTime类型的内容. DateTime epoch = new DateTime(1970,1,1,0,0,0,0, DateTimeKin ...

  9. xshell使用密钥登陆linux

    一.环境CentOS 7.4xshell 6 二.介绍远程ssh连接服务器 默认是用的密码验证的方式,而且还是root账号,这样的验证方式会有安全隐患,容易被人暴力破解root密码.如果改成用密钥登陆 ...

  10. 影响solr性能的一些因素(附使用经验)

    Solr本身的性能不错,但是在使用过程中,还是会遇到一些使用错误,或是没考虑到的地方:在出现瓶颈时,可以首先考虑哪些点呢?下面就来看一下Solr官方的总结,个人觉得总结的很好.SOLR+LUCENE的 ...