闲来无事,想不想秀翻身边队友呢?
闲来无事昨天在逛B站的时候,突然看到有个同样在深究C语言的朋友发了一个关于身份证检验系统的视频,因此就静下来看了一下,从学习到分析,将其构成一定的思路自己补充完全前前后后花费了将近3个小时,可能也是因为自己还是不够熟练的原因的,但是好歹算是将其整体的完成了,看到成果的时候还是挺让人高兴的。
开发一个程序之前,最为重要的是它所涉及到的每个步骤
所说到的每个步骤,笼统一些的说法其实就是所构建的它所要满足的条件,比如对于身份证检验系统来说,不仅要满足年月日,还应该满足最后一位的ISO校验,也就是因为这一系列的问题才会导致很多的朋友难以快速的完成对于程序的需求,因此很难快速的完成对一个程序的补充和完善。
程序段
主函数段
如果大家读懂了主函数,或者说是知道要检验一个身份证所需要检验那些东西,那么编写一个身份证检验系统绝对是分分钟就可以完成的了。
//**核心主函数**
int main()
{
char id[20] = {
0 };//定义所需要输入身份证的长度
char choose;//为之后查询结束一个之后是否结束程序做准备
int year, month, day;
printf("※Luckily原创小程序※\n身份证号校验or查询系统\n");
start:
printf("————————————\n");
printf("请输入需要查询的身份证号:\n");
scanf("%18s", id);
if (CheckFormat(id) == 0) goto start;//基础格式的检查,是用来检查身份证是否为18位
year = Trans(id[6]) * 1000 + Trans(id[7]) * 100 + Trans(id[8]) * 10 + Trans(id[9]);
month = Trans(id[10]) * 10 + Trans(id[11]);//进行年月日的转换,从身份证之中转换出来我们所需要计算的年月日
day = Trans(id[12]) * 10 + Trans(id[13]);
if (CheckData(year, month, day) == 0)goto start;//检查年月日是否符合正规的日期
if (CheckCode(id) == 0) goto start;//身份证最后一位ISO的校验
printf("该身份证号是合法的身份证号!\n");
printf("————————————\n");
printf("信息如下:\n");
FindAddress(id);//输出身份证前六位所对应的地理位置
FindSex(id);//输出性别
FindBirthday(year, month, day