整体代码展示

1,项目目录

微信图片_20180309123704.png

2,所有代码展示:

index.php:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>图形计算器</title>
    <style>
        * {
            margin: 0px;
            padding: 0px;
        }
        #contains {
            width: 500px;
            margin: 20px auto;
            background: skyblue;
            text-align: center;
        }
        h1 {
            width: 500px;
            height: 60px;
        }
        a {
            font-size: 20px;
            text-decoration: none;
        }
        #footer {
            width: 300px;
            background: #fff;
            margin: 0 auto;
            padding: 5px 10px;
            border-radius: 150px;
        }
    </style>
</head>
<body>
<div id="contains">
    <h1>简易图形计算器</h1>
    <a href='index.php?action=rect'>矩形</a> |
    <a href='index.php?action=triangle'>三角形</a> |
    <a href='index.php?action=cirle'>圆形</a> |
    <a href='index.php?action=sphere'>球体</a>
    <hr>
    <?php
    ini_set("display_errors", "On"); //开启错误调试
    //设置错误报告的级别,除了无关紧要的'注意',其他的报告都输出
    error_reporting(E_ALL & ~E_NOTICE);
    function __autoload($classname) { //魔术方法 自动加载类
        require "./$classname.class.php"; //将类名转化成小写
    }
    if (!empty($_GET['action'])) {
        //  echo "传送成功";
        $classname = ucfirst($_GET['action']);
        $shape = new $classname($_POST);
        $shape->view($_POST);
        if (isset($_POST['sub'])) {
            echo "<div id='footer'>";
            if($shape->name!='球体'){
            if ($shape->yan($_POST)) {
                echo "<b>".$shape->name."的周长".$shape->zhou()."</b>"."<br>";
                echo "<br>";
                echo "<b>".$shape->name."的面积".$shape->area()."</b>"."<br>";
            }else {
                echo "<b>错误:$shape->error</b>";
            }
            echo "</div>";
            }else{
                if ($shape->yan($_POST)) {
                    echo "<b>".$shape->name."的表面积".$shape->area()."</b>"."<br>";
                    echo "<br>";
                    echo "<b>".$shape->name."的体积".$shape->zhou()."</b>"."<br>";
                }else {
                    echo "<b>错误:$shape->error</b>";
                }
                echo "</div>";
            }
        }
    } else {
        echo "请选择一个图形";
    }
    ?>
</div>
</body>
</html>


Shape.class.php:

<?php
abstract class Shape {
    private $name;
    private $error;
    abstract function area();
    abstract function zhou();
    abstract function view($arr);
    abstract function yan($arr);
}
?>


Rect.class.php:

<?php
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 = "矩形";
        $this->error = '';
    }
    function area() {
        return $this->width * $this->height;
    }
    function zhou() {
        return ($this->width+$this->height) * 2;
    }
    function view($arr) {
        $form='';
        $form .= "<form action='index.php?action=rect' method='post'>";
        $form .= "请输入".$arr['name']."的宽度:<input type='text' name='width' value='".$_POST['width']."'/><br>";
        $form .= "<br>";
        $form .= "请输入".$arr['name']."的长度:<input type='text' name='height' value='".$_POST['height']."'/><br>";
        $form .= "<br>";
        $form .= "<input type='submit' name='sub' value='提交'/>    ";
        $form .= "<input type='reset' name='ret' value='重置'/>";
        $form .= "</form>";
        echo $form;
    }
    function yan($arr) {
        $bz = true;
        if ($arr['width']< 0) {
            $this->error .= "宽度小于0;";
            $bz = false;
        } else {
            if (!is_numeric($arr['width'])) {
                $this->error .= "宽不是数字;";
                $bz = false;
            }
        }
        if ($arr['height']< 0) {
            $this->error .= "宽度小于0;";
            $bz = false;
        } else {
            if (!is_numeric($arr['height'])) {
                $this->error .= "高不是数字;";
                $bz = false;
            }
        }
        return $bz;
    }
}
?>


Triangle.class.php:

