Đây là form chỉ đưa ra cho đối tượng sử dụng hệ thống thông tin chung
và cơ bản về sinh viên thực tập. Form này không cho thực hiện bất kỳ
một chức năng của hệ thống : thêm, sửa. xóa , lưu và tìm kiếm.
- Để lấy dữ liệu vào dtgridview ta bạn pahir thêm đoạn mã sau vào
phương thức frmHSSV_Load:
75 trang |
Chia sẻ: lylyngoc | Lượt xem: 2571 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Luận văn Quản lý sinh viên thực tập, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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())
{
39
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
đảm bảo toàn vẹn.
40
- Để 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
41
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];
}
42
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);
}
43
}
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)
{
dgvListSinhVien.DataSource = dbSet.Tables[0];
44
}
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);
}
}
V. Form Giảng viên – frmGiangVien
1. Quá trình thiết kế và thiết lập thuộc tính của frmGiangVien
Hình 4.5: Form giảng viên
- Vào Add New Item -> Windows Form để tạo ra một form mới có tên là
femGiangVien. Trong properties nhập tên tiêu đề cho form là: Thông
tin giảng viên
45
- Từ hộp công cụ toolbox, rê các groupbox vào form và thay đổi thuộc
tính Name cho chũng là: groupbox1, groupbox2, groupbox3 và text là
hồ sơ giảng viên, thông tin về giảng viên, tìm kiếm.
- Thêm các label vào groupbox1, thay đổi thuộc tính Name cho chúng
lần lượt là: lbMaBM, lbMaGV, lbTenGV, lbNS, lbGT, lbSDT,
lbEmail, lbDiaChi và text tương ứng là: Mã bộ môn, mã giảng viên,
tên giảng viên, ngày sinh, giói tính, số điện thoại, email.
- Thêm các textbox vào groupbox1, đổi thuộc tính Name lần lượt là :
txtMaBM, txtMaGV, txtTenGV, txtSDT, txtEmail, txtDiaChi đặt
bên cạnh các label tương tứng ở trên.
- Thêm datatimepicker vào groupbox1 đặt bên cạnh label ngày sinh, đổi
thuộc tính Name là dtPickerNgaySinh.
- Thêm radio vào bên cạnh label giới tính, đổi thuộc tính Name cho nó là
rdNam, rdNu và text là Nam và Nữ.
- Từ toolbox, thêm label Mã GV và TenGV vào groupbox3. Đồng thời
thêm txtTimMaGV, txtTimTenGV vào bên cạnh các label đó.
- Thêm linklabel Tìm MaGV và Tìm TenGV vào bên cạnh các textbox
- Thêm label vào form, đổi thuộc tính Name là lbBM và text là Tên bộ
môn. Đồng thời thêm txtTenBM
- Từ toolbox rê thanh điều khiển datagridview vào groupbox2, đổi thuộc
tính name là dgvTTGV.
- Thêm linklbTimTatCa vào form.
- Thêm các button vào form: btnThemGV, btnSuaGV, btnXoaGV,
btnLuuGV, btnThoat.
2. Xử lý các sự kiện trong frmGiangVien:
- Sau khi kết nối csdl bằng câu lệnh thì ta sẽ lần lượt xử lý các sự kiện
cho từng button và combobox, datagridview:
//kết nối csdl
46
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb");
Xử lý sự kiện cho nút btnThemGV:
- Khi muốn thêm giảng viên mới và các thông tin liên quan đến giảng
viên đó thì bạn chỉ cần nhấn nút thêm, các ô textbox và combobox,
datatimepicker ..sẽ tự động nhập trắng lại. Bạn nhập thông tin về giảng
viên đó vào đó rùi nhấn lưu. Thông tin về giảng viên vừa thêm sẽ có
mặt trong datagridview.
- Để làm được điều đó, bạn phải thêm đoạn mã sau vào phương thức
btnThemGV:
//Nhập trắng lại các ô textbox và combobox để thêm dữ liệu vào
csdl
private void btnThemGV_Click(object sender, EventArgs e)
{
txtMaGV.Text = "";
txtTenGV.Text = "";
dtPickerNgaySinh.Text = "";
txtSDT.Text = "";
txtEmail.Text = "";
txtDiaChi.Text = "";
txtMaBM.Text = "";
btnLuuGV.Text = "Lưu";
}
Xử lý sự kiện cho nút btnLuuGV:
- Đây là button hỗ trợ cho việc thêm và sửa thông tin giảng viên. Sau khi
thay đổi thông tin thì thông tin về giảng viên đó phải được lưu lại trong
datagridview. Khi nhấn nút thêm thì btnLuuGV vẫn là Lưu, còn khi
nhấn nút sửa thì btnLuuGV sẽ chuyển đổi lại thành Cập nhật
-
//cập nhật thông tin về giảng viên
private void btnLuuGV_Click(object sender, EventArgs e)
{
dbConn.Open();
if (btnLuuGV.Text == "Cập Nhật")
{
//dbConn.Open();
string strUpdate = "Update GiangVienHDTT Set MaGV
= '" + txtMaGV.Text + "', TenGV = '" + txtTenGV.Text + "',
47
GioiTinhGV= " + rdNam.Checked + ", NgaySinhGV = '" +
dtPickerNgaySinh.Text + "',SDT = '" + txtSDT.Text + "',EMailGV =
'" + txtEmail.Text + "',DiaChiGV = '" + txtDiaChi.Text + "' Where
MaGV = '" + txtMaGV.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(strUpdate,
dbConn);
dbCmd.ExecuteNonQuery();
btnLuuGV.Text = "Lưu";
HienThi();
txtMaGV.ReadOnly = false;
}
else
{
DataSet dbSet = new DataSet();
string mstr = "Select * From GiangVienHDTT";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(mstr, dbConn);
dbAdpt.Fill(dbSet);
if (txtMaGV.Text !=
dbSet.Tables[0].Rows[0]["MaGV"].ToString())
{
if ((txtMaGV.Text != "") && (txtTenGV.Text != ""))
{
//dbConn.Open();
string strInsert = "Insert Into
GiangVienHDTT Values('" + txtMaGV.Text + "','"
+ txtTenGV.Text + "'," + rdNam.Checked
+ ",'"
+ dtPickerNgaySinh.Text + "'," +
txtSDT.Text + ",'"
+ txtEmail.Text + "','" +
txtDiaChi.Text + "','" + txtMaBM.Text + "')";
OleDbCommand mdbComd = new
OleDbCommand(strInsert, dbConn);
mdbComd.ExecuteNonQuery();
dbConn.Close();
HienThi();
txtMaGV.ReadOnly = false;
txtTenGV.ReadOnly = false;
txtMaBM.ReadOnly = false;
}
else
{
MessageBox.Show("Chưa nhập mã giảng viên
và tên giảng viên. Hãy kiểm tra lại", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
else
{
48
MessageBox.Show("Đã trùng mã giảng viên.
Mời bạn nhập lại", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
txtMaGV.Focus();
txtMaGV.SelectAll();
}
}
}
Xử lý sự kiện cho nút btnSuaGV:
- Khi các thông tin về giảng viên đã được thay đổi, thông tin trong hệ
thống đã không còn phù hớp với thực tế. Hệ thống phải cập nhật lại
thông tin cho chính xác và người quản lý hệ thống sẽ làm công việc
này.
- Để sửa thông tin về bất kỳ giảng viên nào đó, bạn chọn 1 row trong
datagridview có chứa đầy đủ các thông tin về giảng viên cần sửa rồi
nhấn nút sửa, nút lưu chuyển thành cập nhật. Thông tin đó sẽ được hiển
thị lên các ô textbox, combobox, datatimepicker, radio…tương ứng.
Bán sẽ chỉnh sửa thông tin trong đó rồi nhấn nút cập nhật. Thông tín sẽ
được chỉnh sửa lại và lưu lại trong lưới.
- Dưới đây là đoạn mã của phương thức btnSuaGV:
//Sửa thông tin về giảng viên
private void btnSuaGV_Click(object sender, EventArgs e)
{
if (dgvTTGV.SelectedRows.Count > 0)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "SELECT BoMon.TenBM,
GiangVienHDTT.MaGV, GiangVienHDTT.TenGV, GiangVienHDTT.GioiTinhGV,
GiangVienHDTT.NgaySinhGV, GiangVienHDTT.SDT,
GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV, GiangVienHDTT.MaBM
FROM BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM =
GiangVienHDTT.MaBM Where MaGV = '" +
dgvTTGV.SelectedRows[0].Cells[0].Value + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(str, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
txtMaBM.Text =
dbSet.Tables[0].Rows[0]["MaBM"].ToString();
txtMaGV.Text =
dbSet.Tables[0].Rows[0]["MaGV"].ToString();
49
txtTenGV.Text =
dbSet.Tables[0].Rows[0]["TenGV"].ToString();
dtPickerNgaySinh.Text =
dbSet.Tables[0].Rows[0]["NgaySinhGV"].ToString();
if
(dbSet.Tables[0].Rows[0]["GioitinhGV"].ToString().Equals("True"))
{
rdNam.Checked = true;
}
else
{
rdNu.Checked = true;
}
txtSDT.Text =
dbSet.Tables[0].Rows[0]["SDT"].ToString();
txtDiaChi.Text =
dbSet.Tables[0].Rows[0]["DiaChiGV"].ToString();
txtEmail.Text =
dbSet.Tables[0].Rows[0]["EmailGV"].ToString();
}
btnLuuGV.Text = "Cập Nhật";
txtMaBM.Visible = true;
}
Xử lý sự kiện cho nút btnXoaGV:
- Tương tự như sinh viên, để xóa thông tin của một giảng viên nào đó,
bạn chỉ cần chọn 1 row trong dtgridview có chứa thông tin của giảng
viên đó và nhấn nút xóa. Một hộp thoại thông báo sẽ hiện ra hỏi “Bạn
có muốn xóa hay không?”. Nếu đồng ý xóa thì chọn Yes, row đó sẽ
biến mất khỏi dtgridview. Còn không muốn tiếp tục xóa thì chọn No,
dữ liệu vẫn được toàn vẹn như cũ.
- Đoạn mã của btnXoaGV:
//xóa thông tin về giảng viên
private void btnXoaGV_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 GiangVienHDTT Where MaGV
= '" + dgvTTGV.SelectedRows[0].Cells[0].Value + "'";
OleDbCommand dbDelete = new OleDbCommand(str,
dbConn);
dbDelete.ExecuteNonQuery();
50
dbConn.Close();
HienThi();
}
}
Xử lý sự kiện cho nút btnThoat:
- Xử lý nút thoát khỏi form chỉ với 1 câu lệnh:
//đóng form lại
private void btnThoat_Click(object sender, EventArgs e)
{
this.Close();
}
Xem thông tin giảng viên theo từng bộ môn:
- Để xem thông tin giảng viên theo từng bộ môn bạn chỉ cần chọn bộ
môn trong cbTenBoMon mà nó sổ xuống.
- Thêm phương thức mới private void
cbTenBM_SelectedIndexChanged(object sender,
EventArgs e):
//hiển thị thông tin giảng viên từ cbTenBM
private void cbTenBM_SelectedIndexChanged(object sender,
EventArgs e)
{
dbConn.Open();
string str = "SELECT GiangVienHDTT.MaGV,
GiangVienHDTT.TenGV, GiangVienHDTT.GioiTinhGV,
GiangVienHDTT.GioiTinhGV, GiangVienHDTT.NgaySinhGV,
GiangVienHDTT.SDT, GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV,
BoMon.MaBM FROM BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM =
GiangVienHDTT.MaBM WHERE BoMon.TenBM ='" + cbTenBM.Text + "'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dgvTTGV.DataSource = dbSet.Tables[0];
}
Đưa dữ liệu cho dgvTTGV và cboTenBM:
- Đưa dữ liệu vào dgvTTGV để hiển thị tất cả các thông tin về giảng
viên. Đồng thời giúp cho việc sửa lại thông tin bằng cách chọn row ở
lưới rồi đưa lên textbox, combobox và datatimepicker..
- Đoạn mã :
51
//private hiển thị thông tin lên lưới
private void HienThi()
{
//dbConn.Open();
string str = "Select * From GiangVienHDTT";
OleDbDataAdapter dbAdapt = new OleDbDataAdapter(str,
dbConn);
DataSet dbSet = new DataSet();
dbAdapt.Fill(dbSet);
dbConn.Close();
dgvTTGV.DataSource = dbSet.Tables[0];
}
//câu lệnh hiển thị thông tin về giảng viên và lấy dữ liệu
vào cbTenBM
private void frmGiangVien_Load(object sender, EventArgs e)
{
HienThi();
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "Select MaBM, TenBM From BoMon";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
cbTenBM.DataSource = dbSet.Tables[0];
cbTenBM.DisplayMember = "TenBM";
}
52
VI. Form bảng điểm – frmBangDiem
1. Quá trình thiết kế và thiết lập các thuộc tính của frmBangDiem
Hình 4.6: Form bảng điểm thực tập
- Vào Add New Item -> Windows Form để tạo ra form mới có tên là
frmBangDiem . Trong properties nhập tiêu đề cho form là: Thông tin
điểm thực tập
- Cũng giống như các form trên, ta dùng các groupbox, label và các
textbox, combobox, các button để thiết kế giao diện của form. Vào
properties để thay đổi thuộc tính của chũng cho thích hợp.
2. Xử lý các sự kiện trong frmBangDiem
- Câu lệnh kết nối csdl:
// Câu lệnh kết nối cơ sở dữ liệu OLEDB
53
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb");
Xử lý sự kiện cho nút btnThem
//Nhập trắng lại các ô textbox và combobox có trong form
private void btnThem_Click(object sender, EventArgs e)
{
cbLHTT.Text = "";
txtLanTT.Text = "";
txtMaSV.Text = "";
txtDiemTT.Text = "";
txtTGTT.Text = "";
txtGhiChu.Text = "";
btnLuuDiem.Text = "Lưu";
}
Xử lý sự kiện cho nút btnSuaDiem
//Chỉnh sửa thông tin về điểm thực tập của sinh viên
private void btnSuaDiem_Click(object sender, EventArgs e)
{
//Sửa khi dữ liệu trong các row của datagrigview không
có position là 0
if (dgvBangDiem.SelectedRows.Count > 0)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "Select * From BangDiemTT where MaSV
= '" + dgvBangDiem.SelectedRows[0].Cells[0].Value + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(str, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
cbLHTT.Text =
dbSet.Tables[0].Rows[0]["TenLHTT"].ToString();
txtLanTT.Text =
dbSet.Tables[0].Rows[0]["LanThucTap"].ToString();
txtMaSV.Text =
dbSet.Tables[0].Rows[0]["MaSV"].ToString();
txtDiemTT.Text =
dbSet.Tables[0].Rows[0]["Diem"].ToString();
txtTGTT.Text =
dbSet.Tables[0].Rows[0]["ThoiGianTT"].ToString();
txtGhiChu.Text =
dbSet.Tables[0].Rows[0]["GhiChu"].ToString();
btnLuuDiem.Text = "Cập Nhật";
}
}
54
Xử lý sự kiện cho nút btnXoaDiem
//Xóa các thông tin về điểm của sinh viên thực tập
private void btnXoaDiem_Click(object sender, EventArgs e)
{
//Đưa ra thông báo "hỏi bạn có muốn xóa hay không?"
trước khi thao tác xóa. Nếu chọn yes thì dữ liệu bạn xóa sẽ mất
trong datagridviw
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 BangDiemTT Where MaSV =
'" + dgvBangDiem.SelectedRows[0].Cells[0].Value + "'";
OleDbCommand dbDelete = new OleDbCommand(str,
dbConn);
dbDelete.ExecuteNonQuery();
dbConn.Close();
HienThi();
}
}
Xử lý sự kiện cho nut btnLuuDiem
private void btnLuuDiem_Click(object sender, EventArgs e)
{
//Thực hiện câu lệnh điều kiện để khi nhấn button sửa
thì button lưu sẽ chuyển thành cập nhật
if (btnLuuDiem.Text == "Cập Nhật")
{
dbConn.Open();
//Cập nhật cơ sở dữ liệu khi thay đổi csdl trong
datagridview
string str = "Update BangDiemTT set TenLHTT = '" +
cbLHTT.Text
+ "',MaSV = '" + txtMaSV.Text + "', LanThucTap
= '"
+ txtLanTT.Text + "', Diem = " +
txtDiemTT.Text
+ ", ThoiGianTT = '" + txtTGTT.Text + "',
GhiChu = '"
+ txtGhiChu.Text + "' Where MaSV = '" +
txtMaSV.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(str,
dbConn);
dbCmd.ExecuteNonQuery();
dbConn.Close();
HienThi();
txtMaSV.ReadOnly = false;
}
else
55
{
DataSet dbSet = new DataSet();
string mstr = "Select * From BangDiemTT";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(mstr, dbConn);
dbAdpt.Fill(dbSet);
if (txtMaSV.Text !=
dbSet.Tables[0].Rows[0]["MaSV"].ToString())
{
if (txtMaSV.Text != "")
{
dbConn.Open();
//Câu lệnh truy vấn đẻ insert các thông
tin
string strInsert = "Insert Into BangDiemTT
Values('" + txtMaSV.Text + "','" + txtDiemTT.Text + "','" +
cbLHTT.Text + "','" + txtLanTT.Text + "','" + txtTGTT.Text + "','"
+ txtGhiChu.Text + "')";
OleDbCommand dbInsert = new
OleDbCommand(strInsert, dbConn);
dbInsert.ExecuteNonQuery();
dbConn.Close();
HienThi();
//txtMaSV.ReadOnly = false;
}
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();
}
}
}
Xem thông tin bảng điểm thwo loại hình thực tập:
private void cbLHTT_SelectedIndexChanged(object sender, EventArgs
e)
{
dbConn.Open();
DataSet dbSet = new DataSet();
56
string str = "SELECT SinhVien.MaSV, BangDiemTT.Diem,
BangDiemTT.TenLHTT, BangDiemTT.LanThucTap, BangDiemTT.ThoiGianTT,
BangDiemTT.GhiChu FROM SinhVien INNER JOIN BangDiemTT ON
SinhVien.MaSV = BangDiemTT.MaSV WHERE BangDiemTT.TenLHTT ='"+
cbLHTT.Text +"'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
dgvBangDiem.DataSource = dbSet.Tables[0];
}
Xử lý cho sự kiện lbbTimMaSV:
//Tìm kiếm thông tin về điểm thực tập của sinh viên theo mã sinh
viên
private void llbTimMaSV_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string strString = "SELECT SinhVien.MaSV,
BangDiemTT.Diem, BangDiemTT.TenLHTT, BangDiemTT.LanThucTap,
BangDiemTT.ThoiGianTT, BangDiemTT.GhiChu FROM SinhVien INNER JOIN
BangDiemTT ON SinhVien.MaSV = BangDiemTT.MaSV Where
BangDiemTT.MaSV ='" + txtTimMaSV.Text + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(strString, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
if (dbSet.Tables[0].Rows.Count > 0)
{
dgvBangDiem.DataSource = dbSet.Tables[0];
}
else
{
MessageBox.Show("Không tìm thấy thông tin điểm của
sinh viên này", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}
Xử lý cho sự kiện btnTimTenSV:
//Tmf kiếm thông tin về điểm thực tập của sinh viên theo tên sinh
viên
private void llbTimTenSV_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string strString = "SELECT SinhVien.TenSV,
BangDiemTT.MaSV, BangDiemTT.Diem, BangDiemTT.TenLHTT,
BangDiemTT.LanThucTap, BangDiemTT.ThoiGianTT, BangDiemTT.GhiChu
57
FROM SinhVien INNER JOIN BangDiemTT ON SinhVien.MaSV =
BangDiemTT.MaSV Where SinhVien.TenSv='" + txtTimTenSV.Text + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(strString, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
if (dbSet.Tables[0].Rows.Count > 0)
{
dgvBangDiem.DataSource = dbSet.Tables[0];
}
else
{
MessageBox.Show("Không tìm thấy thông tin điểm của
sinh viên này", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}
Xử lý cho sự kiện btnThoat:
//Thoát khỏi form bảng điểm thực tập của sinh viên
private void btnThoat_Click(object sender, EventArgs e)
{
this.Close();
}
Lấy dữ liệu cho dgvBangDiem và cbLHTT:
//Tạo một private hiển thị các thông tin về bảng điểm của sinh
viên lên datagridview
private void HienThi()
{
dbConn.Open();
string str = "SELECT BangDiemTT.MaSV, BangDiemTT.Diem,
BangDiemTT.TenLHTT, BangDiemTT.LanThucTap, BangDiemTT.ThoiGianTT,
BangDiemTT.GhiChu, IIF(Diem > 5,'Dat','Khong Dat') As KetQua FROM
BangDiemTT";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dgvBangDiem.DataSource = dbSet.Tables[0];
}
private void frmBangDiem_Load(object sender, EventArgs e)
{
//hiển thị thông tin về điểm thực tập của sinh viên
lên datagridview
HienThi();
//Thực hiện câu truy vấn và các câu lệnh để lấy thông
tin về tên loại hình thực tập từ bảng điểm thực tập đưa vào cbLHTT
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "Select TenLHTT From BangDiemTT";
58
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
cbLHTT.DataSource = dbSet.Tables[0];
cbLHTT.DisplayMember = "TenLHTT";
}
VII. Forn nhóm thực tập – frmNhomTT
1. Quá trình thiết kế và thiết lập các thuộc tính của frmNhomTT
Hình 4.7: Form nhóm thực tập
- Vào Add New Item-> Windows Form để tạo ra một form mới có tên là
frmNhomTT. Trong properties nhạp vào text tên tiêu đề form là: Thông
tin về nhóm thực tập.
59
- Chọn các textbox và các button, linklabel, label để thiết kế giao diện
cho form nhóm thực tập
2. Xử lý các sự kiện trong frmNhomTT
Xử lý sự kiện cho nút btnSuaNhom:
//Thực hiện sửa thông tin
private void btnSuaNhom_Click(object sender, EventArgs e)
{
if (dgvNhomTT.SelectedRows.Count > 0)
{
dbConn.Open();
DataSet dbSet = new DataSet();
DataGridViewRow dr = dgvNhomTT.SelectedRows[0];
string str = "Select * From NhomTT Where MaNhom =
'" + dr.Cells[0].Value + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(str, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
DataTable dt = new DataTable();
dt = dbSet.Tables[0];
txtMaNhom.Text = dt.Rows[0]["MaNhom"].ToString();
txtDeTaiTT.Text =
dt.Rows[0]["DeTaiTT"].ToString();
txtLichTT.Text = dt.Rows[0]["LichTT"].ToString();
txtMaGV.Text = dt.Rows[0]["MaGV"].ToString();
btnLuuNhom.Text = "Cập Nhật";
txtMaGV.ReadOnly = true;
txtMaNhom.ReadOnly = true;
}
else
{
MessageBox.Show("Chua Chon nhom sua", "Thong bao",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
Xử lý sự kiện cho nút btnLuuNhom:
//Thực hiện cập nhật thông tin về nhóm thực tập
private void btnLuuNhom_Click(object sender, EventArgs e)
{
if ( btnLuuNhom.Text != "Cập Nhật" )
{
dbConn.Open();
DataSet dbSet = new DataSet();
{
if ((txtMaNhom.Text != "") && (txtLichTT.Text
!= "") && (txtMaGV.Text != "") && (txtDeTaiTT.Text != ""))
{
60
String strString = "Select * From NhomTT
Where MaNhom = '" + txtMaNhom.Text + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(strString, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
if (dbSet.Tables[0].Rows.Count > 0)
{
MessageBox.Show("Đã TRùng dữ liệu",
"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtMaNhom.Focus();
txtMaNhom.SelectAll();
}
else
{
string str = "Insert Into NhomTT
Values('" + txtMaNhom.Text + "','" + txtDeTaiTT.Text + "','" +
txtLichTT.Text + "','" + txtMaGV.Text + "')";
OleDbCommand dbCmd = new
OleDbCommand(str, dbConn);
dbCmd.ExecuteNonQuery();
dbConn.Close();
HienThi();
}
}
else
{
MessageBox.Show("Kiểm tra xem có trường
nào rỗng hay không!");
}
}
}
else
{
txtMaNhom.ReadOnly = false;
dbConn.Open();
string strStr = "Update NhomTT Set DeTaiTT = '" +
txtDeTaiTT.Text + "', LichTT = '" + txtLichTT.Text + "', MaGV = '"
+ txtMaGV.Text + "' Where MaNhom = '" + txtMaNhom.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(strStr,
dbConn);
dbCmd.ExecuteNonQuery();
dbConn.Close();
HienThi();
}
}
Xử lý sự kiện cho nút btnXoaNhom:
//Xóa thông tin về nhóm
private void btnXoaNhom_Click(object sender, EventArgs e)
{
int m;
m = dgvNhomTT.SelectedRows[0].Index;
61
if (dgvNhomTT.SelectedRows.Count > 0)
{
if (MessageBox.Show("Bạn Có muốn xóa không",
"Thông Báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question) ==
DialogResult.Yes)
{
OleDbConnection dbConn = new
OleDbConnection("Provider = Microsoft.JET.OLEDB.4.0; Data Source =
" + Application.StartupPath + "\\QLSVTT.mdb");
dbConn.Open();
String strString = "Delete From NhomTT Where
MaNhom = '" + dgvNhomTT.SelectedRows[0].Cells[0].Value + "'";
OleDbCommand dbCmd = new
OleDbCommand(strString, dbConn);
dbCmd.ExecuteNonQuery();
dbConn.Close();
HienThi();
}
}
Xử lý sự kiện cho nút btnThoatNhom:
//Đóng form nhóm thực tập lại
private void btnThoatNhom_Click(object sender, EventArgs
e)
{
this.Close();
}
Xử lý sự kiện cho llbTimMaNhom:
//tìm thông tin về nhóm thực tập theo mã nhóm
private void lbbTimMaNhom_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string strString = "SELECT GiangVienHDTT.MaGV,
NhomTT.MaNhom, NhomTT.DeTaiTT, NhomTT.LichTT FROM GiangVienHDTT
INNER JOIN NhomTT ON GiangVienHDTT.MaGV = NhomTT.MaGV WHERE MaNhom
= '" + txtTimMaNhom.Text + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(strString, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
if (dbSet.Tables[0].Rows.Count > 0)
{
dgvNhomTT.DataSource = dbSet.Tables[0];
}
else
{
62
MessageBox.Show("KHông tìm thấy thông tin nhóm
này", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
}
VIII. Form lớp – frmLop
1. Quá trình thiết kế và thiết lập các thuộc tính trong frmLop
Hình 4.8: Form lớp
- Vào Add New Item -> Windows Form để tạo ra một form mới có tên là
frmLop. Trong Properties nhập vào text tiêu đề của form là:thông tin về
lớp
- Thêm groupbox vào form, đổi thuộc tính name là grLop, grTuyChon,
và text là Thông tin về lớp, Tùy chọn
- Từ hộp công cụ rê các thnh điều khiển label vào trong grLop, đổi thuộc
tính name của chúng lân lượt là: lbMaKhoa, lbMaLop, lbSiSo,
lbTenLop và text tương ứng là: Mã khóa, Mã lớp, sĩ số, tên lớp.
63
- Thêm các button vào grTuyChon, đổi thuộc tính name của chũng là
btnSuaLop, btnCapNhat, btnThaotLop và text tương ứng là: Sửa, Cập
nhật, Thoát.
- Thêm label vào form, thuộc tính name là lbTenKhoa và text là Chọn
khóa học. Đồng thời thêm combobox vào ben cạnh label đó, đởi tên
thuộc tính name là cbTenKhoa.
- Thêm linklabel vào form, đổi thuộc tính name là LinkLbXemTatCar,
và text là Xem tất cả.
- Từ hộp công cụ đưa datagridview vào form, đổi thuộc tính name thành
dtgridTTLop.
2. Xử lý các sự kiện trong frmLop
- Câu lệnh kết nối csdl:
//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 btnSuaLop
- Cũng giống như các form trên, nút sửa ở form lớp cũng hoạt động
tương tự như vậy.
- Đoạn mã của btnSuaLop:
//Sửa thông tin về lớp
private void btnSuaLop_Click(object sender, EventArgs e)
{
if (dtgridTTLop.SelectedRows.Count > 0)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "SELECT KhoaHoc.TenKhoa, Lop.MaKhoa,
Lop.MaLop, Lop.TenLop, Lop.SiSo FROM KhoaHoc INNER JOIN Lop ON
KhoaHoc.MaKhoa = Lop.MaKhoa Where Lop.MaLop = '" +
dtgridTTLop.SelectedRows[0].Cells[0].Value + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(str, dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
64
txtMaLop.Text =
dbSet.Tables[0].Rows[0]["MaLop"].ToString();
txtTenLop.Text =
dbSet.Tables[0].Rows[0]["TenLop"].ToString();
txtSiSo.Text =
dbSet.Tables[0].Rows[0]["SiSo"].ToString();
txtMaKhoa.Text =
dbSet.Tables[0].Rows[0]["MaKhoa"].ToString();
}
//không cho phép sửa mã lớp, ten lớp, mã khoa
txtMaLop.ReadOnly = true;
txtTenLop.ReadOnly = true;
txtMaKhoa.ReadOnly = true;
}
//Đưa dữ liệu vaò cbTenKhoa và đồng thời hiển thị dữ liệu
vào lưới khi chọn khóa học
private void cbTenKhoa_SelectedIndexChanged(object sender,
EventArgs e)
{
dbConn.Open();
string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo,
KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa =
Lop.MaKhoa WHERE KhoaHoc.TenKhoa ='"+ cbTenKhoa.Text +"'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dtgridTTLop.DataSource = dbSet.Tables[0];
}
//Cập nhật dữa liệu
private void btnCapNhat_Click(object sender, EventArgs e)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "Update Lop set MaKhoa = '" +
txtMaKhoa.Text + "', SiSo = '" + txtSiSo.Text + "', TenLop = '" +
txtTenLop.Text + "' Where MaLop = '" + txtMaLop.Text + "'";
OleDbCommand dbComd = new OleDbCommand(str, dbConn);
dbComd.ExecuteNonQuery();
dbConn.Close();
HienThi();
txtMaLop.ReadOnly = false;
Xử lý sự kiện cho linklbXemTatCa:
//Xem tất cả các thông tin của lớp
private void linkLbXemTatCa_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
HienThi();
}
65
Xử lý cbTenKhoa
//Đưa dữ liệu vaò cbTenKhoa và đồng thời hiển thị dữ liệu vào lưới
khi chọn khóa học
private void cbTenKhoa_SelectedIndexChanged(object sender,
EventArgs e)
{
dbConn.Open();
string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo,
KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa =
Lop.MaKhoa WHERE KhoaHoc.TenKhoa ='"+ cbTenKhoa.Text +"'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dtgridTTLop.DataSource = dbSet.Tables[0];
}
Xử lý sự kiện cho btnCapNhat
private void btnCapNhat_Click(object sender, EventArgs e)
{
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "Update Lop set MaKhoa = '" +
txtMaKhoa.Text + "', SiSo = '" + txtSiSo.Text + "', TenLop = '" +
txtTenLop.Text + "' Where MaLop = '" + txtMaLop.Text + "'";
OleDbCommand dbComd = new OleDbCommand(str, dbConn);
dbComd.ExecuteNonQuery();
dbConn.Close();
HienThi();
txtMaLop.ReadOnly = false;
}
Xử lý sự kiện cho btnThoat
//Đóng form lại
private void btnThoatLop_Click(object sender, EventArgs e)
{
this.Close();
}
Đưa lữ liệu vào cbTenKhoa
//Đưa dữ liệu vaò cbTenKhoa và đồng thời hiển thị dữ liệu vào lưới
khi chọn khóa học
private void cbTenKhoa_SelectedIndexChanged(object sender,
EventArgs e)
{
dbConn.Open();
string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo,
KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa =
Lop.MaKhoa WHERE KhoaHoc.TenKhoa ='"+ cbTenKhoa.Text +"'";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
66
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dtgridTTLop.DataSource = dbSet.Tables[0];
}
Đưa dữ liệu vào combobox vào dtgrid
//private để hiển thị thông tin vào datagridview
private void HienThi()
{
dbConn.Open();
string str = "SELECT Lop.MaLop, Lop.TenLop, Lop.SiSo,
KhoaHoc.TenKhoa FROM KhoaHoc INNER JOIN Lop ON KhoaHoc.MaKhoa =
Lop.MaKhoa";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dtgridTTLop.DataSource = dbSet.Tables[0];
}
//Hiển thị dữ liệu và đưa thông tin tên khóa vào cbTenKhoa
private void frmLop_Load(object sender, EventArgs e)
{
HienThi();
dbConn.Open();
string str = "SELECT TenKhoa FROM KhoaHoc";
DataSet dbSet = new DataSet();
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
dbAdpt.Fill(dbSet);
dbConn.Close();
cbTenKhoa.DataSource = dbSet.Tables[0];
cbTenKhoa.DisplayMember = "TenKhoa";
}
67
IX. Form bộ môn – frmBoMon
Hình 4.9: Form bộ môn
- Vào Add New Item -> Windows Form để tạo ra form mới có tên là
frmHSSV. Trong properties nhập vào text tiêu đề form: Thông tin bộ
môn
- Từ hộp công cụ, rê thanh điều khiển datagridview vào form, đổi thuộc
tính name cho nó là dtgridTTBM
- Form BoMon đơn giản chỉ là form hiển thị ra các thông tin về bộ môn
để các đối tượng sử dụng có thể nắm bắt một cách khái quát về bộ môn,
chứ không cho phép thực hiện các chức năng gì vào datagridview.
- Nhưng để đưa dữ liệu vào datagridview thì banjc ũng cần phải thêm
đoạn mã cho nó:
//Private hiển thị thông tin bộ môn vào datagridview
private void frmBoMon_Load(object sender, EventArgs e)
{
//Câu lệnh kết nối cơ sở dữ liệu
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb");
dbConn.Open();
//Câu lệnh truy vấn
68
OleDbDataAdapter dbAdpt = new OleDbDataAdapter("SELECT
* FROM bomon", dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dtgridTTBM.DataSource = dbSet.Tables[0];
}
X. Form hồ sơ sinh viên – frmHSSV
Hình 4.10: From hồ sơ sinh viên
- Tương tự như frmBoMon thì frmHSSV cũng được như vậy. Vào Add
New Item -> Windows Form để tạo ra một form mới có tên là
frmHSSV. Trong properties nhập vào text tiêu để form là: hồ sơ sinh
viên
- Thêm datagridview vào form, đổi thuộc tính name là dtgridHSSV
69
- Đây là form chỉ đưa ra cho đối tượng sử dụng hệ thống thông tin chung
và cơ bản về sinh viên thực tập. Form này không cho thực hiện bất kỳ
một chức năng của hệ thống : thêm, sửa. xóa , lưu và tìm kiếm.
- Để lấy dữ liệu vào dtgridview ta bạn pahir thêm đoạn mã sau vào
phương thức frmHSSV_Load:
//Câu lện hiển thị thông tin về sinh viên vào datagridview
private void frmHSSV_Load(object sender, EventArgs e)
{
//Câu lệnh kêt nối cơ sở dữ liệu
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb");
dbConn.Open();
//Câu lệnh truy vấn để lấy thông tin sinh viên vào
datagridview
string strString = "SELECT SinhVien.MaSV,
SinhVien.TenSV, SinhVien.NgaySinh, SinhVien.NoiSinh,
SinhVien.DiaChi, SinhVien.DienThoai, IIF(GioiTinh =
True,'Nam','Nữ') AS Sex, SinhVien.Email, Lop.TenLop FROM Lop INNER
JOIN SinhVien ON Lop.MaLop = SinhVien.MaLop";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(strString, dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dtgridHSSV.DataSource = dbSet.Tables[0];
}
70
XI. Form hồ sơ giảng viên – frmHSGV
Hình 4.11: Form hồ sơ giảng viên
- Vào Add New Item -> Windows form tạo ra một form mới có tên là
frmHSGV. Trong properties nhập vapf text tiêu đề của form : Hồ sơ
giảng viên.
- Từ toolbox, rê thanh điều khiển datagridview vào form, đổi thuộc tính
Name là dgvHSGV.
- Form hồ sơ giảng viên cũng chỉ đưa ra các thông tin chung và khái quát
nhất về giảng viên hướng dẫn thực tập, để đới tượng sử dụng hệ thống
có thể nắm bắt một cách nhanh nhất. Form này cũng ko cho phép thay
đổi thông tin trên lưới.
- Đoạn mà thêm của phương thức frmHSGV_Load:
private void frmHSGV_Load(object sender, EventArgs e)
{
//Câu lệnh kết nố cơ sở dữ liệu
71
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb");
dbConn.Open();
//Câu lệnh truy vấn để lấy thông tin về giảng viên
hướng dẫn thực tập
string str = "SELECT GiangVienHDTT.MaGV,
GiangVienHDTT.TenGV, IIF(GioiTinhGV=True,'Nam','Nữ') AS Sex,
GiangVienHDTT.NgaySinhGV, GiangVienHDTT.SDT,
GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV, BoMon.TenBM FROM
BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM =
GiangVienHDTT.MaBM";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str,
dbConn);
DataSet dbSet = new DataSet();
dbAdpt.Fill(dbSet);
dbConn.Close();
dgvHSGV.DataSource = dbSet.Tables[0];
}
72
CHƯƠNG 5
TỔNG KẾT HỆ THỐNG
.5.
I. Tài liệu tham khảo
- Sách : Từng bước học lập trình Visual C#.Net của nhà xuất bản Lao
động – xã hội
- Lập trình với C# - Biên dịch từ cuốn Professional C#, 2nd Edition,
Xuất bản bởi Wrox Press Ltd
- Các trang web ..
II. Kết luận
Quá trình thực hiện chương trình:
- Thời gian thực tập: từ ngày 18/03 đến ngày 18/04/2008
- Tuần 1:
+ Tìm hiểu về đề tài
+ Phân tích sơ bộ về cơ sở dữ liệu của đề tài thực tập
+ Làm báo cáo tuần 1
- Tuần 2:
+ Triển khai thiết kế cơ sở dữ liệu
+ Thiết kế phân tích hệ thống về mặt dữ liệu
+ Làm báo cáo tuần 3
- Tuần 3:
+ Tìm hiểu về ngôn ngữ C#
+ Tìm tài liệu về C#
+ Tham khảo các code project quản lý khác
+ Thiết kế các form của hệ thống đã dự định
- Tuần 4:
+ Tiến hành viết code cho chương trình
+ Sửa lỗi gặp phải khi chạy hệ thống
73
+ Viết báo cáo thực tập tốt nghiệp về đề tài quản lý sinh viên thực tập.
Những ưu điểm của chương trình
- Chương trình có thể thực hiện được các chức năng: thêm, xóa, sửa, lưu
và tìm kiếm ở tất cả các form.
- Người dùng có thể sử dụng hệ thống để thao tác bất kỳ chức năng nào
trong hệ thống.
Nhược điểm:
- Hệ thống chỉ sử dụng để quản lý sinh viên thực tập trong phạm vi khoa
CNTT
- Hệ thống vẫn chưa thực hiện được chức năng in danh sách và báo cáo,
làm các report trong môi trường VS2005.
Do thời gian thực tập và khả năng còn hạn hẹp, hệ thống quản lý sinh viên
thực tập ở trên còn đơn giản và thiếu sót. Em rất mong nhận được sự đóng
góp ý kiến của thầy cô và các bạn để chương trình của em được hoàn thiện
hơn.
74
MỤC LỤC
Lời mở đầu ..................................................................................................... 1
Chương 1: GIỚI THIỆU VỀ MÔI TRƯỜNG LÀM VIỆC MICROSOFT
VISUAL STUDIO 2005 ................................................................................. 3
1. Tổng quan về C# ..................................................................................... 3
2. Tạo các ứng dụng .Net bằng C# .............................................................. 4
3. Cơ bản về C# .......................................................................................... 6
Chương 2: TỔNG QUAN VỀ HỆ THỐNG ................................................... 7
I. Tổng quan về đề tài ................................................................................. 7
1. Tóm tắt về bài toán .............................................................................. 7
2. Hệ thống dự định ................................................................................. 8
II. Mô tả các yêu cầu của hệ thống .............................................................. 9
1. Tổng quan về hệ thống......................................................................... 9
2. Các đối tác ......................................................................................... 11
3. Nhận định về cơ cấu quản lý của hệ thống ......................................... 11
4. Đặc tả cơ cấu quản lý của hệ thống .................................................... 12
Chương 3: PHÂN TÍCH HỆ THỐNG .......................................................... 17
I. Phân tích hệ thống về mặt xử lý ............................................................. 17
1. Biểu đồ phân cấp chức năng .............................................................. 17
2. Biểu đồ mức bối cảnh ........................................................................ 19
II. Phân tích thiết kế hệ thống về mặt dữ liệu ............................................ 21
1. Các thực thể có trong hệ thống .......................................................... 21
2. Thuộc tính cụ thể của các thực thể và chuẩn hóa chúng ..................... 21
3. Thiết kế mô hình thực thể liên kết ...................................................... 22
4. Thiết kế chi tiết cơ sở dữ liệu ............................................................. 22
Chương 4: THIẾT KẾ CHƯƠNG TRÌNH CHÍNH ...................................... 25
I. Form giao diện chính của hệ thống- frmMain ........................................ 25
1. Quá trình thiết kế và thiết lập các thuộc tính của frmMain: ................ 25
2. Xử lý các sự kiện trong Form giao diện chính: .................................. 26
75
II. Form đăng nhập của hệ thống - frmLogin ............................................. 28
1. Quá trình thiết kế và thiết lập thuộc tính của frmLogin ...................... 28
2. Xử lý các sự kiện trong frmLogin ...................................................... 29
III. Form đổi mật khẩu – frmDoiMatKhau ................................................ 31
1. Quá trình thiết kế và thiết lập thuộc tính của frmDoiMatKhau ........... 31
2. Xử lý các sự kiện trong frmDoiMatKhau ........................................... 32
IV. Form sinh viên – frmSinhVien ............................................................ 34
1. Quá trình thiết kế và thiết lập thuộc tính của frmSinhVien: ............... 34
2. Xử lý các sự kiện trong frmSinhVien:................................................ 36
V. Form Giảng viên – frmGiangVien ........................................................ 44
1. Quá trình thiết kế và thiết lập thuộc tính của frmGiangVien .............. 44
2. Xử lý các sự kiện trong frmGiangVien: ............................................. 45
VI. Form bảng điểm – frmBangDiem........................................................ 52
1. Quá trình thiết kế và thiết lập các thuộc tính của frmBangDiem ........ 52
2. Xử lý các sự kiện trong frmBangDiem .............................................. 52
VII. Forn nhóm thực tập – frmNhomTT.................................................... 58
1. Quá trình thiết kế và thiết lập các thuộc tính của frmNhomTT ........... 58
2. Xử lý các sự kiện trong frmNhomTT ................................................. 59
VIII. Form lớp – frmLop ........................................................................... 62
1. Quá trình thiết kế và thiết lập các thuộc tính trong frmLop ................ 62
2. Xử lý các sự kiện trong frmLop ......................................................... 63
IX. Form bộ môn – frmBoMon ................................................................. 67
X. Form hồ sơ sinh viên – frmHSSV ........................................................ 68
XI. Form hồ sơ giảng viên – frmHSGV .................................................... 70
Chương 5: TỔNG KẾT HỆ THỐNG ........................................................... 72
I. Tài liệu tham khảo ................................................................................. 72
II. Kết luận ................................................................................................ 72
Các file đính kèm theo tài liệu này:
- 6_443.pdf