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+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
php处理json格式数据经典案例总结
May 19 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 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
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
ArrayList类(增强版)
2007/04/04 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
Vue点击切换颜色的方法
2018/09/13 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
Python实现网络端口转发和重定向的方法
2016/09/19 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
Python处理PDF与CDF实例
2020/02/26 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
车间班组长的职责
2013/12/13 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
小学语文课后反思精选
2014/04/25 职场文书
迎国庆演讲稿
2014/09/05 职场文书
迁户口计划生育证明
2014/10/19 职场文书
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android