2018年10月11日 星期四

C# 攝氏華氏溫度轉換服務系統

今天主題是教大家如何使用C#來設計"攝氏華氏溫度轉換服務系統"
在開始前先致謝高雄科技大學陳茂盛老師教導C#程式設計這門藝術。

本次使用的程式編譯器為Microsoft Visual Studio

那~~讓我們開始吧!!

首先先了解攝氏華氏換算公式:

再來我們在建立一個類別庫(.NET Framework)來讓我們建立一個類別庫。

類別庫程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//以上都是自動生成

namespace TPService
{
    public class TPClass
    {
        public double DC { set; get; }
        public double DF { set; get; }
        //設定DC與DF接收值

        public double CtoF(double _inputc)
        //建立一個公用(public)的double命名為CtoF(CtoF可自行更改)後()內設定_inputc為double型別
        {
            DF = (_inputc * 9.0 / 5.0) + 32.0;//DF值等於_inputc乘9除5再加32
            return DF;//記得 return
        }
        public double FtoC(double _inputf)
        {
            DC = (_inputf - 32.0) * 5.0 / 9.0;
            return DC;
        }
    //FtoC也是同道理
    }
}
再來在專案中新增一個WindowsFormsApp

之後我們先將WindowsForm設成起始專案
再將我們的類別庫(.NET Framework)參考進來
做完後我們需要2個TextBox、2個Label與4個Button
點選物件後可以利用右下角來更改相關名字或數值
下圖是我目前的相關命名,記住命名以利後續的程式撰寫。
雙擊每個物件
自動生成大概是長這樣:
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 WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void BTN1_Click(object sender, EventArgs e)
        {
        }
        private void BTN2_Click(object sender, EventArgs e)
        {
        }
        private void BTN3_Click(object sender, EventArgs e)
        {
        }
        private void BTN4_Click(object sender, EventArgs e)
        {
        }
        private void TB1_TextChanged(object sender, EventArgs e)
        {
        }
    }
}
首先先加入我們的類別庫
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;
using TPService;//使用TPService(就是您的類別庫)

再來我們先編輯BTN1的部分,程式碼如下:
        private void BTN1_Click(object sender, EventArgs e)
        {
            TPClass changetp = new TPClass(); //使用TPClass並命名為changetp
            if (string.IsNullOrEmpty(TB2.Text))
            //如果TB2是不存在或是不允許的值就執行{}中的行為
            //這部分是為了怕有人打錯數值或沒輸入就轉換而做的防呆機制
            {
                MessageBox.Show("請輸入數值");
                return;
            }
            else //不然
            {
                changetp.DC = changetp.FtoC(double.Parse(TB2.Text));//changetp中的DC等於changetp中的自訂式FtoC(接收TB2的值並使用double資料型態)
                TB1.Text = changetp.DC.ToString("##.00");//TB1顯示changetp的DC的值格式取小數後2位
                TB2.Text = double.Parse(TB2.Text).ToString("##.00");//TB2顯示原TB2的值,格式也取小數後2位
            }
        }
BTN2也是一樣作法歐,稍微改變下而已
private void BTN2_Click(object sender, EventArgs e)
        {
            TPClass changetp = new TPClass();
            if (string.IsNullOrEmpty(TB1.Text))
            {
                MessageBox.Show("請輸入數值");
                return;
            }
            else
            {
            changetp.DF = changetp.CtoF(double.Parse(TB1.Text));
            TB2.Text = changetp.DF.ToString("##.00");
            TB1.Text = double.Parse(TB1.Text).ToString("##.00");
            }
        }
再來是BTN3
這部分是清理TB1與TB2的值,我們可以運用Clear()的功能。
        private void BTN3_Click(object sender, EventArgs e)
        {
            TB1.Clear();
            TB2.Clear();
        }
最後是離開的按鈕設定
我們要做到這個效果

        private void BTN4_Click(object sender, EventArgs e)
        {
            if(MessageBox.Show("確定離開?","TPService",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.OK)
            Application.Exit();
        }

基本上相關對照如下:
這樣就完成了。
下方整理了完整的程式碼:

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;
using TPService;

/*
 代號參考表:
 BTN2=轉換紐
 BTN3=清除資料紐
 BTN4=EXIT紐
 TB1=攝氏TEXTBOX輸入欄
 TB2=華氏TEXTBOX輸入欄
*/

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

 

        private void BTN2_Click(object sender, EventArgs e)
        {
            {
                TPClass changetp = new TPClass();
                if (string.IsNullOrEmpty(TB1.Text) && string.IsNullOrEmpty(TB2.Text))
                {
                    MessageBox.Show("請輸入數值");
                    return;
                }
                else if (string.IsNullOrEmpty(TB2.Text))
                {
                    changetp.DC = changetp.CtoF(double.Parse(TB1.Text));
                    TB2.Text = changetp.DF.ToString("##.00");
                    TB1.Text = double.Parse(TB1.Text).ToString("##.00");
                }
                else
                {
                    changetp.DF = changetp.FtoC(double.Parse(TB2.Text));
                    TB1.Text = changetp.DC.ToString("##.00");
                    TB2.Text = double.Parse(TB2.Text).ToString("##.00");
                }
            }
        }

        private void BTN3_Click(object sender, EventArgs e)
        {
            TB1.Clear();
            TB2.Clear();
        }

        private void BTN4_Click(object sender, EventArgs e)
        {
            if(MessageBox.Show("確定離開?","TPService",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.OK)
            Application.Exit();
        }
    }
}
By:Ender
Day:2018/10/11
Time:06:16am
Revision :REV 1.33

沒有留言:

張貼留言