Thursday, May 10, 2012

ฟังก์ชันแปลงตัวเลขเป็นตัวหนังสือ (Thai Baht Function C#)


เกริ่นนำ
ฟังก์ชั่นนี้ผมก็ได้เขียนขึ้นตั้งแต่ฝึกใช้ C# ใหม่ๆ ไม่รู้ตอนนี้เขามีฟังก์ชั่น จาก Visual Studio หรือยัง ตอนผมเขียนนั่นยังเป็น Framwork 2.0 และพัฒนาด้วย SharpDevelop 2.0 แต่ก็ได้นำไปใช้งานในระบบและใช้งานได้ดี จึงอยากเผยแพร่โค้ด ให้นำไปใช้งานกัน มาดูตัวอย่างการใช้งานกันเลย
๑. Thaibaht.cs
/*
* Created by SharpDevelop.
* User: ยงยุทธ ปินะถา
* Date: 16/01/2550
* Time: 21:15
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace Test1.Models
{
/// <summary>
    /// Description of Thaibaht.
    /// </summary>
    ///
    [Serializable]
public class Thaibaht
{
public Thaibaht()
{
}
}
public class ThaibahtMgr
{
public ThaibahtMgr()
{
}
private char cha1;
private string ProcessValue;
public string Process(string numberVar1)
{
string [] NumberWord;
string [] NumberWord2;
string Num3="";
cha1='.';
NumberWord=numberVar1.Split(cha1);
cha1=',';
NumberWord2=NumberWord[0].Split(cha1);
for (int i=0;i<=NumberWord2.Length-1;i++)
{
Num3=Num3+NumberWord2[i];
}
ProcessValue= SplitWord(Num3);
if (NumberWord.Length > 1)
{
if (int.Parse(NumberWord[1])>0){
ProcessValue=ProcessValue+"บาท"+SplitWord(NumberWord[1])+"สตางค์";
}else{
ProcessValue=ProcessValue+"บาทถ้วน";
}
}else{
ProcessValue=ProcessValue+"บาทถ้วน";
}
return ProcessValue;
}
public string SplitWord(string numberVar)
{
int i=numberVar.Length;
int k=0;
int n=i;
int m=i;
int b=6;
//char value2;
char [] value1;
string CurrencyWord="";
value1=numberVar.ToCharArray();
for (int a=0;a<=i;a=a+7){
if (n<=a+7 && n>0){
b=n-1;
if (i>7){
k=1;
}
}else{
b=6;
}
if (n>0){
for (int j=0;j<=b;j++){
n--;
k++;
CurrencyWord=GetWord(value1[n].ToString(),k)+CurrencyWord;
}
}
}
return CurrencyWord;
}
public string GetWord(string str1, int Num1)
{
string value1=GetCurrency(Num1);
switch(str1)
{
case "1":
if (Num1==1)
{
value1=value1 +"เอ็ด";
}else if (Num1>2){
value1="หนึ่ง"+value1;
}
break;
case "2":
if (Num1==2)
{
value1="ยี่" + value1;
}else{
value1="สอง" + value1;
}
break;
case "3":
value1="สาม" + value1;
break;
case "4":
value1="สี่" + value1;
break;
case "5":
value1="ห้า" + value1;
break;
case "6":
value1="หก" + value1;
break;
case "7":
value1="เจ็ด" + value1;
break;
case "8":
value1="แปด" + value1;
break;
case "9":
value1="เก้า" + value1;
break;
default :
value1="";
break;
}
return value1;
}
public string GetCurrency(int Num2)
{
string value1;
switch(Num2)
{
case 1:
value1="";
break;
case 2:
value1="สิบ";
break;
case 3:
value1="ร้อย";
break;
case 4:
value1="พัน";
break;
case 5:
value1="หมื่น";
break;
case 6:
value1="แสน";
break;
case 7:
value1="ล้าน";
break;
default:
value1="";
break;
}
return value1;
}
}
}

๒. การใช้งานโค้ด
เมื่อเราสร้างไฟล์ดังกล่าวเรียบร้อยแล้ว ผมจะแสดงตัวอย่างด้วยการสร้างฟอร์มตามภาพนี้

รูปแสดงฟอร์มการออกแบบทดลองฟังก์ชั่น Thaibaht
เมื่อสร้างฟอร์มเรียบร้อยผมเขียนโค้ดทดสอบได้ดังนี้


using System;
using System.Drawing;
using System.Windows.Forms;
using Test1.Models;
namespace Test1
{
///
/// Description of frmTestThaiBaht.
///
public partial class frmTestThaiBaht : Form
{
//ประกาศตัวแปรสำหรับเรียกใช้ฟังก์ชั่น
private ThaibahtMgr tb = new ThaibahtMgr();
public frmTestThaiBaht()
{
InitializeComponent();
}

void Button1Click(object sender, EventArgs e)
{
//ให้ค่าตัวเลข เป็นตัวหนังสือ
label2.Text=tb.Process(textBox1.Text);
}
}
}
ก็หวังว่าจะมีประโยชน์สำหรับคนที่กำลังหาโค้ดอยู่นะครับ

No comments:

Post a Comment