PHP实现简易图形计算器


Posted in PHP onAugust 28, 2020

本文实例为大家分享了PHP实现简易图形计算器的具体代码,供大家参考,具体内容如下

主函数: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;
 }
 }
?>

其他的类只要按照上面的格式改下就很好写出来了。

PHP实现简易图形计算器

PHP实现简易图形计算器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 和 MySQL 基础教程(四)
Oct 09 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
PHP中文乱码解决方案
Mar 05 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 PHP
PHP实现简单的计算器
Aug 28 #PHP
php实现简易计算器
Aug 28 #PHP
有关PHP 中 config.m4 的探索
Aug 26 #PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 #PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 #PHP
Laravel登录失败次数限制的实现方法
Aug 26 #PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 #PHP
You might like
ajax实现无刷新分页(php)
2010/07/18 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
JQuery中each()的使用方法说明
2010/08/19 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
javascript模拟命名空间
2015/04/17 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
保险公司晨会主持词
2014/03/22 职场文书
综合内勤岗位职责
2014/04/14 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
求职意向书
2014/07/29 职场文书
关于美容院的活动方案
2014/08/14 职场文书
保密工作整改报告
2014/11/06 职场文书
2015年企业新年寄语
2014/12/08 职场文书
邀请函模板
2015/02/02 职场文书
花木兰观后感
2015/06/10 职场文书
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang