Xây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 2: Lập trình ứng dụng WinForm với C#

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:

pdf5 trang | Chuyên mục: Visual C# | Chia sẻ: dkS00TYs | Lượt xem: 2250 | Lượt tải: 2download
Tóm tắt nội dung Xây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 2: Lập trình ứng dụng WinForm với C#, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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: ax2 + 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; //a0 
 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 

File đính kèm:

  • pdfXây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 2 Lập trình ứng dụng WinForm với C#.pdf
Tài liệu liên quan