运用PHP面向对象的知识设计一个图形计算器,同时也运用到了抽象类知识,这个计算器可以计算三角形的周长和面积以及矩形的周长和面积。本图形计算器有4个页面:1.PHP图形计算器主页index.php; 2.形状的抽象类shape.class.php; 3三角形计算类triangle.class.php; 4.矩形计算类rect.class.php。
PHP图形计算器代码点击下载: php图形计算器.zip
代码分别如下:
PHP图形计算器主页:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
<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>
</center>
<hr><br>
<?php
error_reporting (E_ALL & ~E_NOTICE);
//设置自动加载这个程序需要的类文件
function __autoload( $classname ){
include strtolower ( $classname ). ".class.php" ;
}
//判断用户是否有选择单击一个形状链接
if (! empty ( $_GET [ 'action' ])) {
//第一步:创建形状的对象
$classname = ucfirst( $_GET [ 'action' ]);
$shape = new $classname ( $_POST );
//第二步:调用形状的对象中的界面view()
$shape -> view();
//第三步:用户是否提交了对应图形界面的表单
if (isset( $_POST [ 'dosubmit' ])) {
//第四步:查看用户输出的数据是否正确, 失败则提示
if ( $shape ->yan( $_POST )) {
//计算图形的周长和面积
echo $shape ->name. "的周长为:" . $shape ->zhou(). "<br>" ;
echo $shape ->name. "的面积为:" . $shape ->area(). "<br>" ;
}
}
//如果用户没有单击链接, 则是默认访问这个主程序
} else {
echo "请选择一个要计算的图形!<br>" ;
}
?>
</body>
</html> |
形状的抽象类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
abstract class Shape{
//形状的名称
public $name ;
//形状的计算面积方法
abstract function area();
//形状的计算周长的方法
abstract function zhou();
//形状的图形表单界面
abstract function view();
//形状的验证方法
abstract function yan( $arr );
} |
三角形计算类文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
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 = "三角形" ;
}
function area() {
$p = ( $this ->bian1 + $this ->bian2 + $this ->bian3)/2;
return sqrt( $p *( $p - $this ->bian1)*( $p - $this ->bian2)*( $p - $this ->bian3));
}
function zhou() {
return $this ->bian1 + $this ->bian2 + $this ->bian3;
}
function view() {
$form = '<form action="index.php?action=triangle" method="post">' ;
$form .= $this ->name. '第一个边:<input type="text" name="bian1" value="' . $_POST [ 'bian1' ]. '" /><br>' ;
$form .= $this ->name. '第二个边:<input type="text" name="bian2" value="' . $_POST [ 'bian2' ]. '" /><br>' ;
$form .= $this ->name. '第三个边:<input type="text" name="bian3" value="' . $_POST [ 'bian3' ]. '" /><br>' ;
$form .= '<input type="submit" name="dosubmit" value="计算"><br>' ;
$form .= '<form>' ;
echo $form ;
}
function yan( $arr ) {
$bj = true;
if ( $arr [ 'bian1' ] < 0) {
echo "第一个边不能小于0!<br>" ;
$bj = false;
}
if ( $arr [ 'bian2' ] < 0) {
echo "第二个边不能小于0!<br>" ;
$bj = false;
}
if ( $arr [ 'bian3' ] < 0) {
echo "第三个边不能小于0!<br>" ;
$bj = false;
}
if (( $arr [ 'bian1' ]+ $arr [ 'bian2' ] < $arr [ 'bian3' ]) || ( $arr [ 'bian1' ] + $arr [ 'bian3' ] < $arr [ 'bian2' ]) || ( $arr [ 'bian2' ]+ $arr [ 'bian3' ] < $arr [ 'bian1' ])) {
echo "两边之和必须大于第三个边" ;
$bj = false;
}
return $bj ;
}
} |
矩形计算类文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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 = "矩形" ;
}
function area() {
return $this ->width * $this ->height;
}
function zhou() {
return 2*( $this ->width + $this ->height);
}
function view() {
$form = '<form action="index.php?action=rect" 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="dosubmit" value="计算"><br>' ;
$form .= '<form>' ;
echo $form ;
}
function yan( $arr ) {
$bg = true;
if ( $arr [ 'width' ] < 0) {
echo $this ->name. "的宽不能小于0!<br>" ;
$bg = false;
}
if ( $arr [ 'height' ] < 0) {
echo $this ->name. "的高度不能小于0!<br>" ;
$bg = false;
}
return $bg ;
}
} |