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;
}
}
}