php实现图形计算器
存档:
index.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>
<a href="index.php?action=circle">圆形</a>
</center>
<?php
error_reporting(E_ALL & ~E_NOTICE);
function __autoload($className){
include strtolower($className).".class.php";
}
echo new Form("index.php");
if(isset($_POST["sub"])){
echo new Result();
}
?>
</body>
</html>
form.class.php
<?php
class Form{
private $action;
private $shape;
function __construct($action=""){
$this->action = $action;
$this->shape = isset($_GET["action"])?$_GET["action"]:"rect";
} function __toString(){
$form='<form action="'.$this->action.'?action='.$this->shape.'" method="post">';
$shape="get".ucfirst($this->shape);
$form .=$this->$shape();
$form .='<br><input type="submit" name="sub" value="计算"><br>';
$form .='</form>';
return $form;
} private function getRect(){
$input = '<b>请输入|矩形|的宽度和高度:</b><p>';
$input .= '宽度:<input type="text" name="width" value="'.$_POST["width"].'"><br>';
$input .= '高度:<input type="text" name="height" value="'.$_POST["height"].'"><br>';
return $input;
} private function getTriangle(){
$input = '<b>请输入|三角形|的三条边:</b><p>';
$input .= '第一条边:<input type="text" name="side1" value="'.$_POST["side1"].'"><br>';
$input .= '第二条边:<input type="text" name="side2" value="'.$_POST["side2"].'"><br>';
$input .= '第三条边:<input type="text" name="side3" value="'.$_POST["side3"].'"><br>';
return $input;
} private function getCircle(){
$input = '<b>请输入|圆形|的半径:</b><p>';
$input .= '半径:<input type="text" name="radius" value="'.$_POST["radius"].'"><br>';
return $input;
}
}
?>
shape.class.php
<?php
abstract class Shape{
public $shapeName;
abstract function area();
abstract function perimeter();
protected function validate($value,$message = '输入的值'){
if($value=="" || !is_numeric($value) || $value<0){
$message=$this->shapeName.$message;
echo '<font color="red">'.$message.'必须为非负值的数字,并且不能为空</font><br>';
return false;
}
else{
return true;
}
}
}
?>
result.class.php
<?php
class Result{
private $shape = null;
function __construct(){
$this->shape = new $_GET['action']();
} function __toString(){
$result = $this->shape->shapeName.'的周长:'.round($this->shape->perimeter(),2).'<br>';
$result .= $this->shape->shapeName.'的面积:'.round($this->shape->area(),2).'<br>';
return $result;
}
}
?>
rect.class.php
<?php
class Rect extends Shape{
private $width = 0;
private $height = 0;
function __construct(){
$this->shapeName = "矩形";
if($this->validate($_POST["width"],"宽度") & $this->validate($_POST["height"],"高度")){
$this->width = $_POST["width"];
$this->height = $_POST["height"];
}
} function area(){
return $this->width*$this->height;
} function perimeter(){
return 2*($this->width+$this->height);
}
}
?>
triangle.class.php
<?php
class Triangle extends Shape{
private $side1 = 0;
private $side2 = 0;
private $side3 = 0;
function __construct(){
$this->shapeName = "三角形";
if($this->validate($_POST["side1"],"第一条边") &
$this->validate($_POST["side2"],"第二条边") &
$this->validate($_POST["side3"],"第三条边")){
if($this->validateSum($_POST["side1"],$_POST["side2"],$_POST["side3"])){
$this->side1 = $_POST["side1"];
$this->side2 = $_POST["side2"];
$this->side3 = $_POST["side3"];
}
else{
echo '<font color="red">三角形的两边之和要大于第三边</font><br>';
}
}
} function area(){
$s = ($this->side1+$this->side2+$this->side3)/2;
return sqrt($s*($s-$this->side1)*($s-$this->side2)*($s-$this->side3));
} function perimeter(){
return $this->side1+$this->side2+$this->side3;
} private function validateSum($s1,$s2,$s3){
if((($s1+$s2)>$s3) && (($s1+$s3)>$s2) && (($s2+$s3)>$s1)){
return true;
}
else{
return false;
}
}
}
?>
circle.class.php
<?php
class Circle extends Shape{
private $radius = 0;
function __construct(){
$this->shapeName = "图形";
if($this->validate($_POST['radius'],'半径')){
$this->radius = $_POST['radius'];
}
} function area(){
return pi()*$this->radius*$this->radius;
} function perimeter(){
return 2*pi()*$this->radius;
}
}
?>
结果如下:



