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 相关文章推荐
PHPMailer安装方法及简单实例
Nov 25 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
Dec 01 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
PHP实现页面静态化的超简单方法
Sep 06 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
php通过header发送自定义数据方法
Jan 18 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
php把session写入数据库示例
2014/02/26 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
jquery动态添加option示例
2013/12/30 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
python微信公众号开发简单流程实现
2020/03/09 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python中实现输入一个整数的案例
2020/05/03 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
Python内置函数及功能简介汇总
2020/10/13 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
Java程序员常见面试题
2015/07/16 面试题
班级道德讲堂实施方案
2014/02/24 职场文书
2014春晚主持词
2014/03/25 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
美容院员工规章制度
2015/08/05 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python