PDA

نسخه کامل مشاهده نسخه کامل : الگویتم تشخیص صحت شناسه ملی اشخاص حقوقي



saeedjaihoni
17-05-2013, 16:40
مطلب زير رو از اين آدرس گرفتم و كد جاوا اسكريپتش هم بصورتي كه مي بينيد بود و من لازم ديدم كه اونو براي دوستاني كه به اين كد نياز دارن به كد دلفي تبديل كنم
لينك منبع : [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

امروزه در اکثر نرم افزارهای تولیدی نیاز به استفاده از شناسه ملی اشخصاص حقوقی به عنوان یک مشخصه منحصر به فرد برای اطلاعات شخص حقوقي می باشد.برای استعلام شناسه ملی می توانید به سایت [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) مراجعه نموده و با وارد کردن مشخصات شخص حقوقی مورد نظر اقدام به جستجوی شناسه ملی داده شده نمایید. نتیجه این جستجو محل ثبت ، نام شخص حقوقی، شماره ثبت ، شناسه ملی ، تاریخ ثبت و آدرس و کد پستی شخص حقوقی می باشدهر چند روش بالا برای اطمینان از صحت و ارتباط شناسه داده شده با شخص مورد نظر روش خوبی است ولی همواره نیازمند داشتن یک اتصال اینترنتی بوده و به صورت موردی باید جستجو شود. (شبیه بررسی مدارک در مراحل اولیه کارها ) اما مهندسان نرم افزار و برنامه نویسان نیازمند يک الگوی کنترلی برای صحت کد می باشند تا بتوانند از ورود کد های نامعتبر جلوگیری کرده و یا کد های موجود در سیستم را وارسی نمایند.متاسفانه در حال حاضر هیچ الگوریتمی برای تشخیص صحت کد ورودی در اختیار برنامه نویسان وجود ندارد.اخیرا با توجه به نیاز خودم به کنترل صحت کد ورودی ،الگوریتم مربوط به کنترل صحت شناسه ملی را بدست آوردم و چون مطمئن هستم افراد زیادی هم همین نیاز را دارند روال انجام کار را در این جا توضیح می دهمشناسه ملی شماره ای است 11 رقمی که از سمت چپ چهار رقم کد شهرستان محل ثبت ، شش رقم بعدی کد منحصر به فرد برای شخص حقوقی دارنده شناسه در شهرستان محل ثبت و رقم آخر آن هم یک رقم کنترل است که از روی 10 رقم سمت چپ بدست می آید. برای بررسی کنترل کد کافی است مجدد از روی 10 رقم سمت چپ رقم کنترل را محاسبه کنیم ساختار شناسه ملی در زیر نشان داده شده است


ساختار شناسه ملی



ارقام کد
رقم کنترل
10 رقم سمت چپ شناسه ملی


موقعیت
1

2
3
4
5
6
7
8
9
10



1- برای محاسبه رقم کنترل از روی سایر ارقام ، هر رقم را با رقم دهگان کد +2 کرده و سپس در ضریب آن ضرب می کنیم و حاصل را با هم جمع می کنیم.2- مجموع بدست آمده از مرحله یک را بر 11 تقسیم می کنیم3- اگر باقیمانده برابر 10 باشد ، باقیمانده را برابر 0 قرار می دهیم4-اگر رقم کنترل برابر باقیمانده باشد شناسه ملی صحیح فرض می شود در غیر این صورت شناسه ملی مورد نظر صحیح نمی باشد مثال : آیا کد 10380284790 یک شناسه ملی معتبر است؟ (نمایش اطلاعات مالک شناسه ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ue))برای این منظور باید براساس جدول زیر عمل کنیم. دقت کنید که ضریب ارقام دهگان به بعد عبارتند از 17 ، 19 ، 23 ، 27، 29 و همین الگو مجددا تکرار شده است


ساختار شناسه ملی


ساختار کد
رقم کنترل
10 رقم سمت چپ شناسه ملی


ارقام شناسه
0
9
7
4
8
2
0
8
3
0
1


رقم دهگان +2

11
11
11
11
11
11
11
11
11
11


ضريب ارقام

17
19
23
27
29
17
19
23
27
29


محاسبه حاصل ضرب

340
342
345
513
377
187
361
322
297
348



هریک از ارقام سمت چپ شناسه ملی (10 رقم سمت چپ شناسه ملی) را با رقم دهگان شناسه ملی +2 جمع می کنیم و حاصل را در را ضریب آن رقم ضرب کرده و نتیجه ها را با هم جمع می کنیم .دقت کنید در اینجا رقم دهگان 9 و رقم دهگان +2 برابر با 11 می باشد. بنابراین همه ارقام کد با 11 جمع شده و سپس در ضریب مربوط به خودش ضرب شده است.
(1+11)*29+(0+11)*27+(3+11)*23+(8+11)*19+(0+11)*17+ (2+11)*29+(8+11)*27+(4+11)*23+(7+11)*19+(9+11)*17= 34323432÷11=312 و R=0
چون باقیمانده برابر صفر است پس باید رقم کنترل این شناسه برابر صفر باشد.با دقت در شناسه ملی مورد نظر متوجه می شویم که رقم کنترل ورودی برابر صفر است پس شناسه ملی مورد نظر به عنوان یک شناسه ملی معتبر قابل قبول است.


كد جاوا اسكريپت :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

كد دلفي :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید