Xử lý các sự kiện trong frmSinhVien:

Một phần của tài liệu Luận văn quản lý sinh viên thực tập (Trang 36 - 44)

IV. Form sinh viên – frmSinhVien

2. Xử lý các sự kiện trong frmSinhVien:

- Sau khi đã kết nối thành công cơ sở dữ liệu bằng câu lệnh dưới đây thì ta sẽ tiến hành xử lý các sự kiện trong frmSinhVien:

//câu lệnh kết nối csdl

OleDbConnection dbConn = new OleDbConnection("Provider

= Microsoft.JET.OLEDB.4.0; Data Source = " +

Application.StartupPath + "\\QLSVTT.mdb");

 Xử lý sự kiện cho nút btnThemSV:

- Thêm sinh viên chỉ là hình thức làm trắng các ô textbox và combobox

để cho các đối tượng sử dụng hệ thống có thể nhập đấy đủ các thông tin

cần thêm của một sinh viên vào đó. Sau lhi đã nhập đỉ các thông tin cần

thiết về sinh viên thì bạn click vào button Lưu

- Để làm trắng lại các ô textbox và combobox thì bạn phải thêm đoạn mã sau vào btnThemSV:

//Nhập trắng lại các ô textbox và combobox

private void btnThemSV_Click(object sender, EventArgs e) { txtMaSV.Text = ""; txtTenSV.Text = ""; txtNoiSinh.Text = ""; txtSDT.Text = ""; txtEmail.Text = ""; txtDiaChi.Text = ""; btnLuuSV.Text = "Lưu"; }

 Xử lý sự kiện cho nút btnSuaSV:

- Nếu cán bộ quản lý sinh viên thực tập muốn chỉnh sửa lại các thông tin

về sinh viên trong khoa công nghệ thông tin thì sẽ vào form nsinh viên, chon 1 một sinh viên cần sửa từ datagridview rồi nhấn nút sửa, nút lưu

sẽ chuyển thành nứt cập nhật. Các thông tin về sinh viên đó sẽ được

hiển thị lên các textbox hay combobox ở trên. Cán bộ quản sinh sẽ sửa

lại thông tin tại các ô textbox và combobox rùi nhấn nút cập nhật. Thông tin đã sửa về sinh viên sẽ được hiển thị ngay trên lưới có thể

thấy được ngay. Lưu ý: khi chọn sửa bất kỳ 1 row nào trong datagridview thì bạn phải click vào xem tất cả rùi mới sửa nếu không

thực hiện các bước như vậy hệ thống sẽ báo lỗi.

- Để thực hiện được các mô tả như ở trên thì bạn phải thêm đoạn mã sau

cho phương thức btnSuaSV:

//sửa thông tin về sinh viên

private void btnSuaSV_Click(object sender, EventArgs e) {

if (dgvListSinhVien.SelectedRows.Count > 0) {

dbConn.Open();

DataSet dbset = new DataSet();

string strString = "SELECT

Lop.TenLop,SinhVien.MaLop, SinhVien.MaSV, SinhVien.TenSV, SinhVien.NgaySinh, SinhVien.NoiSinh, SinhVien.DienThoai, SinhVien.GioiTinh, SinhVien.Email, SinhVien.DiaChi FROM Lop INNER JOIN SinhVien ON Lop.MaLop = SinhVien.MaLop Where MaSV = '" + dgvListSinhVien.SelectedRows[0].Cells[0].Value + "'";

OleDbDataAdapter dbAdpt = new

OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbset); dbConn.Close();

cboMaLop.Text =

dbset.Tables[0].Rows[0]["MaLop"].ToString();

txtMaSV.Text =

dbset.Tables[0].Rows[0]["MaSV"].ToString();

txtTenSV.Text =

dbset.Tables[0].Rows[0]["TenSV"].ToString();

dtPickerNgaySinh.Text =

dbset.Tables[0].Rows[0]["NgaySinh"].ToString();

txtNoiSinh.Text =

dbset.Tables[0].Rows[0]["NoiSinh"].ToString();

txtSDT.Text =

dbset.Tables[0].Rows[0]["DienThoai"].ToString(); if

(dbset.Tables[0].Rows[0]["GioiTinh"].ToString().Equals("True")) { rbtNam.Checked = true; } else { rbtNu.Checked = true; } txtEmail.Text =

dbset.Tables[0].Rows[0]["EMail"].ToString();

txtDiaChi.Text =

dbset.Tables[0].Rows[0]["DiaChi"].ToString();

}

btnLuuSV.Text = "Cập Nhật"; cboMaLop.Visible = true;

}

 Xử lý sự kiện cho nút btnLuuSV:

- Khi người quanr lý hệ thống đăng nhập thành công và muốn vào sửa

hay thêm các thông tin về sinh viên thì các thông tin đó cần phải lưu lại trong cơ sở dữ liệu sau khi thêm hoặc sửa. Nếu bạn thêm thông tin sinh viên thì nút lưu vẫn là lưu, còn nếu bạn sửa thông tin sinh viên thì nút

lưu sẽ chuyển thành cập nhật.

- Như vậy button btnLuuSV là rất quan trọng trong việc cập nhật những thay đổi thông tin về sinh viên thực tập.

- Sau đây là đoạn mã cần phải thêm vào phương thức btnLuuSV:

//cập nhật thông tin sinh viên

private void btnLuuSV_Click(object sender, EventArgs e) {

dbConn.Open();

if (btnLuuSV.Text == "Cập Nhật") {

string strString = "Update SinhVien Set MaSV = '"

+ txtMaSV.Text + "', TenSV = '" + txtTenSV.Text + "', NgaySinh = '" + dtPickerNgaySinh.Text + "', NoiSinh = '" + txtNoiSinh.Text + "', DiaChi = '" + txtDiaChi.Text + "', DienThoai = '" + txtSDT.Text + "', GioiTinh = " + rbtNam.Checked + ", Email = '" + txtEmail.Text + "', MaNhom = '" + cboMaNhom.Text + "', MaLop = '" + cboMaLop.Text + "' Where MaSV = '" + txtMaSV.Text + "'";

OleDbCommand dbCmd = new OleDbCommand(strString, dbConn); dbCmd.ExecuteNonQuery(); newRefresh(); } else {

DataSet dbSet = new DataSet();

string mstr = "Select * From SinhVien";

OleDbDataAdapter dbAdpt = new

OleDbDataAdapter(mstr, dbConn); dbAdpt.Fill(dbSet);

if (txtMaSV.Text !=

dbSet.Tables[0].Rows[0]["MaSV"].ToString()) {

if ((txtMaSV.Text != "") && (txtTenSV.Text !=

""))

{

//dbConn.Open();

string strInsert = "Insert into Sinhvien values('"; strInsert += txtMaSV.Text + "','"; strInsert += txtTenSV.Text + "','"; strInsert += dtPickerNgaySinh.Value + "','"; strInsert += txtNoiSinh.Text + "','"; strInsert += txtDiaChi.Text + "','"; strInsert += txtSDT.Text + "',"; strInsert += rbtNam.Checked + ",'"; strInsert += txtEmail.Text + "','"; strInsert += cboMaLop.Text + "','"; strInsert += cboMaNhom.Text + "')";

OleDbCommand dbInsert = new

OleDbCommand(strInsert, dbConn);

dbInsert.ExecuteNonQuery(); dbConn.Close(); newRefresh(); } else {

MessageBox.Show("Chưa nhập mã sinh viên và tên sinh viên. Hãy kiểm tra lại", "Thông báo",

MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }

} else

{

MessageBox.Show("Đã Trùng mã sinh viên. Mời bạn nhập lại", "Thông báo", MessageBoxButtons.OK,

MessageBoxIcon.Exclamation); txtMaSV.Focus(); txtMaSV.SelectAll(); } } }

 Xử lý sự kiện cho nút btnXoaSV:

- Khi muốn xóa thông tin về một sinh viên nào đó thì bạn chỉ cần chọn 1

row ở datagridview rùi click vào button xóa. Một hộp thoại thông báo

hỏi “Bạn có muốn xóa hay không?” hiện ra. Nếu đồng ý xóa thì chọn

Yes thông tin về sinh viên đó sẽ được loại bỏ khỏi danh sách sinh viên

đã hiển thị trên datafridview, nếu không thì chọn No thông tin vẫn còn

- Để làm được điều đó, bạn chỉ cần thêm đoạn mã sau vào nút btnXoaSV là hệ thống sẽ làm việc được như trên:

//xóa thông tin sinh viên

private void btnXoaSV_Click(object sender, EventArgs e) {

if (MessageBox.Show("Bạn có muốn xóa hay không?",

"Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==

DialogResult.Yes) {

dbConn.Open();

string str = "Delete from SinhVien Where MaSV = '"

+ dgvListSinhVien.SelectedRows[0].Cells[0].Value + "'";

OleDbCommand dbDelete = new OleDbCommand(str, dbConn); dbDelete.ExecuteNonQuery(); dbConn.Close(); newRefresh(); } }

 Xử lý sự kiện cho nút btnDongLai:

- Tương tự như các câu lệnh xử lý đống form lại ở trên, bạn cũng chỉ cần

dùng 1 câu lệnh:

private void btnDongLai_Click(object sender, EventArgs e) {

this.Close(); }

- Cũng có thể bạn dùng 1 câu lệnh khác để đống form ứng dụng đang

chạy lại:

Application.Exit();

 Lấy dữ liệu vào các combobox::

- Vì để thay đổi các thông tin về sinh viên trong bảng sinh viên thì bạn

cần phải để ý đến ràng buộc N – 1 giữa chúng với bảng lớp và nhóm thực tập. Đặc biệt khi thêm mới sinh viên, thì điều đó là khá quan trọng, nếu không câu lệnh truy vấn của bạn sẽ bị lỗi trong khi insert các trường đó vào datagridview.

- Chính vì lý do đó mà bạn cần tiến hành viết mã ở một phương thức

frmSinhVien_Load như sau:

//thực hiện hiển thị dữ liệu vào lưới và dưa thông tin tên lớp và mã lớp và cboL và cboMaLop

private void frmSinhVien_Load(object sender, EventArgs e) {

newRefresh();//Câu lệnh gọi phương thức newRefresh

dbConn.Open();

string strString = "Select MaLop, TenLop From Lop"; DataSet dbSet = new DataSet();

OleDbDataAdapter dbAdptm = new

OleDbDataAdapter(strString, dbConn); dbAdptm.Fill(dbSet);

cboL.DataSource = dbSet.Tables[0]; cboL.DisplayMember = "TenLop";

cboMaLop.DataSource = dbSet.Tables[0]; cboMaLop.DisplayMember = "MaLop"; // Đưa thông tin vào cboMaNhom

DataSet dbSetm = new DataSet();

string str = "Select MaNhom From NhomTT";

OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSetm); dbConn.Close(); cboMaNhom.DataSource = dbSetm.Tables[0]; cboMaNhom.DisplayMember = "MaNhom"; }

- Dữ liệu sẽ được lấy vào trong cac cboL và cboMaLop, cboMaNhom. Khi chạy chương trình, các dữ liệu này sẽ cố định và sổ xuống để người dùng tự

chọn tùy theo yêu cầu mỗi người.  Lấy dữ liệu cho dgvListSinhVien:

- Để xem thông tin chung về sinh viên và để hiển thị những thay đổi thông tin

vê sinh viên thì bạn cần khai báo một phương thức mới là Private void

newRefresh(). Đồng thời dùng lưới để bớt đi 1 khâu tim kiếm trước khi thao

tác câc chức năng sửa và cập nhật thông tin. Ở đây, sửa thông tin sinh viên không cần thông qua việc tìm kiếm.

/private hiển thị csdl vào datagridview

private void newRefresh() {

//dbConn.Open();

OleDbDataAdapter dbAdpt = new OleDbDataAdapter("SELECT * FROM SinhVien", dbConn);

DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet);

dbConn.Close();

dgvListSinhVien.DataSource = dbSet.Tables[0]; }

 Xử lý sự kiện cho llbXemTatCa:

- Sau khi thay đối thông tin sinh viên hay tìm kiếm sinh viên nào đó thì bạn

có thể click vào xem tất cả để xem tất cả các dữ liệu có trong cơ sở dữ liệu

gốc hoặc trong lưới. Chỉ với 1 câu lệnh gọi ra phương thức newRefresh

private void linklbXemTatCa_LinkClicked(object sender,

LinkLabelLinkClickedEventArgs e) {

newRefresh(); }

 Xử lý sự kiện cho llbTimMaSV:

- Bạn có thể tìm kiếm sinh viên theo khó chính của bảng sinh viên là mã sinh viên. Trước hi tìm kiếm bạn hãy chọn lớp của sinh viên đó rùi nhập

thông tin mã sinh viên chính xác , hệ thống sẽ tìm cho bạn thông tin về sinh

viên có mã sinh viên như vậy. Thông tin sẽ được hiển thj trên lưới. Nếu

bạn chọn sai lớp hay nhập sai mã sinh viên thì hệ thống sẽ hiển thị hộp

thoại thông báo “Không tìm thấy thông tin sinh viên nào”. Bạn có thể nhập

lại mã sinh viên hoặc kết thức sử sụng hệ thống

//tìm kiếm thông tin sinh viên theo mã sinh viên

private void llbMaSV_LinkClicked(object sender,

LinkLabelLinkClickedEventArgs e) {

dbConn.Open();

DataSet dbSet = new DataSet();

string strString = "SELECT Lop.TenLop, SinhVien.MaSV,

SinhVien.TenSV, SinhVien.NgaySinh, SinhVien.NoiSinh,

SinhVien.DiaChi, SinhVien.DienThoai, SinhVien.GioiTinh, SinhVien.Email FROM Lop INNER JOIN SinhVien ON Lop.MaLop = SinhVien.MaLop WHERE (((Lop.TenLop)='" + cboL.Text + "') AND ((SinhVien.MaSV)='" + txtTimMaSV.Text + "'))";

OleDbDataAdapter dbAdpt = new

OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); if (dbSet.Tables[0].Rows.Count > 0) { dgvListSinhVien.DataSource = dbSet.Tables[0]; } else {

MessageBox.Show("Không tìm thấy thông tin sinh viên nào", "Tìm Kiếm", MessageBoxButtons.OK,

MessageBoxIcon.Exclamation); }

}

 Xử lý sự kiện cho cboL:

- Để giới hạn phạm vi tìm kiếm thì bạn nên khi bạn nên khai báo một phương

thức mới private void cboL_SelectedIndexChanged(object sender, EventArgs

e). Việc tìm kiếm sẽ đơn giản hơn khi được giới hạn về pham vi tìm kiếm:

private void cboL_SelectedIndexChanged(object sender, EventArgs e) {

//dbConn.Open();

string str = "SELECT Lop.TenLop, SinhVien.MaSV,

SinhVien.TenSV, SinhVien.NgaySinh, SinhVien.NoiSinh,

SinhVien.DiaChi, SinhVien.DienThoai, SinhVien.GioiTinh, SinhVien.Email, SinhVien.MaLop, SinhVien.MaNhom FROM Lop INNER JOIN SinhVien ON Lop.MaLop = SinhVien.MaLop WHERE Lop.TenLop ='" + cboL.Text + "'";

OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);

DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet);

dbConn.Close();

dgvListSinhVien.DataSource = dbSet.Tables[0]; }

 Xử lý sự kiện cho llbimTenSV:

- Trên là mã cho llbTimMaSV, còn bạn cũng có thể tìm kiếm thông tin của

bất cứ sinh viên nào theo tên của sinh viên đó nếu bạn không còn nhớ mã sinh viên. Nhập tên sinh viên cần tìm vào textbox và click vào linklabel Tìm MaSV, thông tin sinh viên sẽ tự động hiển thị trên lưới để bạn dễ dàng xem.

//tìm kiếm thông tin sinh viên theo tên sinh viên

private void llbTenSV_LinkClicked(object sender,

LinkLabelLinkClickedEventArgs e) {

dbConn.Open();

DataSet dbSet = new DataSet();

string strString = "SELECT Lop.TenLop, SinhVien.MaSV,

SinhVien.TenSV, SinhVien.NgaySinh, SinhVien.NoiSinh,

SinhVien.DiaChi, SinhVien.DienThoai, SinhVien.GioiTinh, SinhVien.Email FROM Lop INNER JOIN SinhVien ON Lop.MaLop = SinhVien.MaLop WHERE (((Lop.TenLop)='" + cboL.Text + "') AND ((SinhVien.TenSV)='" + txtTimTenSV.Text + "'))";

OleDbDataAdapter dbAdpt = new

OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close();

if (dbSet.Tables[0].Rows.Count > 0) {

} else

{

MessageBox.Show("KHông tìm thấy thông tin sinh viên nào", "Tìm Kiếm", MessageBoxButtons.OK,

MessageBoxIcon.Exclamation); }

}

Một phần của tài liệu Luận văn quản lý sinh viên thực tập (Trang 36 - 44)