Giáo án - Bài giảng: BÀI TẬP WINDOW FORM

61 449 2
Giáo án - Bài giảng: BÀI TẬP WINDOW FORM

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 1 Lập trình ứng dụng WinForm với C# 1. Viết chương trình tính đạo hàm đơn thức: P(x) = ax n a. Tạo ứng dụng WinForm: Khởi động Microsoft Visual Studio 2005 Từ menu File chọn New\Project b. Thiết kế và lập trình: Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng c. Đăng ký và xử lý sự kiện cho Button “Thoát” Cửa sổ Properties, cho phép thay đổi các thuộc tính của control Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng Double click chuột trái vào sự kiện cần xử lý Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng d. Đăng ký và xử lý cho sự kiện Button tính đạo hàm: private void bTinh_Click(object sender, EventArgs e) { if (heso_p.Text.Trim().Equals("") || somu_p.Text.Trim().Equals("")) { MessageBox.Show("Chưa nhập dữ liệu đầy đủ.", "Thong bao loi", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } int a, b; //Chuyển đổi chuỗi thành số a = Int32.Parse(heso_p.Text.Trim()); b = Int32.Parse(somu_p.Text.Trim()); //Chuyển đổi số thành chuỗi heso_q.Text = Convert.ToString(a * b); somu_q.Text = Convert.ToString(b - 1); } e. Chú ý xử lý các trường hợp ngoại lệ (dữ liệu nhập không hợp lệ) i. Trong trường hợp này sẽ phát sinh lỗi và dừng chương trình nếu người dùng nhập giá trị không hợp lệ (cụ thể dữ liệu nhập không phải là số) ii. Khi đó phương thức Int32.Parse(…) sẽ phát sinh ngoại lệ Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng iii. Để xử lý ngoại lệ trong C#, chúng ta dùng khối try { }catch( ) private void bTinh_Click(object sender, EventArgs e) { if (heso_p.Text.Trim().Equals("") || somu_p.Text.Trim().Equals("")) { MessageBox.Show("Chưa nhập dữ liệu đầy đủ.", "Thong bao loi", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } int a=0, b=0; try { //Chuyển đổi chuỗi thành số a = Int32.Parse(heso_p.Text.Trim()); b = Int32.Parse(somu_p.Text.Trim()); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString(), "Loi dinh dang so", MessageBoxButtons.OK, MessageBoxIcon.Stop); } //Chuyển đổi số thành chuỗi heso_q.Text = Convert.ToString(a * b); somu_q.Text = Convert.ToString(b - 1); } iv. Để 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ây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng    Xử lý sự kiện nhấp phím (KeyPress) private void heso_p_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar < '0' || e.KeyChar >= '9')) e.Handled = true; } // Chú ý xử lý trường hợp khi nhấn các phím xóa, di chuyển f. Sinh viên tự phát triển tiếp để hoàn thiện chương trình 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: 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; [...]... btnLoad_Click(object sender, EventArgs e) { Form1 .sPathFilename = txtFile.Text; Form1 frm = new Form1 (); this.Hide(); frm.ShowDialog(); } Xây d ng ph n m m hư ng i tư ng GVHD: Tr n Anh Dũng Như v y, trong Form1 chúng ta s a l i như sau: - Trong s ki n Form1 _Load thay dòng l nh connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh.mdb"); B ng dòng l nh sau: connect(sPathFilename); - Trong s ki n thoát ph i... hình 2 t ng x lý D a vào hư ng d n thi t k theo mô hình hai t ng trên l p lý thuy t, sinh viên ph i phân tích, thi t k - Xác nh và mô t phát th o các l p i tư ng - L p sơ l p m c phân tích - L p sơ l p m c thi t k - Mô t chi ti t các l p i tư ng - L p sơ ki n trúc t ng th c a ph n m m - L p sơ ph i h p c a các bi n c 3 Cài t: a T o project “QLHocSinh” b Cài t l p i tư ng XL_HOC_SINH L p i tư ng th c... ch ra ư ng d n v t lý lưu tr CSDL (ch n ư ng d n lưu tr CSDL) Bư c 1: Add thêm m t form m i (frmSelectPath) vào Project Thi t k giao di n cho Form m i như sau: Xây d ng ph n m m hư ng i tư ng Form “frmSelectPath” ph i ư c ch y GVHD: Tr n Anh Dũng u tiên ??? Xây d ng ph n m m hư ng i tư ng GVHD: Tr n Anh Dũng Trong class Form1 .cs khai báo bi n sPathFilename như sau: public static string sPathFilename... dataSet.Tables[0]; } - Trong s ki n formLoad, ta g i hàm l y danh sách l p và k t vào combobox private void Form1 _Load(object sender, EventArgs e) { connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh.mdb"); //Load d li u vào comboBox L p cboLop.DataSource = getDSLop(); // Column s ư c hi n th cboLop.DisplayMember = "TenLop"; // Column s ư c gi giá tr cboLop.ValueMember = "MaLop"; } L y thông tin t form. .. project m i: Thi t k l i Form “K t n i CSDL SQL Server” như màn hình sau: n Xây d ng ph n m m hư ng i tư ng GVHD: Tr n Anh Dũng Source code l p frmConnection using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; namespace QLHocSinh { public partial class frmConnection : Form { //Khai báo bi n... h.DiemTB, l.TenLop From HOCSINH h, LOP l Where h.MaLop=l.MaLop", connection); dataSet = new DataSet(); adapter.Fill(dataSet); return dataSet.Tables[0]; } - Trong s ki n form load, ta g i hàm getDSHocSinh và gán k t qu cho datasource c a DataGridView private void Form1 _Load(object sender, EventArgs e) { connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh.mdb"); //Load d li u vào comboBox L p cboLop.DataSource... chú PrimaryKey ForeignKey (tham chi u Lop(MaLop) Ghi chú PrimaryKey 2 Thi t k giao di n: T o project C# Window Application m i v i tên project là QLHS Thi t k Form “Nh p thông tin h c sinh” như màn hình sau: n Xây d ng ph n m m hư ng i tư ng GVHD: Tr n Anh Dũng T o k t n i cơ s d li u b ng dòng l nh - thao tác trên cơ s d li u s d ng ADO.NET ta c n có các i tư ng sau: o Connection k t n i v i cơ s d... OleDbCommand(insertCommand, connection); command.ExecuteNonQuery(); connection.Close(); } - Trong s ki n Click c a btnLuu ta th c hi n lưu thông tin vào CSDL private void btnLuu_Click(object sender, EventArgs e) { getData(); insert(); MessageBox.Show("Cap nhat thanh cong", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Information); } Hàm xóa d li u kh i CSDL - Tương t ta có hàm xóa d li u private void delete() { connection.Open();... OleDbCommand(deleteCommand, connection); command.ExecuteNonQuery(); connection.Close(); } - Trong s ki n Click c a btnXoa ta th c hi n xóa thông tin t CSDL private void btnXoa_Click(object sender, EventArgs e) { getData(); delete(); MessageBox.Show("Xoa du lieu thanh cong", "Thong bao", MessageBoxButtons.OK, MessageBoxIcon.Information); } 3 Bài t p: a Ki m tra d li u nh p h p l : i Mã h c sinh và tên h c sinh ph i... using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; System.Data.SqlClient; namespace QLHocSinh { public partial class frmHocSinh : Form { private SqlConnection connection; private SqlDataAdapter adapter; private DataSet dataSet; private SqlCommand command; private string maHS, tenHS, . ở đầ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; } . adapter.Fill(dataSet); return dataSet.Tables[0]; } - Trong sự kiện form load, ta gọi hàm getDSHocSinh và gán kết quả cho datasource của DataGridView private void Form1 _Load(object sender, EventArgs e). adapter.Fill(dataSet); return dataSet.Tables[0]; } - Trong sự kiện formLoad, ta gọi hàm lấy danh sách lớp và kết vào combobox private void Form1 _Load(object sender, EventArgs e) { connect("E:/DH_HUFLIT/XDPMHDT/DeCuong_HuongDan_ThucHanh/HocSinh.mdb");

Ngày đăng: 16/04/2014, 15:11

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan