Bài 22: Thực hành tính điểm trung bình và xếp loại trong PHP

Bài 22: Thực hành tính điểm trung bình và xếp loại trong PHP

Bài hôm nay chúng ta sẽ tiếp tục thực hành tính điểm trung bình và xếp loại học sinh trong PHP.

Ở bài trước chúng ta đã tạo được form để nhập dữ liệu bảng danh sách điểm học sinh và cho hiển thị ra bảng bằng PHP rồi.

Bây giờ mình sử dụng tiếp đoạn code đó để thực hành bài hôm nay nhé.

Chỉnh sửa lại table bằng html

Bây giờ ta cần thêm 2 cột nữa vào bảng hiển thị đó là cột “Điểm trung bình” và “Xếp loại“:

<tr>
<th>STT</th>
<th>Họ tên</th>
<th>Ngày sinh</th>
<th>Điểm toán</th>
<th>Điểm lý</th>
<th>Điểm hóa</th>
<th>Điểm ngoại ngữ</th>
<th>Điểm trung bình</th>
<th>Xếp loại</th>
</tr>

Tính điểm trung bình bằng PHP

Bây giờ chúng ta sẽ viết một hàm function trong PHP để tính ra điểm trung bình các môn học:

Cấu trúc và cách viết hàm bạn có thể theo dõi lại bài học số 13 nhé.

Ở đây mình sử dụng hàm round trong các hàm toán học PHP để làm tròn số điểm luôn.

//hàm tính điểm trung bình
function tinhdiemtrungbinh($a,$b,$c,$d){
	//tính điểm trung bình
	$dtb1=($a+$b+$c+$d)/4;
	//làm tròn 2 số thập phân
	$dtb=round($dtb1,2);
	//trả về
	return $dtb;
}

Do có 4 môn học nên hàm “tinhdiemtrungbinh” chúng ta sẽ truyền vào 4 đối số $a,$b,$c,$d.

Gọi hàm:

tinhdiemtrungbinh($value['diemtoan'],$value['diemly'],$value['diemhoa'],$value['diemngoaingu'])

Đoạn code đầy đủ giờ mình thử chạy lên xem đã tính được điểm trung bình chưa nhé:

