PHP实现的简单三角形、矩形周长面积计算器分享


Posted in PHP onNovember 18, 2014

运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积。本图形计算器有4个页面:1.PHP图形计算器主页index.php;    2.形状的抽象类shape.class.php;    3三角形计算类triangle.class.php;    4.矩形计算类rect.class.php。

PHP图形计算器代码点击下载:   php图形计算器.zip

代码分别如下:

PHP图形计算器主页:

<html>
    <head>
        <title>简单的图形计算器</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    </head>
 
    <body>
        <center>
            <h1>简单的图形计算器</h1>
 
            <a href="index.php?action=rect">矩形</a> ||
            <a href="index.php?action=triangle">三角形</a> 
        </center>
 
        <hr><br>
 
    <?php
            error_reporting(E_ALL & ~E_NOTICE);
 
            //设置自动加载这个程序需要的类文件
            function __autoload($classname){
                include strtolower($classname).".class.php";
            }
 
            //判断用户是否有选择单击一个形状链接
            if(!empty($_GET['action'])) {
                //第一步:创建形状的对象
                $classname = ucfirst($_GET['action']);
 
                $shape=new $classname($_POST);
                //第二步:调用形状的对象中的界面view()
                $shape -> view();
 
                //第三步:用户是否提交了对应图形界面的表单
                if(isset($_POST['dosubmit'])) {
                    //第四步:查看用户输出的数据是否正确, 失败则提示
                    if($shape->yan($_POST)) {
                        //计算图形的周长和面积
                        echo $shape->name."的周长为:".$shape->zhou()."<br>";
                        echo $shape->name."的面积为:".$shape->area()."<br>";
                    }
                }
 
            //如果用户没有单击链接, 则是默认访问这个主程序
            }else {
                echo "请选择一个要计算的图形!<br>";
 
            }
 
        ?>
    </body>
</html>

形状的抽象类:

abstract class  Shape{
    //形状的名称
    public $name;
 
    //形状的计算面积方法
    abstract function area();
 
    //形状的计算周长的方法
    abstract function zhou();
 
    //形状的图形表单界面
    abstract function view();
    //形状的验证方法
    abstract function yan($arr);
 
}

三角形计算类文件:

class Triangle extends Shape {
    private $bian1;
    private $bian2;
    private $bian3;
 
    function __construct($arr = array()) {
        if(!empty($arr)) {
            $this->bian1 = $arr['bian1'];
            $this->bian2 = $arr['bian2'];
            $this->bian3 = $arr['bian3'];
 
        }
 
        $this->name = "三角形";
    }
 
    function area() {
        $p =    ($this->bian1 + $this->bian2 + $this->bian3)/2;
 
        return sqrt($p*($p-$this->bian1)*($p-$this->bian2)*($p-$this->bian3));
    }
 
    function zhou() {
        return $this->bian1 + $this->bian2 + $this->bian3;
    }
 
    function view() {
        $form = '<form action="index.php?action=triangle" method="post">';
        $form .= $this->name.'第一个边:<input type="text" name="bian1" value="'.$_POST['bian1'].'" /><br>';
        $form .= $this->name.'第二个边:<input type="text" name="bian2" value="'.$_POST['bian2'].'" /><br>';
        $form .= $this->name.'第三个边:<input type="text" name="bian3" value="'.$_POST['bian3'].'" /><br>';
        $form .= '<input type="submit" name="dosubmit" value="计算"><br>';
        $form .='<form>';
        echo $form;
    }
 
    function yan($arr) {
        $bj = true;
        if($arr['bian1'] < 0) {
            echo "第一个边不能小于0!<br>";
            $bj = false;
        }
 
        if($arr['bian2'] < 0) {
            echo "第二个边不能小于0!<br>";
            $bj = false;
        }
 
        if($arr['bian3'] < 0) {
            echo "第三个边不能小于0!<br>";
            $bj = false;
        }
 
        if(($arr['bian1']+$arr['bian2'] < $arr['bian3']) || ($arr['bian1'] + $arr['bian3'] < $arr['bian2']) || ($arr['bian2']+$arr['bian3'] < $arr['bian1'])) {
            echo "两边之和必须大于第三个边";
            $bj = false;
        }
 
        return $bj; 
    }
}

矩形计算类文件:

class Rect extends Shape {
    private $width;
    private $height;
 
    function __construct($arr=array()) {
 
        if(!empty($arr)) {
            $this->width = $arr['width'];
            $this->height = $arr['height'];
        }
        $this->name = "矩形";
    }
 
    function area() {
        return $this->width * $this->height;
    }
 
    function zhou() {
        return 2*($this->width + $this->height);
    }
 
    function view() {
        $form = '<form action="index.php?action=rect" method="post">';
        $form .= $this->name.'的宽:<input type="text" name="width" value="'.$_POST['width'].'" /><br>';
        $form .= $this->name.'的高:<input type="text" name="height" value="'.$_POST['height'].'" /><br>';
        $form .= '<input type="submit" name="dosubmit" value="计算"><br>';
        $form .='<form>';
        echo $form;
    }
 
    function yan($arr) {
        $bg = true;
        if($arr['width'] < 0) {
            echo $this->name."的宽不能小于0!<br>";
            $bg = false;    
        }
 
        if($arr['height'] < 0) {
            echo $this->name."的高度不能小于0!<br>";
            $bg = false;
        }
 
        return $bg;
    }
 
}
PHP 相关文章推荐
php学习之数据类型之间的转换介绍
Jun 09 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
php语言的7种基本的排序方法
Dec 28 PHP
php实现的中文分词类完整实例
Feb 06 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 #PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 #PHP
一个比较不错的PHP日历类分享
Nov 18 #PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 #PHP
PHP解析目录路径的3个函数总结
Nov 18 #PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 #PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 #PHP
You might like
织梦模板标记简介
2007/03/11 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
对Python中plt的画图函数详解
2018/11/07 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
介绍一下Python下range()函数的用法
2013/11/07 面试题
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
投诉信格式范文
2015/07/02 职场文书
导游词之无锡唐城
2019/12/12 职场文书
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js