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

一、实验内容及步骤

(一)编码标准

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

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

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

(三)完成重构内容

  • 要求:下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

    搭档原代码截图:

    原代码在该用类的地方使用了结构体并且每次打印角色信息都这么写代码违反了DRY原则,造成代码重复。

    修改之后

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

-凯撒密码:

  1. import java.util.Scanner;
  2. /**
  3. * 密码:凯撒密码
  4. * */
  5. public class Caeser {
  6. public static void main(String[] args) {
  7. System.out.println("[A 加密][J 解密],Please Choose One");
  8. Scanner c=new Scanner(System.in);//创建Scanner键盘输入对象
  9. String s1=c.nextLine();//获取本行的字符串
  10. if(s1.equalsIgnoreCase("A")){
  11. System.out.println("请输入明文:");
  12. Scanner sc=new Scanner(System.in);
  13. String s=sc.nextLine();
  14. System.out.println("请输入密钥:");
  15. Scanner sc1=new Scanner(System.in);
  16. int key=sc1.nextInt();//将下一个输入项转换成int类型
  17. Encryption(s, key);
  18. }else if(s1.equalsIgnoreCase("J")){
  19. System.out.println("请输入密文:");
  20. Scanner sc=new Scanner(System.in);
  21. String s=sc.nextLine();
  22. System.out.println("请输入密钥:");
  23. Scanner sc1=new Scanner(System.in);
  24. int key=sc1.nextInt();//将下一个输入项转换成int类型
  25. Decrypt(s, key);//調用解密方法
  26. }
  27. }
  28. public static void Encryption(String str,int k){//加密
  29. String string="";
  30. for (int i = 0; i < str.length(); i++) {
  31. char c=str.charAt(i);
  32. if(c>='a'&&c<='z'){//如果字符串中的某个字符是小写字母
  33. c+=k%26;//移动key%26;
  34. if(c<'a')
  35. c+=26;
  36. if(c>'z')
  37. c-=26;
  38. }else if(c>='A'&&c<='Z'){//如果字符串中的某个字符是大写字母
  39. c+=k%26;//移动key%26;
  40. if(c<'A')
  41. c+=26;
  42. if(c>'Z')
  43. c-=26;
  44. }
  45. string+=c;//将加密后的字符串连成字符串
  46. }
  47. System.out.println(str+" 加密后为: "+string);
  48. }
  49. public static void Decrypt(String str,int n){//解密
  50. int k=Integer.parseInt("-"+n);
  51. String string="";
  52. for (int i = 0; i < str.length(); i++) {
  53. char c=str.charAt(i);
  54. if(c>='a'&&c<='z'){//如果字符串中的某个字符是小写字母
  55. c+=k%26;//移动key%26;
  56. if(c<'a')
  57. c+=26;
  58. if(c>'z')
  59. c-=26;
  60. }else if(c>='A'&&c<='Z'){//如果字符串中的某个字符是大写字母
  61. c+=k%26;//移动key%26;
  62. if(c<'A')
  63. c+=26;
  64. if(c>'Z')
  65. c-=26;
  66. }
  67. string+=c;//将解密后的字符串连成字符串
  68. }
  69. System.out.println(str+" 加密后为: "+string);
  70. }
  71. }

-RSA密码:

三、总结与分析

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

  • 问题一:

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

( 二)PSP

步骤 耗时 百分比)
需求分析 10min 11.11%
设计 15min 16.66%
代码实现 40min 44.44%
测试 5min 5.55%
分析总结 20min 22.22%