<h2>Nhập danh sách bảng điểm học sinh</h2>
<form method="post">
<p>Họ và tên:</p><p>
<input type="text" name="hoten">
</p>
<p>Ngày sinh:</p><p>
<input type="date" name="ngaysinh">
</p>
<p>Môn toán:</p><p>
<input type="text" name="diemtoan">
</p>
<p>Môn lý:</p><p>
<input type="text" name="diemly">
</p>
<p>Môn hóa:</p><p>
<input type="text" name="diemhoa">
</p>
<p>Môn ngoại ngữ:</p><p>
<input type="text" name="diemngoaingu">
</p>
<button type="submit" name="btn_nhap">Nhập</button>
</form>
<?php
if(isset($_POST['btn_nhap'])){
require 'connect.php';	
$hoten= isset($_POST['hoten'])? ($_POST['hoten']) : '';
$ngaysinh= isset($_POST['ngaysinh'])? ($_POST['ngaysinh']) : '';
$diemtoan= isset($_POST['diemtoan'])? ($_POST['diemtoan']) : '';
$diemly= isset($_POST['diemly'])? ($_POST['diemly']) : '';
$diemhoa= isset($_POST['diemhoa'])? ($_POST['diemhoa']) : '';
$diemngoaingu= isset($_POST['diemngoaingu'])? ($_POST['diemngoaingu']) : '';
if(empty($hoten) || empty($diemtoan) || empty($diemly) || empty($diemhoa) || empty($diemngoaingu)){
	echo 'Nhập vào không hợp lệ';
}
else{
	$sql = "INSERT INTO `danhsachhocsinh` (`id`, `hoten`, `ngaysinh`, `diemtoan`, `diemly`, `diemhoa`, `diemngoaingu`) 
	VALUES (NULL, '$hoten', '$ngaysinh' , '$diemtoan', '$diemly', '$diemhoa', '$diemngoaingu');";
	$con->exec($sql);
}
}
?>
<style>
table {
  border-collapse: collapse;
  border: 1px solid;
}
th, td {
  border: 1px solid black;
}
th{
	background-color:#007eff2e;
}
</style>
<table>
<thead>
<tr>
<th colspan="9">Danh sách bảng điểm học sinh</th>
</tr>
<tr>
<th>STT</th>
<th>Họ tên</th>
<th>Ngày sinh</th>
<th>Điểm toán</th>
<th>Điểm lý</th>
<th>Điểm hóa</th>
<th>Điểm ngoại ngữ</th>
<th>Điểm trung bình</th>
<th>Xếp loại</th>
</tr>
</thead>
<tbody>
<?php
//truy vấn lấy danh sách học sinh từ trong CSDL
require 'connect.php';	
$sql = "SELECT * FROM danhsachhocsinh";   
$stmt = $con->prepare($sql); 
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
$result = $stmt->fetchAll();
//echo '<pre>';
//print_r($result);
//hàm tính điểm trung bình
function tinhdiemtrungbinh($a,$b,$c,$d){
	//tính điểm trung bình
	$dtb1=($a+$b+$c+$d)/4;
	//làm tròn 2 số thập phân
	$dtb=round($dtb1,2);
	//trả về
	return $dtb;
}
$stt=0;
foreach($result as $key => $value){
	$stt++;     $diemtb=tinhdiemtrungbinh($value['diemtoan'],$value['diemly'],$value['diemhoa'],$value['diemngoaingu']);
	echo '
	<tr>
	<td>'.$stt.'</td>
	<td>'.$value['hoten'].'</td>
	<td>'.$value['ngaysinh'].'</td>
	<td>'.$value['diemtoan'].'</td>
	<td>'.$value['diemly'].'</td>
	<td>'.$value['diemhoa'].'</td>
	<td>'.$value['diemngoaingu'].'</td>
	<td>'.$diemtb.'</td>
	<td></td>
	</tr>
	';
}
?>
</tbody>
</table>

Kết quả thu được:

tinh-diem-trung-binh-bang-php

Xếp loại học sinh bằng PHP

Sau khi tính được điểm trung bình, chúng ta đi xếp loại học sinh dựa trên điểm trung bình cho ra các loại học lực giỏi, khá, trung bình và yếu

Tương tự như trên ta sẽ viết hàm xeploai:

//hàm xếp loại học lực
function xeploai($x){
	if($x>=8.5){
	$xeploai='Giỏi';
	}
	else if($x>=7){
	$xeploai='Khá';
	}
	else if($x>=5){
	$xeploai='Trung bình';
	}
	else{
	$xeploai='Yếu';
	}
	return $xeploai;
}

Tiếp tục dùng lệnh rẽ nhánh if, else trong PHP để xếp loại.

Bây giờ ta sẽ gọi hàm ra để sử dụng thôi:

