1. Trang chủ
  2. » Kỹ Năng Mềm

do an mon hoc

12 8 0

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

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

THÔNG TIN TÀI LIỆU

Nội dung

- Gọi phương thức Fill đưa dữ liệu vào DataSet cụ thể Data Table tên: XoaTam: chứa các kết quả thi bị xóa, để sau này xóa thật.. - Xóa dữ liệu trong XoaTam (ban đầu phải rổng.[r]

(1)

ĐỒ ÁN MÔN HỌC LỚP CĐ QUÂN KHU 9

Cho CDSL cài đặt ngông ngữ SQL Server 2000 có mơ sau:

Hãy dùng ngôn ngữ VisualBasic 2003 hay 2005 thự công việc sau:

7- Thiết kế view, thủ thụ, hàm form in điểm tổng kết năm học Biết

rằng điểm trung bình năm học =Điểm học kỳ i * tồng số đơn vị học trình học kỳ

i/Tổng số đơn vị học trình năm học Năm học tạo combo box

Sinh viên: Nguyễn Thanh Nhân

GV hướng dẫn: Phan Linh Quang

LỜI NĨI ĐẦU

Ngày nay, khoa học, cơng nghệ tiến tiến ngày phát triển cao hoàn

thiện, thay mặt đời sống người công nghệ lĩnh vực của

ngành Tin Học.

Trong thời gian tiến hành thực đồ án, chân thành cảm ơn thầy cô trong

khoa thầy Phan Linh Quang tạo điều kiện tốt cho em hồn thành đồ án

mơn học này.

Vì thời gian ngắn kiến thức có hạn nên khơng thể nghiên cứu sâu Do đó

khơng thể tránh khỏi sai sót Rất mong đóng góp ý kiến thầy các

bạn

Vĩnh Long, ngày tháng năm 2010

Sinh viên thực hiện

(2)

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

(3)

Thiết kế form in điểm tổng kết năm học có dạng sau:

Trong đó: Chọn năm học

Các nút điều khiển hình trên.

Mục đích form: In kết điểm trung bình năm học

Save: Lưu thay đổi lưới; Delete: Xóa sinh viên hành; Close:

Đóng from; Nút Cập nhật KQ thi : Để cập nhật lại đểm thi cho sinh viên

PHẦN I : GIẢI THUẬT

Giải thuật:

Tạo giao diện đồ họa:

- Mở from tên: FrmKetQua

- Tạo ComboBox liệt kê Năm Học, tên: CboNamHoc, thuộc tính khác

mặc nhiên

- Một DataGirdView(Lưới) hiển thị liệu, tên: DataGridViewKQ thuộc tính

khác

- Tạo Button có thuộc tính (text) chức sau: Save: Lưu

những thay đổi lưới; Delete: Xóa sinh viên hành; Close: Đóng from; Nút Cập

nhật KQ thi : Để cập nhật lại đểm thi cho sinh viên Lần lượt tên (name) là:

btnSave, btnDelete, , btnClose, btnCNhatKQthi, thuộc tính khác mặc nhiên.

- Tạo số nhãn (Label) có thuộc tính Text hình trên, thuộc tính khác

mặc nhiên.

PHẦN II : DIỄN GIẢI VỀ CÁC THỦ TỤC

Thủ tục load from

- Kết nối mở kết nối.

- Load liệu KQ ĐTB

- Load ComboBox NamHọc.

- Gán liệu kết ĐTB vào DataGirdView

- Gán thuộc tính khơng thêm mới, khơng xóa lưới.

Thủ tục load liệu kết ĐTB

(4)

- Gọi phương thức SqlDataAdapter khởi tạo thực thi câu lệnh.

- Gọi phương thức Fill đưa liệu vào DataSet cụ thể Data Table tên: Tam

- Gọi phương thức Clear DataTable để xóa liệu DataTable Tam

(Phịng trước có liệu).

- Gọi lại phương thức Fill đưa liệu vào DataSet cụ thể Data Table tên: Tam.

- Gọi phương thức Fill đưa liệu vào DataSet cụ thể Data Table tên: XoaTam:

chứa kết thi bị xóa, để sau xóa thật

- Xóa liệu XoaTam (ban đầu phải rổng

Thủ tục load combobox Năm học:

- Chuẩn bị câu lệnh SQL chứa danh sách tất môn học cần thị.

- Gọi phương thức SqlDataAdapter khởi tạo thực thi câu lệnh.

- Gọi phương thức Fill đưa liệu vào DataSet cụ thể Data Table tên: NamHoc

- Gọi phương thức Clear DataTable để xóa liệu DataTable NamHoc

(Phịng trước có liệu).

- Gọi lại phương thức Fill đưa liệu vào DataSet cụ thể Data Table tên:

NamHoc.

- Xóa CboNamHoc.

- Nếu số dòng DataTable NamHoc dương

- Kích hoạt CboNamHoc

- Mỗi dịng DataTable NamHoc chèn dịng vào Item CboNamHoc.

- Dòng CboNamHoc dòng DataTable NămHoc.

- Kích hoạt hay phân liệt Button.

Xử lý kiện

Nút Close:

- Để đóng From.

Nút Delete:

- Nếu lưới khơng rổng

+ Xác định vị trí cần xóa (Con trỏ hành

Me

.DataGridViewKQ.CurrentCell.RowIndex)

+ Lấy dòng dr từ lưới

+ cấp Phát dòng dr1 theo mẫu xoaTam để lưu liệu cần xóa

+ Copy từ dr vào dr1 (khơng t hể gán cấp phát động)

+ Xóa dịng dr khỏi lưới Tam

+ Chèn dòng dr1 vào XoaTam

+ Xác định lại chức nút nhấn

- Ngược lại

+ Xác định lại chức nút nhấn

Nút Save:

Xoá mẫu tin table tam

Nếu số dòng XoaTam khơng rổng

Mỗi dịng table XoaTam

Tạo câu lệnh xóa

(5)

Dùng

DataRowState.Added

xác định mẫu tin thêm đưa vào

DataTable mới

Nếu số dịng Table khơng rổng

Mỗi dòng table mới

Tạo câu lệnh insert

Chèn dòng vào CSDL

Update mẫu tin sửa

Dùng

DataRowState.Modified

xác định mẫu tin sửa đưa vào

DataTable sửa

Nếu số dòng Table sửa khơng rổng

Mỗi dịng table sửa

Tạo câu lệnh update

Update mẫu tin vào CSDL

Xác định lại chức nút nhấn

Khi giá trị CboNamHoc thay đổi

(

CboNamHoc_SelectedValueChanged)

Nếu tables NamHoc không rổng

- Biến NamHoc nhận giá trị mới

(ds.Tables("NamHoc").Rows(Me.CboNamHoc.Items.IndexOf(Me.CboNamHoc.Text)) ("namhoc")

Ngược lại biến Năm học nhận giá trị rổng

- Load lại liệu

From KQ Điểm TB:

Mã thủ tục sau

Imports System.Data.SqlClient

Public Class frmKetQua

Dim strCONN = "server=Localhost;database=Sinhvien;uid=sa;pwd="

Dim CONN As New SqlConnection(strCONN) Dim da As SqlDataAdapter

Dim ds As New DataSet Dim strnamhoc As String

Private Sub frmKetQua_Load(ByVal sender As Object, ByVal e As

System.EventArgs) Handles Me.Load Try

CONN = New SqlConnection(strCONN) CONN.Open()

Catch ex As Exception MsgBox("lổi kết nối") End Try

namhoc() loaddl()

Me.DataGridViewKQ.DataSource = ds.Tables("TAM") ds.Tables("TAM").DefaultView.AllowNew = False

ds.Tables("TAM").DefaultView.AllowDelete = False

End Sub

Sub loaddl()

Dim str As String

str = "SELECT NamHoc,HocKy,TenL,MaSV,TongD / TongDVHT AS DiemTBNamHoc,Null GhiChu"

str += " FROM (SELECT KQThi.NamHoc,KQThi.HocKy,TenL,KQThi.MaSV,"

str += "sum(DiemThi*SoDVHT) as TongD, "

str += "SUM(MonHoc.SoDVHT) AS TongDVHT"

str += " FROM KQThi,MonHoc,Lop,SinhVien"

str += " where SinhVien.MaL=Lop.MaL "

str += " and SinhVien.MaSV=KQThi.MaSV "

str += " and MonHoc.MaM=KQThi.MaM"

If strnamhoc <> "" Then

(6)

End If

str += " GROUP BY KQThi.NamHoc,KQThi.HocKy,Lop.TenL,KQThi.MaSV) AS TAM "

'MsgBox(str)

da = New SqlDataAdapter(str, CONN) da.Fill(ds, "TAM")

ds.Tables("TAM").Clear() da.Fill(ds, "TAM")

da.Fill(ds, "XoaTAM")

ds.Tables("XoaTAM").Clear() End Sub

Sub namhoc()

Dim str As String

str = "select Namhoc,Hocky from NamHoc"

da = New SqlDataAdapter(str, CONN) da.Fill(ds, "NamHoc")

ds.Tables("NamHoc").Clear() da.Fill(ds, "NamHoc")

If ds.Tables("NamHoc").Rows.Count > Then

Me.CboNamHoc.Items.Clear() Dim i As Integer

For i = To ds.Tables("NamHoc").Rows.Count -

Me.CboNamHoc.Items.Add(ds.Tables("NamHoc").Rows(i)("Namhoc")) Next

Me.CboNamHoc.Text = ds.Tables("NamHoc").Rows(0)("Namhoc") Else

Me.CboNamHoc.Enabled = False

End If

End Sub

Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles BtnClose.Click Me.Close()

End Sub

Private Sub CboNamHoc_SelectedValueChanged(ByVal sender As Object, ByVal e As

System.EventArgs) Handles CboNamHoc.SelectedValueChanged If ds.Tables("NamHoc").Rows.Count > Then

strnamhoc =

ds.Tables("NamHoc").Rows(Me.CboNamHoc.Items.IndexOf(Me.CboNamHoc.Text))("namhoc") Else

strnamhoc = ""

End If

loaddl()

If ds.Tables("TAM").Rows.Count = Then

Me.BtnDelete.Enabled = False

Me.btnSave.Enabled = False

Me.BtnClose.Enabled = True

End If

End Sub

Private Sub BtnDelete_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles BtnDelete.Click

Dim vt As Integer = Me.DataGridViewKQ.CurrentCell.RowIndex Dim dr, dr1 As DataRow

If ds.Tables("TAM").Rows.Count > Then

dr = ds.Tables("TAM").Rows(vt) dr1 = ds.Tables("xoaTAM").NewRow dr1("HocKy") = dr("HocKy")

dr1("MaSV") = dr("MaSV") dr1("HoTen") = dr("HoTen") dr1("TenL") = dr("TenL")

dr1("TongsoDVHT") = dr("TongsoDVHT") dr1("DTB") = dr("DTB")

dr1("Ghichu") = dr("Ghichu")

ds.Tables("TAM").Rows.RemoveAt(vt) ds.Tables("xoaTAM").Rows.Add(dr1) Me.BtnDelete.Enabled = True

Me.btnSave.Enabled = True

Me.BtnClose.Enabled = False

(7)

Me.BtnDelete.Enabled = False

Me.btnSave.Enabled = False

Me.BtnClose.Enabled = True

End If

End Sub

Private Sub BtnSave_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles btnSave.Click Dim i As Integer

Dim dr As DataRow Dim str As String

If ds.Tables("xoaTAM").Rows.Count > Then

For i = To ds.Tables("xoaTAM").Rows.Count - dr = ds.Tables("xoaTAM").Rows(i)

str = "Delete TAM where MaSV='" & dr("MaSV") & "' "

'MsgBox(str)

Dim cmd As New SqlCommand(str, CONN) cmd.ExecuteNonQuery()

Next

End If

ds.Tables("xoaTAM").Clear() Dim dt As DataTable

dt = ds.Tables("KQthi").GetChanges(DataRowState.Added) If Not dt Is Nothing Then

For i = To dt.Rows.Count - dr = dt.Rows(i)

str = "Insert into

TAM(NamHoc,HocKy,MaL,MaSV,Ho,ten,TongsoDVHT,DTB,GhiChu) Values("

str += "'" & strnamhoc & "'"

str += ",'" & dr("HocKy") & "'"

str += ",N'" & dr("TenL") & "'"

str += ",'" & dr("MaSV") & "'"

str += ",N'" & dr("HoTen") & "',"

If Not IsDBNull(dr("TongsoDVHT")) Then

str += "NULL,"

Else

str += "'" & dr("TongSoDVHT") & "',"

End If

If Not IsDBNull(dr("DTB")) Then

str += "NULL,"

Else

str += "'" & dr("DTB") & "',"

End If

If Not IsDBNull(dr("GhiChu")) Then

str += "NULL,"

Else

str += "N'" & dr("GhiChu") & "')"

End If

'MsgBox(str)

Dim cmdcomm As New SqlCommand(str, CONN) cmdcomm.ExecuteNonQuery()

Next

End If

loaddl()

Me.BtnDelete.Enabled = True

Me.btnSave.Enabled = True

Me.BtnClose.Enabled = True

End Sub

Private Sub BtnCNhatKQThi_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles BtnCNhatKQThi.Click frmKQThi.Show()

End Sub End Class

(8)

Trong đó: Chọn năm học

Các nút điều khiển hình trên.

DataGirdViewKQThi

Nút Add: Thêm mới

Nút Cancel: Bỏ qua hành động thực hiện

Nút Save: lưu điểm tổng kết.

Nt Delete: Xóa điểm KQThi

Nút Close: Đóng from.

PHẦN II : GIẢI THUẬT

- Tạo dự án tên: SinhVien.

- Mở from tên: Frm KQThi

- Tạo ComboBox liệt kê Năm học, tên: CboNamHoc1 thuộc tính khác

mặc nhiên

- Một DataGirdView(Lưới) hiển thị liệu tên: DataGirdViewKQThi thuộc

tính khác

- Tạo Button có thuộc tính (text) chức sau:

* Delete: Xóa mẫu tin hành

* Save: Lưu thay đổi lưới

* Close: Đóng from.

* Cancel: Bỏ qua hành động thực hiện

* Add: Thêm mới

- Các Button có tên là: btnDelete, btnCancel, btnClose, btnSave, btnAdd,

Cancel thuộc tính khác mặc nhiên.

- Tạo số nhãn (Label) có thuộc tính Text hình trên, thuộc tính khác

mặc nhiên.

Thủ tục load from, Thủ tục load liệu kết ĐTB, Thủ tục load combobox

(9)

Chỉ thêm nút Add Cancel

Nút Add:

- Thêm dòng (DataRow)

- Xác định số thuộc tính dịng có thể

- Chèn dịng vào lưới(DataTable)

- Kích hoạt nút: Add, Delete, Save

- Phân liệt nút: Close, Cancel

Nút Cancel:

- Load liệu

- Kích hoạt nút: Add, Save,Cancel

- Phân liệt nút: Delete, Close

From KQThi:

Mã thủ tục sau

Imports System.Data.SqlClient

Public Class frmKQThi

Dim strCONN = "server=Localhost;database=Sinhvien;uid=sa;pwd="

Dim CONN As New SqlConnection(strCONN) Dim da As SqlDataAdapter

Dim ds As New DataSet

Dim strnamhoc As String = ""

Private Sub frmKetQua_Load(ByVal sender As Object, ByVal e As

System.EventArgs) Handles Me.Load

If CONN.State = ConnectionState.Closed Then

CONN.Open() End If

namhoc() loaddl()

Me.DataGridViewKQThi.DataSource = ds.Tables("KQThi") ds.Tables("KQThi").DefaultView.AllowNew = False

ds.Tables("KQThi").DefaultView.AllowDelete = False

End Sub

Sub loaddl()

Dim str As String

str = "select NamHoc,HocKy,MaL,MaSV,MaM,LanThi,Diemthi,GhiChu"

str += " from KQThi where"

If strnamhoc <> "" Then

str += " Namhoc='" & strnamhoc & "'"

End If

'MsgBox(str)

da = New SqlDataAdapter(str, CONN) da.Fill(ds, "KQThi")

ds.Tables("KQThi").Clear() da.Fill(ds, "KQThi")

da.Fill(ds, "XoaKQThi")

ds.Tables("XoaKQThi").Clear() End Sub

Sub namhoc()

Dim str As String

str = "select Namhoc,Hocky from NamHoc"

da = New SqlDataAdapter(str, CONN) da.Fill(ds, "NamHoc")

ds.Tables("NamHoc").Clear() da.Fill(ds, "NamHoc")

If ds.Tables("NamHoc").Rows.Count > Then

Me.CboNamHoc.Items.Clear() Dim i As Integer

For i = To ds.Tables("NamHoc").Rows.Count -

Me.CboNamHoc.Items.Add(ds.Tables("NamHoc").Rows(i)("Namhoc")) Next

(10)

Me.CboNamHoc.Enabled = False

End If

End Sub

Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles BtnClose.Click Me.Close()

End Sub

Private Sub CboNamHoc_SelectedValueChanged(ByVal sender As Object, ByVal e As

System.EventArgs) Handles CboNamHoc.SelectedValueChanged If ds.Tables("NamHoc").Rows.Count > Then

strnamhoc =

ds.Tables("NamHoc").Rows(Me.CboNamHoc.Items.IndexOf(Me.CboNamHoc.Text))("namhoc") Else

strnamhoc = ""

End If

loaddl() End Sub

Private Sub BtnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Handles BtnAdd.Click Dim dr As DataRow

dr = ds.Tables("KQThi").NewRow ds.Tables("KQThi").Rows.Add(dr) Me.BtnAdd.Enabled = True

Me.btnCancel.Enabled = True

Me.BtnDelete.Enabled = False

Me.btnSave.Enabled = True

Me.BtnClose.Enabled = False

End Sub

Private Sub BtnCancel_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles btnCancel.Click loaddl()

Me.BtnAdd.Enabled = True

Me.btnCancel.Enabled = False

Me.BtnDelete.Enabled = True

Me.btnSave.Enabled = False

Me.BtnClose.Enabled = True End Sub

Private Sub BtnDelete_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles BtnDelete.Click

Dim vt As Integer = Me.DataGridViewKQThi.CurrentCell.RowIndex Dim dr, dr1 As DataRow

If ds.Tables("KQThi").Rows.Count > Then

dr = ds.Tables("KQThi").Rows(vt) dr1 = ds.Tables("xoaKQThi").NewRow dr1("HocKy") = dr("HocKy")

dr1("MaSV") = dr("MaSV") dr1("MaL") = dr("MaL") dr1("MaM") = dr("MaM")

dr1("LanThi") = dr("LanThi") dr1("DiemThi") = dr("DiemThi") dr1("Ghichu") = dr("Ghichu")

ds.Tables("KQThi").Rows.RemoveAt(vt) ds.Tables("xoaKQThi").Rows.Add(dr1) Me.BtnAdd.Enabled = True

Me.btnCancel.Enabled = True

Me.BtnDelete.Enabled = True

Me.btnSave.Enabled = True

Me.BtnClose.Enabled = False

Else

Me.BtnAdd.Enabled = True

Me.btnCancel.Enabled = False

Me.BtnDelete.Enabled = False

Me.btnSave.Enabled = False

Me.BtnClose.Enabled = True

End If

End Sub

Private Sub BtnSave_Click(ByVal sender As Object, ByVal e As

(11)

Dim i As Integer

Dim dr As DataRow Dim str As String

If ds.Tables("xoaKQThi").Rows.Count > Then

For i = To ds.Tables("xoaKQthi").Rows.Count - dr = ds.Tables("xoaKQthi").Rows(i)

str = "Delete KQthi where DiemThi='" & dr("DiemThi") & "' "

'MsgBox(str)

Dim cmd As New SqlCommand(str, CONN) cmd.ExecuteNonQuery()

Next

End If

ds.Tables("xoaKQthi").Clear() Dim dt As DataTable

dt = ds.Tables("KQthi").GetChanges(DataRowState.Added) If Not dt Is Nothing Then

For i = To dt.Rows.Count - dr = dt.Rows(i)

str = "Insert into

KQThi(NamHoc,HocKy,MaL,MaSV,MaM,LanThi,DiemThi,GhiChu) Values("

str += "'" & strnamhoc & "'"

str += ",'" & dr("HocKy") & "'"

str += ",'" & dr("MaL") & "'"

str += ",'" & dr("MaSV") & "'"

str += ",'" & dr("MaM") & "'"

str += ",'" & dr("LanThi") & "'"

str += ",'" & dr("DiemThi") & "',"

If Not IsDBNull(dr("GhiChu")) Then

str += "NULL,"

Else

str += "N'" & dr("GhiChu") & "')"

End If

'MsgBox(str)

Dim cmdcomm As New SqlCommand(str, CONN) cmdcomm.ExecuteNonQuery()

Next

End If

Dim sql As String

dt = ds.Tables("KQthi").GetChanges(DataRowState.Modified) If Not dt Is Nothing Then

For i = To dt.Rows.Count - dr = dt.Rows(i)

sql = "update KQThi set"

sql += " HocKy='" & dr("HocKy") & "',"

sql += " LanThi='" & dr("LanThi") & "'"

sql += ",DiemThi='" & dr("DiemThi") & "',"

If Not IsDBNull(dr("GhiChu")) Then

sql += "GhiChu=NULL"

Else

sql += "GhiChu=N'" & dr("GhiChu") & "'"

End If

sql += " where MaL='" & dr("MaL") & "'"

sql += " and MaSV='" & dr("MaSV") & "'"

sql += " and MaM='" & dr("MaM") & "'"

sql += " and Namhoc='" & strnamhoc & "'"

'MsgBox(sql)

Dim cmdcom As New SqlCommand(sql, CONN) cmdcom.ExecuteNonQuery()

Next

End If

loaddl()

Me.BtnAdd.Enabled = True

Me.btnCancel.Enabled = False

Me.BtnDelete.Enabled = True

Me.btnSave.Enabled = False

Me.BtnClose.Enabled = True

(12)

Private Sub DataGridKQThi_DoubleClick(ByVal sender As Object, ByVal e As

System.EventArgs) Handles DataGridViewKQThi.DoubleClick Me.btnSave.Enabled = True

Me.BtnClose.Enabled = False

End Sub End Class

PHẦN IV : PHƯƠNG HƯỚNG PHÁT TRIỂN:

Một lần em chân thành cảm thầy cô khoa, thầy Phan Linh

Quang tạo điều kiện tốt cho em hoàn thành đồ án Đến em đa

hoàn thành đồ án này, kiến thức có hạn nên khơng thể tránh khỏi những

thiếu sót Rất mong giúp đỡ thầy để đề tài hồn thiện hơn.Và sau

đây khuyết điểm đồ án:

Ngày đăng: 04/06/2021, 00:34

w