PDA

View Full Version : آموزش: کلاس اعتبار سنجی کد ملی



sqlcommandbuilder
دوشنبه 16 اسفند 1389, 21:34 عصر
قاعده گنجانده شده در کد ملی اینست که ارتباط ریاضی خاص بین رقم یکان کد ملی با 9 رقم دیگر وجود دارد بگونه ای که اگر یکی از اعداد به اشتباه وارد شود این ارتباط گسسته شده و موجب نامعتبر شدن کد ملی می گردد.جهت تبیین این ارتباط در نظر بگیرید که هر رقم از کد ملی دارای یک ارزش مکانی 1 تا 10 می باشد.
در ابتدا هر عدد موجود در رقم دوم تا دهم ضربدر ارزش مکانی خودش می شود .بنابراین 9 عدد حاصل می شود که حاصل ضرب اعداد ذکر شده می باشد. رقم یکان را فعلاً مد نظر قرار نمی دهیم.

http://www.babrian.com/Portals/0/melli.jpg
در مرحله بعد 9 عدد حاصل را با هم جمع می کنیم
126=2+0+12+45+6+21+40+0+0
در قدم بعدی عدد حاصل را تقسیم بر 11 می نمایم و باقیمانده آنرا مد نظر قرار می دهیم
5 =باقیمانده 11=11 : 126
اگر باقیمانده عددی برابر با صفر یا 1 باشد ،رقم یکان کد ملی برابر با همان خواهد بود و اگر بین 2 تا 9 باشد باید عدد یازده را منهای باقیمانده نماییم .حاصل این تفریق همان عدد یکان کد ملی است.در مثال فوق رقم یکان کد ملی برابر با 6 می باشد

6=5-11
بنابراین اگر یکی از اعداد کد ملی جابجا شود و یا به اشتباه وارد شود محاسبه نهایی موجب اختلال در رقم یکان خواهد شد

بنده برای این کار یک کلاس طراحی کرده ام.
تا قبل از قرار دادن آن در سایت شما نیز این کلاس را ایجاد نمایید.

نمونه استفاده شده از کلاس بنده:
http://portal.azmoonehonar.ir/tabid/61/Default.aspx


