比如说结帐时提示应收金额。。。
实收金额。。。
找零金额。。。
我一点思路都没有
不知道怎么做
为此,需要完成以下内容:
1、分别录制各WAV文件:0,1,2,3,4,5,6,7,8,9,元,角,分,拾,佰,仟,万,亿,整
2、在工程中声明两个External 函数(Windows的API函数),用于发声;
Function boolean sndPlaySoundA (string SoundName, uint Flags) Library "WINMM.DLL"
Function uint waveOutGetNumDevs () Library "WINMM.DLL"
3、新建一函数用于在程序中调用发声:
Function PlaySound(string as_filename,integer ai_option) returns integer
该函数的代码如下:
uint lui_numdevs
lui_numdevs = WaveOutGetNumDevs()
If lui_numdevs > 0 Then
sndPlaySoundA(as_filename,ai_option)
return 1
Else
return -1
End If
4、新建一函数用于将小写金额转换成大写金额:
Function xx2dx(Decimal ls) returns string
代码实现如下:
string dx_sz,dx_dw,str_int,str_dec,dx_str,fu,a,b,b2,c,d,result
long num_int,num_dec,len_int,i,a_int,pp
dx_sz = "零壹贰叁肆伍陆柒捌玖"
dx_dw = "万仟佰拾亿仟佰拾万仟佰拾元"
/*处理小于零情况*/
if ls<0 then
ls = ls*(-1)
fu = "负"
else
fu = ""
end if
/*取得整数及整数串*/
dx_str = string(ls)
if (ls>0) and (ls<1) then dx_str = "0"+dx_str
pp = pos(dx_str,".")
if pp>0 then
str_int = mid(dx_str,1,pos(dx_str,".")-1)
else
str_int = dx_str
end if
num_int = long(str_int)
/*取得小数及小数串*/
if (ls>0) and (ls<1) then
num_dec = ls * 100
else
num_dec = (ls - num_int) * 100
end if
str_dec = string(num_dec)
len_int = len(str_int)
dx_str = ""
/*转换整整部分*/
for i = 1 to len_int
/*a为小写数字字符,b为对应的大写字符,c为对应大写单位,d为当前大写字符串的最后一个汉字*/
a= mid(str_int,i,1)
a_int = long(a)
b = mid(dx_sz,(a_int*2)+1,2)
c = mid(dx_dw,((13 - len_int +i - 1)*2+1),2)
if dx_str<>"" then
d=mid(dx_str,len(dx_str)-1,2)
else
d= ""
end if
if (b="零") and ((d="零") or (b=b2) or (c="元") or (c="万") or (c="亿")) then b = ""
if (a="0") and (c<>"元") and (c<>"万") and (c<>"亿") then c=""
if ((c="元") or (c="万") or (c="亿")) and (d="零") and (a="0") then
dx_str = mid(dx_str,1,len(dx_str)-2)
d=mid(dx_str,len(dx_str)-1,2)
if ((c="元") and (d="万")) or ((c="万") and (d="亿")) then c = ""
end if
dx_str = dx_str + b+ c
b2 = b
next
/*处理金额小于1的情况*/
if len(dx_str) <= 2 then dx_str= ""
/*转换小数部分*/
if (num_dec<10) and (ls>0) then
a_int = long(str_dec)
b = mid(dx_sz,(a_int*2+1),2)
if num_dec = 0 then dx_str = dx_str + "整"
if num_dec > 0 then dx_str = dx_str +"零"+b+"分"
end if
if num_dec >= 10 then
a_int = long(mid(str_dec,1,1))
a = mid(dx_sz,(a_int*2+1),2)
a_int = long(mid(str_dec,2,1))
b = mid(dx_sz,(a_int*2+1),2)
if a<>"零" then a = a+"角"
if b <> "零" then
b = b+"分"
else
b= ""
end if
dx_str = dx_str + a + b
end if
if ls= 0 then dx_str = "零元整"
dx_str = fu+dx_str
result = dx_str
return result