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连接数据库代码应用分析
May 29 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
php实现数据库的增删改查
Feb 26 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP生成加减算法方式的验证码实例
Mar 12 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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
解决中英文字符串长度问题函数
2007/01/16 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
php编程每天必学之验证码
2016/03/03 PHP
php字符串操作常见问题小结
2016/10/11 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
用于table内容排序
2006/07/21 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
js document.write()使用介绍
2014/02/21 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
Python写的贪吃蛇游戏例子
2014/06/16 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Python列表元素常见操作简单示例
2019/10/25 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
python实现网页录音效果
2020/10/26 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
新闻记者个人求职的自我评价
2013/11/28 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
学年个人总结范文
2015/03/05 职场文书
介绍信格式样本
2015/05/05 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server