Tải bản đầy đủ (.pdf) (5 trang)

Hướng Dẫn Thực Hành Winform với C# - phần 1 (tt) ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (234.76 KB, 5 trang )

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

×