《Java 语言》课程作业
(第一次)
题
学
专
班
学
姓
目 第 20 题
院 计算机学院
业 13 网络工程
别 4 班
号 3113006590
名 张锡贤
2015 年 4 月 21 日
你的姓名——《Java 语言》课程作业(第一次)
一、课程题目
20. 题目:数据加密的实现。
某个公司采用公用电话传递数据,数据是四位的整数(从键盘输入),在传递
过程中是加密的,加密规则如下:每位数字都加上 5,然后用和除以 10 的余数代
替该数字,再将第一位和第四位交换,第二位和第三位交换(打印出加密后的数
据)。【选题人数:3】
二、题目分析与设计
1. 论述题目的需求。
需要对输入的数据进行加密处理。
2. 制定对应程序的功能,对各个功能及其分解成的子功能作出相应阐述。
功能:按加密规则对数据进行加密处理,让外人不易识别。
3. 绘制程序功能层次图和程序结构流程图。
输入一个 4 位整数
↓
检测输入的字符是否符合要
↓
分别取各位的数字到 a,b,c,d
↓
按加密规则对各位数字分别做加 5 对 10 取余
↓
a 与 d 交换,b 与 c 交换,求得加密后的整数
4. 注明所使用的开发环境(Eclipse、NetBeans,JBuilder),解析关键代码部
分的实现。
Eclipse
(1)
a=number/1000;
(分别取各位的数字到 a,b,c,d)
2
你的姓名——《Java 语言》课程作业(第一次)
b=(number/100)%10;
c=(number%100)/10;
d=number%10;
(2)System.out.println("The secret code is "+
(d+5)%10+(c+5)%10+(b+5)%10+(a+5)%10);
(按加密规则对各位数字分别做加 5 对 10 取余,a 与 d 交换,b 与 c 交换,
求得加密后的数)
三、测试分析
1. 典型测试数据的构建,并且给出测试数据的预计结果
键入的 4 位整数
123
12345
0000
0505
abcd
a
1298
8956
-/*aq
加密后输出的整数
ERROR
ERROR
5555
0505
NumberFormatException
ERROR
3476
1043
ERROR
2. 本程序的测试情况,与预计结果作对比
3
你的姓名——《Java 语言》课程作业(第一次)
测试结果与预期结果均一致。
4
你的姓名——《Java 语言》课程作业(第一次)
附录:源代码
import java.util.Scanner;
public class SecretNumber {
public static void main(String[] args){
try{
//有可能出现输入的不是整数的异常
int a,b,c,d;
Scanner sc = new Scanner(System.in);//从键盘输入一个 4 位整数
System.out.println("Please input a number:");
String num=sc.next();
if(num.length()!=4)System.out.println("ERROR");// 检 测 输 入 的
整数是否是一个 4 位的整数
else {
int number=Integer.parseInt(num);
a=number/1000;
//分别取整数的各位数字
b=(number/100)%10;
c=(number%100)/10;
d=number%10;
System.out.println("The secret code is "+ //按加密规则
(d+5)%10+(c+5)%10+(b+5)%10+(a+5)%10);
处理各位数
}
字并输出
}catch(Exception e){
e.printStackTrace();
}
}
}
5