/* 形状 */ abstract class Xz { public $name; // 求面积 abstract function mj(); // 求周长 abstract function zc(); // 表单界面 abstract function view(); // 验证 abstract function yz($arr); } /* 矩形 */ class Jx extends Xz { private $width; private $height; function __construct( $arr=array() ) { if ( !empty($arr) ) { $this->width = $arr['width']; $this->height = $arr['height']; } $this->name = '矩形'; } function mj(){ return $this->width * $this->height; } function zc(){ return ($this->width + $this->height) * 2; } function view(){ $form = "<form action='a.php?action=jx' 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="submit" value="计算"/><br />'; $form .= "</form>"; echo $form; } function yz( $arr ){ $flag = true; if ( $arr['width'] < 0 ) { echo "{$this->name} 的宽不能小于等于0"; $flag = false; } if ( $arr['height'] < 0 ) { echo "{$this->name} 的高不能小于等于0"; $flag = false; } return $flag; } } /* 三角形 */ class Sjx extends Xz { private $c1; private $c2; private $c3; function __construct( $arr=array() ) { if ( !empty($arr) ) { $this->c1 = $arr['c1']; $this->c2 = $arr['c2']; $this->c3 = $arr['c3']; } $this->name = '三角形'; } // 海伦公式求面积 function mj(){ $p = ($this->c1 + $this->c2 + $this->c3) / 2; return sqrt($p*($p-$this->c1)*($p-$this->c2)*($p-$this->c3)); } function zc(){ return $this->c1 + $this->c2 + $this->c3; } function view(){ $form = "<form action='a.php?action=sjx' method='post'>"; $form .= $this->name.' 的c1:<input type="text" name="c1" value="'.$_POST['c1'].'"/><br />'; $form .= $this->name.' 的c2:<input type="text" name="c2" value="'.$_POST['c2'].'"/><br />'; $form .= $this->name.' 的c3:<input type="text" name="c3" value="'.$_POST['c3'].'"/><br />'; $form .= '<input type="submit" name="submit" value="计算"/><br />'; $form .= "</form>"; echo $form; } function yz( $arr ){ $flag = true; if ( $arr['c1'] < 0 ) { echo "{$this->name} 的 c1 不能小于等于0"; $flag = false; } if ( $arr['c2'] < 0 ) { echo "{$this->name} 的 c2 不能小于等于0"; $flag = false; } if ( $arr['c3'] < 0 ) { echo "{$this->name} 的 c3 不能小于等于0"; $flag = false; } // 两边之和大于第三边 if ( $arr['c1'] + $arr['c2'] < $arr['c3'] || $arr['c1'] + $arr['c3'] < $arr['c2'] || $arr['c3'] + $arr['c2'] < $arr['c1'] ) { echo "两边之和大于第三边"; $flag = false; } return $flag; } } ?> <!DOCTYPE html> <html> <head> <title>极简的图形计算器</title> <meta charset="utf-8" /> </head> <body> <center> <h1>极简的图形计算器</h1> <a href="a.php?action=jx">矩形</a> <a href="a.php?action=sjx">三角形</a> <a href="a.php?action=yx">圆形</a> <hr /> </center> <br /><br /> <?php class LoadClass { // 自动加载类文件 public static function loadprint( $classname ) { $file = strtolower($classname).'.class.php'; if ( $file ) { include $file; } } } spl_autoload_register( array('LoadClass', 'loadprint') ); // 判断用户是否有单击链接 if ( !empty($_GET['action']) ) { // 创建形状的对象 $classname = ucfirst( $_GET['action'] ); $xz = new $classname( $_POST ); // 调用对象中的界面 view $xz->view(); // 用户是否提交了对应图形界面的表单 if ( isset($_POST['submit']) ) { // 验证用户输入的数据 if ( $xz->yz($_POST) ) { // 计算图形的面积、周长 echo $xz->name.' 的面积:'.$xz->mj().'<br />'; echo $xz->name.' 的周长:'.$xz->zc().'<br />'; } } } // 若没有单击链接,则提示 else { echo '请选择计算什么图形!'; } ?> </body> </html>
本文由 猫斯基 原创发布。
著作权均归用户本人所有。独家文章转载,请联系本站管理员。获得授权后,须注明本文地址! 本文地址:https://maosiji.com/php/php-26.html