Đề tài Quản lý sinh viên thực tập bằng ngôn ngữ C#

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 2

1. Tổng quan về C# 2

2. Tạo các ứng dụng .Net bằng C# 3

3. Cơ bản về C# 5

Chương 2: TỔNG QUAN VỀ HỆ THỐNG 6

I. Tổng quan về đề tài 6

1. Tóm tắt về bài toán 6

2. Hệ thống dự định 8

II. Mô tả các yêu cầu của hệ thống 8

1. Tổng quan về hệ thống 8

2. Các đối tác 10

3. Nhận định về cơ cấu quản lý của hệ thống 10

4. Đặc tả cơ cấu quản lý của hệ thống 11

Chương 3: PHÂN TÍCH HỆ THỐNG 16

I. Phân tích hệ thống về mặt xử lý 16

1. Biểu đồ phân cấp chức năng 16

2. Biểu đồ mức bối cảnh 18

II. Phân tích thiết kế hệ thống về mặt dữ liệu 20

1. Các thực thể có trong hệ thống 20

2. Thuộc tính cụ thể của các thực thể và chuẩn hóa chúng 20

3. Thiết kế mô hình thực thể liên kết 21

4. Thiết kế chi tiết cơ sở dữ liệu 21

Chương 4: THIẾT KẾ CHƯƠNG TRÌNH CHÍNH 24

I. Form giao diện chính của hệ thống- frmMain 24

1. Quá trình thiết kế và thiết lập các thuộc tính của frmMain: 24

2. Xử lý các sự kiện trong Form giao diện chính: 25

II. Form đăng nhập của hệ thống - frmLogin 27

1. Quá trình thiết kế và thiết lập thuộc tính của frmLogin 27

2. Xử lý các sự kiện trong frmLogin 28

III. Form đổi mật khẩu – frmDoiMatKhau 30

1. Quá trình thiết kế và thiết lập thuộc tính của frmDoiMatKhau 30

2. Xử lý các sự kiện trong frmDoiMatKhau 31

IV. Form sinh viên – frmSinhVien 33

1. Quá trình thiết kế và thiết lập thuộc tính của frmSinhVien: 33

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

V. Form Giảng viên – frmGiangVien 43

1. Quá trình thiết kế và thiết lập thuộc tính của frmGiangVien 43

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

VI. Form bảng điểm – frmBangDiem 51

1. Quá trình thiết kế và thiết lập các thuộc tính của frmBangDiem 51

2. Xử lý các sự kiện trong frmBangDiem 51

VII. Forn nhóm thực tập – frmNhomTT 57

1. Quá trình thiết kế và thiết lập các thuộc tính của frmNhomTT 57

2. Xử lý các sự kiện trong frmNhomTT 58

VIII. Form lớp – frmLop 61

1. Quá trình thiết kế và thiết lập các thuộc tính trong frmLop 61

2. Xử lý các sự kiện trong frmLop 62

IX. Form bộ môn – frmBoMon 66

X. Form hồ sơ sinh viên – frmHSSV 67

XI. Form hồ sơ giảng viên – frmHSGV 69

Chương 5: TỔNG KẾT HỆ THỐNG 71

I. Tài liệu tham khảo 71

II. Kết luận 71

 

 

