intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài thực hành VB số 1

Chia sẻ: Đào Mai Anh | Ngày: | Loại File: PDF | Số trang:18

545
lượt xem
80
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Viết chương trình nhập vào 3 giá trị dương a, b, c. Kiểm tra xem chúng có thể tạo thành ba cạnh của một tam giác hay không, nếu đúng thì đó là tam giác vuông, cân, đều hay tam giác thường và cho biết chu vi và diện tích của hình tam giác đó. Hướng dẫn a+b+c Diện tích tam giác được tính: S = p ( p − a)( p − b)( p − c) với p = 2 Giao diện chương trình:

Chủ đề:
Lưu

Nội dung Text: Bài thực hành VB số 1

  1. BÀI THỰC HÀNH SỐ 1 Viết chương trình nhập vào 3 giá trị dương a, b, c. Kiểm tra xem chúng có thể tạo thành ba cạnh của một tam giác hay không, nếu đúng thì đó là tam giác vuông, cân, đều hay tam giác thường và cho biết chu vi và diện tích của hình tam giác đó. Hướng dẫn a+b+c Diện tích tam giác được tính: S = p ( p − a)( p − b)( p − c) với p = 2 Giao diện chương trình: Đúng / Sai Cân/Vuông/Ðều/Thường - Các đối tượng TextBox có thuộc tính Name là: Text1 -> Text7 (thứ tự từ trên xuống) - Các đối tượng CommandButton (nút lệnh) có Name từ: Command1 -> Command3 Mã lệnh tham khảo Dim a As Byte, b As Byte, c As Byte ‘ Các biến chứa ba cạnh tam giác Dim S As Single, P As Single ‘ Chứa diện tích và chu vi của tam giác ‘ Sự kiện Click của nút Command2 (nút Tiep tuc) Private Sub Command2_Click() Text1.Text = "" ‘ Xóa rỗng các đối tượng TextBox Text2.Text = "" : Text3.Text = "" Text4.Text = "" : Text5.Text = "" Text6.Text = "" : Text7.Text = "" End Sub ‘Sự kiện Click của nút Command3 (nút Ket thuc) Private Sub Command3_Click() Unload Me End Sub ‘Sự kiện Click của nút Command1 (nút Kiem tra) Private Sub Command1_Click() a = Val(Text1.Text) ‘ Cho biến a nhận giá trị từ Text1 b = Val(Text2.Text) ‘ Cho biến b nhận giá trị từ Text2 c = Val(Text3.Text) ‘ Cho biến c nhận giá trị từ Text3 If (a + b > c) And (a + c > b) And (b + c > a) Then ' Kiểm tra loại tam giác - Chỉ khi a, b, c là ba cạnh của tam giác Text4.Text = "DIEU NAY DUNG" If (a = b) And (b = c) Then Text5.Text = "TAM GIAC DEU" ElseIf (a = b) Or (a = c) Or (b = c) Then Text5.Text = "TAM GIAC CAN" ElseIf (a*a + b*b = c^2) Or (b*b + c*c = a^2) Or (a*a + c*c = b^2) Then
  2. Text5.Text = "TAM GIAC VUONG" Else Text5.Text = "TAM GIAC THUONG" End If P = (a + b + c) / 2 ‘ Tính chu vi của tam giác ’ Đối tượng Text6 chứa chu vi tam giác Text6.Text = Str(2 * P) ‘ Tính diện tích tam giác S = Sqr(P * (P - a) * (P - b) * (P - c)) ‘ Đối tượng text7 chứa diện tích tam giác Text7.Text = Str(S) Else Text4.Text = "DIEU NAY SAI" End If End Sub Các bài tập khác 1. Giải phương trình bậc hai ax2 + bx + c = 0 (a ≠ 0) a1 x + b1 y = c1 2. Giải hệ phương trình bậc nhất  a 2 x + b2 y = c 2 Hướng dẫn: a1 b1 D= a2 b2 b1 c1 c1 a1 Dx= ; Dy= b2 c2 c2 a2 D≠0: Có nghiệm x=Dx/D và - y=Dy/D - D=0: o Nếu Dx=0 và Dy=0: Vô số nghiệm o Nếu Dx≠0 hoặc Dy≠0: Vô nghiệm
  3. BÀI THỰC HÀNH SỐ 2 Viết chương trình mô phỏng một máy tính bỏ túi dạng đơn giản, có thể thực hiện được các phép toán +, -, *, / và các hàm Sin(x), Cos(x), Tan(x), Cotang(x), n!,.... Thiết kế giao diện Các đối tượng trên FORM bao gồm: Ä Ðối tượng độc lập: Text1 Ä Mảng đối tượng Command1 Bao gồm: Sin, Cos, Tan, Ctan, Sqr, n!, Log, Exp với chỉ số Index tương ứng chạy từ 0 → 7 Ä Mảng đối tượng Command2 Bao gồm: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 và . với chỉ số Index tương ứng chạy từ 0 → 11 Ä Ðối tượng độc lập Command3: nút = Ä Mảng đối tượng Command4 Bao gồm: các nút +, -, , / có chỉ số Index tương ứng chạy từ 0 → 3. Ä Ðối tượng độc lập Command5: Exit Ä Đối tượng độc lập Command6: Clear Mã lệnh tham khảo Dim s1 As Double, s2 As Double, kq As Double ‘ Số thứ nhất, thứ hai và kết quả Dim Pheptoan As Byte ‘ Sự kiện Click mảng đối tượng Command2 (0, 1, 2,…,9 và .) Private Sub Command2_Click(Index As Integer) Text1.Text = Text1.Text & Command2(Index).Caption End Sub ‘ Sự kiện Click mảng đối tượng Command1 (Sin, Cos, Tan,…) Private Sub Command1_Click(Index As Integer) Dim a As Double, ra As Double a = Val(Text1.Text) ‘ Nhận giá trị của a từ đối tượng Text1 ra = ToRadian(a) ‘ Gọi CTC đổi a sang đơn vị Radian Select Case Index Case 0: Text1.Text = Sin(ra) ‘ Gọi hàm tính Sin Case 1: Text1.Text = Cos(ra) ‘ Gọi hàm tính Cos Case 2: Text1.Text = Tan(ra) ‘ Gọi hàm tính Tan Case 3: Text1.Text = 1/Tan(ra) ‘ Gọi hàm tính Cotang Case 4: Text1.Text = Sqr(a) ‘ Gọi hàm tính căn bậc hai Case 5: Text1.Text = Giaithua(CByte(a)) ‘ Gọi CTC tính N! (định nghĩa ở dưới) Case 6: Text1.Text = Log(a) / Log(10) ‘ Tính Lôgarít cơ số 10 (thập phân) Case 7: Text1.Text = Exp(a) ‘ Gọi hàm tính Exp(x) _ tính e mũ x End Select End Sub ‘ Sự kiện Click đối tượng Command3 (=) Private Sub Command3_Click() s2 = Val(Text1.Text) ‘ Lưu số thứ 2 vào biến s2 Select Case Pheptoan Case 0: kq = s1 + s2 Case 1: kq = s1 - s2 Case 2: kq = s1 * s2 Case 3: kq = s1 / s2 End Select
  4. Text1.Text = kq ‘ Hiển thị kết quả End Sub ‘ Sự kiện Click mảng đối tượng Command4 (=) Private Sub Command4_Click(Index As Integer) Pheptoan = Index ‘ Lưu phép toán s1 = Val(Text1.Text) ‘ Lưu số thứ nhất vào biến s1 Text1.Text = "" ‘ Xoá nội dung màn hình End Sub ‘ Sự kiện Click đối tượng Command5 (Exit) Private Sub Command5_Click() Unload Me End Sub ‘ Sự kiện Click đối tượng Command6 (Clear) Private Sub Command6_Click() Text1.Text = "" End Sub ‘ Ðịnh nghĩa hàm đổi từ Ðộ → Radian Private Function ToRadian(a As Double) As Double Dim kq As Double kq = (3.141592654 / 180) * a ToRadian = kq ‘ Gán kết quả lại cho tên hàm End Function ‘ Ðịnh nghĩa hàm tính N! Private Function Giaithua(N As Byte) As Long Dim i As Byte, Dim kq As Long kq = 1 For i = 1 To N kq = kq * i Next i Giaithua = kq ‘ Gán kết quả lại cho tên hàm End Function Các bài tập khác Viết chương trình hiện lên màn hình 8 bảng cửu chương từ 2 đến 9. Hướng dẫn:
  5. BÀI THỰC HÀNH SỐ 3 Viết chương trình cho phép xem ảnh và quản lý File dạng đơn giản. Giao diện Mã lệnh thao khảo Option Explicit ‘ Sự kiện khi Click vào đối tượng File1 để chọn ảnh cần xem: Private Sub File1_Click() Dim fName As String, s As String Dim pos As Integer fName = File1.FileName ‘ Lấy tên của File ảnh Text1.Text = File1.FileName ‘ Hiện tên của File ảnh vào Text1 pos = Val(InStr(1, fName, ".")) ‘ Tìm vị trí của dấu chấn trong tên s = LCase(Mid(fName, pos)) ‘ Chuyển từ chữ thường sang chữ hoa If s = ".gif" Or s = ".jpg" Or s = ".bmp" Then Picture2.Picture = LoadPicture(File1.Path & "\" & File1.FileName) End If Picture2.Move 0, 0 ‘ Di chuyển Picture2 đến góc trái trên ' Thanh cuộn ngang If Picture2.Width
  6. If Check1.Value = 0 Then File1.Archive = False Else File1.Archive = True End If End Sub Private Sub Check2_Click() Dir1.Path = Drive1.Drive If Check2.Value = 0 Then End Sub File1.System = False ‘ Sự kiện nạp của FORM Else Private Sub Form_Load() File1.System = True Text1.Text = "" End If Combo1.AddItem ("Picture Files_ (*.jpg; End Sub *.gif; *.bmp)") Combo1.AddItem ("All Files (*.*)") Private Sub Check3_Click() Combo1.AddItem ("Text Files (*.txt)") If Check3.Value = 0 Then Combo1.ListIndex = 1 File1.Hiđen = False If File1.Archive = True Then Else Check1.Value = 1 File1.Hiđen = True Else End If Check1.Value = 0 End Sub End If If File1.System = True Then Private Sub Check4_Click() Check2.Value = 1 If Check4.Value = 0 Then Else File1.Normal = False Check2.Value = 0 Else End If File1.Normal = True If File1.Hiđen = True Then End If Check3.Value = 1 End Sub Else Check3.Value = 0 Private Sub Combo1_Click() End If Select Case Combo1.ListIndex If File1.Normal = True Then ‘ Thiết lập thuộc tính Fillter Check4.Value = 1 Case 0: File1.Pattern = "*.jpg; *.gif; Else *.bmp" Check4.Value = 0 Case 1: File1.Pattern = "*.*" End If Case 2: File1.Pattern = "*.txt" Form1.ScaleMode = vbPixels End Select Picture1.ScaleMode = vbPixels File1.Refresh Picture2.AutoSize = True ‘ Xóa nội dung của bức ảnh hiện tại Picture2.BorderStyle = 0 Picture1.Picture = LoadPicture() End Sub End Sub ‘ Sự kiện Change của HScroll1 ‘ Sự kiện Change của đối tượng Dir1 Private Sub HScroll1_Change() Private Sub Dir1_Change() Picture2.Left = -HScroll1.Value File1.Path = Dir1.Path End Sub End Sub Private Sub VScroll1_Change() Picture2.Top = -VScroll1.Value ‘ Sự kiện Change của Drive1 End Sub Private Sub Drive1_Change()
  7. BÀI THỰC HÀNH SỐ 4 Viết chương trình quản lý sinh viên dạng đơn giản sử dụng đối tượng ADO gồm có: o 3 form: frmConnect, frmLogin và form chính frmMain o 1 Module: Module1 (chứa đối tượng Db kết nối CSDL) Form frmConnect (kết nối CSDL) * Giao diện Gồm các đối tượng để nhập dữ liệu Text1, Text2, Text3, Text4 và 2 nút lệnh Command1, Command2 * Mã lệnh tham khảo Private Sub Command1_Click() ' Nút Kết nối Dim rs As New ADODB.Recordset Set Db = New ADODB.Connection Db.Provider = "SQLOLEDB.1" Db.ConnectionString = "Data Source=" + Text1.Text + ";Initial Catalog=" + Text2.Text + ";User ID=" + Text3.Text + ";Password=" + Text4.Text + "" On Error Resume Next ' Bẫy lỗi Db.Open If Db.Errors.Count 0 Then MsgBox "Loi : " & Err.Description, vbCritical Else frmLogin.Show ' Hiển thị form Login Unload Me End If End Sub Private Sub Command2_Click() ' Nút Thoát Unload Me End Sub Form frmLogin (đăng nhập) * Giao diện Gồm các đối tượng để nhập dữ liệu Text1, Text2 và 2 nút lệnh Command1, Command2 * Mã lệnh tham khảo Option Explicit Private Sub Command1_Click() Dim rs As New ADODB.Recordset rs.Open "Select * from Users where Username='" + Text1.Text + "' and Password='" + Text2.Text + "'", Db If rs.EOF Then MsgBox "Ten User khong ton tai hoac mat khau khong dung !", vbCritical Else frmMain.Show ' Hiển thị form chính Unload Me ' Đóng form log in End If End Sub Private Sub Command2_Click() ' Nút thoát Unload Me End Sub
  8. Form frmMain (giao diện chính) * Giao diện Gồm các đối tượng có tên giống như hình sau, ngoài ra còn có các đối tượng chkGioitinh (þGiới tính), cmdNew (nút Tạo mới), cmdSave (nút Lưu), cmdDelete (nút Xoá). * Mã lệnh tham khảo ‘ Câu lệnh sau yêu cầu các biến phải khai báo Option Explicit Dim MaSV As Integer, MaL As Integer ' Chứa Mã SV và Mã lớp Private Sub Form_Load() Dim rs As New ADODB.Recordset cboLop.Clear: cboMaL.Clear rs.Open "select * from Lop order by TenL", Db Do While Not rs.EOF cboMaL.AddItem rs!MaL cboLop.AddItem rs!TenL rs.MoveNext Loop ClearAll End Sub ' Chương trình con liệt kê DSSV Public Sub LietkeDSSV(MaL As Integer) Dim rs As New ADODB.Recordset lstHoten.Clear: lstMaSV.Clear ClearAll ‘ Gọi Chương trình con xoá các thông tin rs.Open "select * from Sinhvien where MaL=" & MaL & " order by Hoten", Db Do While Not rs.EOF lstHoten.AddItem rs!Hoten lstMaSV.AddItem rs!MaSV rs.MoveNext Loop MaSV = 0 End Sub
  9. ' Chương trình con hiển thị thông tin sinh viên Private Sub HienthiSV(MaSV As Integer) Dim rs As New ADODB.Recordset rs.Open "select * from Sinhvien where MaSV=" & MaSV & "", Db If Not rs.EOF Then txtHoten.Text = rs!Hoten chkGioitinh.Value = IIf(rs!Gioitinh = True, 1, 0) txtNgaysinh.Text = rs!Ngaysinh & "" txtNoisinh.Text = rs!Noisinh & "" txtMon1.Text = rs!Mon1 & "": txtMon2.Text = rs!Mon2 & "" txtMon3.Text = rs!Mon3 & "" txtDTB.Text = rs!dtb & "" txtXeploai.Text = rs!Xeploai & "" Else ClearAll ‘ Gọi Chương trình con xoá các thông tin End If End Sub ' Chương trình con xoá các thông tin Private Sub ClearAll() txtHoten.Text = "": txtNgaysinh.Text = "": txtNoisinh.Text = "" txtMon1.Text = "": txtMon2.Text = "": txtMon3.Text = "" txtDTB.Text = "": txtXeploai.Text = "" End Sub ‘ Xảy ra khi chọn một lớp từ danh sách lớp Private Sub cboLop_Click() MaL = cboMaL.List(cboLop.ListIndex) ' Mã lớp đang xem LietkeDSSV MaL End Sub ‘ Xảy ra khi chọn một sinh viên từ danh sách Private Sub lstHoten_Click() MaSV = lstMaSV.List(lstHoten.ListIndex) ' Mã sinh viên hiện tại HienthiSV MaSV ' Gọi CTC hiển thị thông tin sinh viên End Sub ‘ Xảy ra khi nhắp nút Tạo mới một sinh viên Private Sub cmdNew_Click() ' Nút tạo mới ClearAll ‘ Gọi Chương trình con xoá các thông tin MaSV = 0 End Sub ‘ Lưu thông tin về sinh viên Private Sub cmdSave_Click() ' Nút lưu Dim rs As New ADODB.Recordset If txtHoten.Text = "" Or txtNgaysinh.Text = "" Or MaL = 0 Then MsgBox "Chua nhap Ho ten, Ngay sinh hoac chua chon Lop !", vbCritical Else rs.Open "select * from Sinhvien where MaSV='" & MaSV & "'", Db, adOpenStatic, adLockOptimistic If rs.EOF Then rs.AddNew rs!Hoten = txtHoten.Text rs!Ngaysinh = txtNgaysinh.Text rs!Noisinh = txtNoisinh.Text rs!Gioitinh = IIf(chkGioitinh.Value = 1, True, False) rs!Mon1 = Val(txtMon1.Text) rs!Mon2 = Val(txtMon2.Text) rs!Mon3 = Val(txtMon3.Text) txtDTB.Text = Round((rs!Mon1 + rs!Mon2 + rs!Mon3) / 3, 2) ' Làm tròn 2 chữ số Select Case Val(txtDTB.Text) Case Is >= 8: txtXeploai.Text = "Giỏi"
  10. Case Is >= 7: txtXeploai.Text = "Khá" Case Is >= 5: txtXeploai.Text = "Trung bình" Case Else: txtXeploai.Text = "Yếu" End Select rs!dtb = txtDTB.Text rs!Xeploai = txtXeploai.Text rs!MaL = MaL rs.Update ' Lưu vào CSDL If MaSV = 0 Then LietkeDSSV MaL End If End Sub ‘ Xoá thông tin về sinh viên Private Sub cmdDelete_Click() Dim traloi As Integer If MaSV = 0 Then MsgBox "Phai chon SV can xoa", vbInformation Else traloi = MsgBox("Ban muon xo SV nay hay khong?", vbQuestion + vbYesNo) If traloi = vbYes Then Db.Execute "delete from Sinhvien where MaSV=" & MaSV & "" LietkeDSSV MaL End If End If End Sub Một số yêu cầu khác 1. Ứng dụng thanh tiến trình ProgressBar trong khi hiển thị danh sách sinh viên của một lớp. 2. Xây dựng hệ thống Menu cho form gồm các mục như hình bên. Khi nhắp chọn các mục ‘Chon mau nen’ và ‘Chon hinh nen’ sẽ cho phép đổi màu nền và hình nền của form (sử dụng điều khiển Common Dialog). 3. Xây dựng thanh công cụ (Toolbar) gồm một số mục tuỳ ý. Chẳng hạn như hình sau:
  11. BÀI THỰC HÀNH SỐ 5 Viết chương trình quản lý sinh viên dạng đơn giản. Giao diện Tạo giao diện với các đối tượng được đặt tên (trong thuộc tính Name) như trên hình sau: ToolBar1 ImageList1 TreeView1 CommonDialog1 Các đối tượng lần lượt có tên là: txtHoten, chkGioitinh, txtNgaysinh. txtNoisinh, ImageList2 txtMon1, txtMon2, txtMon3, txtDTB, txtXeploai ProgressBar1 Các nút lần lượt có tên là: cmdTinhDTB, cmdNew, cmdSave, cmdDelete Trong đó: ImageList1: Chứa các hình ảnh làm biểu tượng cho các nút lệnh trên Toolbar1 - ImageList2: Chứa các hình ảnh làm biểu tượng cho các nút lệnh trên TreeView1 - Nội dung Menu: Với các mục có tên (Name) như hình bên phải - mnuHethong mnuDMLop mnuDMNganh mnuLine1 mnuKetthuc Name mnuDinhdang mnuMauchu mnuHinhnen mnuCongcu mnuTimkiem mnuThongke Mã lệnh tham khảo Option Explicit Dim MaSV As Integer, MaL As Integer ' Chứa mã SV và mã lớp được chọn ‘ Định nghĩa CTC xoá các nội dung các TextBox (Vào Tools → Add Procedure → …) Private Sub ClearAll() txtHoten.Text = "": txtNgaysinh.Text = "": txtNoisinh.Text = "" txtMon1.Text = "": txtMon2.Text = "": txtMon3.Text = "" : txtDTB.Text = "": txtXeploai.Text = "" End Sub
  12. ‘ Thêm các cột vào ListView1 Public Sub AddColumns() ListView1.View = lvwReport ' Xem dạng bảng ListView1.ColumnHeaders.Add , , "Họ tên", 3000, 0 ListView1.ColumnHeaders.Add , , "Ngày sinh", 1500, 1 ListView1.ColumnHeaders.Add , , "Nơi sinh", 1500, 2 End Sub ‘ Nạp nội dung vào cây TreeView Public Sub LoadTree() Dim nod As Node, rs As New ADODB.Recordset ' Thêm nút gốc Set nod = TreeView1.Nodes.Add(, , "R", "Quản lý sinh viên", 1, 1) nod.ForeColor = vbRed: nod.Bold = True: nod.Expanded = True ' Thêm các nút ngành học rs.Open "select * from Nganh", Db Do While Not rs.EOF Set nod = TreeView1.Nodes.Add("R", tvwChild, "N" & rs!MaNG, rs!TenNG, 2, 3) nod.Bold = True: nod.ForeColor = vbBlue rs.MoveNext Loop ' Thêm các nút lớp rs.Close rs.Open "select * from Lop", Db Do While Not rs.EOF Set nod = TreeView1.Nodes.Add("N" & rs!MaNG, tvwChild, "L" & rs!MaL, rs!TenL, 4, 5) rs.MoveNext Loop End Sub ‘ Sự kiện xảy ra khi form hiển thị Private Sub Form_Load() ClearAll ‘ Gọi các CTC LoadTree AddColumns End Sub ‘ Định nghĩa CTC liệt kê DS sinh viên của lớp có mã là MaL vào ListView1 Public Sub LietkeDSSVListView(MaL As Integer) Dim rs As New ADODB.Recordset, Item As ListItem ListView1.ListItems.Clear ' Xoá nội dung hiện tại ClearAll ' Xoá các TextBox rs.Open "select * from Sinhvien where MaL=" & MaL, Db, adOpenStatic, adLockOptimistic ' Thiết lập cho thanh tiến trình ProgressBar1.Min = 0: ProgressBar1.Value = 0 If Not rs.EOF Then rs.MoveLast: ProgressBar1.Max = rs.RecordCount: rs.MoveFirst End If ' Hiển thị danh sách SV vào ListView1 Do While Not rs.EOF Set Item = ListView1.ListItems.Add Item.Key = "SV" & rs!MaSV Item.Text = rs!Hoten & "" Item.SubItems(1) = rs!Ngaysinh & "" Item.SubItems(2) = rs!Noisinh & "" rs.MoveNext ProgressBar1.Value = ProgressBar1.Value + 1 : DoEvents Loop ProgressBar1.Value = 0 : MaSV = 0 ' Xoá thanh tiến trình End Sub ‘ Sự kiện xảy ra khi chọn một lớp nào đó từ cây TreeView1
  13. Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) If Left(Node.Key, 1) = "L" Then ' Nếu chọn lớp MaL = Mid(Node.Key, 2) LietkeDSSVListView MaL Else ' Nếu không chọn lớp ListView1.ListItems.Clear ' Xoá các nội dung MaL = 0: ClearAll End If End Sub ‘ Định nghĩa CTC hiển thị thông tin của SV có mã SV là MaSV Private Sub HienthiSV(MaSV As Integer) Dim rs As New ADODB.Recordset rs.Open "select * from Sinhvien where MaSV=" & MaSV & "", Db If Not rs.EOF Then txtHoten.Text = rs!Hoten chkGioitinh.Value = IIf(rs!Gioitinh = True, 1, 0) txtNgaysinh.Text = rs!Ngaysinh & "" : txtNoisinh.Text = rs!Noisinh & "" txtMon1.Text = rs!Mon1 & "": txtMon2.Text = rs!Mon2 & "": txtMon3.Text = rs!Mon3 & "" txtDTB.Text = rs!DTB & "" : txtXeploai.Text = rs!Xeploai & "" Else ClearAll ‘ Xoá nội dung End If End Sub ‘ Sự kiện xảy ra khi nhắp chọn một phần tử trong ListView1 Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) MaSV = Mid(Item.Key, 3) ' Mã SV được chọn HienthiSV MaSV ‘ Gọi CTC hiển thị thông tin của SV End Sub ‘ Nút Tạo mới một sinh viên Private Sub cmdNew_Click() MaSV = 0 : ClearAll ' Xoá nội dung End Sub ‘ Nút Lưu thông tin sinh viên Private Sub cmdSave_Click() Dim rs As New ADODB.Recordset If txtHoten.Text = "" Or txtNgaysinh.Text = "" Or MaL = 0 Then MsgBox "Chua nhap Ho ten, Ngay sinh hoac chua chon Lop !", vbCritical Else rs.Open "select * from Sinhvien where MaSV=' " & MaSV & " ' ", Db, adOpenStatic, adLockOpt… If rs.EOF Then rs.AddNew rs!Hoten = txtHoten.Text rs!Ngaysinh = txtNgaysinh.Text : rs!Noisinh = txtNoisinh.Text rs!Gioitinh = IIf(chkGioitinh.Value = 1, True, False) rs!Mon1 = Val(txtMon1.Text) : rs!Mon2 = Val(txtMon2.Text) : rs!Mon3 = Val(txtMon3.Text) txtDTB.Text = Round((rs!Mon1 + rs!Mon2 + rs!Mon3) / 3, 2) Select Case Val(txtDTB.Text) Case Is >= 8: txtXeploai.Text = "Giỏi" Case Is >= 7: txtXeploai.Text = "Khá" Case Is >= 5: txtXeploai.Text = "Trung bình" Case Else: txtXeploai.Text = "Yếu" End Select rs!DTB = txtDTB.Text : rs!Xeploai = txtXeploai.Text : rs!MaL = MaL rs.Update ' Lưu vào CSDL If MaSV = 0 Then LietkeDSSVListView MaL End If End Sub ‘ Nút Delete (xoá sinh viên) Private Sub cmdDelete_Click()
  14. Dim traloi As Integer If MaSV = 0 Then MsgBox "Phai chon SV can xoa", vbInformation Else traloi = MsgBox("Ban muon xo SV nay hay khong?", vbQuestion + vbYesNo) If traloi = vbYes Then Db.Execute "delete from Sinhvien where MaSV=" & MaSV & "" LietkeDSSVListView MaL End If End If End Sub ‘ Nút Tính ĐTB cho tất cả các SV Private Sub cmdTinhDTB_Click() Dim rs As New ADODB.Recordset rs.Open "select * from Sinhvien", Db, adOpenStatic, adLockOptimistic ' Thiết lập thanh tiến trình ProgressBar1.Min = 0: ProgressBar1.Value = 0 If Not rs.EOF Then rs.MoveLast: ProgressBar1.Max = rs.RecordCount: rs.MoveFirst End If ' Tính ĐTB cho từng SV Do While Not rs.EOF rs!DTB = Round((rs!Mon1 + rs!Mon2 + rs!Mon3) / 3, 2) rs.Update ProgressBar1.Value = ProgressBar1.Value + 1 rs.MoveNext Loop ProgressBar1.Value = 0 End Sub ‘ Menu chọn hình nền cho form Private Sub mnuHinhnen_Click() CommonDialog1.Filter = "Picture file (*.jpg)|*.jpg|All files (*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.ShowOpen frmMain.Picture = LoadPicture(CommonDialog1.FileName) End Sub ‘ Menu chọn màu nền cho form Private Sub mnuMaunen_Click() CommonDialog1.ShowColor ListView1.BackColor = CommonDialog1.Color End Sub ‘ Sự kiện xảy ra khi click chọn các nút lệnh của Toolbar Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 1: MsgBox "Ban vua chon nut Phan quyen" Case 2: MsgBox "Ban vua chon nut Doi mat khau" Case 4: mnuMaunen_Click ' Chon mau nen Case 5: mnuHinhnen_Click ' Chon hinh nen End Select End Sub ‘ Sự kiện xảy ra khi click chuột vào các mục menu con của nút kiểu DropDown Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu) Select Case ButtonMenu.Index Case 1: MsgBox "Tim kiem theo ten !" Case 2: MsgBox "Tim kiem theo ngay sinh !" Case 3: MsgBox "Tim kiem theo noi sinh !" End Select End Sub
  15. Form Tìm kiếm sinh viên (frmTimkiem) Xây dựng form frmTimkiem để tìm kiếm thông thông tin về sinh viên theo họ tên, ngày sinh và nơi sinh. Giao diện: Xem hình sau: Option1,2,3 Text1 Command1 ListView1 Mã lệnh tham khảo: Option Explicit ‘ Thiết lập các thuộc tính cho ListView1 Private Sub Form_Load() ListView1.View = lvwReport ' Chế độ xem dạng bảng ListView1.FullRowSelect = True ‘ Cho phép chọn cả dòng ListView1.GridLines = True ListView1.ColumnHeaders.Add , , "Họ tên", 3000, 0 ListView1.ColumnHeaders.Add , , "Ngày sinh", 1500, 1 ListView1.ColumnHeaders.Add , , "Nơi sinh", 1500, 2 End Sub ‘ Nút Tìm kiếm Private Sub Command1_Click() Dim rs As New ADODB.Recordset, item As ListItem If Text1.Text = "" Then MsgBox "Phai nhap thong tin tim kiem !", vbCritical Else If Option1.Value = True Then ‘ Tìm kiếm theo tên rs.Open "select * from Sinhvien where Hoten Like '%" + Text1.Text + "%' ", Db End If If Option2.Value = True Then ‘ Tìm kiếm theo ngày sinh rs.Open "select * from Sinhvien where Ngaysinh=' " + Text1.Text + " ' ", Db End If If Option3.Value = True Then ‘ Tìm kiếm theo nơi sinh rs.Open "select * from Sinhvien where Noisinh=' " + Text1.Text + " ' ", Db End If ListView1.ListItems.Clear ' Liệt kê các kết quả tìm kiếm được vào ListView1 Do While Not rs.EOF Set item = ListView1.ListItems.Add item.Text = rs!Hoten & "" item.SubItems(1) = rs!Ngaysinh & "" item.SubItems(2) = rs!Noisinh & "" rs.MoveNext Loop End If End Sub
  16. Form thống kê sinh viên (frmThongke) Giao diện: Giống như hình bên, trong đó các đối tượng có tên (thuộc tính Name) mặc định. Mã lệnh tham khảo: Option Explicit ‘ Thiết lập các thuộc tính cho ListView1 Private Sub Form_Load() ListView1.View = lvwReport ' Chế độ xem dạng bảng ListView1.FullRowSelect = True ‘ Cho phép chọn cả dòng ListView1.ColumnHeaders.Add , , "Tên lớp", 3000, 0 ListView1.ColumnHeaders.Add , , "Thống kê", 1500, 1 End Sub ‘ Nút Thống kê Private Sub Command1_Click() Dim rs As New ADODB.Recordset, item As ListItem Dim sql As String ‘ Biến sql chứa câu lệnh SQL để thống kê If Option1.Value = True Then ‘ Thống kê theo số lượng mỗi lớp sql = sql & "select TenL, Count(MaSV) as Thongke from Sinhvien as A, Lop as B " sql = sql & "Where (A.MaL=B.MaL) Group by TenL order by TenL" End If If Option2.Value = True Then ‘ Thống kê theo ĐTB cao nhất mỗi lớp sql = sql & "select TenL, Max(DTB) as Thongke from Sinhvien as A, Lop as B " sql = sql & "Where (A.MaL=B.MaL) Group by TenL order by Max(DTB) DESC" End If If Option3.Value = True Then sql = sql & "select TenL, Count(MaSV) as Thongke from Sinhvien as A, Lop as B " sql = sql & "Where (A.MaL=B.MaL) and (DTB
  17. BÀI THỰC HÀNH SỐ 6 Viết chương trình quản lý sinh viên sử dụng các điều khiển ADO có cấu trúc như hình bên. * Giao diện: Gồm có các đối tượng sau: - 3 đối tượng kết nối CSDL ADODC: Adodc1 (bảng Sinhvien), Adodc2 (bảng Dantoc) và Adcdc3 (bảng Tongiao). Mỗi đối tượng Adodc gồm các thuộc tính: o ConnectioString: nhắp nút ‘…’ → nhắp ‘Build’ → chọn ‘Microsoft OLE DB Provider for SQL Server’ → nhắp ‘Next>>’ → nhập các thông tin kết nối đến CSDL o RecordSource: chọn nguồn dữ liệu lấy từ bảng Sinhvien - Đối tượng DataGrid1: Hiển thị danh sách SV o RecordSource: chọn Adodc1 o Thêm các cột: RightClick → Properties → Thêm vào 3 cột Hoten, Ngaysinh, Noisinh. - Các đối tượng: txtHoten, chkGioitinh, txtNgaysinh, txtNoisinh, txtMon1, txtMon2, txtMon3, txtDTB, txtXeploai thiết lập các thuộc tính: DataSource và DataField - Các đối tượng DataCombo1 và DataList1 thiết lập các thuộc tính: DataSource, DataField, RowSource, ListField, BoundColumn ToolBar1 Các đối tượng lần lượt có DataGrid1 tên là: txtHoten, chkGioitinh, txtNgaysinh. txtNoisinh, TreeView1 txtMon1, txtMon2, txtMon3, txtDTB, txtXeploai Các nút lần lượt có tên là: cmdTinhDTB, cmdNew, * Mã lệnh: cmdSave, cmdDelete Dim MaL As Integer ' Chứa mã lớp hiện đang được chọn Public Sub LoadTree() ‘ Giống bài thực hành trước End Sub ‘ Sự kiện xảy ra khi form được hiển thị Private Sub Form_Load() Set Db = New ADODB.Connection Db.ConnectionString = Adodc1.ConnectionString On Error Resume Next ' Bẫy lỗi Db.Open If Db.Errors.Count 0 Then ' Nếu bị lỗi MsgBox "Loi xay ra: " & Err.Description, vbCritical Unload Me End If
  18. DataGrid1.AllowUpdate = False LoadTree End Sub ‘ Xảy ra khi nhắp chọn một lớp nào đó trên cây Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) If Left(Node.Key, 1) = "L" Then ' Nếu chọn lớp MaL = Mid(Node.Key, 2) Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from Sinhvien where MaL=" & MaL Adodc1.Refresh End If End Sub ‘ Nút Tạo mới sinh viên Private Sub cmdNew_Click() Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("MaL") = MaL End Sub ‘ Nút lưu thông tin sinh viên Private Sub cmdSave_Click() With Adodc1.Recordset .Fields("DTB") = Round((.Fields("Mon1") + .Fields("Mon2") + .Fields("Mon3")) / 3, 2) Select Case .Fields("DTB") Case Is >= 8: .Fields("Xeploai") = "Gioi" Case Is >= 7: .Fields("Xeploai") = "Kha" Case Is >= 5: .Fields("Xeploai") = "Trung binh" Case Else: .Fields("Xeploai") = "Yeu" End Select .Update ' Lưu ĐTB và Xeploai vào CSDL End With End Sub ‘ Nút xoá sinh viên Private Sub cmdDelete_Click() Dim traloi As Integer traloi = MsgBox("Ban muon xoa SV nay hay khong?", vbQuestion + vbYesNo) If traloi = vbYes Then Adodc1.Recordset.Delete End Sub ‘ Tính ĐTB cho tất cả các sinh viên Private Sub cmdTinhDTB_Click() Dim rs As New ADODB.Recordset rs.Open "select * from Sinhvien", Db, adOpenStatic, adLockOptimistic ProgressBar1.Min = 0: ProgressBar1.Value = 0 If Not rs.EOF Then rs.MoveLast: ProgressBar1.Max = rs.RecordCount: rs.MoveFirst End If Do While Not rs.EOF rs!DTB = Round((rs!Mon1 + rs!Mon2 + rs!Mon3) / 3, 2) Select Case rs!DTB Case Is >= 8: rs!Xeploai = "Gioi" Case Is >= 7: rs!Xeploai = "Kha" Case Is >= 5: rs!Xeploai = "Trung binh" Case Else: rs!Xeploai = "Yeu" End Select rs.Update ProgressBar1.Value = ProgressBar1.Value + 1 : rs.MoveNext Loop ProgressBar1.Value = 0 End Sub
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2