Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng HƯỚNG DẪN THỰC HÀNH TUẦN 2 Lập trình ứng dụng WinForm với C# (tt) 2. Viết chương trình Giải phương trình bậc 2 có dạng: ax 2 + bx + c = 0, với a ≠ 0 a. Tạo ứng dụng WinForm: Khởi động Microsoft Visual Studio 2005 tạo ứng dụng C# tương tự như bài tập 1 (hướng dẫn của tuần 1) b. Thiết kế và lập trình: c. Đăng ký và xử lý sự kiện cho Button “Thoát” d. Tạo lớp TAM_THUC Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng Cài đặt lớp TAM_THUC: class TAM_THUC { private double a; //a<>0 private double b; private double c; public double HeSoA { get { return a; } set { a=value; } } public double HeSoB { get { return b; } set { b=value; } } public double HeSoC Click chuột phải lên project “BaiTap2” để t ạo class mới Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng { get { return c; } set { c=value; } } public TAM_THUC() { } public bool NhapHeSo(string hesoa, string hesob, string hesoc) { try { if (hesoa.Trim().Length == 0) { MessageBox.Show("Chưa nhập hệ số a", "Thong bao loi", MessageBoxButtons.OK, MessageBoxIcon.Stop); return false; } else if (hesob.Trim().Length == 0) { MessageBox.Show("Chưa nhập hệ số b", "Thong bao loi", MessageBoxButtons.OK, MessageBoxIcon.Stop); return false; } else if (hesoc.Trim().Length == 0) { MessageBox.Show("Chưa nhập hệ số c", "Thong bao loi", MessageBoxButtons.OK, MessageBoxIcon.Stop); return false; } a = Double.Parse(hesoa); b = Double.Parse(hesob); c = Double.Parse(hesoc); return true; } catch (Exception ex) { MessageBox.Show(ex.Message, "Loi", MessageBoxButtons.OK, MessageBoxIcon.Stop); return false; } } public NGHIEM GiaiPT() { NGHIEM cNghiem = new NGHIEM(); double delta; delta=b*b-4*a*c; if(delta<0) cNghiem.LoaiN = 0; else if(delta==0) { cNghiem.LoaiN = 1; cNghiem.x1 = -b/2*a; } else { cNghiem.LoaiN=2; Để class này hiểu hàm MessageBox thì ở đầu class phải : using System.Windows.Forms; Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng cNghiem.x1 = -b - Math.Sqrt(delta)/2*a; cNghiem.x2 = -b + Math.Sqrt(delta)/2*a; } return cNghiem; } } e. Tạo và cài đặt lớp NGHIEM class NGHIEM { private double[] x = new double[2]; private int LoaiNghiem; public NGHIEM() { } public int LoaiN { get { return LoaiNghiem ; } set { LoaiNghiem=value; } } public double x1 { get { return x[0]; } set { x[0]=value; } } public double x2 { get { return x[1]; } set { x[1]=value; } } public void Xuat(TextBox txtNghiem) { if(LoaiNghiem==0) txtNghiem.Text="Phương trình trên vô nghiệm"; else if(LoaiNghiem==1) { txtNghiem.Text = "Phương trình trên có nghiệm kép "; txtNghiem.Text += "x= " + x[0]; } else { txtNghiem.Text= "Phương trình trên có 2 nghiệm phân biệt:"; txtNghiem.Text +=" x1 = " + x[0]; txtNghiem.Text +=" va x2 = " + x[1]; Phải có: using System.Windows.Forms; Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng } } } f. Đăng ký và xử lý cho sự kiện Button giải phương trình: private void bGiai_Click(object sender, EventArgs e) { TAM_THUC tt = new TAM_THUC(); NGHIEM N; tt.NhapHeSo(heso_a.Text.Trim(), heso_b.Text.Trim(), heso_c.Text.Trim()); N = tt.GiaiPT(); N.Xuat(txtNghiem); } g. Xử lý lỗi phát sinh khi người dùng nhập dữ liệu không phải là số h. Để ngăn chặn khả năng phát sinh lỗi ??? Không cho phép nhập các ký tự không phải là ký tự số vào textbox Giải pháp ??? Xử lý sự kiện nhấp phím (KeyPress) i. Sinh viên tự phát triển tiếp để hoàn thiện chương trình trên . phần mềm hướng đối tượng GVHD: Trần Anh Dũng HƯỚNG DẪN THỰC HÀNH TUẦN 2 Lập trình ứng dụng WinForm với C# (tt) 2. Viết chương trình Giải phương trình bậc 2 có dạng: ax 2 + bx + c = 0, với. + bx + c = 0, với a ≠ 0 a. Tạo ứng dụng WinForm: Khởi động Microsoft Visual Studio 2005 tạo ứng dụng C# tương tự như bài tập 1 (hướng dẫn của tuần 1) b. Thiết kế và lập trình: c. Đăng. phải : using System.Windows.Forms; Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng cNghiem.x1 = -b - Math.Sqrt(delta)/2*a; cNghiem.x2 = -b + Math.Sqrt(delta)/2*a; } return cNghiem;