【程式設計-C#】電費計算器(非時間電價,非營業用)

  • 台電 – 電價表

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            double D = Convert.ToDouble(textBox1.Text); //將輸入的度數字串轉成浮點數double
            double MS = 0, MW = 0; //MS夏日電費, MW非夏日電費;
            int L120 = 120, L330 = 330, L500 = 500, L700 = 700, L1000 = 1000;
            double s163 = 1.63, s238 = 2.38, s352 = 3.52, s461 = 4.61, s542 = 5.42, s613 = 6.13; //夏日費率
            double w163 = 1.63, w210 = 2.10, w289 = 2.89, w379 = 3.79, w442 = 4.42, w483 = 4.83; //非夏日費率

            //計算夏日電費
            if (D <= L120) MS = D * s163;
            else if (D <= L330)  MS = L120 * s163 + (D - L120) * s238 ;
            else if (D <= L500)  MS = L120 * s163 + (L330 - L120) * s238 + (D - L330) * s352;
            else if (D <= L700)  MS = L120 * s163 + (L330 - L120) * s238 + (L500 - L330) * s352 + (D - L500) * s461;
            else if (D <= L1000) MS = L120 * s163 + (L330 - L120) * s238 + (L500 - L330) * s352 + (L700 - L500) * s461 + (D - L700) * s542; 
            else                 MS = L120 * s163 + (L330 - L120) * s238 + (L500 - L330) * s352 + (L700 - L500) * s461 + (L700 - L1000) * s542 + (D - L1000) * s613; ;

            //計算非夏日電費
            if (D <= L120) MW = D * w163;
            else if (D <= L330) MW = L120 * w163 + (D - L120) * w210;
            else if (D <= L500) MW = L120 * w163 + (L330 - L120) * w210 + (D - L330) * w289;
            else if (D <= L700) MW = L120 * w163 + (L330 - L120) * w210 + (L500 - L330) * w289 + (D - L500) * w379;
            else if (D <= L1000) MW = L120 * w163 + (L330 - L120) * w210 + (L500 - L330) * w289 + (L700 - L500) * w379 + (D - L700) * w442;
            else MW = L120 * w163 + (L330 - L120) * w210 + (L500 - L330) * w289 + (L700 - L500) * w379 + (L700 - L1000) * w442 + (D - L1000) * w483; ;

            if (radioButton1.Checked) label4.Text = MS.ToString();
            else label4.Text = MW.ToString();
        }

        private void S2NS(object sender, EventArgs e) //2個RadioBuuton 的 共同 Click事件函式
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked) button1_Click(rb, e);
        }
    }
}

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料