منبع: www.babrian.com (http://www.babrian.com/)

sh2007
سه شنبه 17 اسفند 1389, 07:24 صبح
قاعده گنجانده شده در کد ملی اینست که ارتباط ریاضی خاص بین رقم یکان کد ملی با 9 رقم دیگر وجود دارد بگونه ای که اگر یکی از اعداد به اشتباه وارد شود این ارتباط گسسته شده و موجب نامعتبر شدن کد ملی می گردد.جهت تبیین این ارتباط در نظر بگیرید که هر رقم از کد ملی دارای یک ارزش مکانی 1 تا 10 می باشد.
در ابتدا هر عدد موجود در رقم دوم تا دهم ضربدر ارزش مکانی خودش می شود .بنابراین 9 عدد حاصل می شود که حاصل ضرب اعداد ذکر شده می باشد. رقم یکان را فعلاً مد نظر قرار نمی دهیم.

http://www.babrian.com/Portals/0/melli.jpg

در مرحله بعد 9 عدد حاصل را با هم جمع می کنیم
126=2+0+12+45+6+21+40+0+0
در قدم بعدی عدد حاصل را تقسیم بر 11 می نمایم و باقیمانده آنرا مد نظر قرار می دهیم
5 =باقیمانده 11=11 : 126
اگر باقیمانده عددی برابر با صفر یا 1 باشد ،رقم یکان کد ملی برابر با همان خواهد بود و اگر بین 2 تا 9 باشد باید عدد یازده را منهای باقیمانده نماییم .حاصل این تفریق همان عدد یکان کد ملی است.در مثال فوق رقم یکان کد ملی برابر با 6 می باشد

6=5-11
بنابراین اگر یکی از اعداد کد ملی جابجا شود و یا به اشتباه وارد شود محاسبه نهایی موجب اختلال در رقم یکان خواهد شد

بنده برای این کار یک کلاس طراحی کرده ام.
تا قبل از قرار دادن آن در سایت شما نیز این کلاس را ایجاد نمایید.

نمونه استفاده شده از کلاس بنده:
http://portal.azmoonehonar.ir/tabid/61/Default.aspx


منبع: www.babrian.com (http://www.babrian.com/)
با سلام
آيا اين فرمت رو از اداره ثبت احوال گرفتيد يا ابتكاري خودتان است منظورم محاسبه فرمولهاي چك كردن درست بودن كد ملي است

sqlcommandbuilder
سه شنبه 17 اسفند 1389, 10:13 صبح
با سلام
آيا اين فرمت رو از اداره ثبت احوال گرفتيد يا ابتكاري خودتان است منظورم محاسبه فرمولهاي چك كردن درست بودن كد ملي است
از ثبت احوال هست

conroe7000
جمعه 27 اسفند 1389, 18:32 عصر
سلام
من که هر چی حساب کردم جواب اشتباه میاد
همین جمع و تقسیم خود شما هم جور نیست
عدد 126 که حاصل جمع هست رو وقتی تقسیم بر 11 می کنیم جوتب 6 نمی اید بلکه 11.45 میاد
اگه میشه یه بار چک کنید ببینید جایی احتمالن اشتباه نشده ؟

MMSHFE
چهارشنبه 05 مرداد 1390, 07:57 صبح
دوست عزيز، باقيمانده تقسيم رو نگاه كنيد نه خارج قسمت!
البته من اين الگوريتم رو يكم اصلاح ميكنم:
كد ملي از 10 رقم تشكيل شده كه سه رقم اول، كد شهرستان و 6 رقم بعد، كد منحصر به فرد و رقم آخر‌ (يكان) رقم كنترل هست.
حالا ما براي تعيين اعتبار، از اونجا كه اكثراً صفرهاي اول كد ملي (در برخي كدهاي ملي) ثبت نميشه، بايد اولاً چك كنيم و ببينيم اگه طول ارقام 8 يا 9 بود، 2 يا 1 صفر (برحسب نياز) به ابتداي كد اضافه كنيم. حالا فرض كنيد اين كد رو ميخوايم چك كنيم:
1-153362-362
براي برسي، هر رقم رو ضرب در ارزش مكانيش ميكنيم (به جز رقم كنترل) :

3*10=30
6*9=54
2*8=16
1*7=7
5*6=30
3*5=15
3*4=12
6*3=18
2*2=4

حالا مجموع اينها ميشه 186=4+18+12+15+30+7+16+54+30 كه ما با باقيمانده تقسيم 11÷186 كار داريم كه ميشه 10.
اين باقيمانده، اگر كوچكتر يا مساوي 2 بود، خودش رو درنظر ميگيريم و اگه بيشتر از 2 بود، اون رو از 11 كم ميكنيم و نهايتاً اگه حاصل نهايي، با رقم كنترل برابر بود، كد ملي معتبر هست. توي مثال ما هم 1=10-11 درنتيجه رقم كنترل صحيح هست و كد ملي، معتبره.
موفق باشيد.

Arthas1990
چهارشنبه 05 مرداد 1390, 08:01 صبح
شما باید باقی مانده رو استفاده کنی دوست گلم. منطور همون mod یا % است.
126%11=5;

f.beigirad
یک شنبه 17 شهریور 1392, 12:17 عصر
با سلام.

اتباع خارجی که کد ملی ندارن.

اتباع خارجی مجاز حتما باید یه کد شناسایی داشته باشن دیگه.

کسی از دوستان اطلاعاتی درباره این کد و چگونگی اعتبار سنجیش نداره؟

ممنون میشم اگر راهنماییم کنید