试用EF开发WEB应用程序(7): Query String应用,简单计算器

来源:互联网 发布:中卫 大数据 编辑:程序博客网 时间:2024/05/21 05:21

题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/liigo/。在线留言。


试用EF开发WEB应用程序(7): Query String应用,简单计算器 

  前面的系列文章讲了很多Query String,现在给大家看一个Query String的实际应用,简单计算器。这个小小的网络程序功能很简单,就是对用户输入的两个数值进行加减乘除运算,输出计算结果。

下面请看“易语言.飞扬”源代码:

引入 fastcgi;

公开 类 启动类
{
    公开 静态 启动()
    {
        FCGI fcgi 
= new FCGI;
        
while(fcgi.Accept() >= 0)
        {
            文本 html 
= html_template.替换全部("$(title)""简单计算器(由EF开发)");
            文本 result 
= "?";
            
if(fcgi.QUERY_STRING != "")
                result 
= doCalc(fcgi.QUERY_STRING("op"), fcgi.QUERY_STRING("op1"), fcgi.QUERY_STRING("op2"));
            html 
= html.替换("$(op1)", fcgi.QUERY_STRING("op1"));
            html 
= html.替换("$(op2)", fcgi.QUERY_STRING("op2"));
            html 
= html.替换("$(result)", result);
            html 
= setSelectedOp(html, fcgi.QUERY_STRING("op"));
            fcgi.Output(html.到UTF8());
        }
    }
    
    静态 文本 doCalc(文本 op, 文本 op1, 文本 op2)
    {
        假如(op)
        {
            为 
"+": 返回 (op1.到小数() + op2.到小数()).到文本();
            为 
"-": 返回 (op1.到小数() - op2.到小数()).到文本();
            为 
"*": 返回 (op1.到小数() * op2.到小数()).到文本();
            为 
"/": 返回 (op1.到小数() / op2.到小数()).到文本();
            为其他: 返回 
"[error]";
        }
    }
    
    静态 文本 setSelectedOp(文本 html, 文本 op)
    {
        文本 s1,s2,s3,s4;

        假如(op)
        {
            为 
"+": s1 = "selected";
            为 
"-": s2 = "selected";
            为 
"*": s3 = "selected";
            为 
"/": s4 = "selected";
        }

        html 
= html.替换("$(isSelected+)", s1);
        html 
= html.替换("$(isSelected-)", s2);
        html 
= html.替换("$(isSelected*)", s3);
        html 
= html.替换("$(isSelected/)", s4);

        返回 html;
    }

    常量 文本 html_template 
= ["Content-type: text/html

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>$(title)</title>
</head>
<body>
<h1>$(title)</h1>
<hr></hr>

<form>
    
<input type="text" name="op1" size=10 maxlength=10 value="$(op1)">

    
<select name="op"> 
        
<option value="+" $(isSelected+)> + </option>
        
<option value="-" $(isSelected-)> - </option>
        
<option value="*" $(isSelected*)> * </option>
        
<option value="/" $(isSelected/)> / </option>
    
</select>

    
<input type="text" name="op2" size=10 maxlength=10 value="$(op2)">
    
    
= $(result)

    
<p><input type="submit" value="计算"></input></p>
</form>

<hr></hr>
<p>by liigo, <a href="http://blog.csdn.net/liigo/">http://blog.csdn.net/liigo/</a></p>
</body>
</html>
"];
}

有机会将提供在线演示地址(欢迎推荐支持FastCGI的优秀的虚拟空间),现在只能先看图片了,下面是运行结果:

 

认为以上EF代码太多太复杂的想法可以休矣。我写这个程序时,花费了很多的笔墨,用于提高程序可操作性,其中包括:自带FORM,记忆上次提交的操作数和运算符,显示计算结果。如果仅仅只是显示计算结果的话,代码其实可以大大地简化:

引入 fastcgi;

公开 类 启动类
{
    公开 静态 启动()
    {
        FCGI fcgi 
= new FCGI;
        
while(fcgi.Accept() >= 0)
        {
            文本 op1 
= fcgi.QUERY_STRING("op1");
            文本 op2 
= fcgi.QUERY_STRING("op2");
            文本 op 
= fcgi.QUERY_STRING("op");

            fcgi.Output(
"Content-type: text/plain ");
            
if(op1 != "" && op2 != "" && op != "")
                fcgi.Output(op1 
+ " " + op + " " + op2 + " = " + doCalc(op, op1, op2));
            
else
                fcgi.Output(
"[parameters error]");
        }
    }
    
    静态 文本 doCalc(文本 op, 文本 op1, 文本 op2)
    {
        假如(op)
        {
            为 
"+": 返回 (op1.到小数() + op2.到小数()).到文本();
            为 
"-": 返回 (op1.到小数() - op2.到小数()).到文本();
            为 
"*": 返回 (op1.到小数() * op2.到小数()).到文本();
            为 
"/": 返回 (op1.到小数() / op2.到小数()).到文本();
            为其他: 返回 
"[error]";
        }
    }
}

上面这个代码就简单多了,当然可操作性就弱了很多,只能显示计算结果而已。使用此程序时需提供URL参数或通过FORM提交参数。这个简化后的“简单计算器”(在线演示)的执行结果见下图:

 

下文预告:CGI环境变量

原创粉丝点击