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 文件上传全攻略
Apr 28 PHP
php array_walk() 数组函数
Jul 12 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
zf框架db类的分页示例分享
Mar 14 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
PHP实现的简单日历类
Nov 29 PHP
日常整理PHP中简单的图形处理(经典)
Oct 26 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
php 生成签名及验证签名详解
Oct 26 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 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
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
js 编写规范
2010/03/03 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
Python列表推导式的使用方法
2013/11/21 Python
Python数据可视化之画图
2019/01/15 Python
PyQt5响应回车事件的方法
2019/06/25 Python
django 消息框架 message使用详解
2019/07/22 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
python实现学生通讯录管理系统
2021/02/25 Python
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
经典c++面试题三
2015/07/08 面试题
会计电算化应届生求职信
2013/11/03 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
《太阳》教学反思
2014/02/21 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
安全生产演讲稿
2014/05/09 职场文书
五一活动标语
2014/06/30 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
爱心捐款感谢信
2015/01/20 职场文书
离婚答辩状范文
2015/05/22 职场文书
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js