• 手把手教你写android项目@第一期项目——身份证查询创新


    序言

    这是我第一次尝试讲解一些项目,希望多多提出宝贵意见。
    项目的一些说明:
    1.第一期项目针对于一些初学者,恩自已安卓开发环境搭键什么的请巴友在论坛自己搜贴。
    2.第一期项目讲的会比较细致一些,目前此版本上传的没有跳转功能只是new几个需要的activity 对每个activity进行说明
    3.有可能巴友看到的时间不同,所以在下载附件时看清标题后面的小号哦!有问题的留言在相应的帖子里即可,我在相应的帖子里作答
    4.每期项目结束后我准备找一个适当的时间在线上共同讨论关于这个项目的一些新得体会,项目收获什么的!希望大家积极参与。

    内容
    1 .介绍一些设计自己的项目思想
    2.完成第一个页面
    3.建一个项目所需要的数据库

    首先要想到既然做身份证查询软件肯定是要用到数据库的,给大家介绍android中常用的一款轻量级数据库sqlite

    大家可以用SQLiteExpertPersSetup.exe软件查看数据库内容和试图编译自己的数据库。

    http://115.com/file/bej0l4go#SQLiteExpertPersSetup.rar(这里可下载软件)

    1.       创建表city
    CREATE TABLE [city] (
      [iid] VARCHAR(30),
      [iname] VARCHAR(100));
    2. 插入语句如:insert into city values('110000','北京市');
    3. 创建好的数据库我这里命名为lib.db放在项目工程res/raw下面
    3. 大家思考这样一个问题,如果让项目中自带数据库的话,肯定要把数据库加载到手机里的否则不会执行,那么加载数据库在什么时候合适呢?
    4.我这里采用的是在欢迎界面里去加载数据库文件,所以做了一个延时处理。在加载欢迎界面后紧急着复制数据库到项目中,设置停顿时间后跳转到下一个页面。
    5.大家可以利用Eclipse开发工具找一下数据库复制到手机模拟器什么位置中!
     
    最后
    今天给大家讲讲关于身份证的一些常识。我们现在的身份证是二代身份证身份证号码是18位数字。身份证前六位号码是我们身份证归属的省市区;
    从第7位—第14位是我们的出生日期;第15位—第17位是和性别有关系的,单数是男生,偶数是女生;那么身份证第18位代表什么呢?
    身份证第18位是校验码验证身份证号码是否正确符合身份证号码要求。介绍了这么多下面我给大家写一个类和类方法去验证身份证校验码和生成身份证校验码!
    大家可以在上一节里的源代码中在src下自己建一个包(我的包名叫做:com.emaoer.android.identity.util)。
    在包的下面写一个类ChineseIDConfig.java.
    import java.io.Serializable;
     
    /**
    * 校验、生成身份证尾号类
    *
    * @author Android淘气小公主
    *
    */
    public class ChineseIDConfig implements Serializable {
    /**
    *
    */
    private static final long serialVersionUID = 1L;
    private static int sum17;
     
    public int getSum17() {
    return sum17;
    }
    public CharSequence setSum17(int sum17) {
    ChineseIDConfig.sum17 = sum17;
    return sum17+"";
    }
    /**
    * 验证身份证是否有效
    * 按照ISO 7064:1983.MOD 11-2校验码
    */
    public static boolean verify(String id){
    if(id.length()!=18){
    return false;
    }
    /* 将前面的身份证号码17位数字分别都乘以不同的系数
    * 从第一位到第十七位系数分别为7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2
    * 将这十七位数字和系数相乘结果相加
    * 用加出来和除以11,看余数是多少
    * 规定余数只可能是: 0-1-2-3-4-5-6-7-8-9-10
    * 分别对应最后一位校验码是:1-0-x-9-8-7-6-5-4-3-2
    */
    int[]temp={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    int sum=0;
    for(int i=0;i<temp.length;i++){
    sum+=(id.charAt(i)-'0')*temp[i];
    }
    int result=sum%11;
    char[] index={'1','0','x','9','8','7','6','5','4','3','2'};
    char code=index[result];
    char last=id.charAt(17);
    last=last=='X'?'x':last;
    return last==code;
    }
    /**
    * 生成身份证验证码
    * @param id
    * @return
    */
    public static String getVerifyCode(String id){
    int[]temp={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    for(int i=0;i<temp.length;i++){
    sum17+=(id.charAt(i)-'0')*temp[i];
    }
    int result=sum17%11;
    String[] index={"1","0","x","9","8","7","6","5","4","3","2"};
    String code=index[result];
    System.out.println(code);
    return code;
    }
    }

    于复制数据库的问题用我们的开发工具Eclipse,打开里面的File Explorer——data/data/com.emaoer.android.identity/databases/lib.db
    这里面的.db文件就是我们工程下面res/raw/lib.db文件的复制我们可以借用我给大家介绍的SQLite数据库管理工具

  • 相关阅读:
    Spring_7_AOP之Advice应用
    JAVA豆知识
    SPRING事务_2
    JSP_5_JavaBean
    Spring事务_1
    java基本类型和包装类型
    SVN使用教程总结
    通过反射来创建对象?getConstructor()和getDeclaredConstructor()区别?
    Java泛型中extends和super的区别?
    数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2715606.html
Copyright © 2020-2023  润新知