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世纪万年历
Dec 06 PHP
追求程序速度,而不是编程的速度
Apr 23 PHP
php短域名转换为实际域名函数
Jan 17 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
19个Android常用工具类汇总
Dec 30 PHP
4种PHP异步执行的常用方式
Dec 24 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
php_pdo 预处理语句详解
Nov 21 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
docker-compose部署php项目实例详解
Jul 30 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
输出控制类
2006/10/09 PHP
php中函数的形参与实参的问题说明
2010/09/01 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
JS 字符串连接[性能比较]
2009/05/10 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
node.js监听文件变化的实现方法
2019/04/17 Javascript
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
python动态参数用法实例分析
2015/05/25 Python
python结合API实现即时天气信息
2016/01/19 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
物流专业毕业生推荐信范文
2013/11/18 职场文书
办护照工作证明
2014/10/01 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
2015年环卫工作总结
2015/04/28 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书