2012给大家拜年了,恭迎佛诞,散分发布代码
-------------------------------------------------------------
发布代码前先声明:
1\这个代码在测试完成后就没时间去优化,如果有心人可以对代码进行优化,或转换认为更好的代码写法,这里发布仅提供参考,当然这些代码运行及运算都是正确的,因为有不同算法的双向运算可以相互印证是否运算正确,比较有信心,写好这个后老有一个想法:这个运算可以作为标准来校验其他写法运算是否正确.那么,对还是不对,有待大家测试及评论,谢谢!
2\代码写法比较随意,可以用其他写法替代,如果看不惯自己改去.
3\代码发布主要的转换部分,还要说明一点,这时我学C#WINFOMR编写仅不到3个月的代码和写法,别追问代码的意思是什么,喜欢自己动手调试和动脑的人,如果发现代码发布遗漏可以补充.
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;
}
}
}
相关推荐
《模式识别与数据挖掘》配套PPT课件
《模式识别与数据挖掘》配套PPT课件
科技成果转化项目进场交易前,评估备案环节需要准备哪些材料?_8.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
人工智能通识教育(中职版)课程标准+PPT课件+部分素材+电子活页+在线考核
人工智能通识教育(中职版)课程标准+PPT课件+部分素材+电子活页+在线考核
跨境电商供应链管理(AIGC版)课件+教案+参考答案
跨境电商供应链管理(AIGC版)课件+教案+参考答案
110KV单电源电网三段式电流保护+距离继电保护整定计算说明报告(23页+6000字)
内容概要:本文是一份关于110kV单电源电网继电保护整定计算的综合性技术报告,全文共23页、约6000字,系统阐述了三段式电流保护与距离保护的设计原理及其整定计算方法。报告深入分析了电力系统在短路故障条件下的电流与阻抗特性,详细推导了电流保护Ⅰ、Ⅱ、Ⅲ段的动作范围、整定原则、灵敏度校验及时间配合机制,确保满足继电保护的选择性、速动性、灵敏性和可靠性“四性”要求。同时,针对长距离或重要输电线路,补充介绍了距离保护的阻抗整定计算方法,并可能结合Matlab进行仿真验证与辅助计算,提升整定结果的准确性与工程实用性。; 适合人群:适用于电气工程及其自动化相关专业的高年级本科生、研究生,以及从事电力系统继电保护设计、运行维护的工程技术人员;要求读者具备电力系统分析、短路计算及继电保护的基础理论知识。; 使用场景及目标:①掌握110kV单电源辐射型电网中三段式电流保护的整定流程与实际计算步骤;②理解距离保护的工作原理及其在复杂工况下的应用优势;③完成实际工程项目的保护配置与整定计算任务,或作为课程设计、毕业设计及科研课题的技术参考资料;④结合Matlab工具实现整定计算的程序化处理与动作特性仿真验证。; 阅读建议:建议读者结合《电力系统继电保护原理》等相关教材同步学习,重点研读整定公式的推导过程与典型算例的计算细节,注意区分电流保护与距离保护的适用场景与配置逻辑,有条件时应利用Matlab等工具对保护动作行为进行建模与仿真,以深化对保护协调配合机制的理解。