doc74 trang | Chia sẻ: maiphuongdc | Lượt xem: 6683 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Đề tài Quản lý sinh viên thực tập bằng ngôn ngữ C#, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thành phần điều khiển PictureBox vào form, điều chỉnh kích thước của PictureBox bằng chuột. Trong Properties chọn thuộc tính Image để chọn hình ảnh cho form đồng thời chọn thuộc tính Locked của picturebox là true. Từ toolbox rê thành phần điều khiển label1vào bên trái form.Đổi tên text của nó là Tên đăng nhập. Từ toolbox tiếp tục rê thành phần điều khiển label2 vào form, đổi tên text là Mật khẩu. Thêm một combobox vào frmLogin và đặt nó kế bên lable1, đổi tên là cboUser. Thêm một textbox vào frmLogin và đặt nó kế bên label2, đổi tên là txtMatKhau. Từ toolbox, rê 2 thanh điều khiển button vào form và lần lượt đổi thuộc tính Name là btnDangNhap và btnHuy, đồng thời đổi tên text tương ứng là Đăng nhập và Hủy bỏ. 2. Xử lý các sự kiện trong frmLogin Khi sinh viên thực tập, giảng viên hướng dẫn thực tập hay cán bộ quản sinh sử dụng hệ thống thì cần phải đăng nhập vào hệ thống. Mội một đối tượng sử dụng hệ thống sẽ có một password và username riêng để đăng nhập vào hệ thống. Nếu nhập sai tên pass hay user thì hệ thống sẽ hiện lên một hộp thoại thông báo “Bạn nhập sai password”. Người sử dụng sẽ nhập lại hoặc kết thúc sử dụng hệ thống. Để formLogin làm việc được như mô tả ở trên bạn cần phải thêm đoạn mã sau cho phương thức btnDangNhap sau khi đã kết nối cơ sở dữ liệu bằng câu lệnh: OleDbConnection dbConn = new OleDbConnection("Provider = Microsoft.JET.OLEDB.4.0; Data Source = " + Application.StartupPath + "\\QLSVTT.mdb"); Đoạn mã cuae btnDangNhap dbConn.Open(); DataSet dbSet = new DataSet(); string strString = "Select mUserName, mPassword From DangNhap Where mUserName = '" + cboUser.Text + "'"; OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet ); dbConn.Close(); if (txtMatkhau.Text == dbSet.Tables[0].Rows[0]["mPassword"].ToString()) { QLSVTT_ProjectThucTapTotNghiep.clsProcess.mTen = dbSet.Tables[0].Rows[0]["mUserName"].ToString(); frmMain frm = new frmMain(); frm.Show(); this.Hide(); } else { MessageBox.Show("Bạn nhập sai Password","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Exclamation ); txtMatkhau.Focus(); txtMatkhau.SelectAll(); } } Đồng thời để lấy được dữ liệu vào trong cboUser tiện lợi cho quá trình đăng nhập thì bạn cũng cần thêm đoạn mã sau: private void frmLogin_Load(object sender, EventArgs e) { //lấy thông tin đưa vào cboUser dbConn.Open(); DataSet dbset = new DataSet(); string str = "Select * From DangNhap"; OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn ); dbAdpt.Fill(dbset ); dbConn.Close(); cboUser.DataSource = dbset.Tables[0]; cboUser.DisplayMember = "mUserName"; Nếu bạn không muốn đăng nhập để xem thông tin về công tác quản lý sinh viên thực tập trong hệ thống nữa, bạn có thể click button Hủy bỏ. Đoạn mã cho phương thức btnHuy chỉ với 1 câu lênh rất đơn giản: this.Close(); III. Form đổi mật khẩu – frmDoiMatKhau 1. Quá trình thiết kế và thiết lập thuộc tính của frmDoiMatKhau Hình 4.3: Form đổi mật khẩu Vào Add New Item -> Windows Form để tạo ra một form mới với tên là frmDoiMatKhau. Dùng chuột để điều chỉnh kích thước của form tùy theo người thiết kế hệ thống. Trong properties thay đổi thuộc tính text của frmDoiMatKhau là Đổi mật khẩu. Từ toolbox, rê thành phần điều khiển groupbox vào form và điều chỉnh kích thước của groupbox cho đầy form. Từ toolbox, rê thành phần điều khiển labe1 vào groupbox rùi đổi thuộc tính Name là lbUser và text là UserName. Thêm label2 vào groupbox, đổi thuộc tính Name là lbPasscu và text là Pasword cũ. Từ hộp công cụ rê thanh điều khiển label3 vào groupbox đỏi thuộc tính name là lbPassmoi và text là Password mới Thêm label4 vào groupbox, đổi thuộc tính Name là lbNhapLaiPass và text là Xác nhận lại. Từ hộp công cụ rê thanh điều khiển textbox vào groupbox, đặt kế bên label1. Đổi thuộc tính Name là txtUserName và chọn thuộc tính readonly là true cho textbox này để cho phép người dùng thay đổi mật khẩu chứ không hco phép người dùng thay đổi tên sử dụng. Thêm textbox vào trong groupbox vào bên cạnh label2 và đổi thuộc tính Name là txtPassCu. Từ hộp công cụ rê thanh điều khiển textbox vào groupbox trong form vào bên cạnh label3, đổi thuộc tính name là txtPassMoi. Thêm textbox vào groupbox đặt bên cạnh label4, đổi thuộc tính name là txtXacNhan. Từ toolbox, rê thanh điều khiển button vào groupbox, thay đổi thuộc tính name là btnLuuthaydoi và text là Lưu thay đổi. Thêm button vào groupbox, thay đổ thuộc tính name là btnThoat và text là Thoát. 2. Xử lý các sự kiện trong frmDoiMatKhau Xử lý sự kiện cho btnLuuthaydoi: Khi mật khẩu mà hệ thống cung cấp cho các đổi tượng không được bảo mật, hay các dối tượng đó muốn thay đổi mật khẩu thì sẽ nhập đúng password cũ vào txtPassCu, nếu nhập sai hệ thống sẽ hiển thị một hộp thoại thông báo “Nhập mật khẩu cũ sai.Hãy nhập lại!”. Nếu nhập đúng passwprd cũ thì tiếp tục nhập password mới mà bạn muốn thay đổi rùi sau đó xác nhận lại 1 lần nữa.Nếu bạn không xác nhận lại thì hệ thống sẽ có 1 hộp thoại thông báo “Xác nhận mật khẩu sai. Hãy nhập lại!”. Nếu đã nhập tất cả các thông tin theo yêu cầu của hệ thống thì mật khẩu sẽ được thay đổi thành công. Hệ thống hiển thị thông báo “Đã thay đổi thành công”. Để thực hiện được các mô tả như trên thì bạn cần thêm 1 đoạn mã vào phương thức của btnLuuthay doi sau khi đã kết nối cơ sở dữ liệu bằng câu lệnh: OleDbConnection dbConn = new OleDbConnection("Provider = Microsoft.JET.OLEDB.4.0; Data Source = " + Application.StartupPath + "\\QLSVTT.mdb"); Đoạn mã của btnLuuthaydoi: dbConn.Open(); DataSet dbSet = new DataSet(); string strString = "Select * From DangNhap Where mUserName = '" + txtUserName.Text + "'"; OleDbDataAdapter dbAdpt = new OleDbDataAdapter(strString, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); if (txtPassCu.Text == dbSet.Tables[0].Rows[0]["mPassword"].ToString()) { if (txtPassMoi.Text == txtXacNhan.Text ) { dbConn.Open(); string mstrString = "Update DangNhap Set mPassword = '" + txtPassMoi.Text + "' Where mUserName = '" + txtUserName.Text + "'"; OleDbCommand mdbCmd = new OleDbCommand(mstrString, dbConn); mdbCmd.ExecuteNonQuery(); dbConn.Close(); MessageBox.Show("Đã thay đổi thành công","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Information ); this.Close(); } else { MessageBox.Show("Xác nhận mật khẩu sai. Hãy nhập lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtXacNhan.Focus(); txtXacNhan.SelectAll(); } } else { MessageBox.Show("Nhập mật khẩu cũ sai. Hãy nhập lại","Thông báo",MessageBoxButtons.OK, MessageBoxIcon.Exclamation ); txtPassCu.Focus(); txtPassCu.SelectAll(); } } Xử lý sự kiện cho btnThoat Tương tự như các form khác. Để đóng form này lại t chỉ cần thêm 1 câu lệnh: this.Close(); IV. Form sinh viên – frmSinhVien 1. Quá trình thiết kế và thiết lập thuộc tính của frmSinhVien: Hình 4.4: Form sinh viên Vào Add New Item -> Windows Form để tạo ra một form mới với tên là frmSinhVien. Trong hộp công cụ, rê thanhd diều khiển groupbox vào form, đổi thuộc tính name là grTTSV, grTK, grThongtinsvvà text là Thông tin sinh viên, Tìm kiếm, Thông tin về sinh viên. Từ toolbox, rê 10 thanh điều khiển label vào grTTSV rồi lần lượt đổi thuộc tính Name cho nó là lbMaLop, lbMaSV, lbTenSV, lbMaNhom, lbNgaySinh, lbNoiSinh, lbSDT, lbGioiTinh, lbEmai, lbDiaChi và đổi text tương ứng là: Mã lớp, Mã sinh viên, Tên sinh viên, Mã nhóm, Ngày sinh, Nơi sinh, Số điện thoại, Giới tính, Email, Địa chỉ. Thêm các combobox vào grTTSV, đổi thuộc tính name cho nó lần lượt là cbMaLop, cbMaNhom. Thêm các textbox vào grTTSV, đổi thuộc tính Name lần lượt là txtMaSV, txtTenSV, txtNoiSinh, txtSDT, txtEmail, txtDiaChi. Từ toolbox rê thanh điều khiển datatimepicker vào grTTSV đỏi tên thuộc tính name là dtPickerNgaySinh. Thêm thanh điều khiển radio vào trong grTTSV, đổi thuộc tính name là rdNam, rdNu tương ứng với text Nam, Nữ. Thêm label vào grTK, đổi thuộc tính name là lbLop, lbMaSinhVien, lbTenSinhVien và text tương ứng: Lớp, mã sinh viên, tên sinh viên. Thêm combobox vào grTK, thuộc tính name là cboL. Thêm textbox vào grTK, đổi thuộc tính name là txtTimMaSV, txtTimTenSV. Thêm linklabel vào grTK, đổi thuộc tính name là llbMaSV, llbTenSV và text tương ứng: Tìm MaSV, Tìm TenSV Thêm các button vào form, đổi thuộc tính name là btnThemSV, btnXoaSV, btnLuuSV, btnSuaSV, btnDongLai. Từ hộp công cụ rê thanh điều khiển datagridview vào grThongtinsinhvien, đởi thuộc tính name là dgvListSinhVien. Thêm linklabel vào form, thuộc tính name là llbXemTatCa và text là Xem tất cả. 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 đảm bảo toàn vẹ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) { 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); } } 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 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 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 + "', 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 D

Các file đính kèm theo tài liệu này:

  • docQuan ly sinh vien thuc tap.doc