博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软工作业PSP与单元测试训练
阅读量:6237 次
发布时间:2019-06-22

本文共 1771 字,大约阅读时间需要 5 分钟。

任务说明:

一、实现模块判断传入的身份证号码的正确性;

实现要求:

一、实现功能模块;

身份证号码结构:17位数字和1位校验码:6位地址码数字,8位生日数字,3位出生时间顺序号,1位校验码。

1,检验位数是否为18位。

2,检验校验位,前17位计算出的余数所对应的字符是否==第18位的字符。

3,校验年月日,分别校验年份,月份,日期是否在正确范围内。

 

二、针对所实现的模块编写对应的单元测试代码;

package pdID;

import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.Validator;
public class pdID{
final static int[] A = {‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘};
final static int[] P = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,
5, 8, 4, 2};
public static boolean isIdcard(String s){

//校验位数是否==18 

if(s == null || s.length() != 18))
return false;
final char[] cs = s.toUpperCase().toCharArray();
int power = 0;
for(int i=0; i<cs.length; i++){
if(i==cs.length-1 && cs[i] == ‘X‘)
break;
(cs[i]<‘0‘ || cs[i]>‘9‘)
return false;
< cs.length -1){
power += (cs[i] - ‘0‘) * POWER_LIST[i];
}
}
//1校验前17位计算所得余数是否==校验码
if(cs[cs.length -1 ] == PARITYBIT[power % 11]){
//2校验年份
String year = s.substring(6, 10);
final int iyear = Integer.parseInt(year);
if(iyear < 1900 || iyear > Calendar.getInstance().get(Calendar.YEAR))
return false;//<1900年的错,>今年的错
//3校验月份
String month =s.substring(10,12);
final int imonth = Integer.parseInt(month);
if(imonth <1 || imonth >12){
return false;
}
//4校验日期
String day =s.substring(12, 14);
final int iday = Integer.parseInt(day);
if(iday < 1 || iday > 31)
return false;
}else
return false;
}
public static void main(String[] args) {
for(int i=0;i<10;i++){
final String s = "330482199607070616";
System.out.println(s+" --> "+isIdcard(s));
}
}
}

 

三、需要按PSP流程进行工作量估算,填写任务清单工作量估算表。

 

任务清单工作量估算表:

PSP阶段

时间估算(小时)

实际实际(小时)

计划

估计每个阶段的时间成本

 0.5

 0.6

开发

需求分析

 0.5

 0.4

系统设计

 0.6

 0.6

设计复审

 0.3

 0.3

代码实现

 0.7

 0.8

代码复审

 0.3

 0.3

测试

 0.4

 0.3

报告

测试报告

 0.4

 0.4

总结

 0.2

 0.2

转载于:https://www.cnblogs.com/lllblogs/p/8583980.html

你可能感兴趣的文章
Java日期处理工具类(基于Calendar)
查看>>
夏日葵电商:阅读付费、知识付费系统诞生的“知识明星”
查看>>
调查了300多位技术主管:AWS和Azure经常配对使用
查看>>
约瑟夫环问题
查看>>
CNN之父再出豪言:深度学习需要新的编程语言
查看>>
Studio 3T:MongoDB SQL探究
查看>>
在敏捷中应用测试驱动开发
查看>>
在Kotlin中使用Gradle构建缓存
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
Kubernetes上领先的开源Serverless解决方案有哪些
查看>>
Spark灰度发布在十万级节点上的实践
查看>>
干净架构在 Web 服务开发中的实践
查看>>
中国平安“豪赌”科技?从产险业务IT变形计聊起
查看>>
百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈
查看>>
将团队迁移到可视化项目管理软件
查看>>
微软Edge扩展工具箱旨在将Chrome扩展带至Edge
查看>>
北大AI公开课2019 | 驭势科技吴甘沙:AI时代的自动驾驶趋势
查看>>
移动互联网下半场,iOS开发者如何“高薪”成长?
查看>>
Docker4Dev #7 新瓶装老酒 – 使用 Windows Container运行ASP.NET MVC 2 + SQLExpress 应用
查看>>
亚马逊一口气发布了9款机器学习产品
查看>>