1个人信息系统需求分析
1.1初步需求
1 . 建立Person类,包括身份证号码、姓名、电话号码。
2 . 从键盘录入每个人的信息,每次录入要验证合法性。
3 . 身份证号码录入时要验证合法性,合法的身份证号码要求:
(1) 身份证号码长度必须是18位。
(2) 身份证前17位必须是数字;第十八位可以是数字也可以是字母X
(3) 身份证前2位必须是有效省份名称。
(4) 身份证的出生年月部分必须合法时间。
(5) 身份证的校验位必须符合校验规则。
4 . 当身份证号码录入为-1时结束。
1.2 实用需求
1 . Person类内的实用需求
(1)根据录入身份证的号码获得这个同学省份信息的方法。
(2)根据录入身份证的号码获得星座的方法
(3)根据录入身份证的号码获得性别的方法
(4)根据录入身份证的号码获得准确年龄的方法(按照系统日期准确计算)。
(5)根据录入身份证的号码获得是否成人的方法。能否和另一个人结婚的方法( 查一下婚姻法,看年龄,只能和年龄符合的异性结婚。)
2 . Test 类内的实用需求
(1) 根据提示进行录入身份证号码,录入姓名,录入手机号码。
(2) 当录入的身份证号码不符合初步需求内的要求时,提示“您输入的身份证号码不合法,请重新录入”,并进行重新录入。
(3) 当身份证号码,姓名,手机号码全部正确时打印。
(4) 将之前正确的信息存入一个集合内。
(5) 当身份证号码输入-1时,不再能录入任何数据,将之前正确的信息按一定的排序规则排序。
(6) 排序规则:1按省份顺序排序
2按年龄排序
2 个人信息系统思路
2.1 思路图解
2.2 Person组成部分叙述。
(1)Private: 采用Private访问限定符,为了保证数据的安全性,我们会把数据定义为private等(私有、封装),如果想要调用就会用到set()方法与get方法或者构造函数方法。使得后面定义的变量只有在该类中才能访问。
(2)类:String类。因为我们录入的信息可以全部归纳为字符串类.
(3)有参构造方法和无参构造方法:都是在构造的时候被调用。如果在创建对象时不写参数,调用的就是无参的构造方法。可是如果你写的有有参的构造方法,而没有无参的构造方法,那么再“创建对象时不写参数”就会报错,程序会认为你知道该怎么做。如果构造方法有参数,在创建对象时传入了参数,那么就会调用此方法,这一点和重载类似。
(4)构造方法:set()方法和get()方法,因为在刚开始我们给个人信息数据定义为private,所以我们只能通过这个方法去给数据赋值和调用数据
(5)isCorrectId(String id)方法【判断长度】:判断身份证的长度是否为18位,这里只是简单判断了一下身份证长度。如果身份证包含了多个字母,也可以,只判断长度,并没有进一步判断。
(6)getXingBie()方法【判断性别】:根据用户录入的身份证号码,系统调用这个方法就可以输出该身份证号码主人的性别。
(7)getProv()方法【判断省份】:根据用户录入的身份证号码,取出身份证号码有效位段,通过该方法内的两个集合进行比较,得到该号码的省份。
(8)getAge()方法【判断年龄】:取出身份证中记录出生日期的那串数字,进行年月日划分。再和该方法中的提取到的系统的年月日进行算法运算,进而得到该身份证号码主人的年龄。
(9)getXingZuo()方法【判断星座】:通过switch循环进行判断用户的星座。
(10) marry(Person p1)方法和wasOverAgeForMarry()方法【能否结婚】:wasOverAgeForMarry()方法判断了两人是否达到法定结婚年龄,男二十二周岁和女二十周岁,marry(Person p1)方法判断两人的性别是否不一样。两个方法一起使用,才能保证达到法定年龄和性别不同时,可以输出“恭喜xxx和xxx结婚成功”,年龄不符输出“对不起您没有到达结婚年龄您不能结婚”,性别一致时输出“对不起您对象没有到达结婚年龄您不能结婚”。
(11)toString()语句【输出语句】:对以上的方法的输出结果进行注释和编辑,以便让用户得到最佳的效果体验。
2.3 比较器类组成叙述。
2.4 Test类组成部分叙述。
(1)java.util包【类包】:
动态数组ArrayList,提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。
HashMap
Scanner
Comparator比较器
(2) isCorrectBirthday(String year, String month, String day)方法【判断是否有效年月】:对13578 10 12 判断身份证的年月日是否为有效,例如闰年的二月有29天;一月,三月,五月,七月,八月,十月,十二月有31天;四月,六月,九月,十一月有三天的情况进行整理与判断。
(3)isCheckCode(String id)方法【判断校验位】:校验位是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
(4)isCorrectSf(String sf)方法【判断是否省份是否有效】:Person内的getProv()方法只有判断省份,空的省份也可以输出,所以这里的方法就进一步判断省份是否正确存在。
(5)isNumber(String id)方法【判断身份证数字部位是否正确】:对用户录入的身份证进行判断,判断是否是数字。
(6)isCorrectId(String id)方法【总体判断方法】:当以上的方法全部正确时,才不会让用户重新录入。
(7) show1(ArrayList list)方法【ArrayList的循环打印方法】:
因为每录入一个正确的信息就会存入动态数组中,要用循环打印。
(8)while(true)语句【循环录入语句】:为了实现让用户可以录入多个信息,采用While循环来实现。
(9)Person类方法调用:通过调用Person内的方法进而得到该身份的相关信息。
(10)比较器调用:通过比较器对动态数组内的数据按年龄或省份进行排序。
3.个人信息系统流程图
3.1 Person内流程图
3.1. (1)性别方法
3.1.(2)星座方法
true
false
true
false true
false true
省略其他 其他的表达式 省略语句式
同理
3.1.(3)省份方法
3.1.(4)年龄方法
3.1.(5)判断结婚
false
true
false
true
false
true
3.2 Test内主要流程图
存
入 录入
数
组
中 false
, true
并 false
录
入 true
下 false
一
个
值 true
true
false
录入
4.结果演示
题目举例
输入两个正确的用户信息 一个身份证号码错误的信息 再输入id=-1;
运行(绿色标注为提示语句和输出语句)
请输入身份证号码:
13
请输入姓名:
小红
Id=13 姓名 小红 性别男 星座双鱼 省份河北省 年龄19
请输入身份证号码:
13
请输入姓名:
小明
Id=13姓名 小明 男 星座白羊 省份河北省 年龄18
请输入身份证号码:
13
身份证号码有误,请重新输入:
请输入身份证号码:
-1
按年龄排序后:
Id=13 姓名 小红 性别男 星座双鱼 省份河北省 年龄19
Id=13 姓名 小明 性别男 星座白羊 省份河北省 年龄18
按省份排序后:
Id=13 姓名 小红 性别男 星座双鱼 省份河北省 年龄19
Id=13 姓名 小明 性别男 星座白羊 省份河北省 年龄18
。
转载自原文链接, 如需删除请联系管理员。
原文链接:个人信息系统,转载请注明来源!