PHP實(shí)現(xiàn)簡易圖形計(jì)算器
本文實(shí)例為大家分享了PHP實(shí)現(xiàn)簡易圖形計(jì)算器的具體代碼,供大家參考,具體內(nèi)容如下
主函數(shù):index.php
<!doctype html><html><head><meta charset='utf-8'><title>圖形計(jì)算器</title><style> * { margin: 0px; padding: 0px; } #contains { width: 500px; margin: 20px auto; background: #0C0; text-align: center; } h1 { width: 500px; height: 60px; } a { font-size: 20px; text-decoration: none; } #footer { width: 300px; background: #fff; margin: 0 auto; padding: 5px 10px; border-radius: 150px; }</style></head> <body> <div id='contains'> <h1>簡易圖形計(jì)算器</h1> <a href=’index.php?action=rect’>矩形</a> | <a href=’index.php?action=triangle’>三角形</a>| <a href=’index.php?action=cirle’>圓形</a> <hr> <?php ini_set('display_errors', 'On'); //開啟錯(cuò)誤調(diào)試 //設(shè)置錯(cuò)誤報(bào)告的級別,除了無關(guān)緊要的’注意’,其他的報(bào)告都輸出 error_reporting(E_ALL & ~E_NOTICE); function __autoload($classname) { //魔術(shù)方法 自動加載類 include strtolower($classname).'.class.php'; //將類名轉(zhuǎn)化成小寫 } // include 'shape.class.php'; // include 'rect.class.php'; if (!empty($_GET[’action’])) { // echo '傳送成功'; $classname = ucfirst($_GET[’action’]); $shape = new $classname($_POST); $shape->view($_POST); if (isset($_POST[’sub’])) { echo '<div id=’footer’>'; if ($shape->yan($_POST)) { echo '<b>'.$shape->name.'的周長'.$shape->zhou().'</b>'.'<br>'; echo '<br>'; echo '<b>'.$shape->name.'的面積'.$shape->area().'</b>'.'<br>'; }else { echo '<b>錯(cuò)誤:$shape->error</b>'; } echo '</div>'; } } else { echo '請選擇一個(gè)圖形'; } ?> </div></body></html>
先定義一個(gè)抽象類
<?php abstract class Shape { private $name; private $error; abstract function area(); abstract function zhou(); abstract function view($arr); abstract function yan($arr); }?>
矩形類的編寫
<?php 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 = '矩形'; $this->error = ’’; } function area() { return $this->width * $this->height; } function zhou() { return ($this->width+$this->height) * 2; } function view($arr) { $form .= '<form action=’index.php?action=rect’ method=’post’>'; $form .= '請輸入'.$arr[’name’].'的寬度:<input type=’text’ name=’width’ value=’'.$_POST[’width’].'’/><br>'; $form .= '<br>'; $form .= '請輸入'.$arr[’name’].'的長度:<input type=’text’ name=’height’ value=’'.$_POST[’height’].'’/><br>'; $form .= '<br>'; $form .= '<input type=’submit’ name=’sub’ value=’提交’/> '; $form .= '<input type=’reset’ name=’ret’ value=’重置’/>'; $form .= '</form>'; echo $form; } function yan($arr) { $bz = true; if ($arr[’width’]< 0) { $this->error .= '寬度小于0;'; $bz = false; } else { if (!is_numeric($arr[’width’])) { $this->error .= '寬不是數(shù)字;'; $bz = false; } } if ($arr[’height’]< 0) { $this->error .= '寬度小于0;'; $bz = false; } else { if (!is_numeric($arr[’height’])) { $this->error .= '高不是數(shù)字;'; $bz = false; } } return $bz; } }?>
三角形類:
<?php 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 = '三角形'; $this->error = ’’; } function area() { $p = ($this->bian1 + $this->bian2 + $this->bian3) / 2; // p(p-a)(p-b)(p-c) return sqrt($p*($p-$this->bian1)*($p-$this->bian2)*($p-$this->bian3)); } function zhou() { return $this->bian1+$this->bian2+$this->bian3; } function view($arr) { $form .= '<form action=’index.php?action=triangle’ method=’post’>'; $form .= '請輸入'.$arr[’name’].'的第一條邊:<input type=’text’ name=’bian1’ value=’'.$_POST[’bian1’].'’/><br>'; $form .= '<br>'; $form .= '請輸入'.$arr[’name’].'的第二條邊:<input type=’text’ name=’bian2’ value=’'.$_POST[’bian2’].'’/><br>'; $form .= '<br>'; $form .= '請輸入'.$arr[’name’].'的第三條邊:<input type=’text’ name=’bian3’ value=’'.$_POST[’bian3’].'’/><br>'; $form .= '<br>'; $form .= '<input type=’submit’ name=’sub’ value=’提交’/> '; $form .= '<input type=’reset’ name=’ret’ value=’重置’/>'; $form .= '</form>'; echo $form; } function yan($arr) { $bz = true; if ($arr[’bian1’]< 0) { $this->error .= '第一條邊小于0;'; $bz = false; } else { if (!is_numeric($arr[’bian1’])) { $this->error .= '第一條邊不是數(shù)字;'; $bz = false; } } if ($arr[’bian2’]< 0) { $this->error .= '第二條邊小0;'; $bz = false; } else { if (!is_numeric($arr[’bian2’])) { $this->error .= '第二條邊不是數(shù)字;'; $bz = false; } } if ($arr[’bian2’]< 0) { $this->error .= '第三條邊小于0;'; $bz = false; } else { if (!is_numeric($arr[’bian2’])) { $this->error .= '第三條邊不是數(shù)字;'; $bz = false; } } if (($this->bian1+$this->bian2) < $this->bian3 ||($this->bian1+$this->bian3) < $this->bian2 ||($this->bian2+$this->bian3) < $this->bian1) { $this->error .= '三條邊不能構(gòu)成三角形'; $bz = false; } return $bz; } }?>
其他的類只要按照上面的格式改下就很好寫出來了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. js select支持手動輸入功能實(shí)現(xiàn)代碼2. Android studio 解決logcat無過濾工具欄的操作3. 如何在PHP中讀寫文件4. Android 實(shí)現(xiàn)徹底退出自己APP 并殺掉所有相關(guān)的進(jìn)程5. PHP正則表達(dá)式函數(shù)preg_replace用法實(shí)例分析6. php redis setnx分布式鎖簡單原理解析7. 什么是Python變量作用域8. Android Studio3.6.+ 插件搜索不到終極解決方案(圖文詳解)9. bootstrap select2 動態(tài)從后臺Ajax動態(tài)獲取數(shù)據(jù)的代碼10. vue使用moment如何將時(shí)間戳轉(zhuǎn)為標(biāo)準(zhǔn)日期時(shí)間格式
