Sunday, April 18, 2010

การเขียนโปรแกรม Check Digit

เขียนโปรแกรม Check Digit โดยใช้ vb.net

เริ่มแรกให้เราสร้าง Textbox สำหรับรับค่าของ เลข ซึ่งโปรแกรมนี้เราจะใช้กับเลขประจำตัวประชาชน



จากนั้นให้ double click เข้าไปใน Button เพื่อทำการเขียนโปรแกรม ให้คำนวณ Check digit
และแสดงออกมา เมื่อทำการคลิ๊ก โดยใส่โค้ดดังนี้ (คลิกที่รูปเพื่อขยาย)


เมื่อเราทำการรัน ก็จะได้ โปรแกรมที่เราต้องการเช็คขึ้นมา
ทำการทดสอบโดยการใส่ตัวเลขแค่12 หลัก แล้วทำการ Check ตัวที่ 13


เมื่อกด button แล้วก็จะได้เลข 1 เป็นตัวที่ผ่านการเช็คเรียบร้อยแล้ว


จากนั้นให้ลองใส่ตัวเลขอื่นๆ ไปดูก็จะได้ตัวเลขตัวสุดท้ายที่ผ่านการคำนวณ check digit แล้วได้ตัวเลข
ตัวสุดท้ายออกมา

Saturday, April 17, 2010

การเช็ครหัสตัวท้ายสุดของ เลขบัตรประชาชน

การตั้งรหัสเลขบัตรประจำตัวประชาชนนั้น จะใช้การตรวจสอบข้อมูลโดยใช้ การ Check Digit
Modulus 10
กำหนดน้ำหนักให้หลักแต่ละหลักของตัวเลขที่ตั้งขึ้นมา โดย
ตำแหน่งเลขคี่ ให้ค่าเป็น 2
ตำแหน่งเลขคู่ ให้ค่าเป็น 1
นำตัวเลขแต่ละหลักไปคูณกับค่าน้ำหนักที่หาได้ในข้อ 1 ถ้ามีค่ามากกว่า 9
ให้นำหลักหน่วยกับสิบ บวกกันก่อน (เช่น คูณกันแล้วได้ 18 ก็นำ 1 + 8 ค่าที่ได้คือ 9)
บวกค่าที่ได้ของแต่ละหลักเข้าด้วยกัน
นำค่าที่ได้ หารด้วย 10 เหลือเศษเท่าไหร่ นำเศษนั้นไปลบออกจาก 10 อีกครั้ง
ผลลัพธ์ที่ได้คือ check digit ให้นำไปใส่ต่อท้ายชุดของตัวเลขนั้น


ตัวอย่าง รหัสต่างๆที่ใช้ MODULUS 10 ได้แก่
หมายเลขบัตรเครดิต
เลขสมุดบัญชีธนาคาร
เลขบัตรประจำตัวผู้เสียภาษีอากร

Modulus 11
กำหนดน้ำหนักโดยเริ่มจากหลักหน่วย โดยหลักหน่วยให้ค่าเริ่มต้นเป็น 2 ในหลักถัดไปก็บวก เพิ่มทีละ 1
นำตัวเลขแต่ละหลักไปคูณกับค่าน้ำหนักที่หาได้ในข้อ 1
บวกค่าที่ได้ของแต่ละหลักเข้าด้วยกัน
นำค่าที่ได้ หารด้วย 11 เหลือเศษ ให้นำเศษนั้นไปลบออกจาก 11
ถ้าลบแล้วมีค่าเป็น 10 นำ 0 ไปเป็น check digit ถ้ามีค่าเป็น 11
นำ 1 ไปเป็น check digit ถ้าต่างจากนี้นำค่านั้นไปเป็น check digit




รหัสต่างๆที่ใช้ MODULUS 11 เช่น
หมายเลข ISBN
เลขประจำตัวประชาชน

ข้อมูลเหล่านี้อ้างอิงมาจาก slide ของ อาจารย์เกษม กมลชัยพิสิฐ