1、古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。
设计思想:用户从弹出的输入消息框内输入字符串,不限制大小写。
使用toCharArray()函数将字符串转化成字符数组,再由加密和解密两个按钮分别对字符数组的每个字符进行单独操作,加密则+3,解密则-3。再强制转换回字符类型并拼合成字符串,从不可编辑的文本框输出。
程序流程图:
程序源代码:
1 package tiaoshi; 2 import java.awt.*; 3 import java.awt.event.*; 4 import javax.swing.*; 5 public class Test 6 { 7 JFrame frame; 8 JButton button1; 9 JButton button2; 10 JTextArea text; 11 JScrollPane s; 12 public static void main(String[] args) 13 { 14 Test g=new Test(); 15 g.go(); 16 } 17 public void go() 18 { 19 frame=new JFrame("密码改写"); 20 button1=new JButton("加密"); 21 button2=new JButton("解密"); 22 text=new JTextArea(); 23 s=new JScrollPane(text); 24 Container cp=frame.getContentPane(); 25 cp.setLayout(null); 26 cp.add(button1); 27 cp.add(button2); 28 cp.add(s); 29 button1.setBounds(40,35,70,30); 30 button2.setBounds(190,35,70,30); 31 s.setBounds(20,100,260,60); 32 text.setEditable(false); 33 frame.setResizable(false); 34 frame.setSize(300,200); 35 frame.setVisible(true); 36 button1.addActionListener(new ActionListener() 37 { 38 public void actionPerformed(ActionEvent e) 39 { 40 String s1=JOptionPane.showInputDialog(frame,"加密"); 41 char c[]; 42 c=s1.toCharArray(); 43 s1=""; 44 for(int i=0;i<c.length;i++) 45 { 46 if(c[i]==89||c[i]==90||c[i]==88||c[i]==120||c[i]==121||c[i]==122) 47 c[i]=(char)(c[i]-23); 48 else 49 c[i]=(char) (c[i]+3); 50 s1+=c[i]; 51 } 52 text.setText(s1); 53 } 54 }); 55 button2.addActionListener(new ActionListener() 56 { 57 public void actionPerformed(ActionEvent e) 58 { 59 String s1=JOptionPane.showInputDialog(frame,"解密"); 60 char c[]; 61 c=s1.toCharArray(); 62 s1=""; 63 for(int i=0;i<c.length;i++) 64 { 65 if(c[i]==65||c[i]==66||c[i]==67||c[i]==97||c[i]==98||c[i]==99) 66 c[i]=(char)(c[i]+23); 67 else 68 c[i]=(char) (c[i]-3); 69 s1+=c[i]; 70 } 71 text.setText(s1); 72 } 73 }); 74 } 75 }
结果截图:
初始界面:
加密过程:
解密过程: