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

22 篇文章 0 订阅
13 篇文章 0 订阅

题记:用“易语言.飞扬”(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环境变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值