在设计财务软件时,一些财务公式需要用户自己输入,这样的系统怎么设计呢?系统如何根据客户输入计算数据呢?求高人只指点

解决方案 »

  1.   

    给个小例子给你(只是例子,有可能有些错误),当然,只正对一般的+ - * / 和括号 运算,先要保存好计算表达式,然后再解析计算表达式进行运算<HEAD>
    <SCRIPT type="text/javascript" language="javascript">
    var hidValue = " ";//需要保存到数据库的
    var showValue = " ";//显示给客户看的
    var txtExp;
    var hidExp;
    var txtNum;
    window.onload = function()
    {
    txtExp = document.getElementById("txtExpression");
    hidExp = document.getElementById("hidExpression");
    txtNum = document.getElementById("txtNumber");
    }
    function addPro(elementName)
    {
    var Oselect = document.getElementById(elementName);
    var oOption = Oselect.options;
    hidValue = hidValue + oOption[Oselect.selectedIndex].value+" ";
    showValue = showValue + oOption[Oselect.selectedIndex].text+" ";
    txtExp.value=showValue;
    hidExp.value=hidValue;
    }
    function addNumber()
    {
    if(!isNaN(txtNum.value))
    {
    hidValue = hidValue + txtNum.value+" ";
    showValue = showValue + txtNum.value+" ";
    txtExp.value=showValue;
    hidExp.value=hidValue;
    }
    }
    function del()
    {
    if(hidValue.length>0)
    {
    hidValue = hidValue.substring(0,hidValue.substr(0,hidValue.length-1).lastIndexOf(" ")) + " ";
    showValue = showValue.substring(0,showValue.substr(0,showValue.length-1).lastIndexOf(" ")) + " ";
    txtExp.value=showValue;
    hidExp.value=hidValue;
    }
    else
    alert("表达式已为空,无法继续删除!");
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    <form>
    <table width="100%" border="1">
    <tr>
    <td align="right" style="width: 255px">计算表达式:</td>
    <td align="left" colspan="2"><input name="txtExpression" type="text" readonly="readonly" id="txtExpression" style="width:269px;" />
    &nbsp;&nbsp;&nbsp;<input type="button" onclick="del()" value="删 除" id="btnDelExpression" title="每次只撤销一次输入" /></td>
    </tr>
    <tr>
    <td align="right" style="width: 255px; height: 28px;">
    <select name="ddlProperty" id="ddlProperty" title="请选择属性名称" style="width:141px;">
    <option value="10">行业</option>
    <option value="11">类别</option>
    <option value="12">形式</option>
    <option value="13">运营商/企业</option>
    <option value="14">品牌/部门</option>
    <option value="15">业务</option>
    <option value="16">宽</option>
    <option value="17">高</option>
    </select>
    </td>
                <td align="center" style="height: 28px">
    <select name="ddlOperator" id="ddlOperator" title="请选择运算符" onchange="getid()" style="width:141px;">
    <option value="0">--运算符--</option>
    <option value="+">+</option>
    <option value="-">-</option>
    <option value="*">*</option>
    <option value="/">/</option>
    <option value="(">(</option>
    <option value=")">)</option>
    <option value=""></option>
    <option value=""></option>
    <option value=""></option>
    <option value=""></option>
    <option value=""></option>
    <option value=""></option>
    </select>
    </td>
                <td align="left" style="height: 28px"><input name="txtNumber" type="text" value="234" id="txtNumber" title="请输入要加入的数字" /></td>
            </tr>
            <tr>
                <td align="right" style="width: 255px; height: 28px;"><input type="button" value="加 入" onclick="addPro('ddlProperty')" id="btnPropertyName" /></td>
                <td align="center" style="height: 28px"><input type="button" name="btnOperator"  value="加 入" onclick="addPro('ddlOperator')" id="btnOperator" /></td>
                <td align="left" style="height: 28px"><input type="button" name="btnNumber" value="加 入" onclick="addNumber()" id="btnNumber" /></td>
            </tr>
        </table>
    <input type="hidden" id="hidExpression" value="" />
    </body>
    做好计算表达式后关于计算方面可以参考:
    http://blog.csdn.net/Rock870210/archive/2009/12/07/4958479.aspx
      

  2.   

    我之前做的那个ERP财务模块也遇到过类似的情况,我当初是单独添加一个公式表,然后用户根据自己的需要添加公式,然后后面做报表计算直接从这个表里面取数据来计算的。