20155218 《Java程序设计》实验三(Java面向对象程序设计)实验报告的更多相关文章

  1. 20145208 实验三 Java面向对象程序设计

    20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  2. 20155202 《Java程序设计》实验二(面向对象程序设计)实验报告

    20155202 <Java程序设计>实验二(面向对象程序设计)实验报告 代码托管 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉 ...

  3. 实验三 Java基本程序设计(2)

                                             实验三 Java基本程序设计(2)                                           ...

  4. 20184302 实验三《Python程序设计》实验报告

    20184302 2019-2020-2 <Python程序设计>实验3报告 课程:<Python程序设计> 班级: 1843 姓名: 李新锐 学号:20184302 实验教师 ...

  5. 实验三 Java基本程序设计

    第一部分:理论知识复习部分 第一章:第一章介绍的是Java程序设计的概述,通过两周的Java学习中,重温了Java“白皮书的关键术语,更深一步理解乐11个关键术语. 第二章:本章主要介绍如何安装JDK ...

  6. 20155239《Java程序设计》实验二(面向对象程序设计)实验报告

    实验内容 初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验步骤 单元测试 1.三种代码: 伪代码 ...

  7. 实验三 Java猜数字游戏开发

    课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         ...

  8. 20201123 实验三《python程序设计》实验报告

    20201123 2020-2021-2 <python程序设计>实验三报告 课程:<Python程序设计>班级:2011姓名:晏鹏捷学号:20201123实验教师:王志强实验 ...

  9. 20212115 实验三 《python程序设计》实验报告

    实验报告 20212115<python程序设计>实验三报告 课程:<Python程序设计>班级: 2121姓名: 朱时鸿学号:20212115实验教师:王志强老师实验日期:2 ...

  10. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

随机推荐

  1. [EffectiveC++]item41:了解隐式接口和编译器多态

    classes和templates都支持接口和多态,interfaces and polymorphism 对classes而言接口是显示的explicit,以函数签名为中心.多态则是通过virtua ...

  2. 阿里八八“好记”——UML设计

    团队分工 叶文滔:软件整体框架部分 俞鋆:后端数据库部分 王国超:日程多日显示部分 黄梅玲:日程详细显示部分 张岳.刘晓.李嘉群:用户部分 UML设计 整体框架 用例图 类图 活动图 状态图 数据库部 ...

  3. JavaScript中的值和引用

    JavaScript5中有6种基本数据类型:undefined.null.布尔值(Boolean).字符串(String).数值(Number).对象(Object) ES6中新引入一种原始数据类型: ...

  4. 阿里嘉年华ADC Workshop PPT分享

    前段时间在阿里嘉年华的workshop做了一些关于memcache高可用和MMM Mod的分享. 下面是相关的PPT,特此分享. ADC官网直接在线查看:http://adc.alibabatech. ...

  5. Windows7下安装配置PostgreSQL10

    PostgreSQL安装: 一.windows7下安装过程首先上PostgreSQL官方网站的下载页面https://www.postgresql.org/download/windows/,下载本软 ...

  6. 利用TLE数据确定卫星轨道(2)-SGP4模型实现

    1.TLE轨道报: 接上一篇,TLE轨道报各项内容所代表的意义如下: 2.SGP4模型: TLE轨道报计算卫星轨道需要用到 NORAD 开 发 的 SGP4/SDP4 模 型 ,SGP4模型是由 Ke ...

  7. Apollo2.5 CANBUS调试笔记(测试版)

    前言:CANBUS是Apollo需要根据你的底盘写代码的地方,感觉也是Apollo最难调试的部分.这部分首先要选好CAN卡,因为不是Apollo推荐的CAN卡,驱动程序和对应接口,可能都需要自己调整, ...

  8. 部署Jar包到远程Maven仓库

    在使用maven开发工程时,模块A可能会依赖模块B的jar包,如果两个模块都是在一个工程里,只需要在模块A的pom文件中加入模块B的依赖信息,模块A就可以加载模块B的jar包.但如果模块A与模块B在不 ...

  9. Segmentation fault (core dumped) 错误的一种解决场景

    错误类型 Segmentation fault (core dumped) 产生原因 Segmentation fault 段错误. Core Dump 核心转储(是操作系统在进程收到某些信号而终止运 ...

  10. nRF5 SDK for Mesh(三) Installing the mesh toolchain 安装编译工具链

    Installing the mesh toolchain To build the example applications, a toolchain based on either CMake o ...