| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1755 人关注过本帖, 1 人收藏
标题:[求助]语音提示功能
只看楼主 加入收藏
wsl000
Rank: 2
等 级:新手上路
威 望:4
帖 子:248
专家分:0
注 册:2006-3-8
收藏(1)
 问题点数:0 回复次数:3 
[求助]语音提示功能
有没有人做过语音提示功能
比如说结帐时提示应收金额。。。
实收金额。。。
找零金额。。。
我一点思路都没有
不知道怎么做
搜索更多相关主题的帖子: 语音提示功能 金额 思路 实收 
2006-05-31 11:43
lclqxy
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-6-6
收藏
得分:0 
1、将金额转换成大写金额;
  2、根据大写金额依次朗读出来;

  为此,需要完成以下内容:
  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

2006-05-31 13:07
wsl000
Rank: 2
等 级:新手上路
威 望:4
帖 子:248
专家分:0
注 册:2006-3-8
收藏
得分:0 
谢谢


2006-05-31 13:30
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
收藏
得分:0 
呵呵..学习!!!
有空来试一下!!
2006-05-31 16:36
快速回复:[求助]语音提示功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019399 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved