Tải bản đầy đủ - 0 (trang)
TÀI LIỆU THAM KHẢO

TÀI LIỆU THAM KHẢO

Tải bản đầy đủ - 0trang

71



72



PHỤ LỤC

MỘT SỐ ĐOẠN CODE XỬ LÝ TRONG CHƯƠNG TRÌNH

1. Code xử lý báo cáo tổng hợp

private void btn_baocao_Click(object sender, EventArgs e)

{

try

{

string FileNamImage = PathApplication + "\\anh.jpg";

if (File.Exists(FileNamImage))

File.Delete(FileNamImage);

chart1.SaveImage(FileNamImage, ChartImageFormat.Jpeg);

#region Export ra file Excel

if (drgDulieu.Rows != null && drgDulieu.RowCount > 0)

{

string strPath = System.IO.Directory.GetCurrentDirectory();

DateTime _dte = DateTime.Now;

string strNgayGio = _dte.Year.ToString() + "_" +

_dte.ToString("MM_dd") + "_" + _dte.ToString("HH") + "_" +

_dte.ToString("mm") + "_" + _dte.ToString("ss");

string strTitle = "";

string FileName = "Hồi_quy_tuyến_tính_" + strNgayGio +

".xls";

switch (cmbPhuongPhap.SelectedIndex)

{

case 0:

FileName = "Hồi_quy_tuyến_tính_" + strNgayGio + ".xls";

strTitle = lblHQTT.Text.Trim();

break;

case 1:

FileName = "San_bằng_mũ_" + strNgayGio + ".xls";

strTitle = "";

break;

case 2:

FileName = "Holt_Winter_" + strNgayGio + ".xls";

strTitle = "Phương pháp Holt-Winter với chỉ số Beta = " +

txtBeta.Text.Trim() + " và Alpha = " + txtAlpha.Text.Trim();

break;

case 3:

FileName = "Trung_bình_động_" + strNgayGio + ".xls";

strTitle = "Số kỳ tính trung bình động là " +

txtn.Text.Trim();

break;

default:

FileName = "Hồi_quy_tuyến_tính_" + strNgayGio + ".xls";



73



strTitle = lblHQTT.Text.Trim();

break;

}

//switch(cmbPhuongPhap.SelectedIndex =

if (File.Exists(strPath + "\\" + FileName) == true)

File.Delete(strPath + "\\" + FileName);

using (FileStream fs = new FileStream(strPath + "\\" +

FileName, FileMode.Create)) ;

Microsoft.Office.Interop.Excel.Application xlApp = new

Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook xlWorkBook;

Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;

object misValue = System.Reflection.Missing.Value;

xlWorkBook = xlApp.Workbooks.Add(misValue);

//xlWorkBook = xlApp.Workbooks.Open(strPath + "\\" +

FileName);

xlWorkSheet =

(Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Ite

m(1);

xlWorkSheet.Cells[1, 2] = "PHƯƠNG PHÁP " +

cmbPhuongPhap.Text.Trim().ToUpper();

xlWorkSheet.Cells[2, 1] = "Thời gian";

xlWorkSheet.Cells[2, 2] = "Giá trị thực tế";

xlWorkSheet.Cells[2, 3] = "Giá trị dự báo";

xlWorkSheet.Cells[2, 4] = "Sai số dự báo";

//xlWorkSheet.Range["B1"].WrapText = false;

((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[2,

1]).EntireColumn.AutoFit();

((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[2,

2]).EntireColumn.AutoFit();

((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[2,

3]).EntireColumn.AutoFit();

((Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[2,

4]).EntireColumn.AutoFit();

for (int i = 0; i <= drgDulieu.RowCount - 1; i++)

{

for (int j = 0; j <= drgDulieu.ColumnCount - 1; j++)

{



74



DataGridViewCell cell = drgDulieu[j, i];

xlWorkSheet.Cells[i + 3, j + 1] = cell.Value;

}

}

xlWorkSheet.Cells[drgDulieu.RowCount + 3, 2] = strTitle;

xlWorkSheet.Cells[drgDulieu.RowCount + 4, 2] = "Các tiêu chí

đánh giá độ tin cậy của dự báo";

string[] lstTieuChi = Regex.Split(lblKQTC.Text.Trim(), "\n");

if (lstTieuChi != null && lstTieuChi.Length > 0)

{

for (int index = 0; index < lstTieuChi.Length; index++)

{

xlWorkSheet.Cells[drgDulieu.RowCount + 5 + index, 2] =

lstTieuChi[index].Trim();

}

}

xlWorkSheet.Shapes.AddPicture(FileNamImage,

Microsoft.Office.Core.MsoTriState.msoFalse,

Microsoft.Office.Core.MsoTriState.msoCTrue, 450, 20, 500, 350);

xlWorkBook.SaveAs(strPath + "\\" + FileName,

Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue,

misValue, misValue, misValue,

Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,

misValue, misValue, misValue, misValue, misValue);

xlWorkBook.Close(true, misValue, misValue);

xlApp.Quit();

releaseObject(xlWorkSheet);

releaseObject(xlWorkBook);

releaseObject(xlApp);

System.Diagnostics.Process.Start(strPath + "\\" + FileName);

}

else

MessageBox.Show("Khơng có dữ liệu để báo cáo");

#endregion

}

2. Code Các phương pháp dự báo

class Session

{

#region Hoi Quy Tuyen Tinh



75



public static string HoiQuyTuyenTinh(DataTable dtSource)

{

try

{

//double result = 0;

double xTB = 0, yTB = 0, a = 0, b = 0, x2 = 0, xyTB = 0, tmpX =

0, tmpY = 0;

string aa;

// tính các giá trị

for (int i = 0; i < dtSource.Rows.Count; i++)

{

tmpX = Convert.ToDouble(dtSource.Rows[i]

["ThoiGian"].ToString());

tmpY = Convert.ToDouble(dtSource.Rows[i]

["GiaTri"].ToString());

xTB += tmpX;

yTB += tmpY;

xyTB += tmpY * tmpX;

x2 += tmpX * tmpX;

}

xTB = xTB / dtSource.Rows.Count;

yTB = yTB / dtSource.Rows.Count;

b = (xyTB - dtSource.Rows.Count * xTB * yTB) / (x2 dtSource.Rows.Count * (xTB * xTB));

a = yTB - (b * xTB);

if(a<0)

{

aa= "- "+Math.Round(-a, 3).ToString();

}

else

{

aa="+ "+Math.Round(a, 3).ToString();

}

string s = "Y= " + Math.Round(b, 3).ToString() + "X " + aa ;

return s;

}

catch (Exception)

{

throw;

}

}

public static DataTable HQTable(DataTable dtSource)



76



{

DataTable result;

//double result = 0;

double xTB = 0, yTB = 0, a = 0, b = 0, x2 = 0, xyTB = 0, tmpX = 0,

tmpY = 0;

// tính các giá trị

for (int i = 0; i < dtSource.Rows.Count; i++)

{

tmpX = Convert.ToDouble(dtSource.Rows[i]

["ThoiGian"].ToString());

tmpY = Convert.ToDouble(dtSource.Rows[i]

["GiaTri"].ToString());

xTB += tmpX;

yTB += tmpY;

xyTB += tmpY * tmpX;

x2 += tmpX * tmpX;

}

xTB = xTB / dtSource.Rows.Count;

yTB = yTB / dtSource.Rows.Count;

b = (xyTB - dtSource.Rows.Count * xTB * yTB) / (x2 dtSource.Rows.Count * (xTB * xTB));

a = yTB - (b * xTB);

//khoi tao bang

result = new DataTable();

result.Columns.Add("ThoiGian", typeof(string));

result.Columns.Add("GiaTri", typeof(decimal));

result.Columns.Add("DuBao", typeof(decimal));

result.Columns.Add("GiaTriSaiSo", typeof(decimal));

//Them hang

DataRow row;

result.Rows.Clear();

for (int i = 0; i <= dtSource.Rows.Count+4; i++)

{

row = result.NewRow();

if (i >= dtSource.Rows.Count)

{

row["ThoiGian"] =

(Convert.ToInt32(dtSource.Rows[dtSource.Rows.Count - 1]

["ThoiGian"].ToString()) + (i - dtSource.Rows.Count+1)).ToString();

row["DuBao"] =Math.Round((b *

Convert.ToDouble(row["ThoiGian"]) + a),3);



77



}

else

{

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

row["DuBao"] =Math.Round((b *

Convert.ToDouble(dtSource.Rows[i]["ThoiGian"]) + a),2);

row["GiaTriSaiSo"]=Math.Round((Convert.ToDouble(row["GiaTri"].ToStrin

g())- Convert.ToDouble(row["DuBao"].ToString())),2);

}

result.Rows.Add(row);

}

return result;

}

#endregion

#region San bang mu gian don

public static DataTable SBMTable(DataTable dtSource)

{

DataTable result;

result = new DataTable();

result.Columns.Add("ThoiGian", typeof(string));

result.Columns.Add("GiaTri", typeof(decimal));

result.Columns.Add("DuBao", typeof(decimal));

result.Columns.Add("GiaTriSaiSo", typeof(decimal));

//Them hang

DataRow row;

result.Rows.Clear();

for (int i = 0; i <= dtSource.Rows.Count; i++)

{

row = result.NewRow();

int n;

double a;

n = dtSource.Rows.Count;

a = 2 / (Convert.ToDouble(n) + 1);

if (i <= 1)

{

if (i == 0)

{

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

}



78



else

{

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

row["DuBao"] = dtSource.Rows[i - 1]["GiaTri"];

row["GiaTriSaiSo"] =

Math.Round((Convert.ToDouble(row["GiaTri"].ToString()) Convert.ToDouble(row["DuBao"].ToString())), 2);

}

}

else

{

if (i == dtSource.Rows.Count)

{

row["ThoiGian"] = (Convert.ToInt32(dtSource.Rows[i - 1]

["ThoiGian"].ToString()) + 1).ToString();

row["DuBao"] =

Math.Round(Convert.ToDouble(result.Rows[i - 1]["DuBao"]) + a *

(Convert.ToDouble(result.Rows[i - 1]["GiaTri"]) Convert.ToDouble(result.Rows[i - 1]["DuBao"])), 2);

}

else

{

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

row["DuBao"] =

Math.Round(Convert.ToDouble(result.Rows[i - 1]["DuBao"]) + a *

(Convert.ToDouble(result.Rows[i - 1]["GiaTri"]) Convert.ToDouble(result.Rows[i - 1]["DuBao"])), 2);

row["GiaTriSaiSo"] =

Math.Round((Convert.ToDouble(row["GiaTri"].ToString()) Convert.ToDouble(row["DuBao"].ToString())), 2);

}

}

result.Rows.Add(row);

}

return result;

}

#endregion

#region Holt winter

public static DataTable HWTable(DataTable dtSource, double a, double

b)



79



{

DataTable result;

result = new DataTable();

result.Columns.Add("ThoiGian", typeof(string));

result.Columns.Add("GiaTri", typeof(decimal));

result.Columns.Add("DuBao", typeof(decimal));

result.Columns.Add("GiaTriSaiSo", typeof(decimal));

DataRow row;

result.Rows.Clear();

double Stt = 0, Ttt = 0;

double St = 0, Tt = 0;

for (int i = 0; i <= dtSource.Rows.Count; i++)

{

row = result.NewRow();

if (i <= 2)

{

if (i <= 1)

{

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

}

else

{

St = Convert.ToDouble(dtSource.Rows[i - 1]

["Giatri"].ToString());

Tt = Convert.ToDouble(Convert.ToDouble(dtSource.Rows[i 1]["GiaTri"].ToString()) - Convert.ToDouble(dtSource.Rows[i - 2]

["GiaTri"].ToString()));

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

row["DuBao"] = Math.Round((St + Tt), 2);

row["GiaTriSaiSo"] =

Math.Round((Convert.ToDouble(row["GiaTri"].ToString()) Convert.ToDouble(row["DuBao"].ToString())), 2);

}

}

else

{

if (i == dtSource.Rows.Count)

{

St = a * (Convert.ToDouble(result.Rows[i - 1]

["GiaTri"].ToString())) + (1 - a) * (Stt + Ttt);



80



Tt = b * (St - Stt) + (1 - b) * Ttt;

row["ThoiGian"] = (Convert.ToInt32(dtSource.Rows[i - 1]

["ThoiGian"].ToString()) + 1).ToString();

row["DuBao"] = Math.Round((St + Tt), 2);

}

else

{

St = a * (Convert.ToDouble(result.Rows[i - 1]

["GiaTri"].ToString())) + (1 - a) * (Stt + Ttt);

Tt = b * (St - Stt) + (1 - b) * Ttt;

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

row["DuBao"] = Math.Round((St + Tt), 2);

row["GiaTriSaiSo"] =

Math.Round((Convert.ToDouble(row["GiaTri"].ToString()) Convert.ToDouble(row["DuBao"].ToString())), 2);

}

}

Stt = St;

Ttt = Tt;

result.Rows.Add(row);

}

return result;

}

#endregion

#region Trung binh dong

public static DataTable TBDTable(DataTable dtSource,int n)

{

DataTable result;

result = new DataTable();

result.Columns.Add("ThoiGian", typeof(string));

result.Columns.Add("GiaTri", typeof(decimal));

result.Columns.Add("DuBao", typeof(decimal));

result.Columns.Add("GiaTriSaiSo", typeof(decimal));

DataRow row;

result.Rows.Clear();

for (int i = 0; i <= dtSource.Rows.Count; i++)

{

double Ft = 0;



81



row = result.NewRow();

if (i
{

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

}

else

{

if (i == dtSource.Rows.Count)

{

for (int j = i - n; j < i; j++)

{

Ft += Convert.ToDouble(result.Rows[j]

["GiaTri"].ToString());

}

Ft = Ft / Convert.ToDouble(n);

row["ThoiGian"] = (Convert.ToInt32(dtSource.Rows[i-1]

["ThoiGian"].ToString())+1).ToString();

//row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

row["DuBao"] = Math.Round(Ft, 2);

//row["GiaTriSaiSo"] =

Math.Round((Convert.ToDouble(row["GiaTri"].ToString()) Convert.ToDouble(row["DuBao"].ToString())), 2);

}

else

{

for (int j = i - n; j < i; j++)

{

Ft += Convert.ToDouble(result.Rows[j]

["GiaTri"].ToString());

}

Ft = Ft / Convert.ToDouble(n);

row["ThoiGian"] = dtSource.Rows[i]["ThoiGian"].ToString();

row["GiaTri"] = dtSource.Rows[i]["GiaTri"];

row["DuBao"] = Math.Round(Ft, 2);

row["GiaTriSaiSo"] =

Math.Round((Convert.ToDouble(row["GiaTri"].ToString()) Convert.ToDouble(row["DuBao"].ToString())), 2);

}

}

result.Rows.Add(row);

}



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

TÀI LIỆU THAM KHẢO

Tải bản đầy đủ ngay(0 tr)

×