php实现图形计算器的更多相关文章
- PHP学习笔记06——面向对象版图形计算器
index.php 用于显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h ...
- PHP.11-PHP实例(二)-面向对象实例(图形计算器)
面向对象实例(图形计算器) [PHP语法详解] 1.实现外观 #不同的动作,输出不同的表单 ###关于PHP中,无法使用localhost访问.php文件[http://www.360doc.com/ ...
- PHP图形计算器(计算三角形矩形周长面积)
运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积.本图形计算器有4个页面:1.PHP图形计算器主页index.php; ...
- php:兄弟连之面向对象版图形计算器1
曾经看细说PHP的时候就想做这个,可是一直没什么时间,这次总算忙里偷闲搞了代码量比較多的project. 首先,文档结构,都在一个文件夹下就好了,我的就例如以下. 一開始,进入index.php文件. ...
- [图形计算器]Desmos
一.图形计算器 var elt = document.getElementById('calculator'); var calculator = Desmos.GraphingCalculator( ...
- 图形计算器(geogebra[5.0.278.0])使用QQ浏览器打开下载
点击这里下载Geogebra图形计算器
- PHP面向对象实例(图形计算器)
效果:
- 【java图形计算器】 java awt swing组件应用
package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...
- php:兄弟连之面向对象版图形计算器2
上篇说到通过result.class.php来分流,因为三个类都继承了shape这个类,让我们来看一下,面向对象中的继承. shape.class.shape文件 <?php abstract ...
随机推荐
- ethereumjs/ethereumjs-blockchain-2-test
https://github.com/ethereumjs/ethereumjs-blockchain/tree/master/test 'use strict' const test = requi ...
- PAT——1063. 计算谱半径
在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界.换言之,对于给定的n个复数空间的特征值{a1+b1i, ..., an+bni},它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模. ...
- i2c 通信
时间长了记忆就会模糊, 保存下逻辑分析抓到的图像, 什么时候需要可以看一眼. 当clk处于高电平时, data线有下降,说明开始传输, 有上升说明结束传输. 发送地址无回应: 发送地址有回应 正常数据 ...
- C编程规范, 演示样例代码。
/*************************************************************** *Copyright (c) 2014,TianYuan *All r ...
- SPOJ 4487. Can you answer these queries VI splay
题目链接:点击打开链接 题意比較明显,不赘述. 删除时能够把i-1转到根,把i+1转到根下 则i点就在 根右子树 的左子树,且仅仅有i这一个 点 #include<stdio.h> #in ...
- 一次“Error Domain=AVFoundationErrorDomain Code=-11841”的调试
一次"Error Domain=AVFoundationErrorDomain Code=-11841"的调试 起因 最近在重构视频输出模块的时候,调试碰到AVAssetReade ...
- 从对集合数据去重到Distinct源码分析
今天在写代码的时候要对数据进行去重,正打算使用Distinct方法的时候,发现这个用了这么久的东西,竟然不知道它是怎么实现的,于是就有了这篇文章. 使用的.net core2.0 1.需求 假如我们有 ...
- Angular7教程-06-页面与数据交互
1. 本节说明 本节的内容会在上期搭建的框架基础上进行数据的填充,顺便回顾之前介绍过的插值表达式,属性绑定等知识,本节的数据只是在组件中模拟数据,后面会有专门的章节讲解如何从服务器获取数据. 2. 轮 ...
- php无限极分类处理
/** * 无限极分类处理(通过递归方式实现) * @param $section 原始数据Array * @param $html 界面显示前缀,比如 |- * @param $spear 分级中所 ...
- 如何通过github上传项目并在readme.md中展示图片二维码
将本地项目上传至github 第一步:git init (创建仓库) 第二步:git add README.md (添加项目)git add * 第三步:git commit -m &qu ...