批改状态:合格
老师批语:非常棒, 推荐到十一期的二个群中,当榜样了
<?php//建立一个抽象类,类内包含成绩表数组,打印成绩表,和一个查询用的抽象方法abstract class Score{protected $data = [['姓名' => '张三', '语文' => '78', '数学' => '85'],['姓名' => '李四', '语文' => '45', '数学' => '55'],['姓名' => '王五', '语文' => '85', '数学' => '63'],['姓名' => '任六', '语文' => '68', '数学' => '57'],['姓名' => '王伟', '语文' => '88', '数学' => '89'],['姓名' => '李刚', '语文' => '82', '数学' => '90'],];private function format($a, $b){return $a .= ('<tr><th>' .$b['姓名'] . '</th><th>' .$b['语文'] . '</th><th>' .$b['数学'] . '</th></tr>');}public function showData(){echo array_reduce($this->data,[$this, 'format'],'<table border="1" cellspacing="0"><tr><th>姓名</th><th>语文</th><th>数学</th></tr>') . '</table><hr>';}public abstract function search($name, $subject);}//创建一个包含所有查询方法的traittrait scoreSearch{//查询单人的所有成绩,查询成功返回原数组内索引和对应的键值protected function search_array($data, $name){foreach ($data as $key => $value) {if (!array_search($name, $value) === false) :$result = [$key, $value];break;endif;$result = '没有此人.<hr>';}return $result;}//查询出单科的成绩protected function single_score($array, $subject, &$score){if (!array_key_exists($subject, $array[1])) return false;$score = $array[1][$subject];if ($score === false) :return false;endif;return true;}}//查询学生的单科成绩trait operation1{use scoreSearch;protected function operation($data, $name, $subject = null){$array = $this->search_array($data, $name);if (is_string($array)) return $array;if ($this->single_score($array, $subject, $score)) :return $name . '的' . $subject . '成绩是' . $score . '分<hr>';else :return '查询的科目不存在<hr>';endif;}}//删除表格内单个学生的所有成绩trait operation2{use scoreSearch;//删除单个学生的所有成绩private function operation(&$array, $name){$result = $this->search_array($array, $name);if (is_string($result)) return '删除失败,没有此人.<hr>';$size1 = count($array);unset($array[$result[0]]);$size2 = count($array);return $size1 > $size2 ? $name.'被成功删除!<hr>' : '删除失败<hr>';}}//创建一个工作类继承Score类,用于查询和删除数据class Export extends Score{//两个trait的方法名冲突,将operation2内的方法设置别名为del_value并将权限设置为publicuse operation1, operation2 {operation1::operation insteadof operation2;operation2::operation as public del_value;}//查询学生的单科成绩public function search($name, $subject){return $this->operation($this->data, $name, $subject);}//删除指定学生所有成绩public function del_array($name){echo $this->del_value($this->data, $name);}}//将工作对象实例化$ex = new Export;//显示成绩表echo $ex->showData();//查询学生成绩echo $ex->search('李刚', '数学');//查询学生名不存在时echo $ex->search('jim', '数学');//查询科目不存在时echo $ex->search('李四', '地理');//删除学生成绩$ex->del_array('王五');$ex->del_array('王伟');//删除学生不存在时$ex->del_array('李磊');//显示成绩表echo $ex->showData();

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号