การเขียนฟังก์ชั่นตรวจสอบหมายเลขบัตรประชาชนด้วยภาษา VB.Net

ฟังก์ชั่นนี้เป็น อัลกอริทึม ที่ใช้ในการเช็คหมายเลขบัตรประชาชน 13 หลักโดยรับค่าใน Text Box  จากผู้ใช้งานมาตรวจสอบ ความถูกต้อง

  • โดยผมจะทำเป็น Function ด้วยภาษา Visual Basic.Net จะได้นำไปใช้งานได้ง่ายแค่ให้ Function มันคืนค่าที่ตรวจเช็คแล้วกลับมาให้เราใช้งาน

       มาเริ่มกันเลย


      ตัวอย่าง ผมจะพัฒนาภายใต้ WEB Form นะครับ (เพราะตัวอย่างที่ทำด้วย Web Form มีน้อยมาก) แต่การเขียนคำสั่งทั่วไปก็คล้ายๆกัน

  • สร้างโปรเจคขึ้นมาด้วยภาษา Visual Basic > ASP.NET Web Application เสร็จแล้วคลิกปุ่ม OK
  • เลือก Empty เสร็จแล้วคลิกปุ่ม OK
  • คลิกขวาที่โปรเจคเลือก Add>Web Form
  • ตั้งชื่อ Page แล้วคลิก OK
  • ออกแบบหน้าเว็บตามตัวอย่างและตั้งค่า Properties ของ Control ดังนี้
    TextBox  > ID = TextBox1, MaxLength = 13
    Button > ID = Button1, Text = ตรวจสอบ
  • ดับเบิ้ลคลิกที่ปุ่ม ตรวจสอบ แล้วเขียนคำสั่งตามตัวอย่าง

    – Code ของปุ่ม ตรวจสอบ

– Code Java Script ใช้สำหรับแสดงแจ้งเตือนใช้แทน MasageBox

– Code Function ที่ใช้ตรวจสอบเลข 13 ว่าตัวเลขทั้ง 13  หลักถูกต้องหรือผิด

  • มาลองทดสอบโปรแกรมกันว่าผลลัพธ์จะได้ตามที่ Function ทำงานรึป่าว
    – ครั้งที่ 1 ผมจะลองกรอกเลข 13 หลักมั่วๆดูนะครับ แล้วผลที่ได้คือ Function จะ Return False กลับมาแล้วบอกว่าหมายเลขบัตรไม่ถูกต้อง!

    – ครั้งที่ 2 ผมจะลองกรอกตัวเลขไม่ครบ 13 หลัก แล้วผลที่ได้คือ จะเข้าเงื่อนไขเช็คตัวเลข < 13 ของ Function และมีการแจ้งเตือนดังตัวอย่าง

    – ครั้งที่ 3 ผมจะกรอกเลขบัตรที่ถูกต้อง แล้วผลที่ได้คือ Function จะ Return True กลับมาและแจ้งเตือนว่าหมายเลขบัตรใช้งานได้

      แล้ว Function มันเช็คยังไง?


    เช่น มีเลขประจำตัวดังนี้ 3813459837559 เลขสุดท้ายหรือ check digit ก็คือเลข 9 ระบบก็จะทำการ บวก ลบ คูณ หาร จากเลขสิบสองหลักแรก ถ้าผลที่ออกมาได้เลข 9 แสดงว่า เลขประจำตัวนั้นผ่าน หากเลขที่ออกมาไม่ใช่เลข 9 แสดงว่า เลขประจำตัวนั้นผิด ซึ่งวิธีหาตัวเลขตัวสุดท้าย ก็คือ

    1. เอาเลข 12 หลักแรกมา เขียนแยกหลักกัน แล้วเอาไปคูณกับเลขประจำหลักของมัน

    ตัวตั้ง 3 8 1 3 4 5 9 8 3 7 5 5
    ตัวคูณ 13 12 11 10 9 8 7 6 5 4 3 2
    ผลลัพธ์ 39 96 11 30 36 40 63 48 15 28 15 10

    2. เอาผลลัพธ์ที่ได้ทั้งหมดมาบวกกัน 39+96+11+30+36+40+63+48+15+28+15+10=431

    3. เอาเลขที่ได้ มา mod 11 ( หารเอาเศษ ) จะได้ 431 mod 11 = 2

    4. เอา 11 ตั้งแล้วเอามาลบกับเลขที่ได้เมื่อกี้ จะได้ 11-2=9

    เลขที่ได้ คือ 9 ก็เอาไปตรวจสอบว่าเลขสุดท้ายคือ 9 หรือเปล่า ถ้าใช่ก็แสดงว่ากรอกถูก ถ้าไม่ใช่ก็แสดงว่ากรอกผิด
    ถ้าเลขที่ได้เป็นเลขสองหลักให้เอาหลักสุดท้าย เช่น ได้ 10 ให้เอา 0


    – อัลกอริทึมใน Function ที่ใช้เช็คความถูกต้องก็จะวนลูปแทนการเขียนแยกหลัก เพื่อเอาไปคูณกับเลขประจำหลักและนำมาบวกรวมกันเก็บเอาไว้ที่ตัวแปร sum แล้วนำมา mod 11 เพื่อหารเอาเศษได้ผลลัพธ์ 2 ซึ่งในลูป For จะทำงานตามเงื่อนไขที่ได้กำหนดเอาไว้ใน For จนกว่าจะได้ผลลัพธ์ตามอัลกอริทึม ถ้าตัวเลขสุดท้ายถูกต้องก็จะ Return ค่าเป็น True