PHP学习实例—2(简易图形计算器)

来源:互联网 发布:阿里云如何搭建ssr 编辑:程序博客网 时间:2024/05/16 23:37

主函数: index.php
<!doctype html><html><head><meta charset="utf-8"><title>图形计算器</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>简易图形计算器</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"); //开启错误调试//设置错误报告的级别,除了无关紧要的'注意',其他的报告都输出error_reporting(E_ALL & ~E_NOTICE);function __autoload($classname) { //魔术方法 自动加载类  include strtolower($classname).".class.php"; //将类名转化成小写}//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>错误:$shape->error</b>";}echo "</div>";}} else {  echo "请选择一个图形";}?></div></body></html>
先定义一个抽象类

<?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 .= "宽不是数字;";$bz = false;}}if ($arr['height']< 0) {   $this->error .= "宽度小于0;";$bz = false;} else {  if (!is_numeric($arr['height'])) {  $this->error .= "高不是数字;";$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 .= "第一条边不是数字;";$bz = false;}}if ($arr['bian2']< 0) {   $this->error .= "第二条边小0;";$bz = false;} else {  if (!is_numeric($arr['bian2'])) {  $this->error .= "第二条边不是数字;";$bz = false;}}if ($arr['bian2']< 0) {   $this->error .= "第三条边小于0;";$bz = false;} else {  if (!is_numeric($arr['bian2'])) {  $this->error .= "第三条边不是数字;";$bz = false;}}if (($this->bian1+$this->bian2) < $this->bian3 ||($this->bian1+$this->bian3) < $this->bian2 ||($this->bian2+$this->bian3) < $this->bian1) {  $this->error .= "三条边不能构成三角形";$bz = false;}return $bz;}}?>
其他的类只要按照上面的格式改下就很好写出来了。。


0 0