您的位置:首页 > 其它

评"软件工程项目管理:功能点分析方法与实践"

2008-01-05 11:39 1646 查看

using System.Collections;


using System.Collections.Generic;


namespace OOPM




...{


public class Interpret




...{


}


public class Context




...{


private string _Statement;


private int _Data;


public Context(string statement)




...{


this._Statement = statement;


}


public string Statement




...{


get




...{


return this._Statement;


}


set




...{


this._Statement = value;


}


}


public int Data




...{


get




...{


return this._Data;


}


set




...{


this._Data = value;


}


}


}


public abstract class Expression




...{


protected Dictionary<string, int> table = new Dictionary<string, int>(9);


public Expression()




...{


table.Add("一", 1);


table.Add("二", 2);


table.Add("三", 3);


table.Add("四", 4);


table.Add("五", 5);


table.Add("六", 6);


table.Add("七", 7);


table.Add("八", 8);


table.Add("九", 9);


}


public virtual void Interpret(Context context)




...{


if(context.Statement.Length == 0)




...{


return;


}


foreach (string key in table.Keys)




...{


int value = table[key];


if (context.Statement.EndsWith(key + GetPostfix()))




...{


context.Data += value * this.Multiplier();


context.Statement = context.Statement.Substring(0, context.Statement.Length-this.GetLength());


}


if (context.Statement.EndsWith("零"))




...{


context.Statement = context.Statement.Substring(0, context.Statement.Length - 1);


}


}


}


public abstract string GetPostfix();


public abstract int Multiplier();


public virtual int GetLength()




...{


return this.GetPostfix().Length + 1;


}


}


public class WanExpression : Expression




...{


public override string GetPostfix()




...{


return "万";


}


public override int Multiplier()




...{


return 10000;


}


public override void Interpret(Context context)




...{


if (context.Statement.Length == 0)




...{


return;


}


ArrayList tree = new ArrayList();


tree.Add(new GeExpression());


tree.Add(new ShiExpression());


tree.Add(new BaiExpression());


tree.Add(new QianExpression());


foreach (string key in table.Keys)




...{





if (context.Statement.EndsWith(GetPostfix()))




...{


int temp = context.Data;


context.Data = 0;





context.Statement = context.Statement.Substring(0, context.Statement.Length - 1);


foreach (Expression exp in tree)




...{


exp.Interpret(context);


}


context.Data = temp + this.Multiplier() * context.Data;


}


}





}


}


public class QianExpression : Expression




...{


public override string GetPostfix()




...{


return "千";


}


public override int Multiplier()




...{


return 1000;


}


}


public class BaiExpression : Expression




...{


public override string GetPostfix()




...{


return "百";


}


public override int Multiplier()




...{


return 100;


}


}


public class ShiExpression : Expression




...{


public override string GetPostfix()




...{


return "十";


}


public override int Multiplier()




...{


return 10;


}


}


public class GeExpression : Expression




...{


public override string GetPostfix()




...{


return "";


}


public override int Multiplier()




...{


return 1;//10^0


}


public override int GetLength()




...{


return 1;


}


}




/**//// <summary>


/// 客户代码


/// </summary>


public class InterpretApp




...{


public static int Main(string ChineseCharacter)




...{


Context context = new Context(ChineseCharacter);


ArrayList tree = new ArrayList();


tree.Add(new GeExpression());


tree.Add(new ShiExpression());


tree.Add(new BaiExpression());


tree.Add(new QianExpression());


tree.Add(new WanExpression());


foreach (Expression exp in tree)




...{


exp.Interpret(context);


}


return context.Data;


}


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