<h2>Nhập danh sách bảng điểm học sinh</h2>
<form method="post">
<p>Họ và tên:</p><p>
<input type="text" name="hoten">
</p>
<p>Ngày sinh:</p><p>
<input type="date" name="ngaysinh">
</p>
<p>Môn toán:</p><p>
<input type="text" name="diemtoan">
</p>
<p>Môn lý:</p><p>
<input type="text" name="diemly">
</p>
<p>Môn hóa:</p><p>
<input type="text" name="diemhoa">
</p>
<p>Môn ngoại ngữ:</p><p>
<input type="text" name="diemngoaingu">
</p>
<button type="submit" name="btn_nhap">Nhập</button>
</form>
<?php
if(isset($_POST['btn_nhap'])){
require 'connect.php';	
$hoten= isset($_POST['hoten'])? ($_POST['hoten']) : '';
$ngaysinh= isset($_POST['ngaysinh'])? ($_POST['ngaysinh']) : '';
$diemtoan= isset($_POST['diemtoan'])? ($_POST['diemtoan']) : '';
$diemly= isset($_POST['diemly'])? ($_POST['diemly']) : '';
$diemhoa= isset($_POST['diemhoa'])? ($_POST['diemhoa']) : '';
$diemngoaingu= isset($_POST['diemngoaingu'])? ($_POST['diemngoaingu']) : '';
if(empty($hoten) || empty($diemtoan) || empty($diemly) || empty($diemhoa) || empty($diemngoaingu)){
	echo 'Nhập vào không hợp lệ';
}
else{
	$sql = "INSERT INTO `danhsachhocsinh` (`id`, `hoten`, `ngaysinh`, `diemtoan`, `diemly`, `diemhoa`, `diemngoaingu`) 
	VALUES (NULL, '$hoten', '$ngaysinh' , '$diemtoan', '$diemly', '$diemhoa', '$diemngoaingu');";
	$con->exec($sql);
}
}
?>
<style>
table {
  border-collapse: collapse;
  border: 1px solid;
}
th, td {
  border: 1px solid black;
}
th{
	background-color:#007eff2e;
}
</style>
<table>
<thead>
<tr>
<th colspan="9">Danh sách bảng điểm học sinh</th>
</tr>
<tr>
<th>STT</th>
<th>Họ tên</th>
<th>Ngày sinh</th>
<th>Điểm toán</th>
<th>Điểm lý</th>
<th>Điểm hóa</th>
<th>Điểm ngoại ngữ</th>
<th>Điểm trung bình</th>
<th>Xếp loại</th>
</tr>
</thead>
<tbody>
<?php
//truy vấn lấy danh sách học sinh từ trong CSDL
require 'connect.php';	
$sql = "SELECT * FROM danhsachhocsinh";   
$stmt = $con->prepare($sql); 
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
$result = $stmt->fetchAll();
//echo '<pre>';
//print_r($result);
//hàm tính điểm trung bình
function tinhdiemtrungbinh($a,$b,$c,$d){
	//tính điểm trung bình
	$dtb1=($a+$b+$c+$d)/4;
	//làm tròn 2 số thập phân
	$dtb=round($dtb1,2);
	//trả về
	return $dtb;
}
//hàm xếp loại học lực
function xeploai($x){
	if($x>=8.5){
	$xeploai='Giỏi';
	}
	else if($x>=7){
	$xeploai='Khá';
	}
	else if($x>=5){
	$xeploai='Trung bình';
	}
	else{
	$xeploai='Yếu';
	}
	return $xeploai;
}
$stt=0;
foreach($result as $key => $value){
	$stt++;
	$diemtb=tinhdiemtrungbinh($value['diemtoan'],$value['diemly'],$value['diemhoa'],$value['diemngoaingu']);
	$xl=xeploai($diemtb);
	echo '
	<tr>
	<td>'.$stt.'</td>
	<td>'.$value['hoten'].'</td>
	<td>'.$value['ngaysinh'].'</td>
	<td>'.$value['diemtoan'].'</td>
	<td>'.$value['diemly'].'</td>
	<td>'.$value['diemhoa'].'</td>
	<td>'.$value['diemngoaingu'].'</td>
	<td>'.$diemtb.'</td>
	<td>'.$xl.'</td>
	</tr>
	';
}
?>
</tbody>
</table>

Kết quả thu được là:

tinh-xep-loai-bang-php

Lời kết

Đến bài này mình đã hướng dẫn các bạn thử làm một bài thực hành để tính điểm trung bình và xếp loại hạnh kiểm học sinh bằng PHP.

Hi vọng từ bài viết này mà bạn có thể ứng dụng vào các bài tập khác của mình.

Cảm ơn các bạn đã theo dõi bài viết.

Rate this post

sonnguyen

Là một nhân viên IT thích chia sẻ những gì mình biết đến tất cả mọi người. Hi vọng được mọi người ủng hộ, nếu có gì sai sót mong các bạn comment xuống dưới để mình khắc phục. Cảm ơn mọi người!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *