最近在学习MFC,编写了个金额由小写到大写的转换,全部代码如下:

/************************************************************************/
/* 对阿拉伯数组转换成中文数字                                                                     */
/************************************************************************/
CString CToChineseDlg::ToChineseLetter(CString strSourceLetter)
{
strSourceLetter.Replace(L"0", L"零");
strSourceLetter.Replace(L"1", L"壹");
strSourceLetter.Replace(L"2", L"贰");
strSourceLetter.Replace(L"3", L"叁");
strSourceLetter.Replace(L"4", L"肆");
strSourceLetter.Replace(L"5", L"伍");
strSourceLetter.Replace(L"6", L"陆");
strSourceLetter.Replace(L"7", L"柒");
strSourceLetter.Replace(L"8", L"捌");
strSourceLetter.Replace(L"9", L"玖");
return strSourceLetter;
}
void CToChineseDlg::OnBnClickedButton1()
{
// 先判断是否有小数点
CString strSource, strDotAfter, strResult;
GetDlgItem(IDC_EDIT_SOURCE)->GetWindowText(strSource);
strDotAfter = this->GetDotAfterLength(strSource);
int iAllLength = strSource.GetLength();
int iDotAfterLength = strDotAfter.GetLength();
if(iDotAfterLength == 0)
{
if(iAllLength > 12)
{
MessageBox(L"输入的数字过长,不要超过12位", L"提示");
}
else
{
strResult = this->ChangeMoney(strSource);
GetDlgItem(IDC_EDIT_RESULT)->SetWindowText(strResult);
}
}
else
{
if(iAllLength - iDotAfterLength - 1 > 12)
{
MessageBox(L"输入的数字整数部分过长,不要超过12位", L"提示");
}
else if(iDotAfterLength > 2)
{
MessageBox(L"输入的数字小数点后面过长,不要超过2位", L"提示");
}
else
{
CString strDotBefore = strSource.Left(iAllLength - iDotAfterLength - 1);
strResult = this->ChangeMoney(strDotBefore);
// 再来计算小数点后的,这个简单不需要在封装函数了
for (int i = 0; i < iDotAfterLength; i++)
{
CString strUnit("");
CString strTemp = strDotAfter.Left(1);
strTemp = this->ToChineseLetter(strTemp);
strDotAfter = strDotAfter.Mid(1);
switch (i)
{
case 0:
strUnit = "角";break;
case 1:
strUnit = "分";break;
}
strResult += strTemp + strUnit;
}
GetDlgItem(IDC_EDIT_RESULT)->SetWindowText(strResult);
}
}
}
/************************************************************************/
/* 得到小数点后的字符串                                                                    */
/************************************************************************/
CString CToChineseDlg::GetDotAfterLength(CString strSource)
{
int iDotIndex = strSource.Find('.');
if(iDotIndex > -1)
{
return strSource.Mid(iDotIndex + 1);
}
return CString("");
}
/************************************************************************/
/* 转换                                                                     */
/************************************************************************/
CString CToChineseDlg::ChangeMoney(CString strSource)
{
CString strResult("");
int iLength = strSource.GetLength();
for (int i = 0; i < iLength; i++)
{
CString strUnit("");
// 获取右边第一个字符
CString strTemp = strSource.Right(1);
strSource = strSource.Left(strSource.GetLength() - 1);
// 得到中文
strTemp = this->ToChineseLetter(strTemp);
// 得到单位
switch (i)
{
case 0:
strUnit = "元";break;
case 1:
case 5:
case 9:
strUnit = "拾";break;
case 2:
case 6:
case 10:
strUnit = "百";break;
case 3:
case 7:
case 11:
strUnit = "千";break;
case 4:
strUnit = "万";break;
case 8:
strUnit = "亿";break;
}
// 拼接起来
strResult = strTemp + strUnit + strResult;
}
return strResult;
}

效果图如下:

一下效果图是别处使用的。。

