凯撒加密器

1、功能要求

开发基于控制台的凯撒加密系统。具体要求如下:

1)根据用户的选择从控制台待加密或解密的字符串。如图-2和图-3所示。

2)根据凯撒加密法,对字符串进行加密或解密。

3)加密或解密完成后,把结果输出到控制台。如图-4和图-5所示。

-2 操作选择界面

 

-3 输入字符串界面

-4 加密后的界面

-5 解密后的界面

 

2、类的设计

该系统中必须包括三个类。

输入台控制类(Swither)

Encryption(字符串加密类)

Decryption(字符串解密类)

3、具体要求及推荐实现步骤

       1、创建控制台控制类Switcher,用于和操作者交互。

       2、开发加密类Encryption,使用凯撒加密法对字符串加密,并把加密后的结果返回给Switcher

       3、开发解密类Dncryption,使用凯撒加密法对字符串解密,并把解密后的结果返回给Switcher

       凯撒加密法,就是将字母表中的每个字母向后移动3位,比如a被替换成d,b被替换成f,以此类推。字母表的最后三位xyz,会被替换为abc。比如hello,加密之后是khoor.对于拉丁字母之外的其他字符,一律不加密。

import java.util.Scanner;

publicclass Encryption {

   /**

    * 字符串加密类

    * 使用凯撒加密法对字符串加密,并把加密后的结果返回给Switcher

    */

   publicvoid show(){

      Scanner input=new Scanner(System.in);

      System.out.print("请输入待加密的字符串:");

      String a=input.nextLine();

      int[] b=newint[a.length()];  //创建数组保存输入的字符

      int i; //定义循环初值 

      for(i=0;i<a.length();i++){

      if((a.charAt(i)>='a'&&a.charAt(i)<='z')||(a.charAt(i)>='A'&&a.charAt(i)<='Z')){

           //判断是否是合适的字符

           b[i]=(int)a.charAt(i)+3;//转换数字

        }else{

           b[i]=(int)a.charAt(i);//如果是不合的字符,直接输出

        }

        System.out.print((char)b[i]);//转换成字符输出

      }    

   }

    

}

import java.util.Scanner;

publicclass Decryption {

   /**

    * 字符串解密类

    * 使用凯撒加密法对字符串解密,并把解密后的结果返回给Switcher

    */

   publicvoid showac(){

      Scanner input=new Scanner(System.in);

      intk=3;  //向后移三位

      System.out.print("请输入待解密的字符串:");

      String a=input.nextLine();

      int[] b=newint[a.length()];

      int i;

      for(i=0;i<a.length();i++){

      if((a.charAt(i)>='a'&&a.charAt(i)<='z')||(a.charAt(i)>='A'&&a.charAt(i)<='Z')){

           b[i]=(int)a.charAt(i)-3;

        }else{

           b[i]=(int)a.charAt(i);

        }

        System.out.print((char)b[i]);

      }    

   }

}

import java.util.Scanner;

publicclass Swither {

   /**输入台控制类

    * @author    *凯撒加密法,就是将字母表中的每个字母向后移动3位,比如a被替换成d,

    * b被替换成f,以此类推。字母表的最后三位xyz,会被替换为abc。比

    * hello,加密之后是khoor.对于拉丁字母之外的其他字符,一律不加密。

    */

   publicstaticvoid main(String[] args) {

      //TODO Auto-generated method stub

      Scanner input=new Scanner(System.in);

      Encryption enc=new Encryption();

      Decryption dec=new Decryption();

      System.out.println("************欢迎使用凯撒加密法*******************\n\n");

      System.out.print("请选择操作(1.加密,2.解密)");

      int num=input.nextInt();

      switch(num){

        case 1:

           enc.show(); //调用加密方法

           break;

        case 2:

           dec.showac(); //调用解密方法

           break;

        default:

           System.out.println("错误有误,请重新输入:");

           num=input.nextInt();

           break;

      }

   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小努蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值