⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cs

📁 PDA計算汽車平均油耗程式,使用C#程式及SQL CE 數據庫應用
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlServerCe;

namespace GasNote
{
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }

        DataAccess da = new DataAccess();
        private void Main_Load(object sender, EventArgs e)
        {
            try
            {
                if (cmb_CarName.Items.Count == 0)
                {
                    GetCarList();
                }
                if (cmb_CarName.Items.Count > 0)
                {
                    GetGasList();
                }
            }
            catch
            {
                this.Close();
            }
        }

        private void GetCarList()
        {
            try
            {
                this.cmb_CarName.SelectedIndexChanged -= new System.EventHandler(this.cmb_CarName_SelectedIndexChanged);
                DataSet dsCar = da.GetCarList();
                if (dsCar.Tables["CarList"].Rows.Count == 0)
                {
                    AddCar ac = new AddCar();
                    DialogResult dr = ac.ShowDialog();
                    if (dr == DialogResult.OK)
                    {
                        dsCar.Dispose();
                        GetCarList();
                    }
                    else if (dr == DialogResult.Cancel)
                    {
                        cmb_CarName.DataSource = null;
                        this.Close();
                    }
                }
                else
                {
                    cmb_CarName.DataSource = dsCar.Tables["CarList"];
                    cmb_CarName.DisplayMember = "CarName";
                    cmb_CarName.ValueMember = "CarNo";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                this.Close();
            }
            finally
            {
                this.cmb_CarName.SelectedIndexChanged += new System.EventHandler(this.cmb_CarName_SelectedIndexChanged);
            }
        }
        private void menuItem2_Click(object sender, EventArgs e)
        {
            AddCar ac = new AddCar();
            if (ac.ShowDialog() == DialogResult.OK)
            {
                GetCarList();
            }
        }

        private void menuItem3_Click(object sender, EventArgs e)
        {
            try
            {
                if (cmb_CarName.SelectedIndex < 0) return;
                string msg = "確定刪除 : " + cmb_CarName.Text + "的所有資料?";
                if (MessageBox.Show(msg, "注意", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                {
                    da.DeleteCarList((int)cmb_CarName.SelectedValue);
                    GetCarList();
                    if (cmb_CarName.Items.Count > 0)
                    {
                        GetGasList();
                    }
                }
            }
            catch 
            {
                this.Close();
            }
        }

        private void GetGasList ()
        {
            try
            {
                if (cmb_CarName.Items.Count == 0 || cmb_CarName.SelectedIndex < 0) return;
                DataSet dsGas = da.GetGasList(int.Parse(cmb_CarName.SelectedValue.ToString()));
                dsGas.Tables[0].Columns.Add("Trip", typeof(int));
                dsGas.Tables[0].Columns["Trip"].DefaultValue = 0;
                dsGas.Tables[0].Columns.Add("GasAvg", typeof(decimal));
                dsGas.Tables[0].Columns["GasAvg"].DefaultValue = 0;
                dsGas.Tables[0].Columns.Add("PayAvg", typeof(decimal));
                dsGas.Tables[0].Columns["PayAvg"].DefaultValue = 0;
                if (dsGas.Tables[0].Rows.Count > 1)
                {
                    for (int i = 1; i < dsGas.Tables[0].Rows.Count; i++)
                    {
                        dsGas.Tables[0].Rows[i]["Trip"] = Math.Abs(decimal.Parse(dsGas.Tables[0].Rows[i]["ODO"].ToString()) - decimal.Parse(dsGas.Tables[0].Rows[i - 1]["ODO"].ToString()));
                        dsGas.Tables[0].Rows[i]["GasAvg"] = Math.Abs(decimal.Parse(dsGas.Tables[0].Rows[i]["Trip"].ToString()) / decimal.Parse(dsGas.Tables[0].Rows[i]["Gas"].ToString()));
                        dsGas.Tables[0].Rows[i]["PayAvg"] = Math.Abs(decimal.Parse(dsGas.Tables[0].Rows[i]["Payment"].ToString()) / decimal.Parse(dsGas.Tables[0].Rows[i]["Trip"].ToString()));
                    }
                }
                grid_GasList.DataSource = dsGas.Tables[0];
                GetInfo(dsGas.Tables[0]);
            }
            catch
            {
                this.Close();
            }
        }

        private void GetInfo(DataTable dtGas)
        {
            try
            {
                lbl_GasAvg.Text = "0.00";
                lbl_PayAvg.Text = "0.00";
                lbl_BestGasAvg.Text = "0.00";
                lbl_FillFreq.Text = "0.00";
                lbl_Paykm.Text = "0.00";

                if (dtGas.Rows.Count > 0)
                {
                    decimal TotGas = 0;
                    decimal BestGasAvg = 0;
                    int TotGasDay = 0;
                    decimal TotPayment = 0;
                    decimal Paykm = 0;
                    if (dtGas.Rows.Count > 1)
                    {
                        for (int i = 1; i < dtGas.Rows.Count; i++)
                        {
                            TotGas += decimal.Parse(dtGas.Rows[i]["GasAvg"].ToString());
                            if (i == 1)
                            {
                                BestGasAvg = (decimal)dtGas.Rows[i]["GasAvg"];
                            }
                            else if (decimal.Parse(dtGas.Rows[i]["GasAvg"].ToString()) < BestGasAvg)
                            {
                                BestGasAvg = (decimal)dtGas.Rows[i]["GasAvg"];
                            }
                            TotPayment += decimal.Parse(dtGas.Rows[i]["Payment"].ToString());
                            TimeSpan ts = ((DateTime)dtGas.Rows[i]["FillDate"]).Subtract((DateTime)dtGas.Rows[i - 1]["FillDate"]);
                            TotGasDay += Convert.ToInt16(ts.TotalDays);
                            Paykm += decimal.Parse(dtGas.Rows[i]["PayAvg"].ToString());
                        }
                        lbl_GasAvg.Text = Convert.ToDecimal(TotGas / (dtGas.Rows.Count - 1)).ToString("#,###.#0");
                        lbl_PayAvg.Text = Convert.ToDecimal(TotPayment / (dtGas.Rows.Count - 1)).ToString("#,###.#0");
                        lbl_BestGasAvg.Text = BestGasAvg.ToString("#,###.#0");
                        lbl_FillFreq.Text = Math.Abs(Convert.ToDecimal(TotGasDay / (dtGas.Rows.Count - 1))).ToString("#,###.#0");
                        lbl_Paykm.Text = Convert.ToDecimal(Paykm / (dtGas.Rows.Count - 1)).ToString("#,###.#0");
                    }
                    else if (dtGas.Rows.Count == 1)
                    {
                        lbl_GasAvg.Text = TotGas.ToString("#,###,#0");
                        lbl_PayAvg.Text = TotPayment.ToString("#,###,#0");
                        lbl_BestGasAvg.Text = "0.00";
                        lbl_FillFreq.Text = Convert.ToDecimal(TotGasDay).ToString("#,###,#0");
                        lbl_Paykm.Text = "0.00";
                    }

                }
            }
            catch
            {
                this.Close();
            }
        }

        private void cmb_CarName_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                GetGasList();
            }
            catch
            {
                this.Close();
            }
        }

        private void btn_Add_Click(object sender, EventArgs e)
        {
            try
            {
                AddGas ag = new AddGas((int)cmb_CarName.SelectedValue);
                if (ag.ShowDialog() == DialogResult.OK)
                {
                    GetGasList();
                }
            }
            catch
            {
                this.Close();
            }
        }

        private void btn_Edit_Click(object sender, EventArgs e)
        {
            try
            {
                if (grid_GasList.CurrentRowIndex < 0) return;
                int CarNo = (int)cmb_CarName.SelectedValue;
                DateTime FillDate = (DateTime)grid_GasList[grid_GasList.CurrentRowIndex, 0];
                decimal ODO = (decimal)grid_GasList[grid_GasList.CurrentRowIndex, 1];
                decimal Gas = (decimal)grid_GasList[grid_GasList.CurrentRowIndex, 3];
                decimal Payment = (decimal)grid_GasList[grid_GasList.CurrentRowIndex, 5];
                int ID = (int)grid_GasList[grid_GasList.CurrentRowIndex, 7];
                AddGas ag = new AddGas(CarNo, FillDate, ODO, Gas, Payment, ID);
                if (ag.ShowDialog() == DialogResult.OK)
                {
                    GetGasList();
                }
            }
            catch
            {
                this.Close();
            }
        }

        private void btn_Delete_Click(object sender, EventArgs e)
        {
            try
            {
                if (grid_GasList.CurrentRowIndex < 0) return;
                string msg = "";
                msg = "請問是否確定刪除此筆資料\r\n";
                msg += "日期 : " + ((DateTime)grid_GasList[grid_GasList.CurrentRowIndex, 0]).ToString("yyyy/MM/dd") + "\r\n";
                msg += "總里程 : " + ((decimal)grid_GasList[grid_GasList.CurrentRowIndex, 1]).ToString("#,###.#0") + "\r\n";
                msg += "加油量 : " + ((decimal)grid_GasList[grid_GasList.CurrentRowIndex, 3]).ToString("#,###.#0") + "\r\n";
                msg += "油資 : " + ((decimal)grid_GasList[grid_GasList.CurrentRowIndex, 5]).ToString("#,###.#0");
                if (MessageBox.Show(msg, "注意", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                {
                    da.DeleteGasList((int)grid_GasList[grid_GasList.CurrentRowIndex, 7]);
                    GetGasList();
                }
            }
            catch
            {
                this.Close();
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -