[c++]โปรแกรมสุ่มรหัสบัตรประชาชน

  วันนี้ผมจะมาเขียนโปรแกรมสุ่มรหัสบัตรประชาชน พอดีได้ไอเดียมาจาก เรียนแลป9แล้วพอจะทำปุ่มเป็นจึงไปปรึกษา อ.ว่าถ้าจะให้เลขหรืออักษรแสดงบน edit textเนี่ย มันทำได้ไหม ได้คำตอบมาว่าได้จึงละเลงใส่อัลกอริทึมจนผ่าน digit code(คือเลขหลักสุดท้ายไว้เช็คความถูกต้องของเลขทุกหลัก)

Download


  • เรามาเริ่มเขียนไฟล์ .h เพื่อจองพื้นที่ให้ปุ่มก่อน



#include <afxwin.h>

#define IDC_MYGEN 1001 // (1) define
#define IDC_MYEDIT 1002  // (1) define
#define IDC_MYCOPY 1003  // (1) define

class CMyApp : public CWinApp // create application
{
public:
virtual BOOL InitInstance();
};

class CMyFrame : public CFrameWnd //create window
{
public:
CMyFrame();
~CMyFrame();

CButton *myGen;// (2) declare button control
CButton *myCopy;
CEdit *myEdit; // (2) declare button control
int x ;

afx_msg void OnGen(); // (3) 
afx_msg void OnCopy();

DECLARE_MESSAGE_MAP();
};

  • หลังจากนั้นก็มาลุยโค้ดกันเลยในไฟล์ .cpp



#include "Header.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h> 
CMyApp theApp; // create application object

BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
ON_BN_CLICKED(IDC_MYGEN, OnGen) 
ON_BN_CLICKED(IDC_MYCOPY, OnCopy) 
END_MESSAGE_MAP()

void CMyFrame::OnCopy(){
myEdit->SetSel(0,-1,TRUE);  //เลือกครอบทุกข้อความ
myEdit->Copy();
myEdit->SetFocus();   //ทำไฮไลต์ให้ตรงตัวอักษร
}

void CMyFrame::OnGen()
{
int c=0,sum,total,all;
int a[13];
for(c=0; c<=12 ;c++)
{
 srand (time(NULL)+c); //กำหนดค่าseed เป็นเวลา+runing number
  if(c==0)
  {
   do{
   a[0]=  rand() % 9;}while(a[0]==0);  
  }
  else
  {   
   a[c]= rand() %10 ;
  }
}

sum = (a[0]*13)+(a[1]*12)+(a[2]*11)+(a[3]*10)+(a[4]*9)+(a[5]*8)+(a[6]*7)+(a[7]*6)+(a[8]*5)+(a[9]*4)+(a[10]*3)+(a[11]*2);
total = sum % 11 ;
all= 11-total;
a[12] = all%10;

CString ss = "";    //กำหนดตัวแปรเพื่อรับค่าไปแสดงใน edit pad
for(int y = 0; y<13;y++){
 ss += (char)(a[y]+'0');} //นำเลขมา +'0' จะได้ แอสกี้ของเลขนั้นมา แล้วแปลงเป็นchar เอาตัวอักษรมาต่อกันเรื่อยๆ //อันนี้เป็นวิธีเอาตัวเลขมาเรียงกันแสดงผลบนedit pad
myEdit->SetWindowText(ss);  // นำไปแสดงบน edit pad 

}

BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMyFrame(); // create windows frame object and link to application
m_pMainWnd->ShowWindow(m_nCmdShow); //show frame windows
m_pMainWnd->UpdateWindow(); // update frame windows

return TRUE;
}

CMyFrame::CMyFrame()
{
myGen = new CButton(); // (3) memory allocation
myCopy = new CButton();
myEdit = new CEdit(); // (3) memory allocation

Create(NULL,"ID Random [TH]",
WS_OVERLAPPEDWINDOW, CRect(100,100,330,300));
// (4) create control
myGen->Create("Generator",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10,35,200,150),this,IDC_MYGEN);

myCopy->Create("Copy",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(135,10,200,30),this,IDC_MYCOPY);

myEdit->Create( WS_CHILD | WS_VISIBLE | WS_BORDER,
CRect(10,10,130,30),this,IDC_MYEDIT);
myEdit->SetWindowText("Click Generator");
}

CMyFrame::~CMyFrame()
{
delete myGen;
delete myCopy;
delete myEdit;
}

5 ความคิดเห็น:

  1. >.< เขียน c ไม่เป็น แต่พออ่านออกครับ

    สนใจเครื่องอ่านบัตรดูได้ที www.SalaThaiIT.com นะครับ

    ตอบลบ
  2. >.< เขียน c ไม่เป็น แต่พออ่านออกครับ

    สนใจเครื่องอ่านบัตรดูได้ที www.SalaThaiIT.com นะครับ

    ตอบลบ
  3. ผมว่างงานกับโควินแต่ผมม่ด้เงีนอะไรสักอย่างก็ผมม่ค่อยรุ้ข่าวสารคับ0946803389

    ตอบลบ
  4. 0946803389ติดต่อผม 56ม.3ต.ควนโพธิ์อ.เมืองจ.สตูลอรุณศักดิ์ เจ๊ะบาว่างงานเพราะโควินเงินเยียวยาก็ไม่ได้เดือดร้อน

    ตอบลบ

VISITOR

8798