MFC编写的人民币大小写转换相关推荐

  1. JavaScript实现人民币大小写转换

    当使用支票或者签署合同时,需要用到大写人民币,常用的中文大写包括零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾.佰.仟.万.亿.本文介绍下如何使用JavaScript实现将阿拉伯数字的人民币转换成大写. ...

  2. 人民币大小写转换格式

    <?php //****人民币大小写转换格式**** function ChangeToRMB($Val) { $str=array(); $str[0]="零"; $str ...

  3. 超强技巧分享,如何将人民币大小写转换?

    当我们在制作财务表格的时候,需要将金额的大写跟小写进行转换,如果要一个一个手打出来的话,那就太浪费时间了,一两个数额还好,如果一整个表格的数额,那就不得了了,那要花费多少时间才能将小写金额转换成大写金 ...

  4. Java实现人民币大小写转换

    思路和具体方法都在注释中说明 package ClassicArithmetic;import java.util.Scanner;/** @author:LOHAS翀* @time:2019/11/ ...

  5. JAVAScript实现人民币大小写转换算法

    大家好,我是梦辛工作室的灵,最近在写一个人民币大小写转换的工具,就把数字转换为大写中文 界面如下: 这样就很清楚了,做财务软件的时候应该会经常用到: 转换代码如下(是从右向左读): function ...

  6. Oracle存储过程实现人民币大小写转换

    注意:当报如下错误时,是因为存储过程中定义的变量值太小,加大它的范围即可. Caused by: java.sql.SQLException: ORA-06502: PL/SQL: 数字或值错误 :  ...

  7. c语言人民币大小写转换,人民币大小写转换函数.xls

    人民币大小写转换函数.xls Sheet3 Sheet1 IF(A1=0,"",IF(ABS(A1)<0.995,"",TEXT(INT(ROUND(AB ...

  8. java人民币大小写转换_人民币大小写转换

    usingSystem;usingSystem.Text;usingSystem.Text.R using System; using System.Text; using System.Text.R ...

  9. 【课程设计|MFC】人民币大小写转换(含课程报告+源码)

    目录 简介 目 录 一.课程设计目的 二.课程设计内容与要求 三.开发环境简介 四.小组成员分工 五.系统需求分析 六.系统设计 七.系统实现及测试 八.课程设计心得体会 项目地址 结语 简介 Hel ...

最新文章

  1. 关于在web项目中实现本地打印
  2. Eclipse删除文件的恢复(转)
  3. 演示:标准ACL的配置、及使用技巧、和相关局限
  4. iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面
  5. ExecutableNotFound: failed to execute ['dot', '-Tsvg'], make sure the Graphviz executables are on yo
  6. LoadRunner中对图表的分析说明
  7. go语言快速开发入门示例
  8. MySQL 无法连接
  9. P3620-[APIO/CTSC2007]数据备份【贪心,堆,链表】
  10. 怎么改变表单option标签直接字体大小_不起眼却非常重要的表单交互
  11. linux编译bzip2,linux bzip2 命令详解
  12. Qt工作笔记-获取选中的文件名(lastIndexOf的使用)
  13. 【转】Emacs -- 自动补齐
  14. Arc076_E Connected?
  15. PyQT多线程串口 QtDesigner
  16. matplotlib绘制鼠标的十字光标(自定义方式,官方实例)
  17. 服务器性能监控之WMI
  18. Redis 源码分析跳跃表(skiplist)
  19. 网络传输介质和常见的设备
  20. HFC网、FTTx技术、PON

热门文章

  1. 1.决策技术解析与实现
  2. 算法工程师之超实用技术路线图
  3. Android Facebook游戏邀请功能
  4. 知识 | 什么是相控阵雷达?
  5. MyBits学习总结(1)--- MyBits简介、编写一个MyBatis程序
  6. 美团架构师精心整理Netty实战,墙裂推荐Netty实战实践学习文档
  7. 以微信公众号爬虫为例,谈谈对session、cookie和token认证的理解
  8. cesium 加载热力图
  9. [RedHat学习笔记]总结现学的所有命令(RH033),以及相关概念。
  10. Java对象内存布局和对象头