วันนี้ผมจะมาเขียนโปรแกรมสุ่มรหัสบัตรประชาชน พอดีได้ไอเดียมาจาก เรียนแลป9แล้วพอจะทำปุ่มเป็นจึงไปปรึกษา อ.ว่าถ้าจะให้เลขหรืออักษรแสดงบน edit textเนี่ย มันทำได้ไหม ได้คำตอบมาว่าได้จึงละเลงใส่อัลกอริทึมจนผ่าน digit code(คือเลขหลักสุดท้ายไว้เช็คความถูกต้องของเลขทุกหลัก)
- เรามาเริ่มเขียนไฟล์ .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;
}
da fuq
ตอบลบ>.< เขียน c ไม่เป็น แต่พออ่านออกครับ
ตอบลบสนใจเครื่องอ่านบัตรดูได้ที www.SalaThaiIT.com นะครับ
>.< เขียน c ไม่เป็น แต่พออ่านออกครับ
ตอบลบสนใจเครื่องอ่านบัตรดูได้ที www.SalaThaiIT.com นะครับ
ผมว่างงานกับโควินแต่ผมม่ด้เงีนอะไรสักอย่างก็ผมม่ค่อยรุ้ข่าวสารคับ0946803389
ตอบลบ0946803389ติดต่อผม 56ม.3ต.ควนโพธิ์อ.เมืองจ.สตูลอรุณศักดิ์ เจ๊ะบาว่างงานเพราะโควินเงินเยียวยาก็ไม่ได้เดือดร้อน
ตอบลบ