<?php
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 = "三角形";
        $this->error = '';
    }
    function area() {
        $p = ($this->bian1 + $this->bian2 + $this->bian3) / 2;
        //  p(p-a)(p-b)(p-c)
        return sqrt($p*($p-$this->bian1)*($p-$this->bian2)*($p-$this->bian3));
    }
    function zhou() {
        return $this->bian1+$this->bian2+$this->bian3;
    }
    function view($arr) {
        $form='';
        $form .= "<form action='index.php?action=triangle' method='post'>";
        $form .= "请输入".$arr['name']."的第一条边:<input type='text' name='bian1' value='".$_POST['bian1']."'/><br>";
        $form .= "<br>";
        $form .= "请输入".$arr['name']."的第二条边:<input type='text' name='bian2' value='".$_POST['bian2']."'/><br>";
        $form .= "<br>";
        $form .= "请输入".$arr['name']."的第三条边:<input type='text' name='bian3' value='".$_POST['bian3']."'/><br>";
        $form .= "<br>";
        $form .= "<input type='submit' name='sub' value='提交'/>    ";
        $form .= "<input type='reset' name='ret' value='重置'/>";
        $form .= "</form>";
        echo $form;
    }
    function yan($arr) {
        $bz = true;
        if ($arr['bian1']< 0) {
            $this->error .= "第一条边小于0;";
            $bz = false;
        } else {
            if (!is_numeric($arr['bian1'])) {
                $this->error .= "第一条边不是数字;";
                $bz = false;
            }
        }
        if ($arr['bian2']< 0) {
            $this->error .= "第二条边小0;";
            $bz = false;
        } else {
            if (!is_numeric($arr['bian2'])) {
                $this->error .= "第二条边不是数字;";
                $bz = false;
            }
        }
        if ($arr['bian2']< 0) {
            $this->error .= "第三条边小于0;";
            $bz = false;
        } else {
            if (!is_numeric($arr['bian2'])) {
                $this->error .= "第三条边不是数字;";
                $bz = false;
            }
        }
        if (($this->bian1+$this->bian2) < $this->bian3 ||($this->bian1+$this->bian3) < $this->bian2 ||($this->bian2+$this->bian3) < $this->bian1) {
            $this->error .= "三条边不能构成三角形";
            $bz = false;
        }
        return $bz;
    }
}
?>


Cirle.class.php:

<?php
class Cirle extends Shape {
    private $r;
    function __construct($arr = array()) {
        if (!empty($arr)) {
            $this->r = $arr['r'];
        }
        $this->name = "圆形";
        $this->error = '';
    }
    function area() {
        return pi()* $this->r* $this->r; ;
    }
    function zhou() {
        return 2*$this->r*pi();
    }
    function view($arr) {
        $form='';
        $form .= "<form action='index.php?action=cirle' method='post'>";
        $form .= "请输入".$arr['name']."的半径:<input type='text' name='r' value='".$_POST['r']."'/><br>";
        $form .= "<br>";
        $form .= "<input type='submit' name='sub' value='提交'/>    ";
        $form .= "<input type='reset' name='ret' value='重置'/>";
        $form .= "</form>";
        echo $form;
    }
    function yan($arr) {
        $bz = true;
        if ($arr['r']< 0) {
            $this->error .= "半径小于0;";
            $bz = false;
        } else {
            if (!is_numeric($arr['r'])) {
                $this->error .= "半径不是数字;";
                $bz = false;
            }
        }
        return $bz;
    }
}
?>


Sphere.class.php:

<?php
class Sphere extends Shape {
    private $r;
    function __construct($arr = array()) {
        if (!empty($arr)) {
            $this->r = $arr['r'];
        }
        $this->name = "球体";
        $this->error = '';
    }
    //4π(R的平方),体积 4/3π*r的立方
    //球的面积
    function area() {
        return 4*pi()* $this->r* $this->r; ;
    }
    //求的体积
    function zhou() {
        return pow((4/3)*$this->r*pi(),3);
    }
    function view($arr) {
        $form='';
        $form .= "<form action='index.php?action=sphere' method='post'>";
        $form .= "请输入".$arr['name']."的半径:<input type='text' name='r' value='".$_POST['r']."'/><br>";
        $form .= "<br>";
        $form .= "<input type='submit' name='sub' value='提交'/>    ";
        $form .= "<input type='reset' name='ret' value='重置'/>";
        $form .= "</form>";
        echo $form;
    }
    function yan($arr) {
        $bz = true;
        if ($arr['r']< 0) {
            $this->error .= "半径小于0;";
            $bz = false;
        } else {
            if (!is_numeric($arr['r'])) {
                $this->error .= "半径不是数字;";
                $bz = false;
            }
        }
        return $bz;
    }
}
?>


继续学习
||
<?php echo "整体代码展示";
提交重置代码