创建一个学费计算器,具有比较居住状态的功能

问题描述 投票:0回答:2

我必须创建一个学费计算器,第一部分是使用PHP和包含文件来创建一个函数,该文件允许您根据从下拉列表中选择的内容返回一个值。

有3种选择:

  1. 县内:每小时1500美元
  2. 县外:2000美元
  3. 州外:2500美元

下拉列表位于我将使用包含文件连接的单独页面上。

Attempt

<?php
function CalcResidency($argResidency){
    $residency = "";

        if ($residency == "In County") {
        return 1500;
        }

        else if ($residency == "Out County") {
        return 2000;
    }
    else if ($residency == "Out of State") {
        return 2500;
    }
}
?>
php
2个回答
1
投票

如果您希望根据下拉值返回三个整数输出,您可以尝试:

/**
* This function returns an integer
* @var residency is: "In County", "Out County", "Out of State"
*/
function CalcResidency($residency)
{
    $tuition = 0;

    if ($residency == "In County") {
        $tuition = 1500;
    } else if ($residency == "Out County") {
        $tuition = 2000;
    } else if ($residency == "Out of State") {
        $tuition = 2500;
    } else {
        echo "Something is not right!";
    }
    var_dump($tuition);
    return $tuition;
}

CalcResidency("In County");
CalcResidency("Out County");
CalcResidency("Out of State");

Output

int(1500)
int(2000)
int(2500)

但是,如果您愿意,this link可能是设计面向对象的学费计算器的良好开端,这可能会节省您的时间。也许,类似于:

<?php

TutionCalculator::Calculator();

class TutionCalculator
{

    const STUDENT = [
        'type' => 'undergrad',
        'major' => 'comp sci',
        'level' => 'fresh',
        'in_county_credit_price' => 1500,
        'out_county_credit_price' => 2000,
        'out_state_credit_price' => 2500,
        'residency_status' => 1, // 0 1 2 for in_state, in_county, out_county
        'scholarship' => 0,
        'scholarship_amount' => 0,
        'credit' => 130,
        'semesters' => 8,
        'summer' => 0,
    ];

    public static function Calculator()
    {
        $tuition = self::CalcResidency();
        // rest of calculations
        // ...
        // ...
        // ...

        var_dump($tuition);
        return $tuition;
    }

    public static function CalcResidency()
    {
        $tuition = 0;
        var_dump(self::STUDENT);
        switch (self::STUDENT["residency_status"]) {
            case 2:
                $tuition = self::STUDENT["in_state_credit_price"];
                break;
            case 1:
                $tuition = self::STUDENT["out_county_credit_price"];
                break;
            default:
                $tuition = self::STUDENT["in_county_credit_price"];
                break;
        }
        return $tuition;
    }

}

Student Array:

array(12) {
  ["type"]=>
  string(9) "undergrad"
  ["major"]=>
  string(8) "comp sci"
  ["level"]=>
  string(5) "fresh"
  ["in_county_credit_price"]=>
  int(1500)
  ["out_county_credit_price"]=>
  int(2000)
  ["out_state_credit_price"]=>
  int(2500)
  ["residency_status"]=>
  int(1)
  ["scholarship"]=>
  int(0)
  ["scholarship_amount"]=>
  int(0)
  ["credit"]=>
  int(130)
  ["semesters"]=>
  int(8)
  ["summer"]=>
  int(0)
}

Tuition Output

int(2000)

1
投票

感谢@Emma你的方法,我做了一些调整,以使其“更多”OOP。

现在我们有一个拥有$residency_status(整数)的班级学生。

class Student {
    private $residency_status = 0; // 0 1 2 for in_state, in_county, out_county

    public function __construct($residency_status) {
        $this->residency_status = $residency_status;
    }

    public function getResidencyStatus() {
        return $this->residency_status;
    }
}

另外,我们有一个TuitionCalculator课程。

class TuitionCalculator {

    private static $prices = [ // 0 1 2 for in_state, out_county, out_county
        'in_county_credit_price' => 1500,
        'out_county_credit_price' => 2000,
        'out_state_credit_price' => 2500,
    ];


    public static function calcResidency($student) {
        $tuition = 0;
        switch ($student->getResidencyStatus()) {
            case 2:
                $tuition = self::$prices["out_state_credit_price"];
                break;
            case 1:
                $tuition = self::$prices["out_county_credit_price"];
                break;
            default:
                $tuition = self::$prices["in_county_credit_price"];
                break;
        }
        return $tuition;
    }

}

要使用此构造,只需在您的下拉提交中创建一个Student

$student1 = new Student(0);
$student2 = new Student(1); // ...

echo TuitionCalculator::calcResidency($student1); // ...

如果将$prices数组更改为数字数组,则可以使计算更简单,更灵活,因为您不再需要switch

private static $prices = [ // index 0 for in_state etc.
    1500,
    2000,
    2500,
];

public static function calcResidency($student) {
    $residency_status = $student->getResidencyStatus();
    if(array_key_exists($residency_status, self::$prices)) {
        return self::$prices[$residency_status];
    } else {
        return 0; // or self::$prices[0] or your default value
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.