读书人

2012给大家拜年了,恭迎佛诞,散分发布代

发布时间: 2012-03-28 15:40:03 作者: rapoo

2012给大家拜年了,恭迎佛诞,散分发布代码
首先给论坛全体拜年了拜年了祝六亲眷属皆安乐肚大能容笑口常开!!!
-------------------------
发布代码前先声明:
1\这个代码在测试完成后就没时间去优化,如果有心人可以对代码进行优化,或转换认为更好的代码写法,这里发布仅提供参考,当然这些代码运行及运算都是正确的,因为有不同算法的双向运算可以相互印证是否运算正确,比较有信心,写好这个后老有一个想法:这个运算可以作为标准来校验其他写法运算是否正确.那么,对还是不对,有待大家测试及评论,谢谢!

2\代码写法比较随意,可以用其他写法替代,如果看不惯自己改去.

3\代码发布主要的转换部分,还要说明一点,这时我学C#WINFOMR编写仅不到3个月的代码和写法,别追问代码的意思是什么,喜欢自己动手调试和动脑的人,如果发现代码发布遗漏可以补充.

C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication2{    public partial class Form1 : Form    {        string Zz = "零壹贰叁肆伍陆柒捌玖", Bj = "0123456789"; Double SsWr = new double(); bool PanDuan = true;        string[] Jz = { "元", "拾", "佰", "仟" };        string[] Jzs = { "拾", "佰", "仟" };        string[] Zs = { "万", "亿", "兆", "京", "垓", "秭", "穰", "沟", "涧", "正", "载", "极", "恒河沙", "阿僧", "那由他", "不可思议", "☆无量", "☆不可说☆" };        string[] Xs = { "角", "分", "厘","毫","丝","忽","微","纤","沙","尘","埃","渺","莫", "模糊", "逡巡","须臾","瞬息","弹指","刹那","六德","空虚","☆清静" };        public Form1()        {            InitializeComponent();        }private void Form1_Load(object sender, EventArgs e)        {            ToolTip KjTs = new ToolTip();            KjTs.SetToolTip(ZhuanHuang, "单击执行转换");            KjTs.SetToolTip(XuanXiang, "请选择要执行小数的“四舍五入”位数");            KjTs.SetToolTip(Kuo, "选择该项时将强行扩展整数的位数到万无量=[不可说],没有实际意义。");        }private void ZhuanHuang_Click(object sender, EventArgs e)        {            string DD_BM = SuZi.Text.Trim(); string[] Fg = new string[2];            try            {                if (SuZi.Text.Length > 99 || SuZi.Text == "")                {                    if (SuZi.Text.Length > 99)                        MessageBox.Show("1、操作非法,输入数值超过范围,无法计算!请重新输入小等于69位整数(强制扩展:小等于76位)和小等于22位小数!", "友情提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);                    if (SuZi.Text == "")                        MessageBox.Show("2、操作非法!请重新输入小等于69位整数(强制扩展:小等于76位)和小等于22位小数!", "友情提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);                }                else                {                    string GuoLvZiFu = DD_BM;                    ZongWenSuZhi.Text = ""; SsWr = 0;                    do { GuoLvZiFu = 过滤(GuoLvZiFu, false); }                    while (PanDuan == false);//再循环                    DD_BM = GuoLvZiFu;                    if (ZzS.Checked)                    {                        do { GuoLvZiFu = 过滤(GuoLvZiFu, true); }                        while (PanDuan == false);//再循环                        DD_BM = GuoLvZiFu;                        if (DD_BM.IndexOf("元") >= 0) { Fg = DD_BM.Split('元'); } //整数                        else { Fg[0] = ""; Fg[1] = DD_BM; }//纯小数                    }                    if (SzZ.Checked) Fg = DD_BM.Split('.');                    if (ZzS.Checked)//中文→数字                    {                        if (Fg[0] != "") //整数部分                        {                            if (Zhuan.Checked) ZongWenSuZhi.Text = Zh_Zwz(ZzZhengShu(Fg[0]), "中文→数字整数", true);                            if (!Zhuan.Checked) ZongWenSuZhi.Text = ZzZhengShu(Fg[0]);                        }                        if (Fg.Length == 2 && Fg[1] != "") //小数部分                        {                            if (Zhuan.Checked) ZongWenSuZhi.Text += Zh_Zwz(XiaoShu(Fg[1], ZzS.Checked), "中文→数字小数", true);                            if (!Zhuan.Checked) ZongWenSuZhi.Text += XiaoShu(Fg[1], ZzS.Checked);                        }                    }                    if (SzZ.Checked)//数字→中文                    {                        if (!Kuo.Checked)//不扩展                        {                            if (Fg[0].Length <= 69) ZhRk(Fg);                            else MessageBox.Show("3、操作非法,请重新输入小于69位整数和小于22位小数,如果大于以上整数部分需要转换请选择[强制扩展],友情提醒[强制扩展]是无意义的数字,故曰:不可说!", "友情提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);                        }                        if (Kuo.Checked)//扩展                        {                            if (Fg[0].Length <= 76) ZhRk(Fg);                            else MessageBox.Show("4、操作非法,请重新输入[强制扩展]小于76位整数和小于22位小数!", "友情提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);                        }                    }                }            }            catch (Exception)            { }        }        private void ZhRk(string[] Fg)//数字-中文转换入口        {            try            {                if (!Zhuan.Checked) ZongWenSuZhi.Text = Zh_Zwz(Fg[0], "数字→中文整数", false);                if (Zhuan.Checked) ZongWenSuZhi.Text = TiHuan(Zh_Zwz(Fg[0], "数字→中文整数", false));                if (Fg.Length == 1) ZongWenSuZhi.Text = ZongWenSuZhi.Text + "整";                if (Fg.Length == 2 && Fg[1] != "")//小数                {                    if (Fg[1].Length > 22) { Fg[1] = Fg[1].Substring(0, 22); MessageBox.Show("6、操作非法,请重新输入小等于22位小数,大于22位时将截取自左开始到22位的数字,22位后面的数字不被列入转换范围!", "友情提示!", MessageBoxButtons.OK, MessageBoxIcon.Information); }//截取位数                    if (XuanXiang.Text != "四舍五入") Fg[1] = SheRu(Fg[1], "五入");                    if (SiLiu.Text != "四舍六入") Fg[1] = SheRu(Fg[1], "六入");                    if (!Zhuan.Checked) ZongWenSuZhi.Text += Zh_Zwz(Fg[1], "数字→中文小数", false);                    if (Zhuan.Checked) ZongWenSuZhi.Text += TiHuan(Zh_Zwz(Fg[1], "数字→中文小数", false));                }            }            catch (Exception)            {  }        }        private string Zh_Zwz(string DD_BM, string BiaoJi, bool Zs)//[等效]转换中文/数值        {            string Sz = "";            try            {                for (int Qs = 0; Qs < DD_BM.Length; Qs++)                {                    string Zf = DD_BM.Substring(Qs, 1);//依循环取其中一个字符                    if (Bj.IndexOf(Zf) >= 0 && !Zs)//比较                    { Sz += Zz.Substring(Bj.IndexOf(Zf), 1); } //等效中文                    if (Zz.IndexOf(Zf) >= 0 && Zs)                    { Sz += Bj.Substring(Zz.IndexOf(Zf), 1); }//等效数字                }                if (BiaoJi == "中文→数字小数") Sz = "." + Sz;//补                if (BiaoJi == "数字→中文小数") Sz = XiaoShu(Sz, false);                if (BiaoJi == "数字→中文整数") Sz = SzZhengShu(Sz);            }            catch (Exception)            {  }            return Sz;        }        private string ZzZhengShu(string ZsBf)//中文→数字整数部分        {            string ZsB = ZsBf + "元";            try            {                do { ZsB = BuWei(ZsB); }                while (PanDuan == false);//再循环            }            catch (Exception e)            {  }            finally { }                            return ZsB;        }        private string 过滤(string GuoLv, bool Gv)        {            string ZhongWen = "", Bij = "", SzHc = "";            try            {                if (Gv)//中文→数字过滤数字小数点                {                    for (int Gl = GuoLv.Length - 1; Gl >= 0; Gl--)                    {                        Bij = GuoLv.Substring(Gl, 1);                        if (("." + Bj).IndexOf(Bij) >= 0)                        { GuoLv = GuoLv.Replace(Bij, ""); PanDuan = false; break; }                        else { PanDuan = true; }                    }                }                if (!Gv) //消除所有以外的字符                {                    for (int Hcf = 0; Hcf < Jz.Length; Hcf++)                    { SzHc += Jz[Hcf]; }                    for (int Hcf = 0; Hcf < Zs.Length; Hcf++)                    { SzHc += Zs[Hcf]; }                    for (int Hcf = 0; Hcf < Xs.Length; Hcf++)                    { SzHc += Xs[Hcf]; }                    SzHc += "." + Zz + Bj;                    for (int Gg = 0; Gg < GuoLv.Length; Gg++)                    {                        Bij = GuoLv.Substring(Gg, 1);                        if (SzHc.IndexOf(Bij) < 0)                        { GuoLv = GuoLv.Replace(Bij, ""); PanDuan = false; break; }                        else { PanDuan = true; }                    }                }            }            catch (Exception)            {  }            return ZhongWen = GuoLv;        }            }} 



[解决办法]
眼花支持!!!!!!!!!!!11
[解决办法]
好长,支持了。
[解决办法]
龙年快乐!
[解决办法]
呵呵,让我想起可以拿来做类似于 你的名字代表什么意义 的好玩小程序
[解决办法]
c#学习中,mark
[解决办法]
Amitabha Buddha, Thanks.
[解决办法]
牛人。
[解决办法]
........好
[解决办法]
支持,写的不错
[解决办法]
LZ给打包提供下载吧这么长怎么看啊
[解决办法]
探讨
LZ给打包提供下载吧这么长怎么看啊

[解决办法]

+1,龙年快乐!

[解决办法]

[解决办法]
数字和中文转换,
确实有点乱。。。
不过,我是来拜年的,
龙年大吉!!!

[解决办法]
+1
大吉大利
[解决办法]
拜年了,今天回来了
[解决办法]

整个下载吧。。。长了点在这里看可是个累啊
[解决办法]
我是新人,看的有点晕,但是可以学习学习,祝新年快乐!

读书人网 >C#

热点推荐